[PATCH] D105372: [ms] [llvm-ml] Restrict implicit RIP-relative addressing to named-variable references
Eric Astor via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 12 12:43:09 PDT 2021
epastor updated this revision to Diff 358037.
epastor added a comment.
Rebase on parent
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105372/new/
https://reviews.llvm.org/D105372
Files:
llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
llvm/test/tools/llvm-ml/rip-relative-addressing.asm
Index: llvm/test/tools/llvm-ml/rip-relative-addressing.asm
===================================================================
--- llvm/test/tools/llvm-ml/rip-relative-addressing.asm
+++ llvm/test/tools/llvm-ml/rip-relative-addressing.asm
@@ -1,8 +1,56 @@
-; RUN: llvm-ml -m32 -filetype=s %s /Fo - | FileCheck %s --check-prefix=CHECK-32
-; RUN: llvm-ml -m64 -filetype=s %s /Fo - | FileCheck %s --check-prefix=CHECK-64
+; RUN: llvm-ml -m32 -filetype=s %s /Fo - | FileCheck %s --check-prefixes=CHECK,CHECK-32
+; RUN: llvm-ml -m64 -filetype=s %s /Fo - | FileCheck %s --check-prefixes=CHECK,CHECK-64
+
+.data
+foo DWORD 28
+
+bar:
+DWORD 29
.code
+
+t1:
+mov eax, foo
+; CHECK-LABEL: t1:
+; CHECK-32: mov eax, dword ptr [foo]
+; CHECK-64: mov eax, dword ptr [rip + foo]
+
+t2:
+mov eax, [foo]
+; CHECK-LABEL: t2:
+; CHECK-32: mov eax, dword ptr [foo]
+; CHECK-64: mov eax, dword ptr [rip + foo]
+
+t3:
+mov eax, [foo+2]
+; CHECK-LABEL: t3:
+; CHECK-32: mov eax, dword ptr [foo+2]
+; CHECK-64: mov eax, dword ptr [rip + foo+2]
+
+t4:
+mov eax, [2+foo]
+; CHECK-LABEL: t4:
+; CHECK-32: mov eax, dword ptr [foo+2]
+; CHECK-64: mov eax, dword ptr [rip + foo+2]
+
+t5:
mov eax, [4]
-; CHECK-32: mov eax, dword ptr [4]
-; CHECK-64: mov eax, dword ptr [rip + 4]
+; CHECK-LABEL: t5:
+; CHECK: mov eax, dword ptr [4]
+
+t6:
+mov eax, [foo+ebx]
+; CHECK-LABEL: t6:
+; CHECK: mov eax, dword ptr [ebx + foo]
+
+t7:
+mov eax, [bar]
+; CHECK-LABEL: t7:
+; CHECK: mov eax, dword ptr [bar]
+
+t8:
+mov eax, [t8]
+; CHECK-LABEL: t8:
+; CHECK: mov eax, dword ptr [t8]
+
END
\ No newline at end of file
Index: llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
===================================================================
--- llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -2594,9 +2594,9 @@
End, Size, SM.getSymName(),
SM.getIdentifierInfo(), Operands);
- // When parsing x64 MS-style assembly, all memory operands default to
- // RIP-relative when interpreted as non-absolute references.
- if (Parser.isParsingMasm() && is64BitMode()) {
+ // When parsing x64 MS-style assembly, all non-absolute references to a named
+ // variable default to RIP-relative.
+ if (Parser.isParsingMasm() && is64BitMode() && SM.getElementSize() > 0) {
Operands.push_back(X86Operand::CreateMem(getPointerWidth(), RegNo, Disp,
BaseReg, IndexReg, Scale, Start,
End, Size,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D105372.358037.patch
Type: text/x-patch
Size: 2567 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210712/135e7039/attachment.bin>
More information about the llvm-commits
mailing list