Commit Graph

211 Commits

Author SHA1 Message Date
Bob Wilson
9546da3939 Add a missing #include to fix the master-next build.
The AddressLowering.cpp file uses LLVM's CommandLine.h but was not
explicitly including that header. It was implicitly pulled in via other
headers, but LLVM r296846 changed "llvm/ProfileData/InstrProf.h" to
stop including "llvm/IR/Metadata.h" and broke the chain that led to
CommandLine.h.
2017-03-08 16:04:57 -08:00
Andrew Trick
c2b433bad6 Overhaul the AddressLowering pass to optimize projections and handle more cases.
This adds the underpinning for optimizing storage projections. When subobjects are composed in aggregate they no longer require individual copies.

Optimize copy->store sequences.

Added support for enums and existentials.

Added a mini design doc file comment.

Added -optimize-opaque-address-lowering unit tests.
2017-03-07 10:58:09 -08:00
practicalswift
17b6160115 [gardening] Remove unused method replaceValue(..., ...) 2017-03-02 16:19:57 +01:00
Andrew Trick
38d44c2164 AddressLowering: rewrite the call-site lowering logic.
This pass now canonicalizes results before lowering and handles all combinations
of direct and indirect multiple return values. The logic is much less ad-hoc and
more robust.

try_apply still isn't handled, but should be much easier now.

Add visitLoadInst, visitStoreInst, visitDebugValueInst, etc.
2017-02-26 13:52:50 -08:00
practicalswift
33a5601ad1 [gardening] Fix typos 2017-02-23 22:46:40 +01:00
Andrew Trick
4256112150 AddressLowering: fix handling of result tuples. 2017-02-16 11:04:42 -08:00
practicalswift
65b0219f7b [gardening] Fix typos 2017-02-14 20:04:08 +01:00
practicalswift
1c64f04997 [gardening] Fix header inconsistencies 2017-02-14 20:04:05 +01:00
practicalswift
b717bdc0f8 [gardening] Remove unused methods 2017-02-14 09:55:16 +01:00
Andrew Trick
10b118dfa9 [Lowering] Make the AddressLowering pass functional. 2017-02-13 17:10:02 -08:00
Andrew Trick
855918c620 [Lowering] Add an AddressLowering pass. 2017-02-13 17:10:02 -08:00