diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2010-11-22 17:14:27 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2010-11-22 17:14:27 +0100 |
commit | 47f647e44f933272c7d0c2a707ff537369b30ca0 (patch) | |
tree | 9b6fed6eed75bad4de1e07fba839f3ddeeb0be58 | |
parent | 3dbcee5bb833512fc8225ae83724ba0891328476 (diff) | |
download | gcc-47f647e44f933272c7d0c2a707ff537369b30ca0.zip gcc-47f647e44f933272c7d0c2a707ff537369b30ca0.tar.gz gcc-47f647e44f933272c7d0c2a707ff537369b30ca0.tar.bz2 |
re PR middle-end/43057 ([LTO] fold check: original tree changed by fold)
PR middle-end/43057
* fold-const.c (pedantic_non_lvalue_loc): Unshare x before
setting location.
From-SVN: r167037
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/fold-const.c | 11 |
2 files changed, 19 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87f56b7..7a42a01 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-11-21 Uros Bizjak <ubizjak@gmail.com> + + PR middle-end/43057 + * fold-const.c (pedantic_non_lvalue_loc): Unshare x before + setting location. + 2010-11-22 Richard Guenther <rguenther@suse.de> * gimple-fold.c (maybe_fold_reference): When canonicalizing @@ -31,8 +37,8 @@ (get_output_file_with_visibility): Updated comments and rewritten to use the new files_rules machinery. - * Makefile.in (XREGEX_H): Added variable. - (build/gengtype.o): Added dependencies for xregex.h and obstack.h + * Makefile.in (XREGEX_H): Added variable. + (build/gengtype.o): Added dependencies for xregex.h and obstack.h 2010-11-21 Nathan Froyd <froydnj@codesourcery.com> @@ -204,8 +210,7 @@ * doc/tm.texi.in (HANDLE_SYSV_PRAGMA, HANDLE_PRAGMA_PACK_PUSH_POP): Remove. - (HANDLE_PRAGMA_PACK_WITH_EXPANSION): Don't refer to - HANDLE_SYSV_PRAGMA. + (HANDLE_PRAGMA_PACK_WITH_EXPANSION): Don't refer to HANDLE_SYSV_PRAGMA. * doc/tm.texi: Regenerate. * system.h (HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_SYSV_PRAGMA, HANDLE_PRAGMA_WEAK): Poison. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 9f1e080..7306863 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -2097,7 +2097,16 @@ pedantic_non_lvalue_loc (location_t loc, tree x) { if (pedantic_lvalues) return non_lvalue_loc (loc, x); - protected_set_expr_location (x, loc); + + if (CAN_HAVE_LOCATION_P (x) + && EXPR_LOCATION (x) != loc + && !(TREE_CODE (x) == SAVE_EXPR + || TREE_CODE (x) == TARGET_EXPR + || TREE_CODE (x) == BIND_EXPR)) + { + x = copy_node (x); + SET_EXPR_LOCATION (x, loc); + } return x; } |