diff options
author | John McCall <rjmccall@apple.com> | 2013-01-25 23:36:14 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2013-01-25 23:36:14 +0000 |
commit | 5762592b49b047568a547b8eb1be0c6e6deea4bb (patch) | |
tree | fb0f5a93f2f9954eec808590b1f00b8ccd5f0005 /clang/lib/CodeGen/ItaniumCXXABI.cpp | |
parent | 7211ac15bbd97fd9ea8016a6632cb039a1071f1d (diff) | |
download | bcm5719-llvm-5762592b49b047568a547b8eb1be0c6e6deea4bb.tar.gz bcm5719-llvm-5762592b49b047568a547b8eb1be0c6e6deea4bb.zip |
Move the decision about the kind of CGCXXABI to make inside
the family-specific files.
llvm-svn: 173530
Diffstat (limited to 'clang/lib/CodeGen/ItaniumCXXABI.cpp')
-rw-r--r-- | clang/lib/CodeGen/ItaniumCXXABI.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp index 9fce392352d..354887f446a 100644 --- a/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -174,11 +174,20 @@ private: } CodeGen::CGCXXABI *CodeGen::CreateItaniumCXXABI(CodeGenModule &CGM) { - return new ItaniumCXXABI(CGM); -} - -CodeGen::CGCXXABI *CodeGen::CreateARMCXXABI(CodeGenModule &CGM) { - return new ARMCXXABI(CGM); + switch (CGM.getContext().getTargetInfo().getCXXABI().getKind()) { + // For IR-generation purposes, there's no significant difference + // between the ARM and iOS ABIs. + case TargetCXXABI::GenericARM: + case TargetCXXABI::iOS: + return new ARMCXXABI(CGM); + + case TargetCXXABI::GenericItanium: + return new ItaniumCXXABI(CGM); + + case TargetCXXABI::Microsoft: + llvm_unreachable("Microsoft ABI is not Itanium-based"); + } + llvm_unreachable("bad ABI kind"); } llvm::Type * |