diff options
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/gimple-fold.c | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c33c5a5..6f8a34f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2012-07-04 Richard Guenther <rguenther@suse.de> + PR middle-end/53433 + * gimple-fold.c (get_base_constructor): Do not return an + error_mark_node DECL_INITIAL. + +2012-07-04 Richard Guenther <rguenther@suse.de> + PR tree-optimization/53844 * tree-ssa-dse.c (dse_possible_dead_store_p): Properly handle the loop virtual PHI. diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 08e9603..5f8e0cd 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -2713,6 +2713,10 @@ get_base_constructor (tree base, HOST_WIDE_INT *bit_offset, if (!DECL_INITIAL (base) && (TREE_STATIC (base) || DECL_EXTERNAL (base))) return error_mark_node; + /* Do not return an error_mark_node DECL_INITIAL. LTO uses this + as special marker (_not_ zero ...) for its own purposes. */ + if (DECL_INITIAL (base) == error_mark_node) + return NULL_TREE; return DECL_INITIAL (base); case ARRAY_REF: |
