Erik Eckstein
1c1d17e18b
Swift Optimizer: add some small optimization utilities
...
* `Instruction.isTriviallyDead` and `Instruction.isTriviallyDeadIgnoringDebugUses`
* `Instruction.hasSameDebugLocationAsPreviousOrNextInstruction`
* `UseList.singleNonDebugUse`
* `UseList.isEmptyIgnoringDebugUses`
* `removeDeadBlocks`
* `FunctionPassContext.removeTriviallyDeadInstructionsPreservingDebugInfo` and `FunctionPassContext.removeTriviallyDeadInstructionsIgnoringDebugUses`
* `BasicBlock.dropAllReferences`
* `SimplifyContext.tryReplaceRedundantInstructionPair`
2023-02-09 06:49:58 +01:00
Erik Eckstein
b1c6ae60cd
Swift SIL: add metatype APIs to Type
...
* `var isMetatype: Bool`
* `var instanceTypeOfMetatype: Type`
2023-02-09 06:49:58 +01:00
Erik Eckstein
713f6c3946
Swift SIL: add Type.nominal and Type.isOrContainsObjectiveCClass APIs
2023-02-09 06:49:58 +01:00
Erik Eckstein
ae9e3a4976
Swift SIL: fix base class of MarkUninitializedInst
2023-02-09 06:49:58 +01:00
swift-ci
0e3d53284f
Merge remote-tracking branch 'origin/main' into rebranch
2023-02-06 09:53:17 -08:00
Anthony Latsis
a8c5f45da5
[docs] Suggest ninja bin/swift-frontend instead of ninja swift-frontend
...
...to cope with a bootstrapping quirk on arm64 Macs.
2023-02-06 13:09:28 +03:00
swift-ci
58a514b85b
Merge remote-tracking branch 'origin/main' into rebranch
2023-01-26 18:34:13 -08:00
Nate Chandler
6caa5048d0
[WalkUtils] Walk through move_value instructions.
...
Addresses the following regressions
StackPromo 10100 14400 +42.6% **0.70x**
seen when enabling lexical lifetimes in the standard library.
2023-01-25 11:39:42 -08:00
swift-ci
36818939bd
Merge remote-tracking branch 'origin/main' into rebranch
2023-01-20 12:35:04 -08:00
Erik Eckstein
b5e731dde2
WalkUtils: fix a crash when visiting mismatching types
...
The path components may not be related to the current value in case mismatching types are visited, e.g. different concrete types of an existential.
This can lead to mismatching operand numbers for struct and tuple instructions.
rdar://104435056
2023-01-20 15:06:48 +01:00
swift-ci
8889105f8f
Merge remote-tracking branch 'origin/main' into rebranch
2023-01-16 22:13:52 -08:00
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