Erik Eckstein
a17ee435b6
Swift SIL: fix var ApplySite.arguments
...
In case of type-dependent operands, not all operands are part of the arguments
2022-06-08 22:51:57 +02:00
swift-ci
a020693ab7
Merge remote-tracking branch 'origin/main' into rebranch
2022-06-08 11:53:31 -07:00
Michael Gottesman
f6f1be5586
Merge pull request #59303 from gottesmm/pr-cd7072441becdbf718aaf324a1d402ad5d6803b4
...
[move-only] Two small fixes
2022-06-08 11:46:19 -07:00
swift-ci
3219c2ea33
Merge remote-tracking branch 'origin/main' into rebranch
2022-06-08 08:33:06 -07:00
Joe Groff
fd2a8e7745
Merge pull request #59290 from jckarter/type-expansion-wmo-private-type
...
SILGen: Carry WMO of type lowering context to closure captures.
2022-06-08 08:21:06 -07:00
Michael Gottesman
7690329acc
[move-only] Rename some of the SILType move only wrapper methods to be explicitly about move only wrapper and not move only itself.
...
Specifically:
* isMoveOnly() -> isMoveOnlyWrapped()
* asMoveOnly() -> addingMoveOnlyWrapper()
* withoutMoveOnly() -> removingMoveOnlyWrapper()
* copyMoveOnly() -> copyingMoveOnlyWrapper()
This is just pure renaming to resolve confusion from the reader.
2022-06-07 15:43:53 -07:00
Michael Gottesman
08d77cdb39
[move-only] Make SILType::getRawASTType() private and make SILPrinter a friend so we can invoke that method.
...
The only place outside of SILType that uses getRawASTType() is in SILPrinter. It
is really an inner detail of SILType that we don't want to expose. With that in
mind, in this commit we:
1. Made SILType::getRawASTType() private.
2. Forward declared SILPrinter in SILType.h. We don't define it so no one can
use it, but the declaration still lets us make it a friend class of SILType
(allowing SILPrinter to still access getRawASTType()).
2022-06-07 15:43:53 -07:00
swift-ci
e428481e6a
Merge remote-tracking branch 'origin/main' into rebranch
2022-06-07 10:54:22 -07:00
Meghana Gupta
7cf67e7eb4
Fix computation of dominance frontier ( #59278 )
2022-06-07 10:52:29 -07:00
Joe Groff
6b6a557611
SILGen: Carry WMO of type lowering context to closure captures.
...
TypeConverter doesn't know by itself what SILModule it's currently lowering on
behalf of, so the existing code forming the TypeExpansionContext for opaque types
incorrectly set the isWholeModule flag to always false. This created a miscompile
when a public API contained a closure that captured a value involving private types
from another file in the same module because of mismatched type expansion contexts
inside and outside the closure. Fixes rdar://93821679
2022-06-06 19:51:40 -07:00
swift-ci
1c1beaa04f
Merge remote-tracking branch 'origin/main' into rebranch
2022-06-06 15:33:09 -07:00
Doug Gregor
0fe2d7b003
Merge pull request #59282 from DougGregor/back-deploy-concurrency-rebuild
...
Inline the Swift 5.6 concurrency library as a separate back-deploy library
2022-06-06 15:13:31 -07:00
Doug Gregor
ffb37ed057
Inline the Swift 5.6 concurrency library as a separate back-deploy library
2022-06-06 10:38:25 -07:00
swift-ci
22dd6786a8
Merge remote-tracking branch 'origin/main' into rebranch
2022-06-03 15:58:11 -07:00
Michael Gottesman
0e2526d630
[move-only] Add move only type lowering variants.
2022-06-03 11:27:54 -07:00
Michael Gottesman
92a5dbaff0
[move-only] Add support to SILType for unwrapping move only types and performing basic queries by looking through the move only type wrapper.
...
This is done by introducing the API SILType::getSemanticASTType(). This can be
used in contexts for type queries like getStructOrBoundGenericStruct() where one
wants to look through the move only wrapper to the underlying type.
2022-06-03 11:27:53 -07:00
Michael Gottesman
02759d150b
[move-only] Add methods to AbstractionPattern to add/remove the move only bit.
...
The names are AbstractionPattern::with{,out}MoveOnly().
2022-06-03 11:27:16 -07:00
swift-ci
522d42475e
Merge remote-tracking branch 'origin/main' into rebranch
2022-05-24 03:33:13 -07:00
nate-chandler
2978bf0750
Merge pull request #58791 from nate-chandler/rdar92545900
...
[SSADestroyHoisting] Handle loops.
2022-05-24 03:17:34 -07:00
Nate Chandler
c8049eef32
[SIL] Added SILCFGBackwardDFS.
...
The utility provides a standard way for backwards traversing a region of
a function constrained by a predicate (isInRegion) starting from some
root blocks. It exposes a visit function for post-order and iterable
collections for post-order and reverse post-order. Adding corresponding
pre-order functionality will be straightforward.
2022-05-21 12:56:50 -07:00
Nate Chandler
a9fe8735e5
[Gardening] Addressed typo.
2022-05-21 12:56:50 -07:00
swift-ci
b4c3a24485
Merge remote-tracking branch 'origin/main' into rebranch
2022-05-16 16:03:37 -07:00
Erik Eckstein
f3adbd5c0e
SIL: cache case indices in enum instructions.
...
As we do with field indices for struct instructions.
This avoids quadratic behavior in case of enums with lots of cases.
Also: cache field and enum case indices in the SILModule.
2022-05-16 09:33:14 -07:00
swift-ci
af2419ca06
Merge remote-tracking branch 'origin/main' into rebranch
2022-05-13 19:54:03 -07:00
Meghana Gupta
dcce7fcf63
AddressLowering: Handle coroutines ( #58821 )
2022-05-13 19:53:29 -07:00
swift-ci
660089fa12
Merge remote-tracking branch 'origin/main' into rebranch
2022-05-12 23:04:52 -07:00
Erik Eckstein
a91d541a26
Swift SIL: add ApplySite.substitutionMap and ApplySite.getArgumentConvention()
2022-05-12 21:48:37 +02:00
Erik Eckstein
1a933fc76e
Swift SIL: add Type.getIndexOfEnumCase(withName:)
...
... to get the enum case index with a given name.
2022-05-12 21:48:37 +02:00
Erik Eckstein
b0003d51da
Swift SIL: add an initializer to create an empty SubstitutionMap
2022-05-12 21:48:37 +02:00
Erik Eckstein
dd5d5f97c4
Swift SIL: add Function.hasSemanticsAttribute
2022-05-12 21:48:37 +02:00
Erik Eckstein
ad9dafc9bf
Swift SIL: add Value.definingBlock
...
and re-factor `Value.definingInstruction`
2022-05-12 21:48:37 +02:00
Erik Eckstein
3b43da9637
Swift Optimizer: improve ergonomics of Builder and PassContext
...
* split the PassUtils.swift file into PassContext.swift and Passes.swift
* rework `Builder` bridging allowing more insertion point variations, e.g. inserting at the end of a block.
* add Builder.create functions for more instructions
* add `PassContext.splitBlock`
* move SIL modification functions from PassContext to extensions of the relevant types (e.g. instructions).
* rename `Location.bridgedLocation` -> `Location.bridged`
2022-05-12 21:48:37 +02:00
Erik Eckstein
14b985d87e
Swift SIL: support ownership
...
* add the `Ownership` enum and the `Value.ownership` getter
* add `Function.hasOwnership`
2022-05-12 21:48:37 +02:00
swift-ci
17bb225fdc
Merge remote-tracking branch 'origin/main' into rebranch
2022-05-06 15:04:02 -07:00
Michael Gottesman
dd5d2f49ca
Merge pull request #58410 from gottesmm/move-function-dbg-info-dataflow
...
[debug-info] Implement a global dataflow that propagates debug info for async vars and clones the dbg info after funclet points.
2022-05-06 14:35:52 -07:00
Ben Barham
4e1eb1abe8
Merge pull request #58620 from bnbarham/rebranch-fixes
...
[rebranch] Various fixes to get macos to a compiling state
2022-05-06 09:59:38 -07:00
Ben Barham
c678e2f8a9
[next] Add missing include
...
llvm/llvm-project 25991aadcc57fdada57147a9c83ca6301f6430bb removed
`llvm/Remarks/Remark.h` from `llvm/Remarks/RemarkParser.h`. Include it
directly.
2022-05-05 16:25:10 -07:00
Ben Barham
68296c9037
[next] Remove LLVM_ATTRIBUTE_DEPRECATED
...
`LLVM_ATTRIBUTE_DEPRECATED` was removed in llvm/llvm-project
903c30f4d1f3bc0d1aae9ca83af17c0062d02b40. Use `[[deprecated]]` directly.
2022-05-05 16:25:10 -07:00
Michael Gottesman
640d5902e6
[debug-info] Implement a global dataflow that propagates debug info for async vars and clones the dbg info after funclet points.
...
The overall flow of the pass is:
1. We walk over the blocks summarizing the debug info instruction the blocks gen
as well as whether or not the block had an async funclet edge with in it.
2. We then perform a simple forward iterative optimistic dataflow using
intersection at merge points. At points where we find after merging that we have
a conflict and thus need to stop propagation, we insert a debug_value undef.
3. We then walk the CFG again visiting only blocks that we know had async
funclet edges. We then walk each said block from top to bottom starting with the
propagating gen information and updating as we go, dumping the current set of
debug_info we are tracking after each coroutine funclet boundary.
rdar://85020571
2022-05-05 14:16:51 -07:00
Egor Zhdan
145ed33482
[cxx-interop][SwiftCompilerSources] Use std::string instead of BridgedStringRef
...
This reverts commit 2900dec7
2022-05-03 19:48:14 +01:00
Joe Groff
d2fad71328
Merge pull request #42589 from jckarter/begin-partial-apply-simplification-pass
...
[SIL] Initial work on PartialApplySimplification pass
2022-05-02 10:20:39 -07:00
Erik Eckstein
45acb912a9
Revert "Add a mechanism to let cross-module-optimization add additional TBD symbols."
...
This reverts commit c55f040308 .
It's not needed anymore because CMO does not introduce public symbols when a TBD file is emitted.
2022-04-29 18:22:55 +02:00
Erik Eckstein
5d3339e9a3
Swift SIL: support for sub-pass bisecting: add PassContext.continueWithNextSubpassRun
2022-04-25 11:57:02 +02:00
Josh Soref
d767912be2
Spelling sil ( #42471 )
...
* spelling: accessible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: accessories
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: allocated
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: amortizes
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: are
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: arguments
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: cacheable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: check
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: clazz
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: compatible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: compilation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: completely
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: construct
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: conversion
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: declarations
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: derivation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: deserialization
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: destroyed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: determined
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: different
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: doesn't
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: equality
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: equivalent
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: formation
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: forwards
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: global
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: guaranteed
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: have
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: identify
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: inaccessible
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: indeterminate
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: indices
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: inefficient
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: inheritance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: instantaneous
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: instruction
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: intentionally
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: interior
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: intrinsic
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: introducing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: irrelevant
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: message
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: multi
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: necessarily
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: object
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: one
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: optimization
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: otherwise
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: overridden
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: parameter
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: pattern
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: pipeline
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: possibility
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: postdominance
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: providing
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: reached
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: recognized
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: refrigerator
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: remaining
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: resilient
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: retrieve
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: scavenge
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: scheduled
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: separately
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: serializable
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: signature
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: simplicity
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: specifically
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: substituted
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: substitution
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: subtypes
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: supplement
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: syntax
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: the
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: there
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: these
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: this
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: though
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: through
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transitively
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: transpose
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: trivial
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: value
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: verification
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: visibility
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: weird
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
* spelling: whole
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com >
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com >
2022-04-22 15:11:09 -07:00
Erik Eckstein
a5ac6c2cff
TypeLowering: add a recursive property to check if a type contains a RawPointer
...
This is needed for the new escape analysis
2022-04-22 09:50:07 +02:00
Erik Eckstein
340efd9e6f
Swift SIL: add MultipleValueInstructionResult.index
...
And make DestructureStructInst and DestructureTupleInst a UnaryInstruction
2022-04-22 09:50:07 +02:00
Saleem Abdulrasool
218ef587e6
Revert "Merge pull request #42242 from eeckstein/escapeinfo"
...
This reverts commit c05e064cd8 , reversing
changes made to c1534d5af9 .
This caused a regression on Windows.
2022-04-21 20:33:37 -07:00
Joe Groff
1f30a54b48
Sketch out a SILType::isSingleSwiftRefcounted function.
2022-04-21 14:53:39 -07:00
Joe Groff
56c7547fa3
Treat types obviously word-sized in SIL as simple nonescaping partial_apply contexts
2022-04-21 14:53:39 -07:00
Joe Groff
5d7861ff1e
Support non-generic nonescaping partial_applys using an on-stack tuple
2022-04-21 12:51:48 -07:00