LLVM API Documentation
00001 //===-- llvm/Target/TargetOptions.h - Target Options ------------*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file defines command line option flags that are shared across various 00011 // targets. 00012 // 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef LLVM_TARGET_TARGETOPTIONS_H 00016 #define LLVM_TARGET_TARGETOPTIONS_H 00017 00018 namespace llvm { 00019 /// PrintMachineCode - This flag is enabled when the -print-machineinstrs 00020 /// option is specified on the command line, and should enable debugging 00021 /// output from the code generator. 00022 extern bool PrintMachineCode; 00023 00024 /// NoFramePointerElim - This flag is enabled when the -disable-fp-elim is 00025 /// specified on the command line. If the target supports the frame pointer 00026 /// elimination optimization, this option should disable it. 00027 extern bool NoFramePointerElim; 00028 00029 /// NoExcessFPPrecision - This flag is enabled when the 00030 /// -disable-excess-fp-precision flag is specified on the command line. When 00031 /// this flag is off (the default), the code generator is allowed to produce 00032 /// results that are "more precise" than IEEE allows. This includes use of 00033 /// FMA-like operations and use of the X86 FP registers without rounding all 00034 /// over the place. 00035 extern bool NoExcessFPPrecision; 00036 00037 /// UnsafeFPMath - This flag is enabled when the 00038 /// -enable-unsafe-fp-math flag is specified on the command line. When 00039 /// this flag is off (the default), the code generator is not allowed to 00040 /// produce results that are "less precise" than IEEE allows. This includes 00041 /// use of X86 instructions like FSIN and FCOS instead of libcalls. 00042 /// UnsafeFPMath implies FiniteOnlyFPMath. 00043 extern bool UnsafeFPMath; 00044 00045 /// FiniteOnlyFPMath - This returns true when the -enable-finite-only-fp-math 00046 /// option is specified on the command line. If this returns false (default), 00047 /// the code generator is not allowed to assume that FP arithmetic arguments 00048 /// and results are never NaNs or +-Infs. 00049 extern bool FiniteOnlyFPMathOption; 00050 extern bool FiniteOnlyFPMath(); 00051 00052 /// HonorSignDependentRoundingFPMath - This returns true when the 00053 /// -enable-sign-dependent-rounding-fp-math is specified. If this returns 00054 /// false (the default), the code generator is allowed to assume that the 00055 /// rounding behavior is the default (round-to-zero for all floating point to 00056 /// integer conversions, and round-to-nearest for all other arithmetic 00057 /// truncations). If this is enabled (set to true), the code generator must 00058 /// assume that the rounding mode may dynamically change. 00059 extern bool HonorSignDependentRoundingFPMathOption; 00060 extern bool HonorSignDependentRoundingFPMath(); 00061 00062 /// UseSoftFloat - This flag is enabled when the -soft-float flag is specified 00063 /// on the command line. When this flag is on, the code generator will 00064 /// generate libcalls to the software floating point library instead of 00065 /// target FP instructions. 00066 extern bool UseSoftFloat; 00067 00068 /// NoZerosInBSS - By default some codegens place zero-initialized data to 00069 /// .bss section. This flag disables such behaviour (necessary, e.g. for 00070 /// crt*.o compiling). 00071 extern bool NoZerosInBSS; 00072 00073 /// ExceptionHandling - This flag indicates that exception information should 00074 /// be emitted. 00075 extern bool ExceptionHandling; 00076 00077 /// UnwindTablesMandatory - This flag indicates that unwind tables should 00078 /// be emitted for all functions. 00079 extern bool UnwindTablesMandatory; 00080 00081 /// PerformTailCallOpt - This flag is enabled when -tailcallopt is specified 00082 /// on the commandline. When the flag is on, the target will perform tail call 00083 /// optimization (pop the caller's stack) providing it supports it. 00084 extern bool PerformTailCallOpt; 00085 00086 /// StackAlignment - Override default stack alignment for target. 00087 extern unsigned StackAlignment; 00088 00089 /// RealignStack - This flag indicates, whether stack should be automatically 00090 /// realigned, if needed. 00091 extern bool RealignStack; 00092 00093 /// VerboseAsm - When this flag is set, the asm printer prints additional 00094 /// comments to asm directives. 00095 extern bool VerboseAsm; 00096 00097 /// DisableJumpTables - This flag indicates jump tables should not be 00098 /// generated. 00099 extern bool DisableJumpTables; 00100 00101 /// FastISel - This flag enables fast-path instruction selection 00102 /// which trades away generated code quality in favor of reducing 00103 /// compile time. 00104 extern bool EnableFastISel; 00105 00106 /// StrongPHIElim - This flag enables more aggressive PHI elimination 00107 /// wth earlier copy coalescing. 00108 extern bool StrongPHIElim; 00109 00110 } // End llvm namespace 00111 00112 #endif
This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.