mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Historically TermInsts were handled specially while visiting blocks in bottom up order. TermInsts were not visited while traversing a block. They were visited while traversing successors, and the most conservative terminator of all predecessors would affect the refcount state in the dataflow. This was needed because ARCSequenceOpts also computed 'insertion points' for the purposes of ARC code motion. ARC code motion was then removed from ARCSequenceOpts and this code remained unchanged. With this change, arc significant terminators are handled like all other instructions while processing basic blocks bottom up. Also updateForSameLoopInst, updateForDifferentLoopInst, updateForPredTerminators all serve similar purpose with subtle differences. This change removes some code duplication due to this. Remove code duplication of isARCSignificantTerminator. Create ARCSequenceOptUtils for common utils used in ARCSequenceOpts
13 lines
311 B
CMake
13 lines
311 B
CMake
target_sources(swiftSILOptimizer PRIVATE
|
|
ARCBBState.cpp
|
|
ARCLoopOpts.cpp
|
|
ARCMatchingSet.cpp
|
|
ARCRegionState.cpp
|
|
ARCSequenceOpts.cpp
|
|
ARCSequenceOptUtils.cpp
|
|
GlobalARCSequenceDataflow.cpp
|
|
GlobalLoopARCSequenceDataflow.cpp
|
|
RCStateTransition.cpp
|
|
RCStateTransitionVisitors.cpp
|
|
RefCountState.cpp)
|