Sent from my iPhone
On Jan 27, 2009, at 3:02 AM, "bonzini at gnu dot org" <gcc-bugzi...@gcc.gnu.org
> wrote:
------- Comment #1 from bonzini at gnu dot org 2009-01-27 11:02
-------
This simple patch is not enough:
Index: tree-ssa-structalias.c
===================================================================
--- tree-ssa-structalias.c (revision 142960)
+++ tree-ssa-structalias.c (working copy)
@@ -3030,8 +3030,14 @@ get_constraint_for_1 (tree t, VEC (ce_s,
happens below, since it will fall into the default case. The only
case we know something about an integer treated like a pointer is
when it is the NULL pointer, and then we just say it points to
- NULL. */
- if (TREE_CODE (t) == INTEGER_CST
+ NULL.
+
+ Do not do that if -fno-delete-null-pointer-checks though,
because
+ in that case *NULL does not fail, so it _should_ alias
*anything.
+ It is not worth adding a new option or renaming the existing
one,
+ since this case is relatively obscure. */
+ if (flag_delete_null_pointer_checks
+ && TREE_CODE (t) == INTEGER_CST
&& integer_zerop (t))
{
temp.var = nothing_id;
We get:
ANYTHING = &ANYTHING
ESCAPED = *ESCAPED
NONLOCAL = &ESCAPED
INTEGER = &ANYTHING
derefaddrtmp.8 = &NONLOCAL
*ESCAPED = derefaddrtmp.8
p = &NONLOCAL
...
NULL = { }
ANYTHING = { ANYTHING }
READONLY = { READONLY }
ESCAPED = { }
NONLOCAL = { ESCAPED }
CALLUSED = { }
INTEGER = { ANYTHING }
derefaddrtmp.7 = { ESCAPED }
derefaddrtmp.8 = { NONLOCAL }
p = same as derefaddrtmp.8
...
Updating SSA information for statement a_2 = *p_1(D);
Updating SSA information for statement D.1236_4 = *p_1(D);
...
VUSE operands 2 8b
VDEF operands 0 0b
...
# VUSE <SMT.9D.1248_6(D)> { SMT.9D.1248 }
aD.1233_2 = *pD.1230_1(D);
*0B ={v} 5;
# VUSE <SMT.9D.1248_6(D)> { SMT.9D.1248 }
D.1236_4 = *pD.1230_1(D);
D.1235_5 = D.1236_4 == aD.1233_2;
return D.1235_5;
Note there is no vdef, so FRE comes and removes the second load.
If that patch is not enough and the above is happening we are going to
have issues wit volatiles also.
--
bonzini at gnu dot org changed:
What |Removed |Added
---
---
----------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2009-01-27 11:02:25
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38984