]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix finding reg-sets of call insn
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jun 2014 08:02:02 +0000 (08:02 +0000)
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jun 2014 08:02:02 +0000 (08:02 +0000)
2014-06-20  Tom de Vries  <tom@codesourcery.com>

* final.c (collect_fn_hard_reg_usage): Add separate IOR_HARD_REG_SET for
get_call_reg_set_usage.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211841 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/final.c

index 108bc5f5b8a62147b755e1938568524afd29f7fa..ae42dcbea3b361b8baeb40ec5cf1792463562d04 100644 (file)
@@ -1,3 +1,8 @@
+2014-06-20  Tom de Vries  <tom@codesourcery.com>
+
+       * final.c (collect_fn_hard_reg_usage): Add separate IOR_HARD_REG_SET for
+       get_call_reg_set_usage.
+
 2014-06-20  Tom de Vries  <tom@codesourcery.com>
 
        * final.c (collect_fn_hard_reg_usage): Don't save function_used_regs if
index e67e84b8a2e8c255cbfb79cb1d7310a37835d58e..bbeb50d072d8ec2463f32c813eaa3d29d78e4574 100644 (file)
@@ -4775,12 +4775,16 @@ collect_fn_hard_reg_usage (void)
       if (!NONDEBUG_INSN_P (insn))
        continue;
 
-      find_all_hard_reg_sets (insn, &insn_used_regs, false);
+      if (CALL_P (insn))
+       {
+         if (!get_call_reg_set_usage (insn, &insn_used_regs,
+                                      call_used_reg_set))
+           return;
 
-      if (CALL_P (insn)
-         && !get_call_reg_set_usage (insn, &insn_used_regs, call_used_reg_set))
-       return;
+         IOR_HARD_REG_SET (function_used_regs, insn_used_regs);
+       }
 
+      find_all_hard_reg_sets (insn, &insn_used_regs, false);
       IOR_HARD_REG_SET (function_used_regs, insn_used_regs);
     }