|
70 | 70 | #include "llvm/SYCL/ASFixer.h" |
71 | 71 | #include <memory> |
72 | 72 |
|
73 | | -#include "LLVMSPIRVLib.h" |
74 | 73 | namespace SPIRV { |
75 | 74 | extern llvm::cl::opt<bool> SPIRVNoDerefAttr; |
76 | 75 | } |
@@ -807,7 +806,6 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action, |
807 | 806 |
|
808 | 807 | bool UsesCodeGen = (Action != Backend_EmitNothing && |
809 | 808 | Action != Backend_EmitBC && |
810 | | - Action != Backend_EmitSPIRV && |
811 | 809 | Action != Backend_EmitLL); |
812 | 810 | CreateTargetMachine(UsesCodeGen); |
813 | 811 |
|
@@ -841,6 +839,10 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action, |
841 | 839 | break; |
842 | 840 |
|
843 | 841 | case Backend_EmitBC: |
| 842 | + if (LangOpts.SYCLIsDevice) { |
| 843 | + PerModulePasses.add(createASFixerPass()); |
| 844 | + PerModulePasses.add(createDeadCodeEliminationPass()); |
| 845 | + } |
844 | 846 | if (CodeGenOpts.PrepareForThinLTO && !CodeGenOpts.DisableLLVMPasses) { |
845 | 847 | if (!CodeGenOpts.ThinLinkBitcodeFile.empty()) { |
846 | 848 | ThinLinkOS = openOutputFile(CodeGenOpts.ThinLinkBitcodeFile); |
@@ -871,24 +873,6 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action, |
871 | 873 | } |
872 | 874 | break; |
873 | 875 |
|
874 | | - case Backend_EmitSPIRV: |
875 | | - if (LangOpts.SYCLIsDevice) { |
876 | | - // TODO: SPIRVNoDerefAttr is not modeled when using the bitcode pass |
877 | | - SPIRV::SPIRVNoDerefAttr = true; |
878 | | - // TODO: this pass added to work around missing linkonce_odr in SPIR-V |
879 | | - PerModulePasses.add( |
880 | | - createAlwaysInlinerLegacyPass(true /*InsertLifetimeIntrinsics*/)); |
881 | | - PerModulePasses.add(createASFixerPass()); |
882 | | - PerModulePasses.add(createDeadCodeEliminationPass()); |
883 | | - } |
884 | | - if (LangOpts.SYCLUseBitcode) |
885 | | - PerModulePasses.add( |
886 | | - createBitcodeWriterPass(*OS, CodeGenOpts.EmitLLVMUseLists, false)); |
887 | | - else |
888 | | - PerModulePasses.add(createSPIRVWriterPass(*OS)); |
889 | | - |
890 | | - break; |
891 | | - |
892 | 876 | case Backend_EmitLL: |
893 | 877 | PerModulePasses.add( |
894 | 878 | createPrintModulePass(*OS, "", CodeGenOpts.EmitLLVMUseLists)); |
@@ -1203,6 +1187,10 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager( |
1203 | 1187 | break; |
1204 | 1188 |
|
1205 | 1189 | case Backend_EmitBC: |
| 1190 | + if (LangOpts.SYCLIsDevice) { |
| 1191 | + CodeGenPasses.add(createASFixerPass()); |
| 1192 | + CodeGenPasses.add(createDeadCodeEliminationPass()); |
| 1193 | + } |
1206 | 1194 | if (CodeGenOpts.PrepareForThinLTO && !CodeGenOpts.DisableLLVMPasses) { |
1207 | 1195 | if (!CodeGenOpts.ThinLinkBitcodeFile.empty()) { |
1208 | 1196 | ThinLinkOS = openOutputFile(CodeGenOpts.ThinLinkBitcodeFile); |
@@ -1232,18 +1220,6 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager( |
1232 | 1220 | } |
1233 | 1221 | break; |
1234 | 1222 |
|
1235 | | - case Backend_EmitSPIRV: |
1236 | | - if (LangOpts.SYCLIsDevice) { |
1237 | | - SPIRV::SPIRVNoDerefAttr = true; |
1238 | | - // TODO: this pass added to work around missing linkonce_odr in SPIR-V |
1239 | | - CodeGenPasses.add( |
1240 | | - createAlwaysInlinerLegacyPass(true /*InsertLifetimeIntrinsics*/)); |
1241 | | - CodeGenPasses.add(createASFixerPass()); |
1242 | | - CodeGenPasses.add(createDeadCodeEliminationPass()); |
1243 | | - } |
1244 | | - CodeGenPasses.add(createSPIRVWriterPass(*OS)); |
1245 | | - break; |
1246 | | - |
1247 | 1223 | case Backend_EmitLL: |
1248 | 1224 | MPM.addPass(PrintModulePass(*OS, "", CodeGenOpts.EmitLLVMUseLists)); |
1249 | 1225 | break; |
|
0 commit comments