https://bugs.llvm.org/show_bug.cgi?id=32917

            Bug ID: 32917
           Summary: Miscompilation when targeting AArch64 from Windows
           Product: libraries
           Version: 3.9
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Interprocedural Optimizations
          Assignee: unassignedb...@nondot.org
          Reporter: mar...@martin.st
                CC: llvm-bugs@lists.llvm.org

Created attachment 18407
  --> https://bugs.llvm.org/attachment.cgi?id=18407&action=edit
Reduced test case

When targeting AArch64, clang on Windows can miscompile code, while the exact
same clang version on Linux and OS X compiles it correctly.

The following reduced code snippet shows the issue:

a, b;
static fn1(*p1) { a = p1[-1]; }
fn2() { fn1(b); }



When built with -O3 for AArch64, it produces the following disassembly:

0000000000000000 <fn2>:
   0:   90000008        adrp    x8, 4 <fn2+0x4>
   4:   f9400108        ldr     x8, [x8]
   8:   90000009        adrp    x9, 4 <fn2+0x4>
   c:   b9800108        ldrsw   x8, [x8]
  10:   b85fc108        ldur    w8, [x8,#-4]
  14:   f9400129        ldr     x9, [x9]
  18:   b9000128        str     w8, [x9]
  1c:   d65f03c0        ret

When built on Windows, it instead produces the following disassembly:

0000000000000000 <fn2>:
   0:   90000008        adrp    x8, 4 <fn2+0x4>
   4:   f9400108        ldr     x8, [x8]
   8:   b27e7fe9        mov     x9, #0x3fffffffc                // #17179869180
   c:   b9800108        ldrsw   x8, [x8]
  10:   b8696908        ldr     w8, [x8,x9]
  14:   90000009        adrp    x9, 4 <fn2+0x4>
  18:   f9400129        ldr     x9, [x9]
  1c:   b9000128        str     w8, [x9]
  20:   d65f03c0        ret

To reproduce the issue, build with "clang -target aarch64-none-linux-android
-O3 -c aarch64-miscompilation.c -o test.o" and disassemble e.g. with
"aarch64-linux-gnu-objdump -d test.o".

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to