[llvm-bugs] [Bug 44272] New: [CLANG-CL] 64x inline assembler function call/jump miscompiled
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed Dec 11 02:38:00 PST 2019
https://bugs.llvm.org/show_bug.cgi?id=44272
Bug ID: 44272
Summary: [CLANG-CL] 64x inline assembler function call/jump
miscompiled
Product: new-bugs
Version: 9.0
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P
Component: new bugs
Assignee: unassignedbugs at nondot.org
Reporter: zegzmanzoro at gmail.com
CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org
I've recently starting using Clang-CL in Visual Studio 2019 and I've discovered
a fatal bug within the compiler, when attempting to call a function within
inline assembly the function pointer is dereferenced, causing to crash due to
memory access violation, the same issue exists by attempting to "jmp" to a
function directly, I've tried to fix this in various ways, but I only found a
way to get around the problem, this happens only with 64bit inline assembler
and the fatal bug is clearly visible within assembly output.
The problem is replicated by doing something like this:
int main() {
__asm {
xor rcx, rcx
call exit
}
printf("The application didn't quit!");
return 0;
}
The generated inline assembly looks like this:
xor rcx, rcx
call qword ptr [exit]
The way I get around the problem is by using "lea" instruction to retrieve the
function pointer, which looks like this:
__asm {
xor rcx, rcx
lea rax, exit
call rax
}
Results in generated inline assembly that looks like this:
xor rcx, rcx
lea rax, [exit]
call rax
This no longer results in a crash.
My Clang-CL installation (--version):
CLang Version: 9.0.0 (release-final)
Target: x86_64-pc-windows-msvc
InstalledDir: C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\Llvm\bin
The Clang-CL compiler is downloaded via visual studio 2019 installer, selecting
the "C++ Clang tools for Windows (9.0.0 - x64/x86)"
I hope this problem can be addressed soon, this is my first time reporting a
bug. Thank you.
--
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/20191211/06fc1890/attachment-0001.html>
More information about the llvm-bugs
mailing list