diff options
Diffstat (limited to 'gcc/tree-ssa-alias-warnings.c')
-rw-r--r-- | gcc/tree-ssa-alias-warnings.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/tree-ssa-alias-warnings.c b/gcc/tree-ssa-alias-warnings.c index bf95258..be26cb3 100644 --- a/gcc/tree-ssa-alias-warnings.c +++ b/gcc/tree-ssa-alias-warnings.c @@ -914,6 +914,7 @@ dsa_named_for (tree ptr) { unsigned ix; bitmap_iterator bi; + bool any = false; EXECUTE_IF_SET_IN_BITMAP (pi->pt_vars, 0, ix, bi) { @@ -922,7 +923,16 @@ dsa_named_for (tree ptr) if (nonstandard_alias_p (ptr, alias, false)) strict_aliasing_warn (SSA_NAME_DEF_STMT (ptr), ptr, true, alias, false, true); + else + any = true; } + + /* If there was no object in the points-to set that the pointer + may alias, unconditionally warn. */ + if (!any) + warning (OPT_Wstrict_aliasing, + "dereferencing type-punned pointer %D will " + "break strict-aliasing rules", SSA_NAME_VAR (ptr)); } } } |