[PATCH] D45022: [X86] Mark all byval parameters as aliased
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Fri May 4 08:09:42 PDT 2018
Note: I marked this patch as 'accepted' on Phab over an hour ago, but I
haven't gotten an email about it, so sending 'LGTM' via email.
On Fri, May 4, 2018 at 4:36 AM, Jeremy Morse via Phabricator <
reviews at reviews.llvm.org> wrote:
> jmorse updated this revision to Diff 145167.
> jmorse added a comment.
>
> Rebase against now-committed test case. The patch against the test is
> indeed much clearer now, it's obvious what the effect of the code change is.
>
>
> https://reviews.llvm.org/D45022
>
> Files:
> lib/Target/X86/X86ISelLowering.cpp
> test/CodeGen/X86/pr30290.ll
>
>
> Index: test/CodeGen/X86/pr30290.ll
> ===================================================================
> --- test/CodeGen/X86/pr30290.ll
> +++ 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: movl $1, {{[0-9]+}}(%rsp)
> ; CHECK-NEXT: vmovups {{[0-9]+}}(%rsp), %xmm0
> -; CHECK-NEXT: movl $1, {{[0-9]+}}(%rsp)
> ; CHECK-NEXT: vmovups %xmm0, {{[0-9]+}}(%rsp)
> ; CHECK-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm0
> ; CHECK-NEXT: vmovups %xmm0, (%rsp)
> Index: lib/Target/X86/X86ISelLowering.cpp
> ===================================================================
> --- lib/Target/X86/X86ISelLowering.cpp
> +++ 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);
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180504/dc5ff17d/attachment.html>
More information about the llvm-commits
mailing list