dwarf2out.c (rtl_for_decl_location): If no DECL_RTL, look for a DECL_INITIAL.
authorRichard Henderson <rth@redhat.com>
Thu, 11 Oct 2001 17:46:53 +0000 (10:46 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 11 Oct 2001 17:46:53 +0000 (10:46 -0700)
        * dwarf2out.c (rtl_for_decl_location): If no DECL_RTL, look
        for a DECL_INITIAL.

From-SVN: r46193

gcc/ChangeLog
gcc/dwarf2out.c

index 71aa87c4f61b518c4444ab765a8a73c4fca89901..7d8a498ee759a5a7f126cd3e880c3bec0b5b0b81 100644 (file)
@@ -1,3 +1,8 @@
+2001-10-11  Richard Henderson  <rth@redhat.com>
+
+       * dwarf2out.c (rtl_for_decl_location): If no DECL_RTL, look
+       for a DECL_INITIAL.
+
 2001-10-11  David Edelsohn  <edelsohn@gnu.org>
 
        * config/rs6000/xcoff.h (UNALIGNED_DOUBLE_INT_ASM_OP): Only
index e8a5f18f0d0d8d91023ec10ca337b258eedae60a..275e5b41fb2ae4f661f7e98c55508658787cd59a 100644 (file)
@@ -8567,6 +8567,16 @@ rtl_for_decl_location (decl)
 #endif
     }
 
+  /* A variable with no DECL_RTL but a DECL_INITIAL is a compile-time
+     constant, and will have been substituted directly into all 
+     expressions that use it.  C does not have such a concept, but
+     C++ and other languages do.  */
+  else if (DECL_INITIAL (decl))
+    {
+      rtl = expand_expr (DECL_INITIAL (decl), NULL_RTX, VOIDmode,
+                        EXPAND_INITIALIZER);
+    }
+
   return rtl;
 }