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

           Summary: CodegenOpt::None and llvm.gcroot trigger failure in
                    X86ISelDAG
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: X86
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Created an attachment (id=7167)
 --> (http://llvm.org/bugs/attachment.cgi?id=7167)
minimal testcase

The attached testcase triggers failure in X86ISelDAG in LLVM 2.9 and trunk
(r138727) when CodeGenOpt level is None.  I can reproduce this bug on LLVM 2.4,
but not 2.3 (under -fast instead of -O0).

$ ~/llvm/trunk/bin/llc -O0 test.ll
llc: /home/benkarel/llvm/src/trunk/include/llvm/Support/Casting.h:194: typename
llvm::cast_retty<To, From>::ret_type llvm::cast(const Y&) [with X =
llvm::FrameIndexSDNode, Y = llvm::SDNode*]: Assertion `isa<X>(Val) &&
"cast<Ty>() argument of incompatible type!"' failed.
0  llc 0x088c31b8
Stack dump:
0.    Program arguments: /home/benkarel/llvm/trunk/bin/llc -O0 test.ll 
1.    Running pass 'Function Pass Manager' on module 'test.ll'.
2.    Running pass 'X86 DAG->DAG Instruction Selection' on function '@f'
Aborted

This bug only seems to be triggered under a specific set of circumstances:

  1) CodegenOpt level must be None
  2) The first argument to llvm.gcroot must be a bitcast of an alloca. The bug
is not triggered if an alloca value is passed directly.
  3) The GC plugin for the function must (I think) be one that emits stack
maps. The ocaml GC and my custom GC both trigger the bug, but the shadow-stack
GC does not.

-- 
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to