diff options
author | aqjune <aqjune@gmail.com> | 2019-11-05 13:26:51 +0900 |
---|---|---|
committer | aqjune <aqjune@gmail.com> | 2019-11-05 13:53:52 +0900 |
commit | 31be9f3f7dee80c586d3beac9a65663d5628cf96 (patch) | |
tree | a88651f3e38b337ab1e27ba8e9da40181bbbd233 /llvm/tools/llvm-c-test | |
parent | 0aba69eb1a01c44185009f50cc633e3c648e9950 (diff) | |
download | bcm5719-llvm-31be9f3f7dee80c586d3beac9a65663d5628cf96.tar.gz bcm5719-llvm-31be9f3f7dee80c586d3beac9a65663d5628cf96.zip |
Fix clone_constant_impl to correctly deal with null pointers
Summary:
This patch resolves llvm-c-test's following error
```
LLVM ERROR: LLVMGetValueKind returned incorrect type
```
which arises when the input bitcode contains a null pointer.
Reviewers: jdoerfert, CodaFi, deadalnix
Reviewed By: jdoerfert
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D68928
Diffstat (limited to 'llvm/tools/llvm-c-test')
-rw-r--r-- | llvm/tools/llvm-c-test/echo.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/tools/llvm-c-test/echo.cpp b/llvm/tools/llvm-c-test/echo.cpp index 4d10a4bbfc0..8abbfb3fb0c 100644 --- a/llvm/tools/llvm-c-test/echo.cpp +++ b/llvm/tools/llvm-c-test/echo.cpp @@ -326,6 +326,13 @@ static LLVMValueRef clone_constant_impl(LLVMValueRef Cst, LLVMModuleRef M) { EltCount, LLVMIsPackedStruct(Ty)); } + // Try ConstantPointerNull + if (LLVMIsAConstantPointerNull(Cst)) { + check_value_kind(Cst, LLVMConstantPointerNullValueKind); + LLVMTypeRef Ty = TypeCloner(M).Clone(Cst); + return LLVMConstNull(Ty); + } + // Try undef if (LLVMIsUndef(Cst)) { check_value_kind(Cst, LLVMUndefValueValueKind); |