Skip to content
Snippets Groups Projects
Commit f8719680 authored by Alexandre Oliva's avatar Alexandre Oliva Committed by Alexandre Oliva
Browse files

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
No related branches found
No related tags found
No related merge requests found
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> 2018-10-24 Michael Meissner <meissner@linux.ibm.com>
   
* config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME): * config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME):
...@@ -431,7 +431,9 @@ find_implicit_erroneous_behavior (void) ...@@ -431,7 +431,9 @@ find_implicit_erroneous_behavior (void)
"declared here"); "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, duplicate = isolate_path (bb, duplicate, e,
use_stmt, lhs, true); use_stmt, lhs, true);
...@@ -553,9 +555,16 @@ find_explicit_erroneous_behavior (void) ...@@ -553,9 +555,16 @@ find_explicit_erroneous_behavior (void)
inform (DECL_SOURCE_LOCATION(valbase), inform (DECL_SOURCE_LOCATION(valbase),
"declared here"); "declared here");
} }
tree zero = build_zero_cst (TREE_TYPE (val));
gimple_return_set_retval (return_stmt, zero); /* Do not modify code if the user only asked for
update_stmt (stmt); 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);
}
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment