16368818fSRichard Trieu //===--- CodeGenOptions.cpp -----------------------------------------------===// 26368818fSRichard Trieu // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 66368818fSRichard Trieu // 76368818fSRichard Trieu //===----------------------------------------------------------------------===// 86368818fSRichard Trieu 96368818fSRichard Trieu #include "clang/Basic/CodeGenOptions.h" 106368818fSRichard Trieu #include <string.h> 116368818fSRichard Trieu 126368818fSRichard Trieu namespace clang { 138d2d0e84SDouglas Yung 148d2d0e84SDouglas Yung CodeGenOptions::CodeGenOptions() { 156368818fSRichard Trieu #define CODEGENOPT(Name, Bits, Default) Name = Default; 166368818fSRichard Trieu #define ENUM_CODEGENOPT(Name, Type, Bits, Default) set##Name(Default); 176368818fSRichard Trieu #include "clang/Basic/CodeGenOptions.def" 186368818fSRichard Trieu 196368818fSRichard Trieu RelocationModel = llvm::Reloc::PIC_; 206368818fSRichard Trieu } 216368818fSRichard Trieu 225ad3a32cSJuergen Ributzka void CodeGenOptions::resetNonModularOptions(StringRef ModuleFormat) { 235ad3a32cSJuergen Ributzka // First reset all CodeGen options only. The Debug options are handled later. 245ad3a32cSJuergen Ributzka #define DEBUGOPT(Name, Bits, Default) 255ad3a32cSJuergen Ributzka #define VALUE_DEBUGOPT(Name, Bits, Default) 265ad3a32cSJuergen Ributzka #define ENUM_DEBUGOPT(Name, Type, Bits, Default) 275ad3a32cSJuergen Ributzka #define CODEGENOPT(Name, Bits, Default) Name = Default; 285ad3a32cSJuergen Ributzka #define ENUM_CODEGENOPT(Name, Type, Bits, Default) set##Name(Default); 29*c5a33befSJuergen Ributzka // Do not reset AST affecting code generation options. 30*c5a33befSJuergen Ributzka #define AFFECTING_VALUE_CODEGENOPT(Name, Bits, Default) 315ad3a32cSJuergen Ributzka #include "clang/Basic/CodeGenOptions.def" 325ad3a32cSJuergen Ributzka 335ad3a32cSJuergen Ributzka // Next reset all debug options that can always be reset, because they never 345ad3a32cSJuergen Ributzka // affect the PCM. 355ad3a32cSJuergen Ributzka #define DEBUGOPT(Name, Bits, Default) 365ad3a32cSJuergen Ributzka #define VALUE_DEBUGOPT(Name, Bits, Default) 375ad3a32cSJuergen Ributzka #define ENUM_DEBUGOPT(Name, Type, Bits, Default) 385ad3a32cSJuergen Ributzka #define BENIGN_DEBUGOPT(Name, Bits, Default) Name = Default; 395ad3a32cSJuergen Ributzka #define BENIGN_VALUE_DEBUGOPT(Name, Bits, Default) Name = Default; 405ad3a32cSJuergen Ributzka #define BENIGN_ENUM_DEBUGOPT(Name, Type, Bits, Default) set##Name(Default); 415ad3a32cSJuergen Ributzka #include "clang/Basic/DebugOptions.def" 425ad3a32cSJuergen Ributzka 435ad3a32cSJuergen Ributzka // Conditionally reset debug options that only matter when the debug info is 445ad3a32cSJuergen Ributzka // emitted into the PCM (-gmodules). 455ad3a32cSJuergen Ributzka if (ModuleFormat == "raw" && !DebugTypeExtRefs) { 465ad3a32cSJuergen Ributzka #define DEBUGOPT(Name, Bits, Default) Name = Default; 475ad3a32cSJuergen Ributzka #define VALUE_DEBUGOPT(Name, Bits, Default) Name = Default; 485ad3a32cSJuergen Ributzka #define ENUM_DEBUGOPT(Name, Type, Bits, Default) set##Name(Default); 495ad3a32cSJuergen Ributzka #define BENIGN_DEBUGOPT(Name, Bits, Default) 505ad3a32cSJuergen Ributzka #define BENIGN_VALUE_DEBUGOPT(Name, Bits, Default) 515ad3a32cSJuergen Ributzka #define BENIGN_ENUM_DEBUGOPT(Name, Type, Bits, Default) 525ad3a32cSJuergen Ributzka #include "clang/Basic/DebugOptions.def" 535ad3a32cSJuergen Ributzka } 545ad3a32cSJuergen Ributzka 555ad3a32cSJuergen Ributzka RelocationModel = llvm::Reloc::PIC_; 565ad3a32cSJuergen Ributzka } 575ad3a32cSJuergen Ributzka 586368818fSRichard Trieu } // end namespace clang 59