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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265473
138bc75d-0d04-0410-961f-
82ee72b054a4
+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):
"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);
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);
+ }
}
}
}