[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