http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54951



             Bug #: 54951

           Summary: Incorrect pointer handling on 32K boundary

    Classification: Unclassified

           Product: gcc

           Version: 4.7.2

            Status: UNCONFIRMED

          Severity: critical

          Priority: P3

         Component: c

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: m.gala...@centrosistemi.it





Created attachment 28460

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28460

Simple test case to reproduce the bug



m32c-elf-gcc (GCC) 4.7.2 hosted on Windows XP.



The attached "run.bat" batch compiles and runs a simple program that adds a

constant value (COUNT) to a pointer (0x10000) and prints the result.

The first result (a) is calculated by adding COUNT to the pointer, the second

result (b) is calculated by incrementing the pointer COUNT times.



When COUNT is 0x7FFF the result is correct for both a and b (0x17FFF).



When COUNT is 0x8000 the result is incorrect for a (0x8000) but correct for b

(0x18000).



When COUNT is 0xFFFF the result is incorrect for a (0xFFFF) but correct for b

(0x1FFFF) when compiled with -O0, and incorrect for both a and b (0xFFFF) when

compiled with -O1.

Reply via email to