Как зарегистрировать новый бэкэнд LLVM?

я разрабатываю очень простой новый бэкэнд LLVM для RISC-машины (названный Risco ) на основе существующего бэкэнда Sparc и этого руководства . Для регистрации серверной части я использовал следующее.

  • В RiscoTargetMachine.cpp:

     extern «C» void LLVMInitializeRiscoTarget () на основе существующей серверной части Sparc и этого руководства. Для регистрации бэкэнда я использовал следующее. В ...  

    я разрабатываю очень простой новый бэкэнд LLVM для RISC-машины (названный Risco ) на основе существующего бэкэнда Sparc и этого руководства . Для регистрации серверной части я использовал следующее.

    • В RiscoTargetMachine.cpp:

       extern «C» void LLVMInitializeRiscoTarget () на основе существующей серверной части Sparc и этого руководства. Для регистрации бэкэнда я использовал следующее. В ...  

      я разрабатываю очень простой новый бэкэнд LLVM для RISC-машины (названный Risco ) на основе существующего бэкэнда Sparc и этого руководства . Для регистрации серверной части я использовал следующее.

      • В RiscoTargetMachine.cpp:

         extern «C» void LLVMInitializeRiscoTarget ()
        {
         // Зарегистрируем цель.
         RegisterTargetMachine  X (TheRiscoTarget);
         RegisterAsmInfo  Y (TheRiscoTarget);
        }
        
      • В Risco.td:

        def: Processor ;
        
        def Risco: Target {
         // Вставить информацию об инструкции:
         let InstructionSet = RiscoInstrInfo;
        }
        
      • В TargetInfo / RiscoTargetInfo.cpp:

         Целевой llvm :: TheRiscoTarget;
        
        extern "C" void LLVMInitializeRiscoTargetInfo () {
         RegisterTarget  X (TheRiscoTarget, «Риско», «Риско»);
        }
        
      • На верхнем уровне сценарий настройки LLVM:

         # Добавлен Risco в переменную TARGETS_TO_BUILD в строке 4965 (из ствола svn):
        all) TARGETS_TO_BUILD = "X86 Sparc PowerPC Alpha ARM Mips CellSPU PIC16 XCore MSP430 SystemZ Blackfin CBackend CppBackend MBlaze PTX Risco" ;;
        

      После сборки llc -version не отображает новую цель. Даже llc -march = risco test.ll сообщает, что это недопустимая цель. Что мне не хватает?

      PS: В настоящее время я включаю новую цель как папку внутри llvm / lib / Target. Как я могу это изменить, чтобы создать цель отдельно и загрузить ее динамически с помощью llc -load ?

14
задан Giuliano Vilela 13 October 2010 в 17:43
поделиться