[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