aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Marie de Rodat <derodat@adacore.com>2016-05-03 16:21:14 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2016-05-03 16:21:14 +0000
commit402e89f5986220a96898381cc32f7efe76bd092c (patch)
tree07ef90dcc688d65f7ea2112248f2fb748f8ee38c
parent67647f9229c2e88701861eeebde33598ad406bb2 (diff)
downloadgcc-402e89f5986220a96898381cc32f7efe76bd092c.zip
gcc-402e89f5986220a96898381cc32f7efe76bd092c.tar.gz
gcc-402e89f5986220a96898381cc32f7efe76bd092c.tar.bz2
Fix a typo in dwarf2out.c:resolve_args_picking_1
Under specific circumstances for Ada programs, such as in the testcase this change adds, the DWARF back-end currently crashes because of inconsistent internal state. This is due to a typo: a local variable is called frame_offset_ but resolve_args_picking_1 wrongly modifies emit-rtl.h's frame_offset instead. This change fixes this typo. gcc/ * dwarf2out.c (resolve_args_picking_1): Replace the frame_offset occurence with frame_offset_ ones. gcc/testsuite/ * gnat.dg/debug5.adb: New testcase. From-SVN: r235830
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dwarf2out.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/debug5.adb22
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7cd0bd4..1a85213 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-05-03 Pierre-Marie de Rodat <derodat@adacore.com>
+
+ * dwarf2out.c (resolve_args_picking_1): Replace the frame_offset
+ occurence with frame_offset_ ones.
+
2016-05-03 Alan Modra <amodra@gmail.com>
PR rtl-optimization/70890
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 463863d..ab851f4 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -15571,7 +15571,7 @@ resolve_args_picking_1 (dw_loc_descr_ref loc, unsigned initial_frame_offset,
if (stack_usage == NULL)
return false;
- frame_offset += *stack_usage;
+ frame_offset_ += *stack_usage;
break;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3ff4ea4..818a177 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2016-05-03 Pierre-Marie de Rodat <derodat@adacore.com>
+
+ * gnat.dg/debug5.adb: New testcase.
+
2016-05-03 Dominik Vogt <vogt@linux.vnet.ibm.com>
* gcc.target/s390/md/rXsbg_mode_sXl.c: New test.
diff --git a/gcc/testsuite/gnat.dg/debug5.adb b/gcc/testsuite/gnat.dg/debug5.adb
new file mode 100644
index 0000000..6569a15
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/debug5.adb
@@ -0,0 +1,22 @@
+-- { dg-do compile }
+-- { dg-options "-g" }
+
+procedure Debug5 is
+
+ type Record_Type (L1, L2 : Natural) is record
+ S1 : String (1 .. L1);
+ case L2 is
+ when 0 => null;
+ when others => S2 : String (L1 .. L2);
+ end case;
+ end record;
+
+ procedure Discard (R : Record_Type) is
+ begin
+ null;
+ end Discard;
+
+ R : constant Record_Type := (0, 0, others => <>);
+begin
+ Discard (R);
+end Debug5;