LLVM API Documentation

TargetOptions.h

Go to the documentation of this file.
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.