Files
swift-mirror/test/AutoDiff/validation-test/modify_accessor.swift
Arnold Schwaighofer 4a2d8dc6a5 Disable test that will block releasing toolchains AutoDiff/validation-test/modify_accessor.swift
Until folks look at whats wrong.

This triggered a use-after-free in IRGen while visiting end_apply on the ASAN bot.

https://ci.swift.org/job/oss-swift-incremental-ASAN-RA-macos/7721/

Likely triggered by the changes in https://github.com/swiftlang/swift/pull/79127 (based on blame list)

rdar://144216380
2025-02-05 07:18:45 -08:00

83 lines
1.5 KiB
Swift

// REQUIRES: rdar144216380
// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// This test fails on arm64e with a pointer auth failure.
// XFAIL: CPU=arm64e
import _Differentiation
import StdlibUnittest
var ModifyAccessorTests = TestSuite("ModifyAccessor")
ModifyAccessorTests.test("SimpleModifyAccessor") {
struct S: Differentiable {
private var _x : Float
func _endMutation() {}
var x: Float {
get{_x}
set(newValue) { _x = newValue }
_modify {
defer { _endMutation() }
if (x > 0) {
yield &_x
} else {
yield &_x
}
}
}
init(_ x : Float) {
self._x = x
}
}
func modify_struct(_ x : Float) -> Float {
var s = S(x)
s.x *= s.x
return s.x
}
expectEqual((100, 20), valueWithGradient(at: 10, of: modify_struct))
}
ModifyAccessorTests.test("GenericModifyAccessor") {
struct S<T : Differentiable & SignedNumeric & Comparable>: Differentiable {
private var _x : T
func _endMutation() {}
var x: T {
get{_x}
set(newValue) { _x = newValue }
_modify {
defer { _endMutation() }
if (x > -x) {
yield &_x
} else {
yield &_x
}
}
}
init(_ x : T) {
self._x = x
}
}
func modify_struct(_ x : Float) -> Float {
var s = S<Float>(x)
s.x *= s.x
return s.x
}
expectEqual((100, 20), valueWithGradient(at: 10, of: modify_struct))
}
runAllTests()