CodeGenOptions.h revision 22a7dfea585703d6755db69b83e29a0e6ee10369
12811ccf48d6d898c42cc4cfad37abedb36236d20Chandler Carruth//===--- CodeGenOptions.h ---------------------------------------*- C++ -*-===//
270f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//
370f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//                     The LLVM Compiler Infrastructure
470f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//
570f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar// This file is distributed under the University of Illinois Open Source
670f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar// License. See LICENSE.TXT for details.
770f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//
870f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//===----------------------------------------------------------------------===//
970f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//
102811ccf48d6d898c42cc4cfad37abedb36236d20Chandler Carruth//  This file defines the CodeGenOptions interface.
1170f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//
1270f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//===----------------------------------------------------------------------===//
1370f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
1406057cef0bcd7804e80f3ce2bbe352178396c715Chandler Carruth#ifndef LLVM_CLANG_FRONTEND_CODEGENOPTIONS_H
1506057cef0bcd7804e80f3ce2bbe352178396c715Chandler Carruth#define LLVM_CLANG_FRONTEND_CODEGENOPTIONS_H
1670f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
17e062533e298f72d970b2aa99cd0e3818b20d73dfChris Lattner#include <string>
183c66d30d513106bb794990c5e4ba36a31ac19f15Daniel Dunbar#include <vector>
19e062533e298f72d970b2aa99cd0e3818b20d73dfChris Lattner
2070f92436f5828c11ef108463da4473d44e114c28Daniel Dunbarnamespace clang {
2170f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
222811ccf48d6d898c42cc4cfad37abedb36236d20Chandler Carruth/// CodeGenOptions - Track various options which control how the code
2370f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar/// is optimized and passed to the backend.
242811ccf48d6d898c42cc4cfad37abedb36236d20Chandler Carruthclass CodeGenOptions {
25e062533e298f72d970b2aa99cd0e3818b20d73dfChris Lattnerpublic:
26877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar  enum InliningMethod {
27877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar    NoInlining,         // Perform no inlining whatsoever.
28877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar    NormalInlining,     // Use the standard function inlining pass.
29877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar    OnlyAlwaysInlining  // Only run the always inlining pass.
30877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar  };
31877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar
32f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar  enum ObjCDispatchMethodKind {
33f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar    Legacy = 0,
34f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar    NonLegacy = 1,
35f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar    Mixed = 2
36f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar  };
37f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar
383b315264d1a6fa303e20fe0caec306ccafc090deDaniel Dunbar  unsigned AsmVerbose        : 1; /// -dA, -fverbose-asm.
39f85e193739c953358c865005855253af4f68a497John McCall  unsigned ObjCAutoRefCountExceptions : 1; /// Whether ARC should be EH-safe.
40d51e43af0b3a6897b971f316c4de2035ec82d1f2Peter Collingbourne  unsigned CUDAIsDevice      : 1; /// Set when compiling for CUDA device.
41efb0fa9e11f75af51744a6159530ef7cc8efa24aDaniel Dunbar  unsigned CXAAtExit         : 1; /// Use __cxa_atexit for calling destructors.
42efb0fa9e11f75af51744a6159530ef7cc8efa24aDaniel Dunbar  unsigned CXXCtorDtorAliases: 1; /// Emit complete ctors/dtors as linker
43efb0fa9e11f75af51744a6159530ef7cc8efa24aDaniel Dunbar                                  /// aliases to base ctors when possible.
44bbea7168326d810eff18dfb8bc43c7790fd55010Chris Lattner  unsigned DataSections      : 1; /// Set when -fdata-sections is enabled
45515ddd8f7a36fc2684492c13665642153fc690c0Sebastian Redl  unsigned DebugInfo         : 1; /// Should generate debug info (-g).
46c69e1cf04323f2e786d40e8a5ba84e77ee1c6827Devang Patel  unsigned LimitDebugInfo    : 1; /// Limit generated debug info to reduce size.
47f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  unsigned DisableFPElim     : 1; /// Set when -fomit-frame-pointer is enabled.
488d35314401047092eb97b989ed930967ed9e8cccDaniel Dunbar  unsigned DisableLLVMOpts   : 1; /// Don't run any optimizations, for use in
498d35314401047092eb97b989ed930967ed9e8cccDaniel Dunbar                                  /// getting .bc files that correspond to the
508d35314401047092eb97b989ed930967ed9e8cccDaniel Dunbar                                  /// internal state before optimizations are
518d35314401047092eb97b989ed930967ed9e8cccDaniel Dunbar                                  /// done.
52145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned DisableRedZone    : 1; /// Set when -mno-red-zone is enabled.
53f24fe4d1f1828251bcd160244a2393f2e990f1aaDaniel Dunbar  unsigned EmitDeclMetadata  : 1; /// Emit special metadata indicating what
54f24fe4d1f1828251bcd160244a2393f2e990f1aaDaniel Dunbar                                  /// Decl* various IR entities came from.  Only
55f24fe4d1f1828251bcd160244a2393f2e990f1aaDaniel Dunbar                                  /// useful when running CodeGen as a
56f24fe4d1f1828251bcd160244a2393f2e990f1aaDaniel Dunbar                                  /// subroutine.
57e8ba8d78a258ec992d3521eebdae8324db777b14Nick Lewycky  unsigned EmitGcovArcs      : 1; /// Emit coverage data files, aka. GCDA.
58e8ba8d78a258ec992d3521eebdae8324db777b14Nick Lewycky  unsigned EmitGcovNotes     : 1; /// Emit coverage "notes" files, aka GCNO.
5932096695c76033a6b0b1747c439f7378a11e8312John McCall  unsigned ForbidGuardVariables : 1; /// Issue errors if C++ guard variables
6032096695c76033a6b0b1747c439f7378a11e8312John McCall                                  /// are required
61bbea7168326d810eff18dfb8bc43c7790fd55010Chris Lattner  unsigned FunctionSections  : 1; /// Set when -ffunction-sections is enabled
62279b5eb6910d64a293e9c0e2887a05c65d8737d7John McCall  unsigned HiddenWeakTemplateVTables : 1; /// Emit weak vtables and RTTI for
637a536907da776bdc47a704e7cafd641e8150e653John McCall                                  /// template classes with hidden visibility
64279b5eb6910d64a293e9c0e2887a05c65d8737d7John McCall  unsigned HiddenWeakVTables : 1; /// Emit weak vtables, RTTI, and thunks with
65f24fe4d1f1828251bcd160244a2393f2e990f1aaDaniel Dunbar                                  /// hidden visibility.
66f24fe4d1f1828251bcd160244a2393f2e990f1aaDaniel Dunbar  unsigned InstrumentFunctions : 1; /// Set when -finstrument-functions is
67f24fe4d1f1828251bcd160244a2393f2e990f1aaDaniel Dunbar                                    /// enabled.
68be4c8705e499b55548467eb7adaa23cbc6edfef9Roman Divacky  unsigned InstrumentForProfiling : 1; /// Set when -pg is enabled
694400cb8c548a90c472444b57690117563f4be195Peter Collingbourne  unsigned LessPreciseFPMAD  : 1; /// Enable less precise MAD instructions to be
704400cb8c548a90c472444b57690117563f4be195Peter Collingbourne                                  /// generated.
71145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned MergeAllConstants : 1; /// Merge identical constants.
72145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned NoCommon          : 1; /// Set when -fno-common or C++ is enabled.
73f24a151d645abc89f94aa58ad59f3131502041b1Rafael Espindola  unsigned NoDwarf2CFIAsm    : 1; /// Set when -fno-dwarf2-cfi-asm is enabled.
74ea523d73a6de06f828952a02f5ff86e4cc631695Nick Lewycky  unsigned NoDwarfDirectoryAsm : 1; /// Set when -fno-dwarf-directory-asm is
75ea523d73a6de06f828952a02f5ff86e4cc631695Nick Lewycky                                    /// enabled.
76c3b9014c7236a15cf467662264b243a22c420312Nick Lewycky  unsigned NoExecStack       : 1; /// Set when -Wa,--noexecstack is enabled.
771b9060553221720152e12981109549e0a1d8e3a1Chad Rosier  unsigned NoGlobalMerge     : 1; /// Set when -mno-global-merge is enabled.
78145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned NoImplicitFloat   : 1; /// Set when -mno-implicit-float is enabled.
795d729a3d8eeba59ed97119998f2135ad6d45e876Peter Collingbourne  unsigned NoInfsFPMath      : 1; /// Assume FP arguments, results not +-Inf.
805d729a3d8eeba59ed97119998f2135ad6d45e876Peter Collingbourne  unsigned NoNaNsFPMath      : 1; /// Assume FP arguments, results not NaN.
81f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  unsigned NoZeroInitializedInBSS : 1; /// -fno-zero-initialized-in-bss
82f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar  unsigned ObjCDispatchMethod : 2; /// Method of Objective-C dispatch to use.
839f084a3166b684573ba49df28fc5792bc37d92e1John McCall  unsigned ObjCRuntimeHasARC : 1; /// The target runtime supports ARC natively
84256a76e0b0e0c9e65a3122917d553ef10bc84d29John McCall  unsigned ObjCRuntimeHasTerminate : 1; /// The ObjC runtime has objc_terminate
851ad6648cce57bd187f1853f58fef26cd9bf4934fDaniel Dunbar  unsigned OmitLeafFramePointer : 1; /// Set when -momit-leaf-frame-pointer is
861ad6648cce57bd187f1853f58fef26cd9bf4934fDaniel Dunbar                                     /// enabled.
87145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned OptimizationLevel : 3; /// The -O[0-4] option specified.
88a0fa203f04235cb6d05eeb8cea3392a01aa7571bBob Wilson  unsigned OptimizeSize      : 2; /// If -Os (==1) or -Oz (==2) is specified.
894ecc9b73b3716775ed4e09091e300796a9a72378Daniel Dunbar  unsigned RelaxAll          : 1; /// Relax all machine code instructions.
904d5625e15bb215c2241c022df8dc7b04438970c6Dan Gohman  unsigned RelaxedAliasing   : 1; /// Set when -fno-strict-aliasing is enabled.
91969323239f16589329d091a2b8ef200fcfe7c9e9Daniel Dunbar  unsigned SaveTempLabels    : 1; /// Save temporary labels.
926b0cf67ae72a9ebb90e94cc9a14e09364a2b3466Daniel Dunbar  unsigned SimplifyLibCalls  : 1; /// Set when -fbuiltin is enabled.
933b315264d1a6fa303e20fe0caec306ccafc090deDaniel Dunbar  unsigned SoftFloat         : 1; /// -soft-float.
94145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned TimePasses        : 1; /// Set when -ftime-report is enabled.
95145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned UnitAtATime       : 1; /// Unused. For mirroring GCC optimization
96145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar                                  /// selection.
97145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned UnrollLoops       : 1; /// Control whether loops are unrolled.
985f67e13fcdc3c33e9cd5d027bfbb677b726c6f6aPeter Collingbourne  unsigned UnsafeFPMath      : 1; /// Allow unsafe floating point optzns.
99f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  unsigned UnwindTables      : 1; /// Emit unwind tables.
100e26bdb91b7e3912ffe895b78a446db94471a59ddDaniel Dunbar
101e26bdb91b7e3912ffe895b78a446db94471a59ddDaniel Dunbar  /// Attempt to use register sized accesses to bit-fields in structures, when
102e26bdb91b7e3912ffe895b78a446db94471a59ddDaniel Dunbar  /// possible.
103e26bdb91b7e3912ffe895b78a446db94471a59ddDaniel Dunbar  unsigned UseRegisterSizedBitfieldAccess : 1;
104e26bdb91b7e3912ffe895b78a446db94471a59ddDaniel Dunbar
105145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar  unsigned VerifyModule      : 1; /// Control whether the module should be run
106145e2ea10fb6240265c3fac8137a5f2b01b1a426Daniel Dunbar                                  /// through the LLVM Verifier.
1078d35314401047092eb97b989ed930967ed9e8cccDaniel Dunbar
108f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  /// The code model to use (-mcmodel).
109f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  std::string CodeModel;
110f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar
1113dc05418538c719fea48b906bfa4febe5296e126Nick Lewycky  /// The filename with path we use for coverage files. The extension will be
1123dc05418538c719fea48b906bfa4febe5296e126Nick Lewycky  /// replaced.
1133dc05418538c719fea48b906bfa4febe5296e126Nick Lewycky  std::string CoverageFile;
1145ea4f44e34449a78d6b38aa47c14b527839d7aacNick Lewycky
1153b315264d1a6fa303e20fe0caec306ccafc090deDaniel Dunbar  /// Enable additional debugging information.
116f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  std::string DebugPass;
117f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar
1187c4fd9121f5885096fd3258d20a984e3f08f8603Nick Lewycky  /// The string to embed in debug information as the current working directory.
1197c4fd9121f5885096fd3258d20a984e3f08f8603Nick Lewycky  std::string DebugCompilationDir;
1207c4fd9121f5885096fd3258d20a984e3f08f8603Nick Lewycky
121f2d8b9f967a1ab53ee9fdbcc3ac0a4ee0a83a26eDaniel Dunbar  /// The string to embed in the debug information for the compile unit, if
122f2d8b9f967a1ab53ee9fdbcc3ac0a4ee0a83a26eDaniel Dunbar  /// non-empty.
123f2d8b9f967a1ab53ee9fdbcc3ac0a4ee0a83a26eDaniel Dunbar  std::string DwarfDebugFlags;
124f2d8b9f967a1ab53ee9fdbcc3ac0a4ee0a83a26eDaniel Dunbar
1253b315264d1a6fa303e20fe0caec306ccafc090deDaniel Dunbar  /// The ABI to use for passing floating point arguments.
1263b315264d1a6fa303e20fe0caec306ccafc090deDaniel Dunbar  std::string FloatABI;
1273b315264d1a6fa303e20fe0caec306ccafc090deDaniel Dunbar
128f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  /// The float precision limit to use, if non-empty.
129f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  std::string LimitFloatPrecision;
130f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar
13122a7dfea585703d6755db69b83e29a0e6ee10369Peter Collingbourne  /// The name of the bitcode file to link before optzns.
13222a7dfea585703d6755db69b83e29a0e6ee10369Peter Collingbourne  std::string LinkBitcodeFile;
13322a7dfea585703d6755db69b83e29a0e6ee10369Peter Collingbourne
134f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  /// The kind of inlining to perform.
135877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar  InliningMethod Inlining;
136877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar
1377d065d0f21b35f445cee13730398bc2bec6edff2Daniel Dunbar  /// The user provided name for the "main file", if non-empty. This is useful
1387d065d0f21b35f445cee13730398bc2bec6edff2Daniel Dunbar  /// in situations where the input file name does not match the original input
1397d065d0f21b35f445cee13730398bc2bec6edff2Daniel Dunbar  /// file, for example with -save-temps.
1407d065d0f21b35f445cee13730398bc2bec6edff2Daniel Dunbar  std::string MainFileName;
1417d065d0f21b35f445cee13730398bc2bec6edff2Daniel Dunbar
142f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  /// The name of the relocation model to use.
143f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar  std::string RelocationModel;
144f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar
1453c66d30d513106bb794990c5e4ba36a31ac19f15Daniel Dunbar  /// A list of command-line options to forward to the LLVM backend.
1463c66d30d513106bb794990c5e4ba36a31ac19f15Daniel Dunbar  std::vector<std::string> BackendOptions;
1473c66d30d513106bb794990c5e4ba36a31ac19f15Daniel Dunbar
14817d3fea677753e6e3e82ffe2cbdeccbf5f2e7497Daniel Dunbar  /// The user specified number of registers to be used for integral arguments,
14917d3fea677753e6e3e82ffe2cbdeccbf5f2e7497Daniel Dunbar  /// or 0 if unspecified.
15017d3fea677753e6e3e82ffe2cbdeccbf5f2e7497Daniel Dunbar  unsigned NumRegisterParameters;
15117d3fea677753e6e3e82ffe2cbdeccbf5f2e7497Daniel Dunbar
15270f92436f5828c11ef108463da4473d44e114c28Daniel Dunbarpublic:
1532811ccf48d6d898c42cc4cfad37abedb36236d20Chandler Carruth  CodeGenOptions() {
154f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    AsmVerbose = 0;
155d51e43af0b3a6897b971f316c4de2035ec82d1f2Peter Collingbourne    CUDAIsDevice = 0;
156efb0fa9e11f75af51744a6159530ef7cc8efa24aDaniel Dunbar    CXAAtExit = 1;
157efb0fa9e11f75af51744a6159530ef7cc8efa24aDaniel Dunbar    CXXCtorDtorAliases = 0;
158bbea7168326d810eff18dfb8bc43c7790fd55010Chris Lattner    DataSections = 0;
159f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    DebugInfo = 0;
160c69e1cf04323f2e786d40e8a5ba84e77ee1c6827Devang Patel    LimitDebugInfo = 0;
161f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    DisableFPElim = 0;
162f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    DisableLLVMOpts = 0;
163f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    DisableRedZone = 0;
1647a536907da776bdc47a704e7cafd641e8150e653John McCall    EmitDeclMetadata = 0;
165e8ba8d78a258ec992d3521eebdae8324db777b14Nick Lewycky    EmitGcovArcs = 0;
166e8ba8d78a258ec992d3521eebdae8324db777b14Nick Lewycky    EmitGcovNotes = 0;
16732096695c76033a6b0b1747c439f7378a11e8312John McCall    ForbidGuardVariables = 0;
168bbea7168326d810eff18dfb8bc43c7790fd55010Chris Lattner    FunctionSections = 0;
169279b5eb6910d64a293e9c0e2887a05c65d8737d7John McCall    HiddenWeakTemplateVTables = 0;
170279b5eb6910d64a293e9c0e2887a05c65d8737d7John McCall    HiddenWeakVTables = 0;
17141a621d00e974829b75ff95cdff556755116dea1Douglas Gregor    InstrumentFunctions = 0;
172be4c8705e499b55548467eb7adaa23cbc6edfef9Roman Divacky    InstrumentForProfiling = 0;
1734400cb8c548a90c472444b57690117563f4be195Peter Collingbourne    LessPreciseFPMAD = 0;
174f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    MergeAllConstants = 1;
175f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    NoCommon = 0;
176f24a151d645abc89f94aa58ad59f3131502041b1Rafael Espindola    NoDwarf2CFIAsm = 0;
177f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    NoImplicitFloat = 0;
1785d729a3d8eeba59ed97119998f2135ad6d45e876Peter Collingbourne    NoInfsFPMath = 0;
1795d729a3d8eeba59ed97119998f2135ad6d45e876Peter Collingbourne    NoNaNsFPMath = 0;
180f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    NoZeroInitializedInBSS = 0;
18117d3fea677753e6e3e82ffe2cbdeccbf5f2e7497Daniel Dunbar    NumRegisterParameters = 0;
182256a76e0b0e0c9e65a3122917d553ef10bc84d29John McCall    ObjCAutoRefCountExceptions = 0;
183f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar    ObjCDispatchMethod = Legacy;
184256a76e0b0e0c9e65a3122917d553ef10bc84d29John McCall    ObjCRuntimeHasARC = 0;
185256a76e0b0e0c9e65a3122917d553ef10bc84d29John McCall    ObjCRuntimeHasTerminate = 0;
1861ad6648cce57bd187f1853f58fef26cd9bf4934fDaniel Dunbar    OmitLeafFramePointer = 0;
18770f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar    OptimizationLevel = 0;
18870f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar    OptimizeSize = 0;
1894ecc9b73b3716775ed4e09091e300796a9a72378Daniel Dunbar    RelaxAll = 0;
1904d5625e15bb215c2241c022df8dc7b04438970c6Dan Gohman    RelaxedAliasing = 0;
191969323239f16589329d091a2b8ef200fcfe7c9e9Daniel Dunbar    SaveTempLabels = 0;
1926b0cf67ae72a9ebb90e94cc9a14e09364a2b3466Daniel Dunbar    SimplifyLibCalls = 1;
1933b315264d1a6fa303e20fe0caec306ccafc090deDaniel Dunbar    SoftFloat = 0;
194445026698ca8f97ee7320464dedbe0d077b32d16Chris Lattner    TimePasses = 0;
195f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    UnitAtATime = 1;
196984eb8611d9ee46fc6351dee43609f2deed99f3cDaniel Dunbar    UnrollLoops = 0;
1975f67e13fcdc3c33e9cd5d027bfbb677b726c6f6aPeter Collingbourne    UnsafeFPMath = 0;
198f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    UnwindTables = 0;
199e26bdb91b7e3912ffe895b78a446db94471a59ddDaniel Dunbar    UseRegisterSizedBitfieldAccess = 0;
200f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    VerifyModule = 1;
201f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar
202877db3852e29c5b5a2dc25b3fe4a3b78619aa904Daniel Dunbar    Inlining = NoInlining;
203f219e7c1529fac29e34483667f740b452e5ef9ccDaniel Dunbar    RelocationModel = "pic";
2041eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  }
205f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar
206f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar  ObjCDispatchMethodKind getObjCDispatchMethod() const {
207f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar    return ObjCDispatchMethodKind(ObjCDispatchMethod);
208f643b9b338b797a824447207d7eab5f1187f4f34Daniel Dunbar  }
20970f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar};
21070f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
21170f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar}  // end namespace clang
21270f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
21370f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar#endif
214