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