aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2010-11-22 17:14:27 +0100
committerUros Bizjak <uros@gcc.gnu.org>2010-11-22 17:14:27 +0100
commit47f647e44f933272c7d0c2a707ff537369b30ca0 (patch)
tree9b6fed6eed75bad4de1e07fba839f3ddeeb0be58
parent3dbcee5bb833512fc8225ae83724ba0891328476 (diff)
downloadgcc-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/ChangeLog13
-rw-r--r--gcc/fold-const.c11
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;
}