]> gcc.gnu.org Git - gcc.git/commitdiff
re PR lto/56297 (LTO: multiple definition error with global register variables)
authorRichard Biener <rguenther@suse.de>
Tue, 12 Feb 2013 15:14:32 +0000 (15:14 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 12 Feb 2013 15:14:32 +0000 (15:14 +0000)
2013-02-12  Richard Biener  <rguenther@suse.de>

PR lto/56297
* lto-streamer-out.c (write_symbol): Do not output symbols
for hard register variables.

* gcc.dg/lto/pr56297_0.c: New testcase.
* gcc.dg/lto/pr56297_0.c: Likewise.

From-SVN: r195979

gcc/ChangeLog
gcc/lto-streamer-out.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/lto/pr56297_0.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/lto/pr56297_1.c [new file with mode: 0644]

index e354b939feb113babc356f7ac3adf9575e11e64d..4308b5b1f22d143dc19a62b506b5efbe6491de23 100644 (file)
@@ -1,3 +1,9 @@
+2013-02-12  Richard Biener  <rguenther@suse.de>
+
+       PR lto/56297
+       * lto-streamer-out.c (write_symbol): Do not output symbols
+       for hard register variables.
+
 2013-02-12  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/54222
index f8207c8e02249f4e29803ce42f1066bcb365ae13..6cbe045ce504f0a50c34cac30de7d1714042d2e8 100644 (file)
@@ -1166,7 +1166,8 @@ write_symbol (struct streamer_tree_cache_d *cache,
   if (!TREE_PUBLIC (t)
       || is_builtin_fn (t)
       || DECL_ABSTRACT (t)
-      || TREE_CODE (t) == RESULT_DECL)
+      || TREE_CODE (t) == RESULT_DECL
+      || (TREE_CODE (t) == VAR_DECL && DECL_HARD_REGISTER (t)))
     return;
 
   gcc_assert (TREE_CODE (t) == VAR_DECL
index f99e66ed0fbdd5e002e0df922f8e14f6e216de7a..13114a1683e7ed85efe43f20130128bcdf9b7f8f 100644 (file)
@@ -1,3 +1,9 @@
+2013-02-12  Richard Biener  <rguenther@suse.de>
+
+       PR lto/56297
+       * gcc.dg/lto/pr56297_0.c: New testcase.
+       * gcc.dg/lto/pr56297_0.c: Likewise.
+
 2013-02-12  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/46952
diff --git a/gcc/testsuite/gcc.dg/lto/pr56297_0.c b/gcc/testsuite/gcc.dg/lto/pr56297_0.c
new file mode 100644 (file)
index 0000000..5ed19da
--- /dev/null
@@ -0,0 +1,13 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options { { -flto -fno-common } } } */
+
+#if __x86_64__ || __i386__
+register int i asm("esp");
+#else
+extern int i;
+#endif
+
+int main(void)
+{
+  return i;
+}
diff --git a/gcc/testsuite/gcc.dg/lto/pr56297_1.c b/gcc/testsuite/gcc.dg/lto/pr56297_1.c
new file mode 100644 (file)
index 0000000..17e9c8c
--- /dev/null
@@ -0,0 +1,5 @@
+#if __x86_64__ || __i386__
+register int i asm("esp");
+#else
+int i;
+#endif
This page took 0.087903 seconds and 5 git commands to generate.