How are you passing the flag?
Here are the results on my end. If I run
% rm -rf .build
% time env SWIFT_EXEC=$HOME/src/build/Ninja-RelWithDebInfoAssert/swift-macosx-x86_64/bin/swiftc swift build -Xswiftc -Xfrontend -Xswiftc -requirement-machine-protocol-signatures=on -Xswiftc -Xfrontend -Xswiftc -requirement-machine-inferred-signatures=on -Xswiftc -Xfrontend -Xswiftc -requirement-machine-abstract-signatures=on
The build succeeds in 30 seconds.
Without those flags, it runs for 5 minutes then crashes:
% rm -rf .build
% time env SWIFT_EXEC=$HOME/src/build/Ninja-RelWithDebInfoAssert/swift-macosx-x86_64/bin/swiftc swift build
...
Right hand side does not have a canonical parent: same_type: τ_0_0.[CoordinateSystem]BoundingBox τ_0_0.[CoordinateSystem]BoundingBox.[BoundingBox]CoordinateSystem.[CoordinateSystem]BoundingBox.[BoundingBox]CoordinateSystem.[CoordinateSystem]BoundingBox
...
10. While checking generic signature <τ_0_0, τ_1_0 where τ_0_0 : CoordinateSystemAlgebra, τ_1_0 : Collection, τ_0_0.BoundingBox == τ_0_0.BoundingBox.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.BoundingBox.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.BoundingBox.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.BoundingBox.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Line.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Line.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Line.CoordinateSystem.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Line.CoordinateSystem.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Point.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Point.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Point.CoordinateSystem.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Point.CoordinateSystem.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Size.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Size.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Size.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Size.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.BoundingBox.CoordinateSystem.Line.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.BoundingBox.CoordinateSystem.Line.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.BoundingBox.CoordinateSystem.Point.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.BoundingBox.CoordinateSystem.Point.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.BoundingBox.CoordinateSystem.Size.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.BoundingBox.CoordinateSystem.Size.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Line.CoordinateSystem.BoundingBox.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Line.CoordinateSystem.BoundingBox.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Line.CoordinateSystem.Point.CoordinateSystem.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Line.CoordinateSystem.Point.CoordinateSystem.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Line.CoordinateSystem.Size.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Line.CoordinateSystem.Size.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Point.CoordinateSystem.BoundingBox.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Point.CoordinateSystem.BoundingBox.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Point.CoordinateSystem.Line.CoordinateSystem.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Point.CoordinateSystem.Line.CoordinateSystem.Size.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Point.CoordinateSystem.Size.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Point.CoordinateSystem.Size.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Size.CoordinateSystem.BoundingBox.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Size.CoordinateSystem.BoundingBox.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Size.CoordinateSystem.Line.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox, τ_0_0.Size.CoordinateSystem.Line.CoordinateSystem.Point.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox == τ_0_0.Size.CoordinateSystem.Point.CoordinateSystem.Line.CoordinateSystem.BoundingBox.CoordinateSystem.BoundingBox>
Note that the assertion is coming from InferredGenericSignatureRequestGSB which doesn't run when the corresponding flag is set to 'on'. The underlying bug exists in the 5.6 toolchain as well, it's just that Xcode builds swiftc with assertions disabled so it's not caught. You can see that the GSB's minimized generic signature looks ridiculous, with lots of redundant same-type requirements, which is what triggers the assert.