aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--sparse-llvm.c15
-rw-r--r--validation/backend/binops.c2
2 files changed, 13 insertions, 4 deletions
diff --git a/sparse-llvm.c b/sparse-llvm.c
index d15d3f6c..c13ab5d2 100644
--- a/sparse-llvm.c
+++ b/sparse-llvm.c
@@ -271,10 +271,19 @@ static void output_insn(struct function *fn, struct instruction *insn)
case OP_CALL:
assert(0);
break;
- case OP_CAST:
- assert(0);
+ case OP_CAST: {
+ LLVMValueRef src, target;
+ char target_name[64];
+
+ src = insn->src->priv;
+
+ pseudo_name(insn->target, target_name);
+
+ target = LLVMBuildIntCast(fn->builder, src, symbol_type(insn->type), target_name);
+
+ insn->target->priv = target;
break;
- case OP_SCAST:
+ } case OP_SCAST:
assert(0);
break;
case OP_FPCAST:
diff --git a/validation/backend/binops.c b/validation/backend/binops.c
index bebefb5b..4c941380 100644
--- a/validation/backend/binops.c
+++ b/validation/backend/binops.c
@@ -118,6 +118,7 @@ static unsigned int uor_bool(unsigned int x, unsigned int y)
{
return x || y;
}
+#endif
static int sete(int x, int y)
{
@@ -138,7 +139,6 @@ static int setg(int x, int y)
{
return x > y;
}
-#endif
/*
* check-name: binary op code generation