Commit 99282f81 by Markus Trippelsdorf Committed by Markus Trippelsdorf

Fix PR82488 - signed integer overflow in expr.c

bootstrap-ubsan shows:
 gcc/expr.c:4103:17: runtime error: signed integer overflow: 0 - -9223372036854775808 cannot be represented in type 'long int'

Fix by handling the saw_unknown case earlier.

	PR rtl-optimization/82488
	* expr.c (fixup_args_size_notes): Avoid signed integer overflow.

diff --git a/gcc/expr.c b/gcc/expr.c
index ee07de5aaa44..e9d8555c9452 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4100,10 +4100,13 @@ fixup_args_size_notes (rtx_insn *prev, rtx_insn *last, int end_args_size)
       if (STACK_GROWS_DOWNWARD)
 	this_delta = -(unsigned HOST_WIDE_INT) this_delta;

-      args_size -= this_delta;
+      if (saw_unknown)
+	args_size = INT_MIN;
+      else
+	args_size -= this_delta;
     }

-  return saw_unknown ? INT_MIN : args_size;
+  return args_size;
 }

 #ifdef PUSH_ROUNDING
--
Markus

From-SVN: r255159
parent 62e8530c
2017-11-27 Markus Trippelsdorf <markus@trippelsdorf.de>
PR rtl-optimization/82488
* expr.c (fixup_args_size_notes): Avoid signed integer overflow.
2017-11-26 Julia Koval <julia.koval@intel.com> 2017-11-26 Julia Koval <julia.koval@intel.com>
* config/i386/i386.c (processor_target_table): Add skylake_cost for * config/i386/i386.c (processor_target_table): Add skylake_cost for
...@@ -4100,10 +4100,13 @@ fixup_args_size_notes (rtx_insn *prev, rtx_insn *last, int end_args_size) ...@@ -4100,10 +4100,13 @@ fixup_args_size_notes (rtx_insn *prev, rtx_insn *last, int end_args_size)
if (STACK_GROWS_DOWNWARD) if (STACK_GROWS_DOWNWARD)
this_delta = -(unsigned HOST_WIDE_INT) this_delta; this_delta = -(unsigned HOST_WIDE_INT) this_delta;
args_size -= this_delta; if (saw_unknown)
args_size = INT_MIN;
else
args_size -= this_delta;
} }
return saw_unknown ? INT_MIN : args_size; return args_size;
} }
#ifdef PUSH_ROUNDING #ifdef PUSH_ROUNDING
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment