aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-03-27 22:35:51 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2015-03-27 21:35:51 +0000
commitc97de76414e82de75ea376515c1afde318788213 (patch)
tree3e6c2a9aeff2c0bdf9d4fd793f2f02c97dfb2551 /gcc
parent62021f64e550290e77a8e56270617a0a4ba673da (diff)
downloadgcc-c97de76414e82de75ea376515c1afde318788213.zip
gcc-c97de76414e82de75ea376515c1afde318788213.tar.gz
gcc-c97de76414e82de75ea376515c1afde318788213.tar.bz2
re PR ipa/65588 (lto1: internal compiler error: Segmentation fault)
PR ipa/65588 * symtab.c (symtab_node::get_partitioning_class): Register vars are duplicated. * varpool.c (symbol_table::output_variables) Do not assemble unefined decls for non-symbols. From-SVN: r221745
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/symtab.c2
-rw-r--r--gcc/varpool.c4
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d8221f3..554d8c6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2015-03-27 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/65588
+ * symtab.c (symtab_node::get_partitioning_class): Register vars
+ are duplicated.
+ * varpool.c (symbol_table::output_variables) Do not assemble unefined
+ decls for non-symbols.
+
2015-03-27 H.J. Lu <hongjiu.lu@intel.com>
PR target/65248
diff --git a/gcc/symtab.c b/gcc/symtab.c
index 84a0981..eb41d62 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -1689,6 +1689,8 @@ symtab_node::get_partitioning_class (void)
objects that can not be duplicated across partitions. */
if (DECL_IN_CONSTANT_POOL (decl))
return SYMBOL_DUPLICATE;
+ if (DECL_HARD_REGISTER (decl))
+ return SYMBOL_DUPLICATE;
gcc_checking_assert (vnode->definition);
}
/* Functions that are cloned may stay in callgraph even if they are unused.
diff --git a/gcc/varpool.c b/gcc/varpool.c
index f1439ca..76148a5 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -737,7 +737,9 @@ symbol_table::output_variables (void)
timevar_push (TV_VAROUT);
FOR_EACH_VARIABLE (node)
- if (!node->definition)
+ if (!node->definition
+ && !DECL_HAS_VALUE_EXPR_P (node->decl)
+ && !DECL_HARD_REGISTER (node->decl))
assemble_undefined_decl (node->decl);
FOR_EACH_DEFINED_VARIABLE (node)
{