D52044: Check lines before using alias analysis to check for interference
Lee Christy via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 18 12:44:00 PDT 2018
Thank you, Douglous!
Christy
> On Sep 18, 2018, at 12:37 PM, <douglas.yung at sony.com> <douglas.yung at sony.com> wrote:
>
> 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