TargetOptions.h revision 4e1b79459fcf72216cdc42a59953e172c60e15ca
1//===-- llvm/Target/TargetOptions.h - Target Options ------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file defines command line option flags that are shared across various
11// targets.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_TARGET_TARGETOPTIONS_H
16#define LLVM_TARGET_TARGETOPTIONS_H
17
18namespace llvm {
19  /// PrintMachineCode - This flag is enabled when the -print-machineinstrs
20  /// option is specified on the command line, and should enable debugging
21  /// output from the code generator.
22  extern bool PrintMachineCode;
23
24  /// NoFramePointerElim - This flag is enabled when the -disable-fp-elim is
25  /// specified on the command line.  If the target supports the frame pointer
26  /// elimination optimization, this option should disable it.
27  extern bool NoFramePointerElim;
28
29  /// NoExcessFPPrecision - This flag is enabled when the
30  /// -disable-excess-fp-precision flag is specified on the command line.  When
31  /// this flag is off (the default), the code generator is allowed to produce
32  /// results that are "more precise" than IEEE allows.  This includes use of
33  /// FMA-like operations and use of the X86 FP registers without rounding all
34  /// over the place.
35  extern bool NoExcessFPPrecision;
36
37  /// UnsafeFPMath - This flag is enabled when the
38  /// -enable-unsafe-fp-math flag is specified on the command line.  When
39  /// this flag is off (the default), the code generator is not allowed to
40  /// produce results that are "less precise" than IEEE allows.  This includes
41  /// use of X86 instructions like FSIN and FCOS instead of libcalls.
42  /// UnsafeFPMath implies FiniteOnlyFPMath.
43  extern bool UnsafeFPMath;
44
45  /// FiniteOnlyFPMath - This returns true when the -enable-finite-only-fp-math
46  /// option is specified on the command line. If this returns false (default),
47  /// the code generator is not allowed to assume that FP arithmetic arguments
48  /// and results are never NaNs or +-Infs.
49  extern bool FiniteOnlyFPMathOption;
50  extern bool FiniteOnlyFPMath();
51
52  /// HonorSignDependentRoundingFPMath - This returns true when the
53  /// -enable-sign-dependent-rounding-fp-math is specified.  If this returns
54  /// false (the default), the code generator is allowed to assume that the
55  /// rounding behavior is the default (round-to-zero for all floating point to
56  /// integer conversions, and round-to-nearest for all other arithmetic
57  /// truncations).  If this is enabled (set to true), the code generator must
58  /// assume that the rounding mode may dynamically change.
59  extern bool HonorSignDependentRoundingFPMathOption;
60  extern bool HonorSignDependentRoundingFPMath();
61
62  /// UseSoftFloat - This flag is enabled when the -soft-float flag is specified
63  /// on the command line.  When this flag is on, the code generator will
64  /// generate libcalls to the software floating point library instead of
65  /// target FP instructions.
66  extern bool UseSoftFloat;
67
68  /// NoZerosInBSS - By default some codegens place zero-initialized data to
69  /// .bss section. This flag disables such behaviour (necessary, e.g. for
70  /// crt*.o compiling).
71  extern bool NoZerosInBSS;
72
73  /// ExceptionHandling - This flag indicates that exception information should
74  /// be emitted.
75  extern bool ExceptionHandling;
76
77  /// UnwindTablesOptional - This flag indicates that unwind tables need not
78  /// be emitted for all functions.  Exception handling may still require them
79  /// for some functions.
80  extern bool UnwindTablesOptional;
81
82  /// PerformTailCallOpt - This flag is enabled when -tailcallopt is specified
83  /// on the commandline. When the flag is on, the target will perform tail call
84  /// optimization (pop the caller's stack) providing it supports it.
85  extern bool PerformTailCallOpt;
86
87  /// OptimizeForSize - When this flag is set, the code generator avoids
88  /// optimizations that increase size.
89  extern bool OptimizeForSize;
90} // End llvm namespace
91
92#endif
93