[LLVMbugs] [Bug 10438] New: Intrinsic::getType() crashes for many Intrinsic::ID values

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Jul 22 03:16:21 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=10438

           Summary: Intrinsic::getType() crashes for many Intrinsic::ID
                    values
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: matt at pharr.org
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=6914)
 --> (http://llvm.org/bugs/attachment.cgi?id=6914)
c++ test program

(Boiled down test case from something I ran into elsewhere).  This happens from
a just-synced top-of-tree.

Intrinsic::getType() hits the assertion "Assertion failed: (Index < Length &&
"Invalid index!"), function operator[], file
/Users/mmp/llvm-dev-src/include/llvm/ADT/ArrayRef.h, line 130." for many
intrinsic id values.  This can be seen by doing just:

for (int id = 1; id < llvm::Intrinsic::num_intrinsics; ++id)
    intrinsicType = llvm::Intrinsic::getType(*ctx, (llvm::Intrinsic::ID)id);

But see the attached for a full reproducer case. Interestingly enough, the ones
that fail seem to be just the various architecture independent builtins:

llvm.annotation llvm.atomic.cmp.swap llvm.atomic.load.add
llvm.atomic.load.and llvm.atomic.load.max llvm.atomic.load.min
llvm.atomic.load.nand llvm.atomic.load.or llvm.atomic.load.sub
llvm.atomic.load.umax llvm.atomic.load.umin llvm.atomic.load.xor
llvm.atomic.swap llvm.bswap llvm.convertff llvm.convertfsi
llvm.convertfui llvm.convertsif llvm.convertss llvm.convertsu
llvm.convertuif llvm.convertus llvm.convertuu llvm.cos llvm.ctlz
llvm.ctpop llvm.cttz llvm.exp llvm.exp2 llvm.expect llvm.fma llvm.log
llvm.log10 llvm.log2 llvm.memcpy llvm.memmove llvm.memset llvm.objectsize
llvm.pow llvm.powi llvm.ptr.annotation llvm.sadd.with.overflow
llvm.sin llvm.smul.with.overflow llvm.sqrt llvm.ssub.with.overflow
llvm.uadd.with.overflow llvm.umul.with.overflow llvm.usub.with.overflow

And a bunch of ARM stuff:


llvm.arm.neon.vabds llvm.arm.neon.vabdu llvm.arm.neon.vabs
llvm.arm.neon.vaddhn llvm.arm.neon.vcls llvm.arm.neon.vclz
llvm.arm.neon.vcnt llvm.arm.neon.vcvtfp2fxs llvm.arm.neon.vcvtfp2fxu
llvm.arm.neon.vcvtfxs2fp llvm.arm.neon.vcvtfxu2fp llvm.arm.neon.vhadds
llvm.arm.neon.vhaddu llvm.arm.neon.vhsubs llvm.arm.neon.vhsubu
llvm.arm.neon.vld1 llvm.arm.neon.vld2 llvm.arm.neon.vld2lane
llvm.arm.neon.vld3 llvm.arm.neon.vld3lane llvm.arm.neon.vld4
llvm.arm.neon.vld4lane llvm.arm.neon.vmaxs llvm.arm.neon.vmaxu
llvm.arm.neon.vmins llvm.arm.neon.vminu llvm.arm.neon.vmullp
llvm.arm.neon.vmulls llvm.arm.neon.vmullu llvm.arm.neon.vmulp
llvm.arm.neon.vpadals llvm.arm.neon.vpadalu llvm.arm.neon.vpadd
llvm.arm.neon.vpaddls llvm.arm.neon.vpaddlu llvm.arm.neon.vpmaxs
llvm.arm.neon.vpmaxu llvm.arm.neon.vpmins llvm.arm.neon.vpminu
llvm.arm.neon.vqabs llvm.arm.neon.vqadds llvm.arm.neon.vqaddu
llvm.arm.neon.vqdmlal llvm.arm.neon.vqdmlsl llvm.arm.neon.vqdmulh
llvm.arm.neon.vqdmull llvm.arm.neon.vqmovns llvm.arm.neon.vqmovnsu
llvm.arm.neon.vqmovnu llvm.arm.neon.vqneg llvm.arm.neon.vqrdmulh
llvm.arm.neon.vqrshiftns llvm.arm.neon.vqrshiftnsu llvm.arm.neon.vqrshiftnu
llvm.arm.neon.vqrshifts llvm.arm.neon.vqrshiftu llvm.arm.neon.vqshiftns
llvm.arm.neon.vqshiftnsu llvm.arm.neon.vqshiftnu llvm.arm.neon.vqshifts
llvm.arm.neon.vqshiftsu llvm.arm.neon.vqshiftu llvm.arm.neon.vqsubs
llvm.arm.neon.vqsubu llvm.arm.neon.vraddhn llvm.arm.neon.vrecpe
llvm.arm.neon.vrecps llvm.arm.neon.vrhadds llvm.arm.neon.vrhaddu
llvm.arm.neon.vrshiftn llvm.arm.neon.vrshifts llvm.arm.neon.vrshiftu
llvm.arm.neon.vrsqrte llvm.arm.neon.vrsqrts llvm.arm.neon.vrsubhn
llvm.arm.neon.vshiftins llvm.arm.neon.vshiftls llvm.arm.neon.vshiftlu
llvm.arm.neon.vshiftn llvm.arm.neon.vshifts llvm.arm.neon.vshiftu
llvm.arm.neon.vst1 llvm.arm.neon.vst2 llvm.arm.neon.vst2lane
llvm.arm.neon.vst3 llvm.arm.neon.vst3lane llvm.arm.neon.vst4
llvm.arm.neon.vst4lane llvm.arm.neon.vsubhn llvm.arm.vcvtr
llvm.arm.vcvtru

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list