From: George Rimar Date: Fri, 10 Mar 2017 10:31:56 +0000 (+0000) Subject: WholeProgramDevirt: Fixed compilation error under MSVS2015. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a312eded5f3c8d01458cd60b7355353e7ac01055;p=llvm WholeProgramDevirt: Fixed compilation error under MSVS2015. It was introduced in: r296945 WholeProgramDevirt: Implement exporting for single-impl devirtualization. --------------------- r296939 WholeProgramDevirt: Add any unsuccessful llvm.type.checked.load devirtualizations to the list of llvm.type.test users. --------------------- Microsoft Visual Studio Community 2015 Version 14.0.23107.0 D14REL Does not compile that code without additional brackets, showing multiple error like below: WholeProgramDevirt.cpp(1216): error C2958: the left bracket '[' found at 'c:\access_softek\llvm\lib\transforms\ipo\wholeprogramdevirt.cpp(1216)' was not matched correctly WholeProgramDevirt.cpp(1216): error C2143: syntax error: missing ']' before '}' WholeProgramDevirt.cpp(1216): error C2143: syntax error: missing ';' before '}' WholeProgramDevirt.cpp(1216): error C2059: syntax error: ']' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297451 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/IPO/WholeProgramDevirt.cpp b/lib/Transforms/IPO/WholeProgramDevirt.cpp index 51d30f3c244..b5d87b16740 100644 --- a/lib/Transforms/IPO/WholeProgramDevirt.cpp +++ b/lib/Transforms/IPO/WholeProgramDevirt.cpp @@ -1211,25 +1211,34 @@ bool DevirtModule::run() { if (!FS) continue; // FIXME: Only add live functions. - for (FunctionSummary::VFuncId VF : FS->type_test_assume_vcalls()) - for (Metadata *MD : MetadataByGUID[VF.GUID]) + for (FunctionSummary::VFuncId VF : FS->type_test_assume_vcalls()) { + for (Metadata *MD : MetadataByGUID[VF.GUID]) { CallSlots[{MD, VF.Offset}].CSInfo.SummaryHasTypeTestAssumeUsers = true; - for (FunctionSummary::VFuncId VF : FS->type_checked_load_vcalls()) - for (Metadata *MD : MetadataByGUID[VF.GUID]) + } + } + for (FunctionSummary::VFuncId VF : FS->type_checked_load_vcalls()) { + for (Metadata *MD : MetadataByGUID[VF.GUID]) { CallSlots[{MD, VF.Offset}] .CSInfo.SummaryTypeCheckedLoadUsers.push_back(FS); + } + } for (const FunctionSummary::ConstVCall &VC : - FS->type_test_assume_const_vcalls()) - for (Metadata *MD : MetadataByGUID[VC.VFunc.GUID]) + FS->type_test_assume_const_vcalls()) { + for (Metadata *MD : MetadataByGUID[VC.VFunc.GUID]) { CallSlots[{MD, VC.VFunc.Offset}] - .ConstCSInfo[VC.Args].SummaryHasTypeTestAssumeUsers = true; + .ConstCSInfo[VC.Args] + .SummaryHasTypeTestAssumeUsers = true; + } + } for (const FunctionSummary::ConstVCall &VC : - FS->type_checked_load_const_vcalls()) - for (Metadata *MD : MetadataByGUID[VC.VFunc.GUID]) + FS->type_checked_load_const_vcalls()) { + for (Metadata *MD : MetadataByGUID[VC.VFunc.GUID]) { CallSlots[{MD, VC.VFunc.Offset}] .ConstCSInfo[VC.Args] .SummaryTypeCheckedLoadUsers.push_back(FS); + } + } } } }