[llvm] r284917 - [ARM] Fix crash in ConstantIslands
James Molloy via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 24 10:33:29 PDT 2016
Thanks!
On Mon, 24 Oct 2016 at 19:31, Friedman, Eli via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> r284993.
>
>
> -Eli
>
>
> On 10/24/2016 10:22 AM, James Molloy wrote:
>
> Hi Eli,
>
> Sorry about that! I'm on vacation for a few days with no SVN access- if
> it's blocking you please feel free to revert and I'll look at it on
> Thursday.
>
> Thanks,
>
> James
> On Mon, 24 Oct 2016 at 19:20, Friedman, Eli via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
> On 10/22/2016 2:58 AM, James Molloy via llvm-commits wrote:
> > Author: jamesm
> > Date: Sat Oct 22 04:58:37 2016
> > New Revision: 284917
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=284917&view=rev
> > Log:
> > [ARM] Fix crash in ConstantIslands
> >
> > tPCRelJT may not be the first instruction in a block. Check that instead
> of dereferencing a broken iterator.
>
> Thanks for the fix... but this exposes more problems.
>
> It looks like the jump tables being generated by this optimization
> aren't properly aligned; with -no-integrated-as, I'm getting errors like
> "Error: invalid immediate for address calculation (value =
> 0x00000006)". I haven't reduced a testcase yet, but it's triggering on
> a bunch of SPEC tests, so it shouldn't be hard to reproduce.
>
> -Eli
>
>
> >
> > Added:
> > llvm/trunk/test/CodeGen/ARM/constant-island-crash.ll
> > Modified:
> > llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp
> >
> > Modified: llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp?rev=284917&r1=284916&r2=284917&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp (original)
> > +++ llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp Sat Oct 22
> 04:58:37 2016
> > @@ -2048,7 +2048,9 @@ bool ARMConstantIslands::optimizeThumb2J
> > // %base = tLEApcrelJT
> > // %t = tLDRr %idx, %base
> > unsigned BaseReg = User.MI->getOperand(0).getReg();
> > -
> > +
> > + if (User.MI->getIterator() == User.MI->getParent()->begin())
> > + continue;
> > MachineInstr *Shift = User.MI->getPrevNode();
> > if (Shift->getOpcode() != ARM::tLSLri ||
> > Shift->getOperand(3).getImm() != 2 ||
> >
> > Added: llvm/trunk/test/CodeGen/ARM/constant-island-crash.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/constant-island-crash.ll?rev=284917&view=auto
> >
> ==============================================================================
> > --- llvm/trunk/test/CodeGen/ARM/constant-island-crash.ll (added)
> > +++ llvm/trunk/test/CodeGen/ARM/constant-island-crash.ll Sat Oct 22
> 04:58:37 2016
> > @@ -0,0 +1,43 @@
> > +; RUN: llc < %s
> > +; No FileCheck - testing for crash.
> > +
> > +target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> > +target triple = "thumbv5e-none-linux-gnueabi"
> > +
> > +%struct.blam = type { [4 x %struct.eggs], [6 x [15 x i16]], [6 x i32],
> i32, i32, i32, i32, i32, i32, %struct.eggs, [4 x %struct.eggs], [4 x
> %struct.eggs], [4 x i32], i32, i32, i32, [4 x %struct.eggs], [4 x
> %struct.eggs], i32, %struct.eggs, i32 }
> > +%struct.eggs = type { i32, i32 }
> > +
> > +define void @spam(%struct.blam* %arg, i32 %arg1) {
> > +bb:
> > + %tmp = getelementptr inbounds %struct.blam, %struct.blam* %arg, i32
> undef, i32 2, i32 %arg1
> > + switch i32 %arg1, label %bb8 [
> > + i32 0, label %bb2
> > + i32 1, label %bb3
> > + i32 2, label %bb4
> > + i32 3, label %bb5
> > + i32 4, label %bb6
> > + i32 5, label %bb7
> > + ]
> > +
> > +bb2: ; preds = %bb
> > + unreachable
> > +
> > +bb3: ; preds = %bb
> > + unreachable
> > +
> > +bb4: ; preds = %bb
> > + unreachable
> > +
> > +bb5: ; preds = %bb
> > + unreachable
> > +
> > +bb6: ; preds = %bb
> > + unreachable
> > +
> > +bb7: ; preds = %bb
> > + unreachable
> > +
> > +bb8: ; preds = %bb
> > + store i32 1, i32* %tmp, align 4
> > + unreachable
> > +}
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
> --
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
> Foundation Collaborative Project
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
>
> --
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161024/53f7f597/attachment.html>
More information about the llvm-commits
mailing list