mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Fix isScopeAffectingInstructionDead to use this new API. A stdlib assert, which has "program_termination" semantics, should not be considered read-only. isReadOnlyConstantEvaluableCall API: /// Return true iff the \p applySite is constant-evaluable and read-only. /// /// Functions annotated as "constant_evaluable" are assumed to be "side-effect /// free", unless their signature and substitution map indicates otherwise. A /// constant_evaluable function call is read only unless it: /// (1) has generic parameters /// (2) has inout parameters /// (3) has indirect results /// /// Read-only constant evaluable functions can do only the following and /// nothing else: /// (1) The call may read any memory location. /// (2) The call may destroy owned parameters i.e., consume them. /// (3) The call may write into memory locations newly created by the call. /// (4) The call may use assertions, which traps at runtime on failure. /// (5) The call may return a non-generic value. /// /// Essentially, these are calls whose "effect" is visible only in their return /// value or through the parameters that are destroyed. The return value /// is also guaranteed to have value semantics as it is non-generic and /// reference semantics is not constant evaluable.
9.7 KiB
9.7 KiB