D52044: Check lines before using alias analysis to check for interference

via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 18 12:37:59 PDT 2018


Hi Christy,

Thanks for the heads up, I've reverted it in r342509.

Douglas Yung

> -----Original Message-----
> From: Lee Christy [mailto:christyc.y.lee at gmail.com]
> Sent: Tuesday, September 18, 2018 12:27
> To: Yung, Douglas
> Cc: christycylee at gmail.com; llvm-commits at lists.llvm.org
> Subject: Re: D52044: Check lines before using alias analysis to check
> for interference
> 
> I’m traveling today but I’ll look at it first thing in the morning. I
> think it has to do with me accidentally committing dependent diffs in
> the wrong order.  Feel free to revert it for now.  Thanks!
> 
> Christy
> 
> > On Sep 18, 2018, at 12:20 PM, <douglas.yung at sony.com>
> <douglas.yung at sony.com> wrote:
> >
> > Hi Christy,
> >
> > The test you added seems to be failing on the PS4 Linux bot, can you
> please take a look?
> >
> > http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-
> ubuntu-fast/builds/36708/steps/test/logs/stdio
> >
> > FAIL: LLVM :: Transforms/MergeICmps/X86/alias-merge-blocks.ll (39364
> of 44010)
> > ******************** TEST 'LLVM :: Transforms/MergeICmps/X86/alias-
> merge-blocks.ll' FAILED ********************
> > Script:
> > --
> > : 'RUN: at line 2';   /home/buildslave/ps4-buildslave4/llvm-clang-
> lld-x86_64-scei-ps4-ubuntu-fast/llvm.obj/bin/opt <
> /home/buildslave/ps4-buildslave4/llvm-clang-lld-x86_64-scei-ps4-ubuntu-
> fast/llvm.src/test/Transforms/MergeICmps/X86/alias-merge-blocks.ll -
> mtriple=x86_64-unknown-unknown -mergeicmps -S | /home/buildslave/ps4-
> buildslave4/llvm-clang-lld-x86_64-scei-ps4-ubuntu-
> fast/llvm.obj/bin/FileCheck /home/buildslave/ps4-buildslave4/llvm-
> clang-lld-x86_64-scei-ps4-ubuntu-
> fast/llvm.src/test/Transforms/MergeICmps/X86/alias-merge-blocks.ll --
> check-prefix=X86
> > --
> > Exit Code: 1
> >
> > Command Output (stderr):
> > --
> > /home/buildslave/ps4-buildslave4/llvm-clang-lld-x86_64-scei-ps4-
> ubuntu-fast/llvm.src/test/Transforms/MergeICmps/X86/alias-merge-
> blocks.ll:20:13: error: X86-NEXT: expected string not found in input
> > ; X86-NEXT: [[TMP2:%.*]] = load i32, i32* [[SECOND_I]], align 4
> >            ^
> > <stdin>:20:2: note: scanning from here
> > %second2.i = getelementptr inbounds %"struct.std::pair",
> %"struct.std::pair"* %b, i64 0, i32 1
> > ^
> > <stdin>:20:2: note: with variable "SECOND_I" equal to "%second.i"
> > %second2.i = getelementptr inbounds %"struct.std::pair",
> %"struct.std::pair"* %b, i64 0, i32 1
> > ^
> > <stdin>:24:2: note: possible intended match here
> > %2 = icmp eq i32 %memcmp, 0
> > ^
> >
> > --
> >
> > ********************
> >
> > Douglas Yung
> >
> >> -----Original Message-----
> >> From: llvm-commits [mailto:llvm-commits-bounces at lists.llvm.org] On
> >> Behalf Of Christy Lee via Phabricator via llvm-commits
> >> Sent: Tuesday, September 18, 2018 9:45
> >> To: christycylee at gmail.com; lebedev.ri at gmail.com;
> >> clement.courbet at gmail.com
> >> Cc: llvm-commits at lists.llvm.org
> >> Subject: [PATCH] D52044: Check lines before using alias analysis to
> >> check for interference
> >>
> >> This revision was automatically updated to reflect the committed
> >> changes.
> >> Closed by commit rL342494: Check lines before using alias analysis
> to
> >> check for interference (authored by christylee, committed by ).
> >> Herald added a subscriber: llvm-commits.
> >>
> >> Changed prior to commit:
> >>  https://reviews.llvm.org/D52044?vs=165314&id=165993#toc
> >>
> >> Repository:
> >>  rL LLVM
> >>
> >> https://reviews.llvm.org/D52044
> >>
> >> Files:
> >>  llvm/trunk/test/Transforms/MergeICmps/X86/alias-merge-blocks.ll
> >>
> >>
> >> Index: llvm/trunk/test/Transforms/MergeICmps/X86/alias-merge-
> blocks.ll
> >> ===================================================================
> >> --- llvm/trunk/test/Transforms/MergeICmps/X86/alias-merge-blocks.ll
> >> +++ llvm/trunk/test/Transforms/MergeICmps/X86/alias-merge-blocks.ll
> >> @@ -0,0 +1,66 @@
> >> +; NOTE: Assertions have been autogenerated by
> >> +utils/update_test_checks.py ; RUN: opt < %s
> >> +-mtriple=x86_64-unknown-unknown -mergeicmps -S | FileCheck %s
> >> +--check-prefix=X86
> >> +
> >> +%"struct.std::pair" = type { i32, i32, i32, i32 }
> >> +
> >> +; Before patch D51550
> >> +define zeroext i1 @opeq1(
> >> +; X86-LABEL: @opeq1(
> >> +; X86-NEXT:  entry:
> >> +; X86-NEXT:    [[PTR:%.*]] = alloca i32
> >> +; X86-NEXT:    [[FIRST_I:%.*]] = getelementptr inbounds
> >> %"struct.std::pair", %"struct.std::pair"* [[A:%.*]], i64 0, i32 0
> >> +; X86-NEXT:    [[TMP0:%.*]] = load i32, i32* [[FIRST_I]], align 4
> >> +; X86-NEXT:    [[FIRST1_I:%.*]] = getelementptr inbounds
> >> %"struct.std::pair", %"struct.std::pair"* [[B:%.*]], i64 0, i32 0
> >> +; X86-NEXT:    [[TMP1:%.*]] = load i32, i32* [[FIRST1_I]], align 4
> >> +; X86-NEXT:    store i32 42, i32* [[PTR]]
> >> +; X86-NEXT:    [[CMP_I:%.*]] = icmp eq i32 [[TMP0]], [[TMP1]]
> >> +; X86-NEXT:    br i1 [[CMP_I]], label [[LAND_RHS_I:%.*]], label
> >> [[OPEQ1_EXIT:%.*]]
> >> +; X86:       land.rhs.i:
> >> +; X86-NEXT:    [[SECOND_I:%.*]] = getelementptr inbounds
> >> %"struct.std::pair", %"struct.std::pair"* [[A]], i64 0, i32 1
> >> +; X86-NEXT:    [[TMP2:%.*]] = load i32, i32* [[SECOND_I]], align 4
> >> +; X86-NEXT:    [[SECOND2_I:%.*]] = getelementptr inbounds
> >> %"struct.std::pair", %"struct.std::pair"* [[B]], i64 0, i32 1
> >> +; X86-NEXT:    [[TMP3:%.*]] = load i32, i32* [[SECOND2_I]], align 4
> >> +; X86-NEXT:    [[CMP2_I:%.*]] = icmp eq i32 [[TMP2]], [[TMP3]]
> >> +; X86-NEXT:    br i1 [[CMP2_I]], label [[LAND_RHS_I_2:%.*]], label
> >> [[OPEQ1_EXIT]]
> >> +
> >> +  %"struct.std::pair"* nocapture readonly dereferenceable(16) %a,
> >> +  %"struct.std::pair"* nocapture readonly dereferenceable(16) %b)
> >> +local_unnamed_addr #0 {
> >> +entry:
> >> +  %ptr = alloca i32
> >> +  %first.i = getelementptr inbounds %"struct.std::pair",
> >> +%"struct.std::pair"* %a, i64 0, i32 0
> >> +  %0 = load i32, i32* %first.i, align 4
> >> +  %first1.i = getelementptr inbounds %"struct.std::pair",
> >> +%"struct.std::pair"* %b, i64 0, i32 0
> >> +  %1 = load i32, i32* %first1.i, align 4
> >> +  ; Does other work, has no interference, merge block
> >> +  store i32 42, i32* %ptr
> >> +  %cmp.i = icmp eq i32 %0, %1
> >> +  br i1 %cmp.i, label %land.rhs.i, label %opeq1.exit
> >> +
> >> +land.rhs.i:
> >> +  %second.i = getelementptr inbounds %"struct.std::pair",
> >> +%"struct.std::pair"* %a, i64 0, i32 1
> >> +  %2 = load i32, i32* %second.i, align 4
> >> +  %second2.i = getelementptr inbounds %"struct.std::pair",
> >> +%"struct.std::pair"* %b, i64 0, i32 1
> >> +  %3 = load i32, i32* %second2.i, align 4
> >> +  %cmp2.i = icmp eq i32 %2, %3
> >> +  br i1 %cmp2.i, label %land.rhs.i.2, label %opeq1.exit
> >> +
> >> +land.rhs.i.2:
> >> +  %third.i = getelementptr inbounds %"struct.std::pair",
> >> +%"struct.std::pair"* %a, i64 0, i32 2
> >> +  %4 = load i32, i32* %third.i, align 4
> >> +  %third2.i = getelementptr inbounds %"struct.std::pair",
> >> +%"struct.std::pair"* %b, i64 0, i32 2
> >> +  %5 = load i32, i32* %third2.i, align 4
> >> +  %cmp3.i = icmp eq i32 %4, %5
> >> +  br i1 %cmp3.i, label %land.rhs.i.3, label %opeq1.exit
> >> +
> >> +land.rhs.i.3:
> >> +  %fourth.i = getelementptr inbounds %"struct.std::pair",
> >> +%"struct.std::pair"* %a, i64 0, i32 3
> >> +  %6 = load i32, i32* %fourth.i, align 4
> >> +  %fourth2.i = getelementptr inbounds %"struct.std::pair",
> >> +%"struct.std::pair"* %b, i64 0, i32 3
> >> +  %7 = load i32, i32* %fourth2.i, align 4
> >> +  %cmp4.i = icmp eq i32 %6, %7
> >> +  br label %opeq1.exit
> >> +
> >> +opeq1.exit:
> >> +  %8 = phi i1 [ false, %entry ], [ false, %land.rhs.i] , [ false,
> >> +%land.rhs.i.2 ], [ %cmp4.i, %land.rhs.i.3 ]
> >> +  ret i1 %8
> >> +}
> >>
> >


More information about the llvm-commits mailing list