diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-03-27 22:35:51 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-03-27 21:35:51 +0000 |
commit | c97de76414e82de75ea376515c1afde318788213 (patch) | |
tree | 3e6c2a9aeff2c0bdf9d4fd793f2f02c97dfb2551 /gcc | |
parent | 62021f64e550290e77a8e56270617a0a4ba673da (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/symtab.c | 2 | ||||
-rw-r--r-- | gcc/varpool.c | 4 |
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) { |