aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/sparse-llvm.c
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-04-15 13:37:50 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-07-01 00:18:44 +0200
commit8cb5317fa01679fd8b2b30ffbf8dec13ae71c98d (patch)
treea27db0ecaec527b69c4d8e7e1e5a450eb945d4bb /sparse-llvm.c
parentea44f850aa68db74283986b47f617d38d2f63fed (diff)
downloadsparse-dev-8cb5317fa01679fd8b2b30ffbf8dec13ae71c98d.tar.gz
add PSEUDO_UNDEF & undef_pseudo()
Processing in the middle-end are much easier if undefined values have been clearly identified. Once done, we can then make choices like: - give some warnings about uninitialized variables - always initialize them to zero - allow arbitraly simplification - ... Prepare this by declaring a new type of pseudo: PSEUDO_UNDEF somewhat similar to PSEUDO_VOID. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'sparse-llvm.c')
-rw-r--r--sparse-llvm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sparse-llvm.c b/sparse-llvm.c
index d28eb6e7..cce2baa5 100644
--- a/sparse-llvm.c
+++ b/sparse-llvm.c
@@ -270,6 +270,9 @@ static const char *pseudo_name(pseudo_t pseudo, char *buf)
case PSEUDO_VOID:
buf[0] = '\0';
break;
+ case PSEUDO_UNDEF:
+ assert(0);
+ break;
default:
assert(0);
}
@@ -387,6 +390,9 @@ static LLVMValueRef pseudo_to_value(struct function *fn, struct symbol *ctype, p
case PSEUDO_VOID:
result = NULL;
break;
+ case PSEUDO_UNDEF:
+ result = LLVMGetUndef(symbol_type(ctype));
+ break;
default:
assert(0);
}