its indivisible components, i.e. leaf nodes on the type tree. This can be cached so that
we do not need to go through the type tree every time.
rdar://23246640
Existing test cases make sure nothing it broken.
Swift SVN r32876
prologue is handled in the line table.
We now mark the first instruction after the stack setup as end_prologue and
any further initilizations (which may include function calls to metadata
accessors) with line 0 which lldb will skip. This allows swiftc to emit
debug info for compiler-generated functions such as metadata accessors.
Mixing debug and non-debug functions is not very well supported by LLVM
and the resulting line table makes it impossible for LLDB to determine
where a function with debug info ends and a nondebug function starts.
rdar://problem/23042642
Swift SVN r32816
for a SILType in MemLocation.
We get a sequence of address projections when initializing a memory location, i.e.
trace back to the base and then call getAddrProjectionPath.
To keep it consistent, we use address projections when we expand the projection
tree for a specific SILType as well.
By doing so, to get the type of the MemLocation, we can get just the first entry
in the projectionpath and get its object type.
Swift SVN r32775
Hubris is my name. = /. I put in a verifier check to make sure that we can
properly look up some value and if we have two blocks related via a non-local
successor chain, the first is a CFG level successor of the second.
Swift SVN r32759
takes a SILType instead of a MemLocation, BreadthFirstList will be used to expand
memory values in RLE as well.
Existing test cases make sure refactoring did not break anything.
Swift SVN r32739
This improves support for promoting to and generating
unchecked_ref_cast so we no longer need unchecked_ref_bit_cast, which
will just go away in the next commit.
Swift SVN r32597
_unsafeCastReference allows casting of any references types, regardless
of whether they are references to objects or class existentials. The
implementation is responsible for converting between representations.
_unsafeCastReference provides a dynamic check to ensure that the source
and dest are both actually references. If not, the implementation will
trap at runtime. Generally, the optimizer can prove that the source
and dest are references, and promote this cast to an
unchecked_ref_cast bitcast. There is no dynamic check that the
references types are compatible.
This differs from unsafeDownCast in two ways:
(1) The source and dest types are not statically typed
AnyObjects. Therefore, unsafeCastReference can be used when the
surrounding code dynamically handles both reference and nonreference
types.
(2) The source and dest also need not dynamically conform to AnyObject.
Either side of the cast may be a class existential. The primary
requirement is that the source and dest refer to the same reference
counted object.
Swift SVN r32588
It seems that for SIL round-tripping to work, we have to emit the
builtin name with the right suffix, otherwise NFC. Noticed by
inspection.
Swift SVN r32499
constructed and expanded correctly. MemLocation is essential to the correctness of
dead store elimination and load forwarding.
Will add more tests and more things to print and check in subsequent commit.
Swift SVN r32482
to represent the accessed fields of the variables in the program. we plan to use Location in
the load forwarding pass as well for similar purposes.
Swift SVN r32427
This reverts commit r32359.
I'll look into doing fine-grained rebuilds of portions of the call graph
after some other changes go in that will make that more reasonable to
do.
Swift SVN r32379
Call back to the SILModule to notify of instructions being inserted or
removed from basic blocks.
The intent is to use this to notify the call graph (if one exists and
the module knows about it). We can then use these notifications to
automatically update the call graph.
Swift SVN r32359