Simplify the constructor to CodeGenABITypes.

The CodeGenOptions are not used for ABI type selection, so we will just
create one with the default constructor (there is a FloatABI option in
CodeGenOptions that is passed on to LLVM, but not used in Clang for LLVM
IR type generation).

We can use the DiagnosticsEngine on the ASTContext rather than making a
client pass one in explicitly.

llvm-svn: 196450
This commit is contained in:
Mark Lacey 2013-12-05 01:23:01 +00:00
parent 164097a6eb
commit d33ff74b19
2 changed files with 12 additions and 8 deletions

View File

@ -47,10 +47,7 @@ class CodeGenModule;
class CodeGenABITypes
{
public:
CodeGenABITypes(ASTContext &C, const CodeGenOptions &CodeGenOpts,
llvm::Module &M, const llvm::DataLayout &TD,
DiagnosticsEngine &Diags);
CodeGenABITypes(ASTContext &C, llvm::Module &M, const llvm::DataLayout &TD);
~CodeGenABITypes();
/// These methods all forward to methods in the private implementation class
@ -71,6 +68,12 @@ public:
RequiredArgs args);
private:
/// Default CodeGenOptions object used to initialize the
/// CodeGenModule and otherwise not used. More specifically, it is
/// not used in ABI type generation, so none of the options matter.
CodeGenOptions *CGO;
/// The CodeGenModule we use get to the CodeGenTypes object.
CodeGen::CodeGenModule *CGM;
};

View File

@ -19,21 +19,22 @@
#include "clang/CodeGen/CodeGenABITypes.h"
#include "clang/CodeGen/CGFunctionInfo.h"
#include "clang/Frontend/CodeGenOptions.h"
#include "CodeGenModule.h"
using namespace clang;
using namespace CodeGen;
CodeGenABITypes::CodeGenABITypes(ASTContext &C,
const CodeGenOptions &CodeGenOpts,
llvm::Module &M,
const llvm::DataLayout &TD,
DiagnosticsEngine &Diags)
: CGM(new CodeGen::CodeGenModule(C, CodeGenOpts, M, TD, Diags)) {
const llvm::DataLayout &TD)
: CGO(new CodeGenOptions),
CGM(new CodeGen::CodeGenModule(C, *CGO, M, TD, C.getDiagnostics())) {
}
CodeGenABITypes::~CodeGenABITypes()
{
delete CGO;
delete CGM;
}