@@ -832,7 +832,8 @@ static bool isUpdateCounterIntrinsic(Function &F) {
832832}
833833
834834void DXILResourceCounterDirectionMap::populate (Module &M, DXILBindingMap &DBM) {
835- std::vector<std::tuple<dxil::ResourceBindingInfo, ResourceCounterDirection, const Function*, const CallInst*>>
835+ std::vector<std::tuple<dxil::ResourceBindingInfo, ResourceCounterDirection,
836+ const Function *, const CallInst *>>
836837 DiagCounterDirs;
837838
838839 for (Function &F : M.functions ()) {
@@ -867,50 +868,61 @@ void DXILResourceCounterDirectionMap::populate(Module &M, DXILBindingMap &DBM) {
867868 // unknown
868869 const auto RemoveEnd = std::remove_if (
869870 DiagCounterDirs.begin (), DiagCounterDirs.end (), [](const auto &Item) {
870- return std::get<ResourceCounterDirection>(Item) == ResourceCounterDirection::Unknown;
871+ return std::get<ResourceCounterDirection>(Item) ==
872+ ResourceCounterDirection::Unknown;
871873 });
872874
873875 // Sort by the Binding and Direction for fast lookup
874- std::sort (DiagCounterDirs.begin (), RemoveEnd, [](const auto &LHS, const auto &RHS) {
875- const auto L = std::pair{std::get<dxil::ResourceBindingInfo>(LHS), std::get<ResourceCounterDirection>(LHS)};
876- const auto R = std::pair{std::get<dxil::ResourceBindingInfo>(RHS), std::get<ResourceCounterDirection>(RHS)};
877- return L < R;
878- });
876+ std::sort (DiagCounterDirs.begin (), RemoveEnd,
877+ [](const auto &LHS, const auto &RHS) {
878+ const auto L = std::pair{std::get<dxil::ResourceBindingInfo>(LHS),
879+ std::get<ResourceCounterDirection>(LHS)};
880+ const auto R = std::pair{std::get<dxil::ResourceBindingInfo>(RHS),
881+ std::get<ResourceCounterDirection>(RHS)};
882+ return L < R;
883+ });
879884
880885 // Remove the duplicate entries. Since direction is considered for equality
881886 // a unique resource with more than one direction will not be deduped.
882- const auto UniqueEnd = std::unique (DiagCounterDirs.begin (), RemoveEnd, [](const auto &LHS, const auto &RHS) {
883- const auto L = std::pair{std::get<dxil::ResourceBindingInfo>(LHS), std::get<ResourceCounterDirection>(LHS)};
884- const auto R = std::pair{std::get<dxil::ResourceBindingInfo>(RHS), std::get<ResourceCounterDirection>(RHS)};
885- return L == R;
886- });
887+ const auto UniqueEnd = std::unique (
888+ DiagCounterDirs.begin (), RemoveEnd, [](const auto &LHS, const auto &RHS) {
889+ const auto L = std::pair{std::get<dxil::ResourceBindingInfo>(LHS),
890+ std::get<ResourceCounterDirection>(LHS)};
891+ const auto R = std::pair{std::get<dxil::ResourceBindingInfo>(RHS),
892+ std::get<ResourceCounterDirection>(RHS)};
893+ return L == R;
894+ });
887895
888896 // Actually erase the items invalidated by remove_if + unique
889897 DiagCounterDirs.erase (UniqueEnd, DiagCounterDirs.end ());
890898
891899 // If any duplicate entries still exist at this point then it must be a
892900 // resource that was both incremented and decremented which is not allowed.
893- const auto DuplicateEntry = std::adjacent_find (
894- DiagCounterDirs.begin (), DiagCounterDirs.end (),
895- [](const auto &LHS, const auto &RHS) {
896- return std::get<dxil::ResourceBindingInfo>(LHS) == std::get<dxil::ResourceBindingInfo>(RHS);
897- });
901+ const auto DuplicateEntry =
902+ std::adjacent_find (DiagCounterDirs.begin (), DiagCounterDirs.end (),
903+ [](const auto &LHS, const auto &RHS) {
904+ return std::get<dxil::ResourceBindingInfo>(LHS) ==
905+ std::get<dxil::ResourceBindingInfo>(RHS);
906+ });
898907
899908 // Copy the results into the final vec
900909 CounterDirections.clear ();
901910 CounterDirections.reserve (DiagCounterDirs.size ());
902- std::transform (DiagCounterDirs.begin (), DiagCounterDirs.end (), std::back_inserter (CounterDirections), [](const auto &Item){
903- return std::pair{std::get<dxil::ResourceBindingInfo>(Item), std::get<ResourceCounterDirection>(Item)};
904- });
911+ std::transform (DiagCounterDirs.begin (), DiagCounterDirs.end (),
912+ std::back_inserter (CounterDirections), [](const auto &Item) {
913+ return std::pair{std::get<dxil::ResourceBindingInfo>(Item),
914+ std::get<ResourceCounterDirection>(Item)};
915+ });
905916
906917 if (DuplicateEntry == DiagCounterDirs.end ())
907918 return ;
908919
909- const Function* F = std::get<const Function*>(*DuplicateEntry);
910- const CallInst* CI = std::get<const CallInst*>(*DuplicateEntry);
920+ const Function * F = std::get<const Function *>(*DuplicateEntry);
921+ const CallInst * CI = std::get<const CallInst *>(*DuplicateEntry);
911922 StringRef Message = " RWStructuredBuffers may increment or decrement their "
912923 " counters, but not both." ;
913- M.getContext ().diagnose (DiagnosticInfoGenericWithLoc (Message, *F, CI->getDebugLoc ()));
924+ M.getContext ().diagnose (
925+ DiagnosticInfoGenericWithLoc (Message, *F, CI->getDebugLoc ()));
914926}
915927
916928void DXILResourceCounterDirectionWrapperPass::getAnalysisUsage (
0 commit comments