*** empty log message ***
authorRichard Stallman <rms@gnu.org>
Sun, 17 May 1992 20:16:20 +0000 (20:16 +0000)
committerRichard Stallman <rms@gnu.org>
Sun, 17 May 1992 20:16:20 +0000 (20:16 +0000)
From-SVN: r1002

gcc/c-lex.c
gcc/toplev.c

index e8759bc9edd0809806ce284d81cca162cb9fac96..725815774b3eb9af897a1becd78c86e338306346 100644 (file)
@@ -1069,6 +1069,18 @@ yylex ()
 
          if (lastiddecl != 0 && TREE_CODE (lastiddecl) == TYPE_DECL)
            value = TYPENAME;
+         /* A user-invisible read-only initialized variable
+            should be replaced by its value.
+            We handle only strings since that's the only case used in C.  */
+         else if (lastiddecl != 0 && TREE_CODE (lastiddecl) == VAR_DECL
+                  && DECL_IGNORED_P (lastiddecl)
+                  && TREE_READONLY (lastiddecl)
+                  && DECL_INITIAL (lastiddecl) != 0
+                  && TREE_CODE (DECL_INITIAL (lastiddecl)) == STRING_CST)
+           {
+             yylval.ttype = DECL_INITIAL (lastiddecl);
+             value = STRING;
+           }
           else if (doing_objc_thang)
             {
              tree objc_interface_decl = lookup_interface (yylval.ttype);
index 46fdcbcca977c385b6831f8c35d9247536ee6c82..248f4079bc7278f3ba7ba1900ad8699a2dab1ece 100644 (file)
@@ -1906,13 +1906,19 @@ rest_of_decl_compilation (decl, asmspec, top_level, at_end)
     TIMEVAR (varconst_time,
             {
               make_decl_rtl (decl, asmspec, top_level);
-              /* Don't output anything
-                 when a tentative file-scope definition is seen.
-                 But at end of compilation, do output code for them.  */
-              if (! (! at_end && top_level
-                     && (DECL_INITIAL (decl) == 0
-                         || DECL_INITIAL (decl) == error_mark_node)))
-                assemble_variable (decl, top_level, at_end);
+              /* For a user-invisible decl that should be replaced
+                 by its value when used, don't output anything.  */
+              if (! (TREE_CODE (decl) == VAR_DECL
+                     && DECL_IGNORED_P (decl) && TREE_READONLY (decl)
+                     && DECL_INITIAL (decl) != 0))
+                /* Don't output anything
+                   when a tentative file-scope definition is seen.
+                   But at end of compilation, do output code for them.  */
+                if (! (! at_end && top_level
+                       && (DECL_INITIAL (decl) == 0
+                           || DECL_INITIAL (decl) == error_mark_node
+                           || DECL_IGNORED_P (decl))))
+                  assemble_variable (decl, top_level, at_end);
             });
   else if (TREE_REGDECL (decl) && asmspec != 0)
     {