[sil-aa] Typed Based TBAA with all the necessary fixes.

This commit fixes a bunch of problems I found in TBAA. Some fun
examples:

1. We were not handling protocols correctly.
2. We were not handling enums correctly.
3. We were not handling builtins correctly all the time.
...
And much more.

I also added a fairly exhaustive test.

Additionally I checked the benchmarks and did not see any regressions.

rdar://16651852

Swift SVN r18148
This commit is contained in:
Michael Gottesman
2014-05-16 00:21:41 +00:00
parent 9f5d430e93
commit 2c84a0ac82
4 changed files with 940 additions and 80 deletions

View File

@@ -128,6 +128,11 @@ public:
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
AliasAnalysis::AliasResult R);
/// Look at the origin/user ValueBase of V to see if any of them are
/// TypedAccessOracle which enable one to ascertain via undefined behavior the
/// "true" type of the instruction.
SILType findTypedAccessType(SILValue V);
} // end namespace swift
#endif