Erik Eckstein
d96ef3bedd
Swift SIL: add some APIs to Location
...
* `var description`
* `func ==`
* `func hasSameSourceLocation(as:)`
2023-01-16 19:00:09 +01:00
Erik Eckstein
8d90dafb22
Swift SIL: add Function.reversedInstructions
2023-01-16 19:00:09 +01:00
Erik Eckstein
3645becada
PassManager: infrastructure to disable or enable a specific instruction simplification
...
* for testing: add the option `-simplify-instruction=<instruction-name>` to only run simplification passes for that instruction type
* on the swift side, add `Options.enableSimplification`
2023-01-16 19:00:09 +01:00
Erik Eckstein
72d3f8e3ff
Swift SIL: add SubstitutionMap.isEmpty
2023-01-16 19:00:09 +01:00
Erik Eckstein
3f457eb1d4
Swift SIL: add IntegerLiteralInst.value
2023-01-16 19:00:09 +01:00
Erik Eckstein
ee80da2e59
Swift SIL: fix the CondBranch instruction
...
* make its properties public
* fix the range construction in `trueOperands`
2023-01-16 19:00:09 +01:00
Erik Eckstein
d2bdec9f59
Swift SIL: add MarkUninitializedInst and MetatypeInst instructions
2023-01-16 19:00:09 +01:00
Erik Eckstein
221a16ba17
Swift SIL: add more arguments to Builder.createApply
...
add the `isNonThrowing` and `isNonAsync` flags and the `specializationInfo`
2023-01-16 19:00:09 +01:00
Erik Eckstein
cf8c68c6c4
Swift SIL: add Type.hasArchetype
2023-01-16 19:00:09 +01:00
Erik Eckstein
230c93df30
SIL Optimizer: add some SIL modification APIs
...
* `MutatingContext.notifyInvalidatedStackNesting` and `MutatingContext.needFixStackNesting`
* `MutatingContext.tryDeleteDeadClosure`
* `MutatingContext.erase(block:)`
* `Undef.get`
* `BasicBlock.moveAllInstructions`
* `BasicBlock.eraseAllArguments`
* `BasicBlock.moveAllArguments`
* `TermInst.replaceBranchTarget`
2023-01-16 19:00:09 +01:00
Erik Eckstein
ea746479ad
SIL Optimizer: rename directory InstructionPasses -> InstructionSimplification
2023-01-16 16:16:51 +01:00
Erik Eckstein
22f03cdde6
Swift Optimizer: generalize the worklist data structure
...
Rename `BasicBlockWorklist.swift` to `Worklist` and make it generic for any elements.
Also, add methods `popAndForget` and `isEmpty`
2023-01-16 16:16:51 +01:00
Erik Eckstein
f3717d5127
Swift Optimizer: add the ReachableBlocks utility
2023-01-16 16:16:51 +01:00
Erik Eckstein
393d1a1488
SIL Builder: rename insert(at:) -> insert(before:)
...
It matches with `insert(after:)` and the intent should be clearer now
2023-01-16 15:11:34 +01:00
Erik Eckstein
cc68bd98c9
Swift Optimizer: rework pass context types and instruction passes
...
* split the `PassContext` into multiple protocols and structs: `Context`, `MutatingContext`, `FunctionPassContext` and `SimplifyContext`
* change how instruction passes work: implement the `simplify` function in conformance to `SILCombineSimplifyable`
* add a mechanism to add a callback for inserted instructions
2023-01-16 15:11:34 +01:00
Erik Eckstein
c32d6cd0fb
EscapeUitls: some refactoring
2023-01-16 15:11:34 +01:00
Erik Eckstein
eb0d6ed87e
StackPromotion: some refactoring
...
NFC
2023-01-16 15:11:34 +01:00
Erik Eckstein
6c35258f83
Swift SIL: rename parent accessors to parentX, e.g. Instruction.parentBlock
...
It makes it easier to read
2023-01-16 15:11:34 +01:00
Erik Eckstein
712fd7922b
Merge remote-tracking branch 'origin/main' into rebranch
2023-01-09 08:48:47 +01:00
eeckstein
6b33768e25
Merge pull request #62864 from eeckstein/fix-compute-side-effects
...
ComputeSideEffects: correct side effects for destroy_addr
2023-01-05 20:35:35 +01:00
Erik Eckstein
1f0f9d65b9
ComputeSideEffects: ignore side effects of debug_value with address operands
...
We already ignored side effects of debug_value with non-address operands. Now also do this for address operands.
2023-01-05 09:56:11 +01:00
Erik Eckstein
e26affacbd
ComputeSideEffects: correct side effects for destroy_addr
...
A destroy_addr also involves a read from the address. It's equivalent to a `%x = load [take]` and `destroy_value %x`.
It's also a write, because the stored value is not available anymore after the destroy.
Fixes a compiler crash in SILMem2Reg.
rdar://103879105
2023-01-05 09:56:11 +01:00
Erik Eckstein
3d86732bea
EscapeUtils: fix a wrong handling of argument indices in walkUpApplyResult
...
Fixes a crash
rdar://103526983
2023-01-04 11:52:19 +01:00
swift-ci
d52b0977ef
Merge remote-tracking branch 'origin/main' into rebranch
2022-12-21 23:34:27 -08:00
Erik Eckstein
beb46eb624
Use the new escape and side effects in alias analysis
2022-12-21 17:41:46 +01:00
swift-ci
0778a6505b
Merge remote-tracking branch 'origin/main' into rebranch
2022-12-18 08:54:19 -08:00
Saleem Abdulrasool
04f4d66b73
Merge pull request #62388 from compnerd/naming
...
build: rename `EXPERIMENTAL_STRING_PROCESSING_SOURCE_DIR`
2022-12-18 08:50:40 -08:00
swift-ci
8d9d5b643d
Merge remote-tracking branch 'origin/main' into rebranch
2022-12-13 01:53:46 -08:00
Erik Eckstein
d4d1620f28
Swift SIL: rework Instruction and BasicBlock lists to support deleting instructions during iteration
...
Replace the generic `List` with the (non-generic) `InstructionList` and `BasicBlockList`.
The `InstructionList` is now a bit different than the `BasicBlockList` because it supports that instructions are deleted while iterating over the list.
Also add a test pass which tests instruction modification while iteration.
2022-12-12 19:08:57 +01:00
Erik Eckstein
a8ba48e71d
Swift SIL: add Instruction.isDeleted API
2022-12-12 19:08:57 +01:00
Erik Eckstein
9e0b86ddbd
Swift SIL: add Builder.createUnreachable()
2022-12-12 19:08:57 +01:00
swift-ci
328e716489
Merge remote-tracking branch 'origin/main' into rebranch
2022-12-12 07:33:19 -08:00
Nate Chandler
8d8577e5b0
[SIL] Removed Indirect_In_Constant convention.
...
It is no different from @in.
Continue parse @in_constant in textual and serialized SIL, but just as
an alias for @in.
2022-12-09 21:54:00 -08:00
Saleem Abdulrasool
b58dbb2c0a
build: rename EXPERIMENTAL_STRING_PROCESSING_SOURCE_DIR
...
Rename the variable to `SWIFT_PATH_TO_STRING_PROCESSING_SOURCE` to match
the variables used for libdispatch, swift-syntax.
2022-12-03 17:17:13 -08:00
swift-ci
e99a3241f1
Merge remote-tracking branch 'origin/main' into rebranch
2022-12-02 06:15:23 -08:00
Anton Korobeynikov
dd6f468d09
Ensure that partial_apply of partial_apply does not produce conservative global side effects. ( #62351 )
...
Fixes #62249
2022-12-02 06:14:46 -08:00
swift-ci
e144c12638
Merge remote-tracking branch 'origin/main' into rebranch
2022-11-29 13:14:41 -08:00
Egor Zhdan
7203a05479
[cxx-interop] Replace std module name with the new spelling CxxStdlib
...
This is the second step in renaming the C++ stdlib module `std` into `CxxStdlib`.
See https://github.com/apple/swift/pull/61099 .
2022-11-29 17:33:35 +00:00
Rintaro Ishizaki
d458c8b74a
Merge remote-tracking branch 'origin/main' into rebranch
...
Conflicts:
include/swift/Sema/ConstraintSystem.h
include/swift/Syntax/AbsoluteRawSyntax.h
include/swift/Syntax/Syntax.h
include/swift/Syntax/SyntaxData.h
lib/DependencyScan/ModuleDependencyCacheSerialization.cpp
lib/Syntax/SyntaxFactory.cpp.gyb
lib/Syntax/SyntaxNodes.cpp.gyb
tools/SourceKit/lib/SwiftLang/SwiftEditor.cpp
tools/swift-syntax-test/swift-syntax-test.cpp
2022-11-18 09:37:38 -08:00
Rintaro Ishizaki
2f50d03d77
Remove swiftCompilerModules_SwiftSyntax library
...
This was used by _InternalSwiftSyntaxParser which was removed some time
ago.
2022-11-17 10:11:26 -08:00
swift-ci
e65fa9c45d
Merge remote-tracking branch 'origin/main' into rebranch
2022-11-11 22:52:44 -08:00
Erik Eckstein
ef302ce4ac
SILOptimizer: enable stack protection by default
...
The pass to decide which functions should get stack protection was added in https://github.com/apple/swift/pull/60933 , but was disabled by default.
This PR enables stack protection by default, but not the possibility to move arguments into temporaries - to keep the risk low.
Moving to temporaries can be enabled with the new frontend option `-enable-move-inout-stack-protector`.
rdar://93677524
2022-11-11 17:14:08 +01:00
swift-ci
3b66e1fdd1
Merge remote-tracking branch 'origin/main' into rebranch
2022-11-09 06:46:20 -08:00
Erik Eckstein
82107c5bf2
ComputeSideEffects: consider effects in dead-end blocks
...
It was a wrong assumption that we can ignore effects in dead-end blocks.
2022-11-09 08:06:19 +01:00
Erik Eckstein
0ada6ec5bd
SIL SideEffects: handle program termination point functions
...
We can ignore any memory writes in a program termination point, because it's not relevant for the caller.
But we need to consider memory reads, otherwise preceeding memory writes would be eliminated by dead-store-elimination in the caller.
E.g. String initialization for error strings which are printed by the program termination point.
Regarding ownership: a program termination point must not touch any reference counted objects.
2022-11-09 08:06:19 +01:00
Erik Eckstein
ab2fe452f9
ComputeSideEffects: checking for unknown argument uses need to consider type which contain raw pointers
2022-11-09 08:06:19 +01:00
Erik Eckstein
dbb4d4db32
ComputeSideEffects: fix a typo in a comment
2022-11-09 08:06:19 +01:00
Erik Eckstein
ebc16d9062
EscapeInfoDumper: dump address-reachable-from-object information
2022-11-09 08:06:19 +01:00
Erik Eckstein
4595185150
cmake: llvm now requires C++17
2022-11-04 20:44:18 +01:00
Zoe Carver
ac131dfbf6
Merge pull request #60786 from zoecarver/unavailable-attr-class-templates
...
[cxx-interop] Mark un-specialized class templates as unavailable in Swift.
2022-10-26 11:07:56 -07:00