aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/ConstantGen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/ConstantGen.cc')
-rw-r--r--lib/CodeGen/ConstantGen.cc23
1 files changed, 0 insertions, 23 deletions
diff --git a/lib/CodeGen/ConstantGen.cc b/lib/CodeGen/ConstantGen.cc
index a512490..66919d2 100644
--- a/lib/CodeGen/ConstantGen.cc
+++ b/lib/CodeGen/ConstantGen.cc
@@ -64,31 +64,8 @@ void CodeGen::emitConstantStmt(ConstantStmtAST *Stmt) {
return;
}
if (!prepareSymbolDeclaration(Name, true)) return;
- auto Existing = StringConstants.find(Stmt);
- if (Existing != StringConstants.end()) {
- Symbols[Name] = Existing->second;
- return;
- }
const TypeInfo *Type = getExprTypeInfo(Stmt->getValue());
Value *Val = emitExpr(Stmt->getValue());
- if (Type && Type->isString() && Val) {
- Value *Storage;
- bool TopLevel = ConstantScopes.back().ID == 0;
- if (TopLevel) {
- Storage = new GlobalVariable(*TheModule, Type->LLVMType, false,
- GlobalValue::InternalLinkage, Types->getZeroValue(Type->Name), "__cps_constant." + Name);
- } else {
- Storage = CreateEntryBlockAlloca(Builder->GetInsertBlock()->getParent(), Type->LLVMType, Name);
- }
- size_t Lifetime = registerStackObject(Storage, Type->Name, DiagnosticLine);
- Builder->CreateStore(Val, Storage);
- activateStackObject(Lifetime);
- SymbolInfo Info{Storage, Type->Name, false, nullptr, ConstantScopes.back().ID};
- Info.ReadOnly = true;
- Symbols[Name] = Info;
- if (TopLevel) StringConstants.emplace(Stmt, Info);
- return;
- }
auto *Literal = dyn_cast_or_null<Constant>(Val);
if (!Type || !Literal) {
reportError("CONSTANT initializer must be a literal");