* loop-invariant.c (may_assign_reg_p): Return false for frame pointer.

From-SVN: r259683
This commit is contained in:
Eric Botcazou 2018-04-26 15:21:09 +00:00 committed by Eric Botcazou
parent b1ea83878e
commit 7ee1f872ca
4 changed files with 46 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
* loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
2018-04-26 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md ("isa" attribute): Add x64_sse2.

View File

@ -660,6 +660,9 @@ may_assign_reg_p (rtx x)
return (GET_MODE (x) != VOIDmode
&& GET_MODE (x) != BLKmode
&& can_copy_p (GET_MODE (x))
/* Do not mess with the frame pointer adjustments that can
be generated e.g. by expand_builtin_setjmp_receiver. */
&& x != frame_pointer_rtx
&& (!REG_P (x)
|| !HARD_REGISTER_P (x)
|| REGNO_REG_CLASS (REGNO (x)) != NO_REGS));

View File

@ -1,3 +1,7 @@
2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/loop_optimization24.adb: New test.
2018-04-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/85116

View File

@ -0,0 +1,35 @@
-- { dg-do run }
-- { dg-options "-O" }
procedure Loop_Optimization24 is
procedure Callback is
begin
raise Constraint_Error;
end;
type Thread_Name_Ptr is access constant String;
type Callback_Ptr is access procedure;
type Callback_Information is record
Name : Thread_Name_Ptr;
Proc : Callback_Ptr;
end record;
type Callback_List is array (Positive range <>) of Callback_Information;
Cbs : Callback_List
:= (1 => (Proc => Callback'access, name => new String'("Callback")),
2 => (Proc => Callback'access, name => new String'("Callback")));
begin
for Index in Cbs'Range loop
begin
if Cbs(Index).proc /= null then
Cbs(Index).proc.all;
end if;
exception
when Constraint_Error => null;
end;
end loop;
end;