Commit f8719680 by Alexandre Oliva Committed by Alexandre Oliva

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
parent f78f0462
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,6 +555,12 @@ find_explicit_erroneous_behavior (void)
inform (DECL_SOURCE_LOCATION(valbase),
"declared here");
}
/* 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);
......@@ -561,6 +569,7 @@ find_explicit_erroneous_behavior (void)
}
}
}
}
}
/* Search the function for statements which, if executed, would cause
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment