OLD | NEW |
1 //===--- CGBlocks.cpp - Emit LLVM Code for declarations -------------------===// | 1 //===--- CGBlocks.cpp - Emit LLVM Code for declarations -------------------===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This contains code to emit blocks. | 10 // This contains code to emit blocks. |
(...skipping 1116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1127 Builder.SetInsertPoint(entry, entry_ptr); | 1127 Builder.SetInsertPoint(entry, entry_ptr); |
1128 | 1128 |
1129 // Emit debug information for all the DeclRefExprs. | 1129 // Emit debug information for all the DeclRefExprs. |
1130 // FIXME: also for 'this' | 1130 // FIXME: also for 'this' |
1131 if (CGDebugInfo *DI = getDebugInfo()) { | 1131 if (CGDebugInfo *DI = getDebugInfo()) { |
1132 for (BlockDecl::capture_const_iterator ci = blockDecl->capture_begin(), | 1132 for (BlockDecl::capture_const_iterator ci = blockDecl->capture_begin(), |
1133 ce = blockDecl->capture_end(); ci != ce; ++ci) { | 1133 ce = blockDecl->capture_end(); ci != ce; ++ci) { |
1134 const VarDecl *variable = ci->getVariable(); | 1134 const VarDecl *variable = ci->getVariable(); |
1135 DI->EmitLocation(Builder, variable->getLocation()); | 1135 DI->EmitLocation(Builder, variable->getLocation()); |
1136 | 1136 |
1137 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable); | 1137 if (CGM.getCodeGenOpts().DebugInfo >= CodeGenOptions::LimitedDebugInfo) { |
1138 if (capture.isConstant()) { | 1138 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable); |
1139 DI->EmitDeclareOfAutoVariable(variable, LocalDeclMap[variable], | 1139 if (capture.isConstant()) { |
1140 Builder); | 1140 DI->EmitDeclareOfAutoVariable(variable, LocalDeclMap[variable], |
1141 continue; | 1141 Builder); |
| 1142 continue; |
| 1143 } |
| 1144 |
| 1145 DI->EmitDeclareOfBlockDeclRefVariable(variable, BlockPointer, |
| 1146 Builder, blockInfo); |
1142 } | 1147 } |
1143 | |
1144 DI->EmitDeclareOfBlockDeclRefVariable(variable, BlockPointer, | |
1145 Builder, blockInfo); | |
1146 } | 1148 } |
1147 } | 1149 } |
1148 | 1150 |
1149 // And resume where we left off. | 1151 // And resume where we left off. |
1150 if (resume == 0) | 1152 if (resume == 0) |
1151 Builder.ClearInsertionPoint(); | 1153 Builder.ClearInsertionPoint(); |
1152 else | 1154 else |
1153 Builder.SetInsertPoint(resume); | 1155 Builder.SetInsertPoint(resume); |
1154 | 1156 |
1155 FinishFunction(cast<CompoundStmt>(blockDecl->getBody())->getRBracLoc()); | 1157 FinishFunction(cast<CompoundStmt>(blockDecl->getBody())->getRBracLoc()); |
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2039 | 2041 |
2040 llvm::Constant *CodeGenModule::getNSConcreteStackBlock() { | 2042 llvm::Constant *CodeGenModule::getNSConcreteStackBlock() { |
2041 if (NSConcreteStackBlock) | 2043 if (NSConcreteStackBlock) |
2042 return NSConcreteStackBlock; | 2044 return NSConcreteStackBlock; |
2043 | 2045 |
2044 NSConcreteStackBlock = GetOrCreateLLVMGlobal("_NSConcreteStackBlock", | 2046 NSConcreteStackBlock = GetOrCreateLLVMGlobal("_NSConcreteStackBlock", |
2045 Int8PtrTy->getPointerTo(), 0); | 2047 Int8PtrTy->getPointerTo(), 0); |
2046 configureBlocksRuntimeObject(*this, NSConcreteStackBlock); | 2048 configureBlocksRuntimeObject(*this, NSConcreteStackBlock); |
2047 return NSConcreteStackBlock;·· | 2049 return NSConcreteStackBlock;·· |
2048 } | 2050 } |
OLD | NEW |