aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/vartrack-1.c28
-rw-r--r--gcc/var-tracking.c5
4 files changed, 42 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3e394ae..b4743f6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-16 Tom de Vries <tdevries@suse.de>
+
+ PR debug/86455
+ * var-tracking.c (vt_initialize): Fix pre_dec handling.
+
2018-07-16 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/aarch64/atomics.md (aarch64_store_execlusive<mode>): Add
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b943f23..cdbc0b8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-16 Tom de Vries <tdevries@suse.de>
+
+ PR debug/86455
+ * gcc.target/i386/vartrack-1.c: New test.
+
2018-07-16 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/opt73.adb: New test.
diff --git a/gcc/testsuite/gcc.target/i386/vartrack-1.c b/gcc/testsuite/gcc.target/i386/vartrack-1.c
new file mode 100644
index 0000000..15514fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/vartrack-1.c
@@ -0,0 +1,28 @@
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O1 -g -fdump-rtl-vartrack-details-slim" } */
+
+static volatile int vv = 1;
+
+extern long foo (long x);
+
+int
+main ()
+{
+ long x = vv;
+ foo (x);
+ foo (x + 1);
+ return 0;
+}
+
+/* Before adjust_insn:
+ 26: [--sp:DI]=bx:DI
+ 29: bx:DI=[sp:DI++]
+
+ after adjust_insn:
+ 26: {[argp:DI-0x10]=bx:DI;sp:DI=argp:DI-0x10;}
+ 29: {bx:DI=[argp:DI-0x10];sp:DI=argp:DI-0x8;} */
+
+/* { dg-final { scan-rtl-dump-times {[0-9][0-9]*: \{\[argp:DI-0x10\]=bx:DI;sp:DI=argp:DI-0x10;\}} 1 "vartrack" } } */
+
+/* { dg-final { scan-rtl-dump-times {[0-9][0-9]*: \{bx:DI=\[argp:DI-0x10\];sp:DI=argp:DI-0x8;\}} 1 "vartrack" } } */
+
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 6c0460b..5537fa6 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -10209,12 +10209,15 @@ vt_initialize (void)
log_op_type (PATTERN (insn), bb, insn,
MO_ADJUST, dump_file);
VTI (bb)->mos.safe_push (mo);
- VTI (bb)->out.stack_adjust += pre;
}
}
cselib_hook_called = false;
adjust_insn (bb, insn);
+
+ if (!frame_pointer_needed && pre)
+ VTI (bb)->out.stack_adjust += pre;
+
if (DEBUG_MARKER_INSN_P (insn))
{
reemit_marker_as_note (insn);