TargetOptions.h revision c85e1716f0e45e4c18a9ef2fbe431a51ac3a4252
1//===-- llvm/Target/TargetOptions.h - Target Options ------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file was developed by the LLVM research group and is distributed under 6// the University of Illinois Open Source 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 /// PerformTailCallOpt - This flag is enabled when the -tailcallopt is 78 /// specified on the commandline. When the flag is on, the target will perform 79 /// tail call optimization (pop the caller's stack) providing it supports it. 80 extern bool PerformTailCallOpt; 81} // End llvm namespace 82 83#endif 84