[llvm-bugs] [Bug 41997] New: Windows on Arm: x8 corrupted by virtual thunk
via llvm-bugs
llvm-bugs at lists.llvm.org
Thu May 23 12:43:47 PDT 2019
https://bugs.llvm.org/show_bug.cgi?id=41997
Bug ID: 41997
Summary: Windows on Arm: x8 corrupted by virtual thunk
Product: clang
Version: unspecified
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P
Component: LLVM Codegen
Assignee: unassignedclangbugs at nondot.org
Reporter: Richard.Townsend at arm.com
CC: llvm-bugs at lists.llvm.org, neeilans at live.com,
richard-llvm at metafoo.co.uk
Created attachment 21994
--> https://bugs.llvm.org/attachment.cgi?id=21994&action=edit
Reproducer
When compiling the attached reproducer, Clang emits a vtable thunk (called from
the GetStats method) which looks like this:
A::`vcall'{0}':
00007FF7124C10FC sub sp,sp,#0x40
00007FF7124C1100 stp x1,x2,[sp,#8]
00007FF7124C1104 stp x3,x4,[sp,#0x18]
00007FF7124C1108 stp x5,x6,[sp,#0x28]
00007FF7124C110C str x7,[sp,#0x38]
00007FF7124C1110 ldr x8,[x0]
00007FF7124C1114 ldr x8,[x8]
00007FF7124C1118 add sp,sp,#0x40
00007FF7124C111C br x8
This doesn't work when the function expects to return something via x8.
Attempting to do so will result in a crash.
For contrast, this is what MSVC produces:
00007FF6C59F1080 ldr xip0,[x0]
00007FF6C59F1084 ldr xip0,[xip0]
00007FF6C59F1088 br xip0
Full arguments are:
"clang-cl.exe" "-cc1" "-triple" "aarch64-pc-windows-msvc19.16.27030"
"-emit-obj" "-mincremental-linker-compatible" "-disable-free" "-main-file-name"
"Clang-Reproducer-x8.cpp" "-mrelocation-model" "static" "-mthread-model"
"posix" "-relaxed-aliasing" "-fmath-errno" "-masm-verbose"
"-mconstructor-aliases" "-munwind-tables" "-target-cpu" "generic"
"-target-feature" "+neon" "-target-abi" "aapcs"
"-fallow-half-arguments-and-returns" "-D_MT" "-flto-visibility-public-std"
"--dependent-lib=libcmt" "--dependent-lib=oldnames" "-stack-protector" "2"
"-fdiagnostics-format" "msvc" "-gcodeview" "-debug-info-kind=limited"
"-momit-leaf-frame-pointer" "-ffunction-sections" "-O2" "-fdeprecated-macro"
"-ferror-limit" "19" "-fmessage-length" "120" "-fno-use-cxa-atexit"
"-fms-extensions" "-fms-compatibility" "-fms-compatibility-version=19.16.27030"
"-std=c++14" "-fdelayed-template-parsing" "-fobjc-runtime=gcc"
"-fdiagnostics-show-option" "-fcolor-diagnostics" "-vectorize-loops"
"-vectorize-slp" "-x" "c++" "Clang-Reproducer-x8.cpp" "-faddrsig"
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190523/ae588ad2/attachment.html>
More information about the llvm-bugs
mailing list