diff options
author | Chris Lattner <sabre@nondot.org> | 2010-02-17 06:28:22 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-02-17 06:28:22 +0000 |
commit | e78bc753fee1be5be27d981e0dbbd957c13a5c6d (patch) | |
tree | 306b42420b283c867755e3afffb1aed3be3e6096 | |
parent | c20a9586c4c8cb1a6a22cb565e99b968503358c0 (diff) | |
download | bcm5719-llvm-e78bc753fee1be5be27d981e0dbbd957c13a5c6d.tar.gz bcm5719-llvm-e78bc753fee1be5be27d981e0dbbd957c13a5c6d.zip |
sink special case "cannotyetselect" for intrinsics out of the
tblgen splatted code into the implementation.
llvm-svn: 96460
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 5 | ||||
-rw-r--r-- | llvm/utils/TableGen/DAGISelEmitter.cpp | 16 |
2 files changed, 7 insertions, 14 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index eead526f099..9ba0d55b7a9 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -1444,6 +1444,11 @@ SDNode *SelectionDAGISel::Select_EH_LABEL(SDNode *N) { } void SelectionDAGISel::CannotYetSelect(SDNode *N) { + if (N->getOpcode() == ISD::INTRINSIC_W_CHAIN || + N->getOpcode() == ISD::INTRINSIC_WO_CHAIN || + N->getOpcode() == ISD::INTRINSIC_VOID) + return CannotYetSelectIntrinsic(N); + std::string msg; raw_string_ostream Msg(msg); Msg << "Cannot yet select: "; diff --git a/llvm/utils/TableGen/DAGISelEmitter.cpp b/llvm/utils/TableGen/DAGISelEmitter.cpp index 1ac2d944311..e0e25731e5b 100644 --- a/llvm/utils/TableGen/DAGISelEmitter.cpp +++ b/llvm/utils/TableGen/DAGISelEmitter.cpp @@ -1841,13 +1841,7 @@ void DAGISelEmitter::EmitInstructionSelector(raw_ostream &OS) { // catch the case where nothing handles a pattern. if (mightNotMatch) { OS << "\n"; - if (OpName != "ISD::INTRINSIC_W_CHAIN" && - OpName != "ISD::INTRINSIC_WO_CHAIN" && - OpName != "ISD::INTRINSIC_VOID") - OS << " CannotYetSelect(N);\n"; - else - OS << " CannotYetSelectIntrinsic(N);\n"; - + OS << " CannotYetSelect(N);\n"; OS << " return NULL;\n"; } OS << "}\n\n"; @@ -1948,13 +1942,7 @@ void DAGISelEmitter::EmitInstructionSelector(raw_ostream &OS) { } OS << " } // end of big switch.\n\n" - << " if (N->getOpcode() != ISD::INTRINSIC_W_CHAIN &&\n" - << " N->getOpcode() != ISD::INTRINSIC_WO_CHAIN &&\n" - << " N->getOpcode() != ISD::INTRINSIC_VOID) {\n" - << " CannotYetSelect(N);\n" - << " } else {\n" - << " CannotYetSelectIntrinsic(N);\n" - << " }\n" + << " CannotYetSelect(N);\n" << " return NULL;\n" << "}\n\n"; } |