In sparse-llvm, the type of switch constants are hardcoded to 'i32'. Fix this by using the right type as given by the instruction. Reported-by: Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx> Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- sparse-llvm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sparse-llvm.c b/sparse-llvm.c index bae55de3b..c01d3ea41 100644 --- a/sparse-llvm.c +++ b/sparse-llvm.c @@ -771,7 +771,7 @@ static void output_op_switch(struct function *fn, struct instruction *insn) FOR_EACH_PTR(insn->multijmp_list, jmp) { if (jmp->begin == jmp->end) { /* case N */ LLVMAddCase(target, - LLVMConstInt(LLVMInt32Type(), jmp->begin, 0), + val_to_value(jmp->begin, insn->type), jmp->target->priv); } else if (jmp->begin < jmp->end) { /* case M..N */ assert(0); -- 2.12.0 -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html