diff options
| author | Dale Johannesen <dalej@apple.com> | 2009-02-05 01:49:45 +0000 |
|---|---|---|
| committer | Dale Johannesen <dalej@apple.com> | 2009-02-05 01:49:45 +0000 |
| commit | b842d529a36a3449b0b3affa389cdcd8eb97e4c0 (patch) | |
| tree | df9466ae4a9ad33771459b11776f2380c2e3b133 /llvm/utils/TableGen/CodeGenDAGPatterns.h | |
| parent | 0103574d5500e9a3026aa48083e6dcd723387cc0 (diff) | |
| download | bcm5719-llvm-b842d529a36a3449b0b3affa389cdcd8eb97e4c0.tar.gz bcm5719-llvm-b842d529a36a3449b0b3affa389cdcd8eb97e4c0.zip | |
Reapply 63765. Patches for clang and llvm-gcc to follow.
llvm-svn: 63812
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.h')
| -rw-r--r-- | llvm/utils/TableGen/CodeGenDAGPatterns.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.h b/llvm/utils/TableGen/CodeGenDAGPatterns.h index d44bfc93375..0bd316511e6 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.h +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.h @@ -465,6 +465,7 @@ class CodeGenDAGPatterns { RecordKeeper &Records; CodeGenTarget Target; std::vector<CodeGenIntrinsic> Intrinsics; + std::vector<CodeGenIntrinsic> TgtIntrinsics; std::map<Record*, SDNodeInfo> SDNodes; std::map<Record*, std::pair<Record*, std::string> > SDNodeXForms; @@ -515,18 +516,25 @@ public: const CodeGenIntrinsic &getIntrinsic(Record *R) const { for (unsigned i = 0, e = Intrinsics.size(); i != e; ++i) if (Intrinsics[i].TheDef == R) return Intrinsics[i]; + for (unsigned i = 0, e = TgtIntrinsics.size(); i != e; ++i) + if (TgtIntrinsics[i].TheDef == R) return TgtIntrinsics[i]; assert(0 && "Unknown intrinsic!"); abort(); } const CodeGenIntrinsic &getIntrinsicInfo(unsigned IID) const { - assert(IID-1 < Intrinsics.size() && "Bad intrinsic ID!"); - return Intrinsics[IID-1]; + if (IID-1 < Intrinsics.size()) + return Intrinsics[IID-1]; + if (IID-Intrinsics.size()-1 < TgtIntrinsics.size()) + return TgtIntrinsics[IID-Intrinsics.size()-1]; + assert(0 && "Bad intrinsic ID!"); } unsigned getIntrinsicID(Record *R) const { for (unsigned i = 0, e = Intrinsics.size(); i != e; ++i) if (Intrinsics[i].TheDef == R) return i; + for (unsigned i = 0, e = TgtIntrinsics.size(); i != e; ++i) + if (TgtIntrinsics[i].TheDef == R) return i + Intrinsics.size(); assert(0 && "Unknown intrinsic!"); abort(); } |

