> On Sep 14, 2016, at 10:32 AM, John McCall via swift-dev <swift-dev@swift.org> > wrote: > >> On Sep 14, 2016, at 10:25 AM, Ted Kremenek via swift-dev >> <swift-dev@swift.org <mailto:swift-dev@swift.org>> wrote: >> >> Hi everyone, >> >> Joe Shajrawi nominated an optimizer fix for Swift 3.0.1 where the optimizer >> was crashing due to duplicate conditions in aswitchstatement: >> >> https://bugs.swift.org/browse/SR-2512 <https://bugs.swift.org/browse/SR-2512> >> https://github.com/apple/swift/pull/4747 >> <https://github.com/apple/swift/pull/4747> >> Here’s an example: >> >> public enum DemoEnum { >> case firstCase >> case secondCase >> >> public static func performSwitch(with value: Int) -> DemoEnum { >> switch value { >> case 0: >> return DemoEnum.firstCase >> case 0: >> return DemoEnum.firstCase >> default: >> return DemoEnum.secondCase >> } >> } >> } >> I can’t remember why the frontend even accepts this code. Is this intended, >> or just a defect in the compiler’s validity checking ofswitch statements? >> >> > > It would be legitimate with, say, a condition on the first case. But yeah, > this is undoubtedly just a defect in the compiler's checking. > > Recall that a switch in Swift doesn't necessarily compile to a primitive > switch; it's more like a series of ifs that's a bit more straightforward to > optimize matching for. So the validity checking you'd expect as a matter of > course in C doesn't just fall out automatically. > > Also, of course, the compiler does not have primitive knowledge of Int or how > it forms literals. > > John.
Joe filed a radar to improve the checking: <rdar://problem/28301984> reject duplicate conditions when optimizing switch statement >> Thanks, >> Ted >> >> _______________________________________________ >> swift-dev mailing list >> swift-dev@swift.org <mailto:swift-dev@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-dev >> <https://lists.swift.org/mailman/listinfo/swift-dev> > > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org <mailto:swift-dev@swift.org> > https://lists.swift.org/mailman/listinfo/swift-dev > <https://lists.swift.org/mailman/listinfo/swift-dev>
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev