re PR middle-end/83215 (C++: struct with char-array assumed to alias with everything)
2018-11-20 Richard Biener <rguenther@suse.de> PR middle-end/83215 * alias.c (component_uses_parent_alias_set_from): Remove alias-set zero and TYPE_TYPELESS_STORAGE case both already handled in other ways. * g++.dg/tree-ssa/pr83215.C: New testcase. From-SVN: r266305
This commit is contained in:
parent
643427d70f
commit
dc3221e1e3
@ -1,3 +1,10 @@
|
||||
2018-11-20 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/83215
|
||||
* alias.c (component_uses_parent_alias_set_from): Remove
|
||||
alias-set zero and TYPE_TYPELESS_STORAGE case both already
|
||||
handled in other ways.
|
||||
|
||||
2018-11-20 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/88087
|
||||
|
10
gcc/alias.c
10
gcc/alias.c
@ -601,8 +601,7 @@ objects_must_conflict_p (tree t1, tree t2)
|
||||
/* Return the outermost parent of component present in the chain of
|
||||
component references handled by get_inner_reference in T with the
|
||||
following property:
|
||||
- the component is non-addressable, or
|
||||
- the parent has alias set zero,
|
||||
- the component is non-addressable
|
||||
or NULL_TREE if no such parent exists. In the former cases, the alias
|
||||
set of this parent is the alias set that must be used for T itself. */
|
||||
|
||||
@ -611,10 +610,6 @@ component_uses_parent_alias_set_from (const_tree t)
|
||||
{
|
||||
const_tree found = NULL_TREE;
|
||||
|
||||
if (AGGREGATE_TYPE_P (TREE_TYPE (t))
|
||||
&& TYPE_TYPELESS_STORAGE (TREE_TYPE (t)))
|
||||
return const_cast <tree> (t);
|
||||
|
||||
while (handled_component_p (t))
|
||||
{
|
||||
switch (TREE_CODE (t))
|
||||
@ -652,9 +647,6 @@ component_uses_parent_alias_set_from (const_tree t)
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
if (get_alias_set (TREE_TYPE (TREE_OPERAND (t, 0))) == 0)
|
||||
found = t;
|
||||
|
||||
t = TREE_OPERAND (t, 0);
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2018-11-20 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/83215
|
||||
* g++.dg/tree-ssa/pr83215.C: New testcase.
|
||||
|
||||
2018-11-20 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc.c-torture/execute/20181120-1.c: New test.
|
||||
|
19
gcc/testsuite/g++.dg/tree-ssa/pr83215.C
Normal file
19
gcc/testsuite/g++.dg/tree-ssa/pr83215.C
Normal file
@ -0,0 +1,19 @@
|
||||
// { dg-do compile }
|
||||
// { dg-options "-O2 -fdump-tree-fre1" }
|
||||
|
||||
struct mytest
|
||||
{
|
||||
float a;
|
||||
char buf[256];
|
||||
};
|
||||
|
||||
int foo(mytest *m, int *i)
|
||||
{
|
||||
int tmp = *i;
|
||||
m->a = 10.0f;
|
||||
return tmp + *i;
|
||||
}
|
||||
|
||||
// we should be able to CSE *i despite mytest having a cbar[] buffer
|
||||
// and thus being subject to TYPE_TYPELESS_STORAGE
|
||||
// { dg-final { scan-tree-dump-times "\\*i" 1 "fre1" } }
|
Loading…
Reference in New Issue
Block a user