CodeGenOptions.h revision 70f92436f5828c11ef108463da4473d44e114c28
170f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//===--- CompileOptions.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//
1070f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//  This file defines the CompileOptions interface.
1170f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//
1270f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar//===----------------------------------------------------------------------===//
1370f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
1470f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar#ifndef LLVM_CLANG_COMPILEOPTIONS_H
1570f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar#define LLVM_CLANG_COMPILEOPTIONS_H
1670f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
1770f92436f5828c11ef108463da4473d44e114c28Daniel Dunbarnamespace clang {
1870f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
1970f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar/// CompileOptions - Track various options which control how the code
2070f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar/// is optimized and passed to the backend.
2170f92436f5828c11ef108463da4473d44e114c28Daniel Dunbarstruct CompileOptions {
2270f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  unsigned OptimizationLevel : 3; /// The -O[0-4] option specified.
2370f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  unsigned OptimizeSize      : 1; /// If -Os is specified.
2470f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  unsigned UnitAtATime       : 1; /// Unused. For mirroring GCC
2570f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar                                  /// optimization selection.
2670f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  unsigned InlineFunctions   : 1; /// Should functions be inlined?
2770f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  unsigned SimplifyLibCalls  : 1; /// Should standard library calls be
2870f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar                                  /// treated specially.
2970f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  unsigned UnrollLoops       : 1; /// Control whether loops are unrolled.
3070f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  unsigned VerifyModule      : 1; /// Control whether the module
3170f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar                                  /// should be run through the LLVM Verifier.
3270f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
3370f92436f5828c11ef108463da4473d44e114c28Daniel Dunbarpublic:
3470f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  CompileOptions() {
3570f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar    OptimizationLevel = 0;
3670f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar    OptimizeSize = 0;
3770f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar    UnitAtATime = InlineFunctions = SimplifyLibCalls = 1;
3870f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar    UnrollLoops = 1;
3970f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar    VerifyModule = 1;
4070f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar  }
4170f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar};
4270f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
4370f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar}  // end namespace clang
4470f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar
4570f92436f5828c11ef108463da4473d44e114c28Daniel Dunbar#endif
46