diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2019-05-21 23:15:18 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2019-05-21 23:15:18 +0000 |
commit | e637cbe4e40ef892c378801d95993be39193bb7e (patch) | |
tree | 96c64300984bc9620fc39b25a9a868b427866456 /clang/lib/CodeGen/CGExprConstant.cpp | |
parent | a49496fb2a16b729f6f6ec8b9a1e8c72133ac9d9 (diff) | |
download | bcm5719-llvm-e637cbe4e40ef892c378801d95993be39193bb7e.tar.gz bcm5719-llvm-e637cbe4e40ef892c378801d95993be39193bb7e.zip |
Refactor: split Uninitialized state on APValue into an "Absent" state
representing no such object, and an "Indeterminate" state representing
an uninitialized object. The latter is not yet used, but soon will be.
llvm-svn: 361328
Diffstat (limited to 'clang/lib/CodeGen/CGExprConstant.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGExprConstant.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGExprConstant.cpp b/clang/lib/CodeGen/CGExprConstant.cpp index 70904b192a3..caa327c19a4 100644 --- a/clang/lib/CodeGen/CGExprConstant.cpp +++ b/clang/lib/CodeGen/CGExprConstant.cpp @@ -1860,8 +1860,10 @@ ConstantLValueEmitter::VisitMaterializeTemporaryExpr( llvm::Constant *ConstantEmitter::tryEmitPrivate(const APValue &Value, QualType DestType) { switch (Value.getKind()) { - case APValue::Uninitialized: - llvm_unreachable("Constant expressions should be initialized."); + case APValue::None: + case APValue::Indeterminate: + // Out-of-lifetime and indeterminate values can be modeled as 'undef'. + return llvm::UndefValue::get(CGM.getTypes().ConvertType(DestType)); case APValue::LValue: return ConstantLValueEmitter(*this, Value, DestType).tryEmit(); case APValue::Int: |