re PR lto/47259 (LTO and global register variable)
authorRichard Guenther <rguenther@suse.de>
Wed, 12 Jan 2011 15:01:09 +0000 (15:01 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 12 Jan 2011 15:01:09 +0000 (15:01 +0000)
2011-01-12  Richard Guenther  <rguenther@suse.de>

PR lto/47259
* lto-streamer-out.c (output_gimple_stmt): Do not wrap
register variables in a MEM_REF.

From-SVN: r168713

gcc/ChangeLog
gcc/lto-streamer-out.c

index 7181f961241eabbfe1bad7b3a7a1c93d658e40e8..4724df2f7b71276dff89d03b34b24cd9a813b226 100644 (file)
@@ -1,3 +1,9 @@
+2011-01-12  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/47259
+       * lto-streamer-out.c (output_gimple_stmt): Do not wrap
+       register variables in a MEM_REF.
+
 2011-01-12  Joseph Myers  <joseph@codesourcery.com>
 
        * config.gcc (arm*-*-linux*, bfin*-uclinux*, bfin*-linux-uclibc*,
index 7c0029334fd1384e0c82cd8fc3562f98fa11f1e7..e471d70bbcd7145566b13712260734b1ad42a6b1 100644 (file)
@@ -1769,7 +1769,8 @@ output_gimple_stmt (struct output_block *ob, gimple stmt)
              while (handled_component_p (*basep))
                basep = &TREE_OPERAND (*basep, 0);
              if (TREE_CODE (*basep) == VAR_DECL
-                 && !auto_var_in_fn_p (*basep, current_function_decl))
+                 && !auto_var_in_fn_p (*basep, current_function_decl)
+                 && !DECL_REGISTER (*basep))
                {
                  bool volatilep = TREE_THIS_VOLATILE (*basep);
                  *basep = build2 (MEM_REF, TREE_TYPE (*basep),