Commit Graph

7 Commits

Author SHA1 Message Date
Michael Gottesman
090a592896 Disable two tests on 32 bit until they are updated.
Unblocking the bots.
2021-03-02 11:15:06 -08:00
Daniel Rodríguez Troitiño
cdea5802ba [android][test] XFAIL dead_array_elim in Android ARMv7
It is failing for unknown reasons, probably as a result of #35872.
XFAILing for the time being to have a green build again.
2021-02-26 16:57:50 -08:00
Andrew Trick
ba9f52071b OSSA: simplify-cfg support for trivial block arguments.
Enable most simplify-cfg optimizations as long as the block arguments
have trivial types. Enable most simplify CFG unit tests cases.

This massively reduces the size of the CFG during OSSA passes.

Test cases that aren't supported in OSSA yet have been moved to a
separate test file for disabled OSSA tests,

Full simplify-cfg support is currently blocked on OSSA utilities which
I haven't checked in yet.
2021-02-23 22:47:59 -08:00
Slava Pestov
b9092e4944 Temporarily disable three SILOptimizer tests on 32-bit
The proper fix is tracked by rdar://problem/74359824.
2021-02-15 16:12:43 -05:00
Erik Eckstein
028afc0fb2 DeadObjectElimination: delete dead arrays for which the "destroyArray" builtin is inlined.
This is needed for non-OSSA SIL: in case we see a destroyArray builtin, we can safely remove the otherwise dead array.
This optimization kicks in later in the pipeline, after array semantics are already inlined (for early SIL, DeadObjectElimination can remove arrays based on semantics).

rdar://73569282
https://bugs.swift.org/browse/SR-14100
2021-02-04 07:53:32 +01:00
Andrew Trick
72029d46e7 Add REQUIRES: swift_stdlib_no_asserts to dead_array_elim.swift
One of the subtests cannot be fully optimized without
swift_stdlib_no_asserts because, with runtime verification
enabled, "array.finalize" becomes a mutating operation, preventing
SILCombine from deleting it when it removes dead pure
instructions. After inlining, DeadObjectElimination is still
unable to remove the array because a second array is initialized
by copying the first. This problem can be overcome by handling
non-trivial stores in OSSA, as described here:
[OSSA] Improve DeadObjectElimination to handle array copies
https://bugs.swift.org/browse/SR-13782
2020-10-27 11:08:26 -07:00
Ravi Kandhadai
a6bed21d9e [SIL Optimization] Make ArraySemantics.cpp aware of "array.uninitialized_intrinsic"
semantics attribute that is used by the top-level array initializer (in ArrayShared.swift),
which is the entry point used by the compiler to initialize array from array literals.
This initializer is early-inlined so that other optimizations can work on its body.

Fix DeadObjectElimination and ArrayCOWOpts optimization passes to work with this
semantics attribute in addition to "array.uninitialized", which they already use.

Refactor mapInitializationStores function from ArrayElementValuePropagation.cpp to
ArraySemantic.cpp so that the array-initialization pattern matching functionality
implemented by the function can be reused by other optimizations.
2020-02-05 14:28:34 -08:00