-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Open
Labels
Description
// RUN: llvm-tblgen -gen-dag-isel -I %p/../../include %s -o - | FileCheck -check-prefix=ISEL %s
include "llvm/Target/Target.td"
class MyReg<string n>
: Register<n> {
let Namespace = "MyTarget";
}
def X0 : MyReg<"x0">;
def X1 : MyReg<"x1">;
def XRegs : RegisterClass<"MyTarget", [i64], 64, (add X0, X1)>;
class TestInstruction : Instruction {
let Size = 2;
let Namespace = "MyTarget";
let hasSideEffects = false;
let hasExtraSrcRegAllocReq = false;
let hasExtraDefRegAllocReq = false;
field bits<16> Inst;
bits<3> dst;
bits<3> src;
bits<3> opcode;
let Inst{2-0} = dst;
let Inst{5-3} = src;
let Inst{7-5} = opcode;
}
def MY_LOAD : TestInstruction {
let OutOperandList = (outs XRegs:$dst);
let InOperandList = (ins ptr_rc:$ptr);
let AsmString = "my_load $dst, $ptr";
let opcode = 0;
}
def : Pat<
(i64 (load (iPTR:$src))),
(MY_LOAD $val, $src)
>;
def MyTargetISA : InstrInfo;
def MyTarget : Target { let InstructionSet = MyTargetISA; }
This testcase hits:
error: no check strings found with prefix 'ISEL:'
anonymous_10320: /Users/matt/src/llvm-project/llvm/test/TableGen/cast-error-assert.td:39:1: error: In anonymous_10320: Type cast only takes one operand!
def : Pat<
^
Assertion failed: (Index < Length && "Invalid index!"), function operator[], file ArrayRef.h, line 253.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0. Program arguments: /Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen -gen-dag-isel -I /Users/matt/src/llvm-project/llvm/test/TableGen/../../include /Users/matt/src/llvm-project/llvm/test/TableGen/cast-error-assert.td -o -
#0 0x0000000101579968 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100749968)
#1 0x0000000101579f18 PrintStackTraceSignalHandler(void*) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100749f18)
#2 0x0000000101577764 llvm::sys::RunSignalHandlers() (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100747764)
#3 0x000000010157b940 SignalHandler(int, __siginfo*, void*) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x10074b940)
#4 0x0000000185500624 (/usr/lib/system/libsystem_platform.dylib+0x1804ac624)
#5 0x00000001854c688c (/usr/lib/system/libsystem_pthread.dylib+0x18047288c)
#6 0x00000001853cfc60 (/usr/lib/system/libsystem_c.dylib+0x18037bc60)
#7 0x00000001853ceeec (/usr/lib/system/libsystem_c.dylib+0x18037aeec)
#8 0x0000000100f5995c llvm::ArrayRef<llvm::Init const*>::operator[](unsigned long) const (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x10012995c)
#9 0x0000000100f56104 llvm::DagInit::getArg(unsigned int) const (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100126104)
#10 0x0000000100f96f5c llvm::TreePattern::ParseTreePattern(llvm::Init const*, llvm::StringRef)::$_0::operator()(llvm::DagInit const*, llvm::StringRef) const (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100166f5c)
#11 0x0000000100f95b04 llvm::TreePattern::ParseTreePattern(llvm::Init const*, llvm::StringRef) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100165b04)
#12 0x0000000100f96308 llvm::TreePattern::ParseTreePattern(llvm::Init const*, llvm::StringRef) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100166308)
#13 0x0000000100f96f94 llvm::TreePattern::ParseTreePattern(llvm::Init const*, llvm::StringRef)::$_0::operator()(llvm::DagInit const*, llvm::StringRef) const (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100166f94)
#14 0x0000000100f95b04 llvm::TreePattern::ParseTreePattern(llvm::Init const*, llvm::StringRef) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100165b04)
#15 0x0000000100f9687c llvm::TreePattern::TreePattern(llvm::Record const*, llvm::DagInit const*, bool, llvm::CodeGenDAGPatterns&) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x10016687c)
#16 0x0000000100f968e0 llvm::TreePattern::TreePattern(llvm::Record const*, llvm::DagInit const*, bool, llvm::CodeGenDAGPatterns&) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x1001668e0)
#17 0x0000000100f9a554 llvm::CodeGenDAGPatterns::ParsePatterns() (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x10016a554)
#18 0x0000000100f98db4 llvm::CodeGenDAGPatterns::CodeGenDAGPatterns(llvm::RecordKeeper const&, std::__1::function<void (llvm::TreePattern*)>) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x100168db4)
#19 0x0000000100f9bc04 llvm::CodeGenDAGPatterns::CodeGenDAGPatterns(llvm::RecordKeeper const&, std::__1::function<void (llvm::TreePattern*)>) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x10016bc04)
#20 0x00000001011b81f8 (anonymous namespace)::DAGISelEmitter::DAGISelEmitter(llvm::RecordKeeper const&) (/Users/matt/src/llvm-project/build_debug/bin/llvm-tblgen+0x1003881f8)