|
54 | 54 | #include "llvm/InitializePasses.h" |
55 | 55 | #include "llvm/MC/TargetRegistry.h" |
56 | 56 | #include "llvm/Passes/PassBuilder.h" |
| 57 | +#include "llvm/Support/FormatVariadic.h" |
57 | 58 | #include "llvm/Transforms/HipStdPar/HipStdPar.h" |
58 | 59 | #include "llvm/Transforms/IPO.h" |
59 | 60 | #include "llvm/Transforms/IPO/AlwaysInliner.h" |
@@ -661,6 +662,24 @@ Error AMDGPUTargetMachine::buildCodeGenPipeline( |
661 | 662 | return CGPB.buildPipeline(MPM, Out, DwoOut, FileType); |
662 | 663 | } |
663 | 664 |
|
| 665 | +Expected<AMDGPUAttributorOptions> |
| 666 | +parseAMDGPUAttributorPassOptions(StringRef Params) { |
| 667 | + AMDGPUAttributorOptions Result; |
| 668 | + while (!Params.empty()) { |
| 669 | + StringRef ParamName; |
| 670 | + std::tie(ParamName, Params) = Params.split(';'); |
| 671 | + if (ParamName == "closed-world") { |
| 672 | + Result.IsClosedWorld = true; |
| 673 | + } else { |
| 674 | + return make_error<StringError>( |
| 675 | + formatv("invalid AMDGPUAttributor pass parameter '{0}' ", ParamName) |
| 676 | + .str(), |
| 677 | + inconvertibleErrorCode()); |
| 678 | + } |
| 679 | + } |
| 680 | + return Result; |
| 681 | +} |
| 682 | + |
664 | 683 | void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) { |
665 | 684 |
|
666 | 685 | #define GET_PASS_REGISTRY "AMDGPUPassRegistry.def" |
@@ -739,9 +758,13 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) { |
739 | 758 | OptimizationLevel Level, |
740 | 759 | ThinOrFullLTOPhase Phase) { |
741 | 760 | if (Level != OptimizationLevel::O0) { |
742 | | - MPM.addPass(AMDGPUAttributorPass( |
743 | | - *this, Phase == ThinOrFullLTOPhase::FullLTOPostLink || |
744 | | - Phase == ThinOrFullLTOPhase::ThinLTOPostLink)); |
| 761 | + { |
| 762 | + AMDGPUAttributorOptions Options; |
| 763 | + Options.IsClosedWorld = |
| 764 | + (Phase == ThinOrFullLTOPhase::FullLTOPostLink) || |
| 765 | + (Phase == ThinOrFullLTOPhase::ThinLTOPostLink); |
| 766 | + MPM.addPass(AMDGPUAttributorPass(*this, Options)); |
| 767 | + } |
745 | 768 | } |
746 | 769 | }); |
747 | 770 |
|
|
0 commit comments