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
This commit is contained in:
Uros Bizjak 2010-11-22 17:14:27 +01:00
parent 3dbcee5bb8
commit 47f647e44f
2 changed files with 19 additions and 5 deletions

View File

@ -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.

View File

@ -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;
}