@@ -876,6 +876,9 @@ static void output_op_setval(struct function *fn, struct instruction *insn)
case EXPR_FVALUE:
target = LLVMConstReal(dtype, val->fvalue);
break;
+ case EXPR_LABEL:
+ target = LLVMBlockAddress(fn->fn, val->symbol->bb_target->priv);
+ break;
default:
assert(0);
}
new file mode 100644
@@ -0,0 +1,13 @@
+void *foo(void *def);
+void *foo(void *def)
+{
+ if (!def)
+yes: return &&yes;
+
+ return def;
+}
+
+/*
+ * check-name: label-as-value
+ * check-command: ./sparsec -c $file -o tmp.o
+ */
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- sparse-llvm.c | 3 +++ validation/backend/label-as-value.c | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 validation/backend/label-as-value.c