This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/48561] internal compiler error: in change_address_1, at emit-rtl.c:1954
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 11 Jan 2012 13:40:21 +0000
- Subject: [Bug c/48561] internal compiler error: in change_address_1, at emit-rtl.c:1954
- Auto-submitted: auto-generated
- References: <bug-48561-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48561
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |x86_64-*-*
Status|WAITING |NEW
Known to fail| |4.5.3
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-01-11 13:40:21 UTC ---
Confirmed. Works on 4.6 and 4.7. Reduced testcase:
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
typedef uint32_t ITERATOR_TYPE;
const uint8_t RETIRED = (1 << 1);
struct AQMRU_Instantiated_For_Payload {
ITERATOR_TYPE next;
uint8_t flags;
};
typedef struct {
ITERATOR_TYPE queueHead;
ITERATOR_TYPE queueCount;
ITERATOR_TYPE stackHead;
struct AQMRU_Instantiated_For_Payload entries[((1 == sizeof(ITERATOR_TYPE))
? (255) : ((2 == sizeof(ITERATOR_TYPE)) ? (65535) : ((4 ==
sizeof(ITERATOR_TYPE)) ? (4294967295U) : 0)))];
} TestQueue;
int main(int argc, const char *argv[])
{
TestQueue testQueue;
ITERATOR_TYPE iter;
ITERATOR_TYPE count;
for (count = 0;
count < ((1 == sizeof(ITERATOR_TYPE)) ? (255) : ((2 ==
sizeof(ITERATOR_TYPE)) ? (65535) : ((4 == sizeof(ITERATOR_TYPE)) ?
(4294967295U) : 0)));
++count)
{
ITERATOR_TYPE temp = iter;
iter = testQueue.entries[iter].next;
testQueue.queueHead = iter;
testQueue.queueCount--;
if (0 == testQueue.queueCount)
{
((((1 == sizeof(ITERATOR_TYPE)) ? (255) : ((2 ==
sizeof(ITERATOR_TYPE)) ? (65535) : ((4 == sizeof(ITERATOR_TYPE)) ?
(4294967295U) : 0))) == testQueue.queueHead) ? (void) (0) : __assert_fail ());
}
testQueue.entries[temp].next = testQueue.stackHead;
testQueue.stackHead = temp;
}
}
notice the large variable testQueue.