re PR tree-optimization/22279 (ICE in first_vi_for_offset, at tree-ssa-structalias.c:2566)
2005-07-04 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/22279 * tree-ssa-structalias.c (offset_overlaps_with_access): Use correct operator. From-SVN: r101603
This commit is contained in:
parent
0f8417e9b5
commit
2238c11d7f
@ -1,3 +1,10 @@
|
||||
2005-07-04 Daniel Berlin <dberlin@dberlin.org>
|
||||
|
||||
Fix PR tree-optimization/22279
|
||||
|
||||
* tree-ssa-structalias.c (offset_overlaps_with_access): Use
|
||||
correct operator.
|
||||
|
||||
2005-07-04 J"orn Rennecke <joern.rennecke@st.com>
|
||||
|
||||
* sh.c (output_ieee_ccmpeq): Replace "\\;" with "\n\t".
|
||||
|
43
gcc/testsuite/g++.dg/tree-ssa/pr22279.C
Normal file
43
gcc/testsuite/g++.dg/tree-ssa/pr22279.C
Normal file
@ -0,0 +1,43 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
struct string
|
||||
{
|
||||
long long _M_p;
|
||||
long long i;
|
||||
string();
|
||||
int begin();
|
||||
int end();
|
||||
string(int, int);
|
||||
};
|
||||
struct symbol
|
||||
{
|
||||
int type;
|
||||
string name;
|
||||
long long raw_name;
|
||||
long long demangled_name;
|
||||
long long version_name;
|
||||
int version_status;
|
||||
int status;
|
||||
void init();
|
||||
};
|
||||
void symbol::init() { name = string(); }
|
||||
struct pair
|
||||
{
|
||||
symbol first;
|
||||
symbol second;
|
||||
pair(const symbol& __a, const symbol& __b) : first(__a), second(__b) { }
|
||||
};
|
||||
struct vector
|
||||
{
|
||||
void push_back(const pair& __x);
|
||||
};
|
||||
/* This ends up with two RHS deref copies, and we need to get the offsets right on them. */
|
||||
void f(vector incompatible)
|
||||
{
|
||||
symbol base;
|
||||
incompatible.push_back(pair(base, base));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1951,7 +1951,7 @@ offset_overlaps_with_access (const unsigned HOST_WIDE_INT fieldpos,
|
||||
{
|
||||
if (fieldpos == accesspos && fieldsize == accesssize)
|
||||
return true;
|
||||
if (accesspos >= fieldpos && accesspos <= (fieldpos + fieldsize))
|
||||
if (accesspos >= fieldpos && accesspos < (fieldpos + fieldsize))
|
||||
return true;
|
||||
if (accesspos < fieldpos && (accesspos + accesssize > fieldpos))
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user