diff options
author | Chris Lattner <sabre@nondot.org> | 2006-03-28 00:15:00 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-03-28 00:15:00 +0000 |
commit | 6a160fba223a472f8ce4d0adef044660f69b4417 (patch) | |
tree | 976ae8236d250cc89e46d0a3995c83b40d42f28e /utils | |
parent | 76f8c7c4cc4abbd6d71748762ebfe2fa1cd0fb43 (diff) | |
download | external_llvm-6a160fba223a472f8ce4d0adef044660f69b4417.zip external_llvm-6a160fba223a472f8ce4d0adef044660f69b4417.tar.gz external_llvm-6a160fba223a472f8ce4d0adef044660f69b4417.tar.bz2 |
Only compute intrinsic valuetypes when in a target .td file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27197 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/CodeGenIntrinsics.h | 5 | ||||
-rw-r--r-- | utils/TableGen/CodeGenTarget.cpp | 14 |
2 files changed, 16 insertions, 3 deletions
diff --git a/utils/TableGen/CodeGenIntrinsics.h b/utils/TableGen/CodeGenIntrinsics.h index f986ed1..4bae8f1 100644 --- a/utils/TableGen/CodeGenIntrinsics.h +++ b/utils/TableGen/CodeGenIntrinsics.h @@ -34,7 +34,10 @@ namespace llvm { /// of the arguments. These are things like Type::UIntTyID. std::vector<std::string> ArgTypes; - /// ArgVTs - The MVT::ValueType for each argument type. + /// ArgVTs - The MVT::ValueType for each argument type. Note that this list + /// is only populated when in the context of a target .td file. When + /// building Intrinsics.td, this isn't available, because we don't know the + /// target pointer size. std::vector<MVT::ValueType> ArgVTs; /// ArgTypeDefs - The records for each argument type. diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index e8c1335..f9bae9f 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -362,8 +362,17 @@ std::vector<CodeGenIntrinsic> llvm::LoadIntrinsics(const RecordKeeper &RC) { std::vector<Record*> I = RC.getAllDerivedDefinitions("Intrinsic"); std::vector<CodeGenIntrinsic> Result; + + // If we are in the context of a target .td file, get the target info so that + // we can decode the current intptr_t. + CodeGenTarget *CGT = 0; + if (Records.getClass("Target") && + Records.getAllDerivedDefinitions("Target").size() == 1) + CGT = new CodeGenTarget(); + for (unsigned i = 0, e = I.size(); i != e; ++i) - Result.push_back(CodeGenIntrinsic(I[i], 0)); + Result.push_back(CodeGenIntrinsic(I[i], CGT)); + delete CGT; return Result; } @@ -414,7 +423,8 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R, CodeGenTarget *CGT) { assert(TyEl->isSubClassOf("LLVMType") && "Expected a type!"); ArgTypes.push_back(TyEl->getValueAsString("TypeVal")); - ArgVTs.push_back(getValueType(TyEl->getValueAsDef("VT"), 0)); + if (CGT) + ArgVTs.push_back(getValueType(TyEl->getValueAsDef("VT"), CGT)); ArgTypeDefs.push_back(TyEl); } if (ArgTypes.size() == 0) |