re PR rtl-optimization/81424 (internal error on GPRbuild with -O2)
PR rtl-optimization/81424 * optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg to remove potential trapping from operands if -fnon-call-exceptions. From-SVN: r250246
This commit is contained in:
parent
1234ee19c9
commit
38f638cae2
4 changed files with 42 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2017-07-16 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR rtl-optimization/81424
|
||||
* optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg
|
||||
to remove potential trapping from operands if -fnon-call-exceptions.
|
||||
|
||||
2017-07-16 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use
|
||||
|
|
|
@ -3846,9 +3846,9 @@ prepare_cmp_insn (rtx x, rtx y, enum rtx_code comparison, rtx size,
|
|||
if (cfun->can_throw_non_call_exceptions)
|
||||
{
|
||||
if (may_trap_p (x))
|
||||
x = force_reg (mode, x);
|
||||
x = copy_to_reg (x);
|
||||
if (may_trap_p (y))
|
||||
y = force_reg (mode, y);
|
||||
y = copy_to_reg (y);
|
||||
}
|
||||
|
||||
if (GET_MODE_CLASS (mode) == MODE_CC)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2017-07-16 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/opt65.adb: New test.
|
||||
|
||||
2017-07-16 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* gcc.dg/predict-8.c: Update.
|
||||
|
|
30
gcc/testsuite/gnat.dg/opt65.adb
Normal file
30
gcc/testsuite/gnat.dg/opt65.adb
Normal file
|
@ -0,0 +1,30 @@
|
|||
-- { dg-do run }
|
||||
-- { dg-options "-O2" }
|
||||
|
||||
with Ada.Command_Line; use Ada.Command_Line;
|
||||
|
||||
procedure Opt65 is
|
||||
|
||||
procedure Check_Version_And_Help (Version_String : String) is
|
||||
Help_Switch_Present : Boolean := False;
|
||||
Next_Arg : Natural := 1;
|
||||
begin
|
||||
while Next_Arg <= Argument_Count loop
|
||||
declare
|
||||
Next_Argv : constant String := Argument (Next_Arg);
|
||||
begin
|
||||
if Next_Argv = "--help" then
|
||||
Help_Switch_Present := True;
|
||||
end if;
|
||||
Next_Arg := Next_Arg + 1;
|
||||
end;
|
||||
end loop;
|
||||
|
||||
if Help_Switch_Present then
|
||||
raise Program_Error;
|
||||
end if;
|
||||
end;
|
||||
|
||||
begin
|
||||
Check_Version_And_Help ("version");
|
||||
end;
|
Loading…
Add table
Reference in a new issue