10b57cec5SDimitry Andric //===--- CodeGenOptions.cpp -----------------------------------------------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #include "clang/Basic/CodeGenOptions.h" 100b57cec5SDimitry Andric #include <string.h> 110b57cec5SDimitry Andric 120b57cec5SDimitry Andric namespace clang { 130b57cec5SDimitry Andric 140b57cec5SDimitry Andric CodeGenOptions::CodeGenOptions() { 150b57cec5SDimitry Andric #define CODEGENOPT(Name, Bits, Default) Name = Default; 160b57cec5SDimitry Andric #define ENUM_CODEGENOPT(Name, Type, Bits, Default) set##Name(Default); 170b57cec5SDimitry Andric #include "clang/Basic/CodeGenOptions.def" 180b57cec5SDimitry Andric 190b57cec5SDimitry Andric RelocationModel = llvm::Reloc::PIC_; 205ffd83dbSDimitry Andric memcpy(CoverageVersion, "408*", 4); 210b57cec5SDimitry Andric } 220b57cec5SDimitry Andric 235f757f3fSDimitry Andric void CodeGenOptions::resetNonModularOptions(StringRef ModuleFormat) { 245f757f3fSDimitry Andric // First reset all CodeGen options only. The Debug options are handled later. 255f757f3fSDimitry Andric #define DEBUGOPT(Name, Bits, Default) 265f757f3fSDimitry Andric #define VALUE_DEBUGOPT(Name, Bits, Default) 275f757f3fSDimitry Andric #define ENUM_DEBUGOPT(Name, Type, Bits, Default) 285f757f3fSDimitry Andric #define CODEGENOPT(Name, Bits, Default) Name = Default; 295f757f3fSDimitry Andric #define ENUM_CODEGENOPT(Name, Type, Bits, Default) set##Name(Default); 30*7a6dacacSDimitry Andric // Do not reset AST affecting code generation options. 31*7a6dacacSDimitry Andric #define AFFECTING_VALUE_CODEGENOPT(Name, Bits, Default) 325f757f3fSDimitry Andric #include "clang/Basic/CodeGenOptions.def" 335f757f3fSDimitry Andric 345f757f3fSDimitry Andric // Next reset all debug options that can always be reset, because they never 355f757f3fSDimitry Andric // affect the PCM. 365f757f3fSDimitry Andric #define DEBUGOPT(Name, Bits, Default) 375f757f3fSDimitry Andric #define VALUE_DEBUGOPT(Name, Bits, Default) 385f757f3fSDimitry Andric #define ENUM_DEBUGOPT(Name, Type, Bits, Default) 395f757f3fSDimitry Andric #define BENIGN_DEBUGOPT(Name, Bits, Default) Name = Default; 405f757f3fSDimitry Andric #define BENIGN_VALUE_DEBUGOPT(Name, Bits, Default) Name = Default; 415f757f3fSDimitry Andric #define BENIGN_ENUM_DEBUGOPT(Name, Type, Bits, Default) set##Name(Default); 425f757f3fSDimitry Andric #include "clang/Basic/DebugOptions.def" 435f757f3fSDimitry Andric 445f757f3fSDimitry Andric // Conditionally reset debug options that only matter when the debug info is 455f757f3fSDimitry Andric // emitted into the PCM (-gmodules). 465f757f3fSDimitry Andric if (ModuleFormat == "raw" && !DebugTypeExtRefs) { 475f757f3fSDimitry Andric #define DEBUGOPT(Name, Bits, Default) Name = Default; 485f757f3fSDimitry Andric #define VALUE_DEBUGOPT(Name, Bits, Default) Name = Default; 495f757f3fSDimitry Andric #define ENUM_DEBUGOPT(Name, Type, Bits, Default) set##Name(Default); 505f757f3fSDimitry Andric #define BENIGN_DEBUGOPT(Name, Bits, Default) 515f757f3fSDimitry Andric #define BENIGN_VALUE_DEBUGOPT(Name, Bits, Default) 525f757f3fSDimitry Andric #define BENIGN_ENUM_DEBUGOPT(Name, Type, Bits, Default) 535f757f3fSDimitry Andric #include "clang/Basic/DebugOptions.def" 545f757f3fSDimitry Andric } 555f757f3fSDimitry Andric 565f757f3fSDimitry Andric RelocationModel = llvm::Reloc::PIC_; 575f757f3fSDimitry Andric memcpy(CoverageVersion, "408*", 4); 585f757f3fSDimitry Andric } 595f757f3fSDimitry Andric 600b57cec5SDimitry Andric } // end namespace clang 61