1 /* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef MAPLE_BE_INCLUDE_CG_OPTIONS_H 17 #define MAPLE_BE_INCLUDE_CG_OPTIONS_H 18 19 #include "cl_option.h" 20 #include "cl_parser.h" 21 22 #include <stdint.h> 23 #include <string> 24 25 namespace opts::cg { 26 27 extern maplecl::Option<bool> pie; 28 extern maplecl::Option<bool> fpic; 29 extern maplecl::Option<bool> verboseAsm; 30 extern maplecl::Option<bool> verboseCg; 31 extern maplecl::Option<bool> maplelinker; 32 extern maplecl::Option<bool> quiet; 33 extern maplecl::Option<bool> cg; 34 extern maplecl::Option<bool> replaceAsm; 35 extern maplecl::Option<bool> generalRegOnly; 36 extern maplecl::Option<bool> lazyBinding; 37 extern maplecl::Option<bool> hotFix; 38 extern maplecl::Option<bool> ebo; 39 extern maplecl::Option<bool> cfgo; 40 extern maplecl::Option<bool> ico; 41 extern maplecl::Option<bool> storeloadopt; 42 extern maplecl::Option<bool> globalopt; 43 extern maplecl::Option<bool> hotcoldsplit; 44 extern maplecl::Option<bool> prelsra; 45 extern maplecl::Option<bool> calleeregsPlacement; 46 extern maplecl::Option<bool> ssapreSave; 47 extern maplecl::Option<bool> ssupreRestore; 48 extern maplecl::Option<bool> prepeep; 49 extern maplecl::Option<bool> peep; 50 extern maplecl::Option<bool> preschedule; 51 extern maplecl::Option<bool> schedule; 52 extern maplecl::Option<bool> retMerge; 53 extern maplecl::Option<bool> vregRename; 54 extern maplecl::Option<bool> fullcolor; 55 extern maplecl::Option<bool> writefieldopt; 56 extern maplecl::Option<bool> dumpOlog; 57 extern maplecl::Option<bool> nativeopt; 58 extern maplecl::Option<bool> objmap; 59 extern maplecl::Option<bool> yieldpoint; 60 extern maplecl::Option<bool> proepilogue; 61 extern maplecl::Option<bool> localRc; 62 extern maplecl::Option<std::string> insertCall; 63 extern maplecl::Option<bool> addDebugTrace; 64 extern maplecl::Option<bool> addFuncProfile; 65 extern maplecl::Option<std::string> classListFile; 66 extern maplecl::Option<bool> genCMacroDef; 67 extern maplecl::Option<bool> genGctibFile; 68 extern maplecl::Option<bool> stackProtectorStrong; 69 extern maplecl::Option<bool> stackProtectorAll; 70 extern maplecl::Option<bool> debug; 71 extern maplecl::Option<bool> gdwarf; 72 extern maplecl::Option<bool> gsrc; 73 extern maplecl::Option<bool> gmixedsrc; 74 extern maplecl::Option<bool> gmixedasm; 75 extern maplecl::Option<bool> profile; 76 extern maplecl::Option<bool> withRaLinearScan; 77 extern maplecl::Option<bool> withRaGraphColor; 78 extern maplecl::Option<bool> patchLongBranch; 79 extern maplecl::Option<bool> constFold; 80 extern maplecl::Option<std::string> ehExclusiveList; 81 extern maplecl::Option<bool> o0; 82 extern maplecl::Option<bool> o1; 83 extern maplecl::Option<bool> o2; 84 extern maplecl::Option<bool> os; 85 extern maplecl::Option<bool> olitecg; 86 extern maplecl::Option<uint64_t> lsraBb; 87 extern maplecl::Option<uint64_t> lsraInsn; 88 extern maplecl::Option<uint64_t> lsraOverlap; 89 extern maplecl::Option<uint8_t> remat; 90 extern maplecl::Option<bool> suppressFileinfo; 91 extern maplecl::Option<bool> dumpCfg; 92 extern maplecl::Option<std::string> target; 93 extern maplecl::Option<std::string> dumpPhases; 94 extern maplecl::Option<std::string> skipPhases; 95 extern maplecl::Option<std::string> skipFrom; 96 extern maplecl::Option<std::string> skipAfter; 97 extern maplecl::Option<std::string> dumpFunc; 98 extern maplecl::Option<bool> timePhases; 99 extern maplecl::Option<bool> useBarriersForVolatile; 100 extern maplecl::Option<std::string> range; 101 extern maplecl::Option<uint8_t> fastAlloc; 102 extern maplecl::Option<std::string> spillRange; 103 extern maplecl::Option<bool> dupBb; 104 extern maplecl::Option<bool> calleeCfi; 105 extern maplecl::Option<bool> printFunc; 106 extern maplecl::Option<std::string> cyclePatternList; 107 extern maplecl::Option<std::string> duplicateAsmList; 108 extern maplecl::Option<std::string> duplicateAsmList2; 109 extern maplecl::Option<std::string> blockMarker; 110 extern maplecl::Option<bool> soeCheck; 111 extern maplecl::Option<bool> checkArraystore; 112 extern maplecl::Option<bool> debugSchedule; 113 extern maplecl::Option<bool> bruteforceSchedule; 114 extern maplecl::Option<bool> simulateSchedule; 115 extern maplecl::Option<bool> crossLoc; 116 extern maplecl::Option<std::string> floatAbi; 117 extern maplecl::Option<std::string> archType; 118 extern maplecl::Option<std::string> filetype; 119 extern maplecl::Option<bool> longCalls; 120 extern maplecl::Option<bool> functionSections; 121 extern maplecl::Option<bool> omitFramePointer; 122 extern maplecl::Option<bool> fastMath; 123 extern maplecl::Option<bool> tailcall; 124 extern maplecl::Option<bool> alignAnalysis; 125 extern maplecl::Option<bool> cgSsa; 126 extern maplecl::Option<bool> common; 127 extern maplecl::Option<bool> condbrAlign; 128 extern maplecl::Option<uint32_t> alignMinBbSize; 129 extern maplecl::Option<uint32_t> alignMaxBbSize; 130 extern maplecl::Option<uint32_t> loopAlignPow; 131 extern maplecl::Option<uint32_t> jumpAlignPow; 132 extern maplecl::Option<uint32_t> funcAlignPow; 133 extern maplecl::Option<bool> optimizedFrameLayout; 134 extern maplecl::Option<bool> supportFuncSymbol; 135 136 } // namespace opts::cg 137 138 #endif /* MAPLE_BE_INCLUDE_CG_OPTIONS_H */ 139