1533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//===- OptimizationOptions.h ----------------------------------------------===//
2533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
3533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//                     The MCLinker Project
4533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
5533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines// This file is distributed under the University of Illinois Open Source
6533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines// License. See LICENSE.TXT for details.
7533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
8533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//===----------------------------------------------------------------------===//
9533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#ifndef MCLD_LDLITE_OPTIMIZATION_OPTIONS_H
10533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#define MCLD_LDLITE_OPTIMIZATION_OPTIONS_H
11a790f0a8f3175183bea088389b3e4ae41813e192Stephen Hines#include <mcld/GeneralOptions.h>
12533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <llvm/Support/CommandLine.h>
13533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <string>
14533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
15533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesnamespace mcld {
16533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
17533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesclass LinkerConfig;
18533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
19533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesclass OptimizationOptions
20533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines{
21533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinespublic:
22533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  OptimizationOptions();
23533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
24533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  bool parse(LinkerConfig& pConfig);
25533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
26533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesprivate:
27533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  bool& m_GCSections;
28a790f0a8f3175183bea088389b3e4ae41813e192Stephen Hines  bool& m_PrintGCSections;
29533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  bool& m_GenUnwindInfo;
30a790f0a8f3175183bea088389b3e4ae41813e192Stephen Hines  llvm::cl::opt<mcld::GeneralOptions::ICF>& m_ICF;
31a790f0a8f3175183bea088389b3e4ae41813e192Stephen Hines  llvm::cl::opt<unsigned>& m_ICFIterations;
32a790f0a8f3175183bea088389b3e4ae41813e192Stephen Hines  llvm::cl::opt<bool>& m_PrintICFSections;
33533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<char>& m_OptLevel;
34533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::list<std::string>& m_Plugin;
35533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::list<std::string>& m_PluginOpt;
36533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines};
37533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
38533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines} // namespace of mcld
39533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
40533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#endif
41533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
42