what does this error message mean?

When I building when using a Debug version, I get this error message:

Type set is empty for each HW mode:
possible type contradiction in the pattern below (use -print-records with llvm-tblgen to see all expanded records).
ADJCALLSTACKDOWN: (callseq_start (timm:{ *:[] }):$amt1, (timm:{ *:[i64}):$amt2)
UNREACHABLE executed at /home/bgl/src/llvm-local/llvm/utils/TableGen/CodeGenDAGPatterns.cpp:821!

The input InstrInfo.td has:

def callseq_start : SDNode<"ISD::CALLSEQ_START",
                            SDCallSeqStart<[ SDTCisVT<0, i32>,
                                             SDTCisVT<1, i32> ]>,
                            [SDNPHasChain, SDNPOutGlue]>;

def ADJCALLSTACKDOWN : Pseudo<(outs), (ins i32imm:$amt1, i32imm:$amt2),
            "# ADJCALLSTACKDOWN $amt1, $amt2",
            [(callseq_start timm:$amt1, timm:$amt2)]>;

This is pretty much cut/paste from AArch64. The target arch is 64-bit.

Thanks, brian

It means that the types that were provided for this instruction in the program couldn't be reconciled with the types expected for this instruction. If a target uses multiple HW modes, then it's ok if for any given mode the types contradict---that will simply disable that instruction for that mode, but if this happens in every mode, then it's treated as an error.

In this particular case, it seems like the instruction expects i32, but somehow it's getting i64 (the second immediate operand is showing i64, so I'm guessing the first one for i64 as well).