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: r250247
This commit is contained in:
Eric Botcazou 2017-07-16 22:07:15 +00:00 committed by Eric Botcazou
parent faefaf5172
commit 1fcc5158c5
4 changed files with 42 additions and 2 deletions

View File

@ -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 Daniel Cederman <cederman@gaisler.com>
* config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back

View File

@ -3844,9 +3844,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)

View File

@ -1,3 +1,7 @@
2017-07-16 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/opt65.adb: New test.
2017-07-10 Uros Bizjak <ubizjak@gmail.com>
PR target/81375

View 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;