diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2021-10-16 14:45:06 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@ucw.cz> | 2021-10-16 14:45:06 +0200 |
commit | 99b287b8ef51a0be52f7400879a619dc5f993f31 (patch) | |
tree | e5463624c1ddf321cae77dea44754e5bd5a1fe1a /gcc/tree-ssa-structalias.c | |
parent | 93d183a5fff92d80c0545b7a7ce9b77fe7a258f7 (diff) | |
download | gcc-99b287b8ef51a0be52f7400879a619dc5f993f31.zip gcc-99b287b8ef51a0be52f7400879a619dc5f993f31.tar.gz gcc-99b287b8ef51a0be52f7400879a619dc5f993f31.tar.bz2 |
Fix wrong code in ldost-strlen-1.c
gcc/ChangeLog:
PR tree-optimization/102720
* tree-ssa-structalias.c (compute_points_to_sets): Fix producing
of call used and clobbered sets.
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r-- | gcc/tree-ssa-structalias.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 6f12a66..2e6513b 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -7541,17 +7541,18 @@ compute_points_to_sets (void) determine_global_memory_access (stmt, NULL, &reads_global_memory, &uses_global_memory); - if (!uses_global_memory) - ; - else if ((vi = lookup_call_use_vi (stmt)) != NULL) + if ((vi = lookup_call_use_vi (stmt)) != NULL) { *pt = find_what_var_points_to (cfun->decl, vi); /* Escaped (and thus nonlocal) variables are always implicitly used by calls. */ /* ??? ESCAPED can be empty even though NONLOCAL always escaped. */ - pt->nonlocal = uses_global_memory; - pt->escaped = uses_global_memory; + if (uses_global_memory) + { + pt->nonlocal = uses_global_memory; + pt->escaped = uses_global_memory; + } } else if (uses_global_memory) { @@ -7572,17 +7573,18 @@ compute_points_to_sets (void) determine_global_memory_access (stmt, &writes_global_memory, NULL, NULL); - if (!writes_global_memory) - ; - else if ((vi = lookup_call_clobber_vi (stmt)) != NULL) + if ((vi = lookup_call_clobber_vi (stmt)) != NULL) { *pt = find_what_var_points_to (cfun->decl, vi); /* Escaped (and thus nonlocal) variables are always implicitly clobbered by calls. */ /* ??? ESCAPED can be empty even though NONLOCAL always escaped. */ - pt->nonlocal = writes_global_memory; - pt->escaped = writes_global_memory; + if (writes_global_memory) + { + pt->nonlocal = writes_global_memory; + pt->escaped = writes_global_memory; + } } else if (writes_global_memory) { |