https://llvm.org/bugs/show_bug.cgi?id=24588
Bug ID: 24588 Summary: aarch64 backend uses x18 on ios Product: new-bugs Version: trunk Hardware: Macintosh OS: other Status: NEW Severity: enhancement Priority: P Component: new bugs Assignee: unassignedb...@nondot.org Reporter: andrew.b.ad...@gmail.com CC: llvm-bugs@lists.llvm.org Classification: Unclassified Created attachment 14780 --> https://llvm.org/bugs/attachment.cgi?id=14780&action=edit A chunk of ll large enough to demonstrate the issue This is a minor complaint, but it produces a very hard-to-debug error. If you compile some .ll with a target triple aarch64-ios, then the aarch64 backend will happily use x18, even though that's reserved by the system on this platform. This causes crashes due to register-stomping. Clang avoids this by setting the additional flag -mattr=+reserve-x18, but having IOS in the target triple seems like it should be enough. To reproduce, compile the attached .ll like so: llc -mtriple aarch64-ios initmod.opengl_64.ll -filetype=asm -o - | grep x18 orr w0, wzr, #0x18 orr w0, wzr, #0x18 ldrsw x18, [x22, #40] lsl x18, x18, #1 add x5, x5, x18 ldrsw x18, [x22, #40] lsl x18, x18, #2 add x5, x5, x18 ldrsw x18, [x21, #40] lsl x18, x18, #1 add x3, x3, x18 ldrsw x18, [x21, #40] lsl x18, x18, #2 add x3, x3, x18 sxtw x18, w18 str w3, [x1, x18, lsl #2] If you add -mattr=+reserve-x18, it does the right thing. There's nothing very special about the attached ll - any sufficiently large piece of ll should reproduce this. -- 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