re PR middle-end/80222 (may_alias folded away)
2017-03-28 Richard Biener <rguenther@suse.de> PR middle-end/80222 * gimple-fold.c (gimple_fold_indirect_ref): Do not touch TYPE_REF_CAN_ALIAS_ALL references. * fold-const.c (fold_indirect_ref_1): Likewise. * g++.dg/pr80222.C: New testcase. From-SVN: r246527
This commit is contained in:
parent
62f96a79f1
commit
737f500a0b
|
@ -1,3 +1,10 @@
|
|||
2017-03-28 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/80222
|
||||
* gimple-fold.c (gimple_fold_indirect_ref): Do not touch
|
||||
TYPE_REF_CAN_ALIAS_ALL references.
|
||||
* fold-const.c (fold_indirect_ref_1): Likewise.
|
||||
|
||||
2017-03-28 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR ipa/80104
|
||||
|
|
|
@ -14006,7 +14006,8 @@ fold_indirect_ref_1 (location_t loc, tree type, tree op0)
|
|||
|
||||
STRIP_NOPS (sub);
|
||||
subtype = TREE_TYPE (sub);
|
||||
if (!POINTER_TYPE_P (subtype))
|
||||
if (!POINTER_TYPE_P (subtype)
|
||||
|| TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (op0)))
|
||||
return NULL_TREE;
|
||||
|
||||
if (TREE_CODE (sub) == ADDR_EXPR)
|
||||
|
|
|
@ -6539,8 +6539,8 @@ gimple_get_virt_method_for_binfo (HOST_WIDE_INT token, tree known_binfo,
|
|||
return gimple_get_virt_method_for_vtable (token, v, offset, can_refer);
|
||||
}
|
||||
|
||||
/* Given a pointer value OP0, return a simplified version of an
|
||||
indirection through OP0, or NULL_TREE if no simplification is
|
||||
/* Given a pointer value T, return a simplified version of an
|
||||
indirection through T, or NULL_TREE if no simplification is
|
||||
possible. Note that the resulting type may be different from
|
||||
the type pointed to in the sense that it is still compatible
|
||||
from the langhooks point of view. */
|
||||
|
@ -6554,7 +6554,8 @@ gimple_fold_indirect_ref (tree t)
|
|||
|
||||
STRIP_NOPS (sub);
|
||||
subtype = TREE_TYPE (sub);
|
||||
if (!POINTER_TYPE_P (subtype))
|
||||
if (!POINTER_TYPE_P (subtype)
|
||||
|| TYPE_REF_CAN_ALIAS_ALL (ptype))
|
||||
return NULL_TREE;
|
||||
|
||||
if (TREE_CODE (sub) == ADDR_EXPR)
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-03-28 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/80222
|
||||
* g++.dg/pr80222.C: New testcase.
|
||||
|
||||
2017-03-28 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR ipa/80104
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// { dg-do compile }
|
||||
// { dg-options "-O2 -fdump-tree-optimized" } */
|
||||
|
||||
struct C { int i; }__attribute__((may_alias)) ;
|
||||
|
||||
C a, b;
|
||||
|
||||
int main()
|
||||
{
|
||||
a = static_cast <C&> (b);
|
||||
}
|
||||
|
||||
// { dg-final { scan-tree-dump "{ref-all}\\\)&b\];" "optimized" } } */
|
Loading…
Reference in New Issue