[PATCH] D45022: [X86] Mark all byval parameters as aliased
Jeremy Morse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue May 8 02:22:02 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL331749: [X86] Mark all byval parameters as aliased (authored by jmorse, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D45022?vs=145167&id=145652#toc
Repository:
rL LLVM
https://reviews.llvm.org/D45022
Files:
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
llvm/trunk/test/CodeGen/X86/pr30290.ll
Index: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
===================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
@@ -2839,7 +2839,11 @@
if (Flags.isByVal()) {
unsigned Bytes = Flags.getByValSize();
if (Bytes == 0) Bytes = 1; // Don't create zero-sized stack objects.
- int FI = MFI.CreateFixedObject(Bytes, VA.getLocMemOffset(), isImmutable);
+
+ // FIXME: For now, all byval parameter objects are marked as aliasing. This
+ // can be improved with deeper analysis.
+ int FI = MFI.CreateFixedObject(Bytes, VA.getLocMemOffset(), isImmutable,
+ /*isAliased=*/true);
// Adjust SP offset of interrupt parameter.
if (CallConv == CallingConv::X86_INTR) {
MFI.setObjectOffset(FI, Offset);
Index: llvm/trunk/test/CodeGen/X86/pr30290.ll
===================================================================
--- llvm/trunk/test/CodeGen/X86/pr30290.ll
+++ llvm/trunk/test/CodeGen/X86/pr30290.ll
@@ -5,10 +5,6 @@
; When broken, five "1" constants are written into the byval %struct.face,
; but the subsequent byval read of that struct (call to bar) gets re-ordered
; before those writes, illegally.
-;
-; FIXME: the output shown below is the broken output of llc, "movl $1" is
-; scheduled after the copy between byval arguments starts. This will be fixed
-; with the patch in review D45022.
source_filename = "test.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"
@@ -26,8 +22,8 @@
; CHECK-NEXT: .cfi_def_cfa_offset 48
; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = [1,1,1,1]
; CHECK-NEXT: vmovaps %xmm0, {{[0-9]+}}(%rsp)
-; CHECK-NEXT: vmovups {{[0-9]+}}(%rsp), %xmm0
; CHECK-NEXT: movl $1, {{[0-9]+}}(%rsp)
+; CHECK-NEXT: vmovups {{[0-9]+}}(%rsp), %xmm0
; CHECK-NEXT: vmovups %xmm0, {{[0-9]+}}(%rsp)
; CHECK-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm0
; CHECK-NEXT: vmovups %xmm0, (%rsp)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45022.145652.patch
Type: text/x-patch
Size: 2038 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180508/b36ac704/attachment.bin>
More information about the llvm-commits
mailing list