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:
Daniel Berlin 2005-07-04 17:49:17 +00:00 committed by Daniel Berlin
parent 0f8417e9b5
commit 2238c11d7f
3 changed files with 51 additions and 1 deletions

View File

@ -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".

View 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));
}

View File

@ -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;