This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/48561] internal compiler error: in change_address_1, at emit-rtl.c:1954


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]