aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-alias-warnings.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-ssa-alias-warnings.c')
-rw-r--r--gcc/tree-ssa-alias-warnings.c10
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));
}
}
}