[llvm] r295539 - AMDGPU/R600: Assert on infinite loop in EmitClauseMarkers

Jan Vesely via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 20 09:45:58 PST 2017


On Sat, 2017-02-18 at 20:44 +0000, David Blaikie wrote:
> This seems not quite right for a few reasons:
> 
> * If this code is reachable, an assertion isn't appropriate (assertions
> should not be reachable - there are some tests for assertions failures in
> unit tests, to demonstrate that those APIs assert fail on misuse, for
> example) - maybe report_fatal_error is what's required here?

the asserted condition should not be reachable. It's a bug that needs
fixing.

> 
> * XFAIL isn't the right tool for a test for failure - "not llc" or the like
> (I'm not sure if lit supports that exact syntax, or it requires something
> else) would probably be the right thing.

XFAIL is temporary, fix of the underlying bug will enable the test.

> 
> * This test would (if it remains in tree) need "REQUIRES: Asserts"
> otherwise it introduces an infinite loop in non-asserts builds. (I'm not
> sure why this isn't breaking any release building bot with the AMDGPU
> backend enabled)

thank for noticing.
it was addressed by nakamura takumi in r295591.


regards,
Jan

> 
> On Fri, Feb 17, 2017 at 8:35 PM Jan Vesely via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
> 
> > Author: jvesely
> > Date: Fri Feb 17 22:24:10 2017
> > New Revision: 295539
> > 
> > URL: http://llvm.org/viewvc/llvm-project?rev=295539&view=rev
> > Log:
> > AMDGPU/R600: Assert on infinite loop in EmitClauseMarkers
> > 
> > Differential Revision: https://reviews.llvm.org/D29792
> > 
> > Added:
> >     llvm/trunk/test/CodeGen/AMDGPU/r600.alu-limits.ll
> > Modified:
> >     llvm/trunk/lib/Target/AMDGPU/R600EmitClauseMarkers.cpp
> > 
> > Modified: llvm/trunk/lib/Target/AMDGPU/R600EmitClauseMarkers.cpp
> > URL:
> > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/R600EmitClauseMarkers.cpp?rev=295539&r1=295538&r2=295539&view=diff
> > 
> > ==============================================================================
> > --- llvm/trunk/lib/Target/AMDGPU/R600EmitClauseMarkers.cpp (original)
> > +++ llvm/trunk/lib/Target/AMDGPU/R600EmitClauseMarkers.cpp Fri Feb 17
> > 22:24:10 2017
> > @@ -321,9 +321,11 @@ public:
> >        if (I != MBB.end() && I->getOpcode() == AMDGPU::CF_ALU)
> >          continue; // BB was already parsed
> >        for (MachineBasicBlock::iterator E = MBB.end(); I != E;) {
> > -        if (isALU(*I))
> > -          I = MakeALUClause(MBB, I);
> > -        else
> > +        if (isALU(*I)) {
> > +          auto next = MakeALUClause(MBB, I);
> > +          assert(next != I);
> > +          I = next;
> > +        } else
> >            ++I;
> >        }
> >      }
> > 
> > Added: llvm/trunk/test/CodeGen/AMDGPU/r600.alu-limits.ll
> > URL:
> > http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/r600.alu-limits.ll?rev=295539&view=auto
> > 
> > ==============================================================================
> > --- llvm/trunk/test/CodeGen/AMDGPU/r600.alu-limits.ll (added)
> > +++ llvm/trunk/test/CodeGen/AMDGPU/r600.alu-limits.ll Fri Feb 17 22:24:10
> > 2017
> > @@ -0,0 +1,28 @@
> > +; RUN: opt -loop-unroll -unroll-threshold=2000 -S < %s | llc -march=r600
> > -mcpu=cypress | FileCheck %s
> > +; XFAIL: *
> > +
> > +; CHECK: {{^}}@alu_limits:
> > +
> > +%struct.foo = type {i32, i32, i32}
> > +
> > +define void @alu_limits(i32 addrspace(1)* %out, %struct.foo* %in, i32
> > %offset) {
> > +entry:
> > +  %ptr = getelementptr inbounds %struct.foo, %struct.foo* %in, i32 1, i32
> > 2
> > +  %x = load i32, i32 *%ptr, align 4
> > +  br label %loop
> > +loop:
> > +  %i = phi i32 [ 100, %entry ], [ %nexti, %loop ]
> > +  %val = phi i32 [ 1, %entry ], [ %nextval, %loop ]
> > +
> > +  %nexti = sub i32 %i, 1
> > +
> > +  %y = xor i32 %x, %i
> > +  %nextval = mul i32 %val, %y
> > +
> > +  %cond = icmp ne i32 %nexti, 0
> > +  br i1 %cond, label %loop, label %end
> > +end:
> > +  %out_val = add i32 %nextval, 4
> > +  store i32 %out_val, i32 addrspace(1)* %out, align 4
> > +  ret void
> > +}
> > 
> > 
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> > 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170220/dd02fd20/attachment.sig>


More information about the llvm-commits mailing list