aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/expr.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 20c4ab6..dc980a9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+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>
* config/i386/i386.c (processor_target_table): Add skylake_cost for
diff --git a/gcc/expr.c b/gcc/expr.c
index ee07de5..e9d8555 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