re PR debug/84645 (-flto -g0 at compile-time vs. -flto -g at link time ICEs in add_dw...
authorRichard Biener <rguenther@suse.de>
Thu, 1 Mar 2018 13:39:56 +0000 (13:39 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 1 Mar 2018 13:39:56 +0000 (13:39 +0000)
2018-03-01  Richard Biener  <rguenther@suse.de>

PR debug/84645
* dwarf2out.c (gen_variable_die): Properly handle late VLA
type annotation with LTO when debug was disabled at compile-time.

* gfortran.dg/lto/pr84645_0.f90: New testcase.

From-SVN: r258100

gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/lto/pr84645_0.f90 [new file with mode: 0644]

index 447ea67..8796943 100644 (file)
@@ -1,3 +1,9 @@
+2018-03-01  Richard Biener  <rguenther@suse.de>
+
+       PR debug/84645
+       * dwarf2out.c (gen_variable_die): Properly handle late VLA
+       type annotation with LTO when debug was disabled at compile-time.
+
 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
 
        * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
index 5e88c7b..41bb115 100644 (file)
@@ -23527,10 +23527,12 @@ gen_variable_die (tree decl, tree origin, dw_die_ref context_die)
 
          /* ???  In LTRANS we cannot annotate early created variably
             modified type DIEs without copying them and adjusting all
-            references to them.  Thus we dumped them again, also add a
-            reference to them.  */
+            references to them.  Thus we dumped them again.  Also add a
+            reference to them but beware of -g0 compile and -g link
+            in which case the reference will be already present.  */
          tree type = TREE_TYPE (decl_or_origin);
          if (in_lto_p
+             && ! get_AT (var_die, DW_AT_type)
              && variably_modified_type_p
                   (type, decl_function_context (decl_or_origin)))
            {
index e4ed421..a9e12be 100644 (file)
@@ -1,3 +1,8 @@
+2018-03-01  Richard Biener  <rguenther@suse.de>
+
+       PR debug/84645
+       * gfortran.dg/lto/pr84645_0.f90: New testcase.
+
 2018-03-01  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/84219
diff --git a/gcc/testsuite/gfortran.dg/lto/pr84645_0.f90 b/gcc/testsuite/gfortran.dg/lto/pr84645_0.f90
new file mode 100644 (file)
index 0000000..9935624
--- /dev/null
@@ -0,0 +1,17 @@
+! { dg-lto-do link }
+! { dg-lto-options { { -flto -g0 } } }
+! { dg-extra-ld-options { -g } }
+program nml_test
+  implicit none
+  type t
+    integer :: c1
+    integer :: c2(3)
+  end type t
+  call test2(2) 
+contains
+  subroutine test2(n)
+    integer :: n
+    type(t) :: x12(n)
+    namelist /nml2/ x12
+  end subroutine test2
+end program nml_test