gOlogy: do not change code in isolate-paths for warnings only
The isolate-paths pass is activated by various -f flags, but also by -Wnull-dereference. Most of its codegen changes are conditioned on at least one of the -f flags, but those that detect, warn about and isolate paths that return the address of local variables are enabled even if the pass is activated only by -Wnull-dereference. -W flags should not cause codegen changes, so this patch makes the codegen changes conditional on the presence of any of the -f flags that activate the pass. Should we have a separate option to activate only this kind of transformation? for gcc/ChangeLog * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Do not change code if the pass is running for warnings only. (find_explicit_erroneous_behavior): Likewise. From-SVN: r265473
This commit is contained in:
parent
f78f04627d
commit
f8719680bf
@ -1,3 +1,10 @@
|
||||
2018-10-24 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* gimple-ssa-isolate-paths.c
|
||||
(find_implicit_erroneous_behavior): Do not change code if the
|
||||
pass is running for warnings only.
|
||||
(find_explicit_erroneous_behavior): Likewise.
|
||||
|
||||
2018-10-24 Michael Meissner <meissner@linux.ibm.com>
|
||||
|
||||
* config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME):
|
||||
|
||||
@ -431,7 +431,9 @@ find_implicit_erroneous_behavior (void)
|
||||
"declared here");
|
||||
}
|
||||
|
||||
if (gimple_bb (use_stmt) == bb)
|
||||
if ((flag_isolate_erroneous_paths_dereference
|
||||
|| flag_isolate_erroneous_paths_attribute)
|
||||
&& gimple_bb (use_stmt) == bb)
|
||||
{
|
||||
duplicate = isolate_path (bb, duplicate, e,
|
||||
use_stmt, lhs, true);
|
||||
@ -553,9 +555,16 @@ find_explicit_erroneous_behavior (void)
|
||||
inform (DECL_SOURCE_LOCATION(valbase),
|
||||
"declared here");
|
||||
}
|
||||
tree zero = build_zero_cst (TREE_TYPE (val));
|
||||
gimple_return_set_retval (return_stmt, zero);
|
||||
update_stmt (stmt);
|
||||
|
||||
/* Do not modify code if the user only asked for
|
||||
warnings. */
|
||||
if (flag_isolate_erroneous_paths_dereference
|
||||
|| flag_isolate_erroneous_paths_attribute)
|
||||
{
|
||||
tree zero = build_zero_cst (TREE_TYPE (val));
|
||||
gimple_return_set_retval (return_stmt, zero);
|
||||
update_stmt (stmt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user