aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--sparse-llvm.c13
-rw-r--r--validation/backend/struct.c1
2 files changed, 12 insertions, 2 deletions
diff --git a/sparse-llvm.c b/sparse-llvm.c
index f1c99dd3..b015ea3c 100644
--- a/sparse-llvm.c
+++ b/sparse-llvm.c
@@ -946,10 +946,19 @@ static int output_data(LLVMModuleRef module, struct symbol *sym)
const char *name;
if (initializer) {
- if (initializer->type == EXPR_VALUE)
+ switch (initializer->type) {
+ case EXPR_VALUE:
initial_value = LLVMConstInt(symbol_type(sym), initializer->value, 1);
- else
+ break;
+ case EXPR_SYMBOL: {
+ struct symbol *sym = initializer->symbol;
+
+ initial_value = LLVMGetNamedGlobal(module, show_ident(sym->ident));
+ break;
+ }
+ default:
assert(0);
+ }
} else {
LLVMTypeRef type = symbol_type(sym);
diff --git a/validation/backend/struct.c b/validation/backend/struct.c
index ef7d0d7e..9d0cb56f 100644
--- a/validation/backend/struct.c
+++ b/validation/backend/struct.c
@@ -10,6 +10,7 @@ struct symbol {
static struct symbol sym;
static struct symbol *sym_p;
+static struct symbol *sym_q = &sym;
/*
* check-name: Struct code generation