SILGen: Partial codegen for property behaviors with DI initialization.

If a behavior has storage that can be initialized out-of-line, generate code in SILGen that uses stores to mark_uninitialized_behavior for eventual analysis by DI.

This is incomplete, particularly, it's missing code generation of glue thunks for accessors that require reabstraction, but I wanted to make sure the progress here didn't bitrot.
This commit is contained in:
Joe Groff
2016-03-11 13:10:46 -08:00
parent f8a23da648
commit 3a8520be56
13 changed files with 304 additions and 58 deletions

View File

@@ -437,6 +437,9 @@ void MaterializeForSetEmitter::emit(SILGenFunction &gen) {
SILValue address;
SILFunction *callbackFn = nullptr;
switch (strategy) {
case AccessStrategy::BehaviorStorage:
llvm_unreachable("materializeForSet should never engage in behavior init");
case AccessStrategy::Storage:
address = emitUsingStorage(gen, loc, self, std::move(indicesRV));
break;