OLD | NEW |
1 //===- subzero/src/IceConverter.cpp - Converts LLVM to Ice ---------------===// | 1 //===- subzero/src/IceConverter.cpp - Converts LLVM to Ice ---------------===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file implements the LLVM to ICE converter. | 10 // This file implements the LLVM to ICE converter. |
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 void convertGlobalsToIce( | 652 void convertGlobalsToIce( |
653 Module *Mod, | 653 Module *Mod, |
654 Ice::Translator::VariableDeclarationListType &VariableDeclarations); | 654 Ice::Translator::VariableDeclarationListType &VariableDeclarations); |
655 | 655 |
656 private: | 656 private: |
657 // Adds the Initializer to the list of initializers for the Global | 657 // Adds the Initializer to the list of initializers for the Global |
658 // variable declaraation. | 658 // variable declaraation. |
659 void addGlobalInitializer(Ice::VariableDeclaration &Global, | 659 void addGlobalInitializer(Ice::VariableDeclaration &Global, |
660 const Constant *Initializer) { | 660 const Constant *Initializer) { |
661 const bool HasOffset = false; | 661 const bool HasOffset = false; |
662 const Ice::VariableDeclaration::RelocOffsetType Offset = 0; | 662 const Ice::RelocOffsetT Offset = 0; |
663 addGlobalInitializer(Global, Initializer, HasOffset, Offset); | 663 addGlobalInitializer(Global, Initializer, HasOffset, Offset); |
664 } | 664 } |
665 | 665 |
666 // Adds Initializer to the list of initializers for Global variable | 666 // Adds Initializer to the list of initializers for Global variable |
667 // declaration. HasOffset is true only if Initializer is a | 667 // declaration. HasOffset is true only if Initializer is a |
668 // relocation initializer and Offset should be added to the | 668 // relocation initializer and Offset should be added to the |
669 // relocation. | 669 // relocation. |
670 void addGlobalInitializer(Ice::VariableDeclaration &Global, | 670 void addGlobalInitializer(Ice::VariableDeclaration &Global, |
671 const Constant *Initializer, bool HasOffset, | 671 const Constant *Initializer, bool HasOffset, |
672 Ice::VariableDeclaration::RelocOffsetType Offset); | 672 Ice::RelocOffsetT Offset); |
673 | 673 |
674 // Converts the given constant C to the corresponding integer | 674 // Converts the given constant C to the corresponding integer |
675 // literal it contains. | 675 // literal it contains. |
676 Ice::VariableDeclaration::RelocOffsetType | 676 Ice::RelocOffsetT getIntegerLiteralConstant(const Value *C) { |
677 getIntegerLiteralConstant(const Value *C) { | |
678 const auto CI = dyn_cast<ConstantInt>(C); | 677 const auto CI = dyn_cast<ConstantInt>(C); |
679 if (CI && CI->getType()->isIntegerTy(32)) | 678 if (CI && CI->getType()->isIntegerTy(32)) |
680 return CI->getSExtValue(); | 679 return CI->getSExtValue(); |
681 | 680 |
682 std::string Buffer; | 681 std::string Buffer; |
683 raw_string_ostream StrBuf(Buffer); | 682 raw_string_ostream StrBuf(Buffer); |
684 StrBuf << "Constant not i32 literal: " << *C; | 683 StrBuf << "Constant not i32 literal: " << *C; |
685 report_fatal_error(StrBuf.str()); | 684 report_fatal_error(StrBuf.str()); |
686 return 0; | 685 return 0; |
687 } | 686 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 } | 727 } |
729 } | 728 } |
730 } else { | 729 } else { |
731 addGlobalInitializer(*VarDecl, Initializer); | 730 addGlobalInitializer(*VarDecl, Initializer); |
732 } | 731 } |
733 } | 732 } |
734 } | 733 } |
735 | 734 |
736 void LLVM2ICEGlobalsConverter::addGlobalInitializer( | 735 void LLVM2ICEGlobalsConverter::addGlobalInitializer( |
737 Ice::VariableDeclaration &Global, const Constant *Initializer, | 736 Ice::VariableDeclaration &Global, const Constant *Initializer, |
738 bool HasOffset, Ice::VariableDeclaration::RelocOffsetType Offset) { | 737 bool HasOffset, Ice::RelocOffsetT Offset) { |
739 (void)HasOffset; | 738 (void)HasOffset; |
740 assert(HasOffset || Offset == 0); | 739 assert(HasOffset || Offset == 0); |
741 | 740 |
742 if (const auto CDA = dyn_cast<ConstantDataArray>(Initializer)) { | 741 if (const auto CDA = dyn_cast<ConstantDataArray>(Initializer)) { |
743 assert(!HasOffset && isa<IntegerType>(CDA->getElementType()) && | 742 assert(!HasOffset && isa<IntegerType>(CDA->getElementType()) && |
744 (cast<IntegerType>(CDA->getElementType())->getBitWidth() == 8)); | 743 (cast<IntegerType>(CDA->getElementType())->getBitWidth() == 8)); |
745 Global.addInitializer(new Ice::VariableDeclaration::DataInitializer( | 744 Global.addInitializer(new Ice::VariableDeclaration::DataInitializer( |
746 CDA->getRawDataValues().data(), CDA->getNumElements())); | 745 CDA->getRawDataValues().data(), CDA->getNumElements())); |
747 return; | 746 return; |
748 } | 747 } |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 Cfg *Fcn = FunctionConverter.convertFunction(&I); | 897 Cfg *Fcn = FunctionConverter.convertFunction(&I); |
899 translateFcn(Fcn); | 898 translateFcn(Fcn); |
900 if (Ctx->getFlags().TimeEachFunction) | 899 if (Ctx->getFlags().TimeEachFunction) |
901 Ctx->popTimer(TimerID, StackID); | 900 Ctx->popTimer(TimerID, StackID); |
902 } | 901 } |
903 | 902 |
904 emitConstants(); | 903 emitConstants(); |
905 } | 904 } |
906 | 905 |
907 } // end of namespace Ice | 906 } // end of namespace Ice |
OLD | NEW |