Commits

Andrew Trick committed 0c7ee1f2833
Teach CopyForwarding to handle enum initialization sequences. This requires a bit of code motion. e.g. 1. %Tmp = alloc_stack 2. copy_addr %InArg to [initialization] %Tmp 3. DataAddr = init_enum_data_addr %OutArg 4. copy_addr %Tmp#1 to [initialization] %DataAddr becomes 1. %Tmp = alloc_stack 4. DataAddr = init_enum_data_addr %OutArg 2. copy_addr %InArg to [initialization] %DataAddr Fixes at least one regression resulting from '++' removal. See rdar://23874709 [perf] -Onone Execution Time regression of up-to 19% -Onone results |.benchmark............|.bestbase.|.bestopt.|..delta.|.%delta.|speedup.| |.StringWalk...........|....33570.|...20967.|.-12603.|.-37.5%.|..1.60x.| |.OpenClose............|......446.|.....376.|....-70.|.-15.7%.|..1.19x.| |.SmallPT..............|....98959.|...83964.|.-14995.|.-15.2%.|..1.18x.| |.StrToInt.............|....17550.|...16377.|..-1173.|..-6.7%.|..1.07x.| |.BenchLangCallingCFunc|......453.|.....428.|....-25.|..-5.5%.|..1.06x.| |.CaptureProp..........|....50758.|...48156.|..-2602.|..-5.1%.|..1.05x.| |.ProtocolDispatch.....|.....5276.|....5017.|...-259.|..-4.9%.|..1.05x.| |.Join.................|.....1433.|....1372.|....-61.|..-4.3%.|..1.04x.|