From 7cbda5184cbfe1afb46a7a026057c6bc917235ec Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 12 Feb 2013 15:14:32 +0000 Subject: [PATCH] re PR lto/56297 (LTO: multiple definition error with global register variables) 2013-02-12 Richard Biener 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 | 6 ++++++ gcc/lto-streamer-out.c | 3 ++- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.dg/lto/pr56297_0.c | 13 +++++++++++++ gcc/testsuite/gcc.dg/lto/pr56297_1.c | 5 +++++ 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/lto/pr56297_0.c create mode 100644 gcc/testsuite/gcc.dg/lto/pr56297_1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e354b939feb..4308b5b1f22 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-02-12 Richard Biener + + PR lto/56297 + * lto-streamer-out.c (write_symbol): Do not output symbols + for hard register variables. + 2013-02-12 Georg-Johann Lay PR target/54222 diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index f8207c8e022..6cbe045ce50 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f99e66ed0fb..13114a1683e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-02-12 Richard Biener + + PR lto/56297 + * gcc.dg/lto/pr56297_0.c: New testcase. + * gcc.dg/lto/pr56297_0.c: Likewise. + 2013-02-12 Janus Weil 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 index 00000000000..5ed19da155a --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr56297_0.c @@ -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 index 00000000000..17e9c8c452f --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr56297_1.c @@ -0,0 +1,5 @@ +#if __x86_64__ || __i386__ +register int i asm("esp"); +#else +int i; +#endif -- 2.30.2