summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-11-06 00:12:53 +0000
committerDouglas Gregor <dgregor@apple.com>2009-11-06 00:12:53 +0000
commit140db517553e682c061875beb4748f3c20f61536 (patch)
tree74aecb72dba62d3714004461c3e269cec8c06e4d
parent80f04dc67d33fb7ea67d646716108b693fe5f157 (diff)
downloadbcm5719-llvm-140db517553e682c061875beb4748f3c20f61536.tar.gz
bcm5719-llvm-140db517553e682c061875beb4748f3c20f61536.zip
Add a bunch of missing "template" keywords to disambiguate dependent template names. GCC eats this ill-formed code, Clang does not. I already filed PR5404 to improve recovery in this case
llvm-svn: 86204
-rw-r--r--llvm/include/llvm/ADT/PointerUnion.h19
1 files changed, 11 insertions, 8 deletions
diff --git a/llvm/include/llvm/ADT/PointerUnion.h b/llvm/include/llvm/ADT/PointerUnion.h
index 33f2fcb1139..49c894092fa 100644
--- a/llvm/include/llvm/ADT/PointerUnion.h
+++ b/llvm/include/llvm/ADT/PointerUnion.h
@@ -186,8 +186,9 @@ namespace llvm {
int is() const {
// Is it PT1/PT2?
if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1)
- return Val.is<InnerUnion>() && Val.get<InnerUnion>().is<T>();
- return Val.is<T>();
+ return Val.template is<InnerUnion>() &&
+ Val.template get<InnerUnion>().template is<T>();
+ return Val.template is<T>();
}
/// get<T>() - Return the value of the specified pointer type. If the
@@ -197,9 +198,9 @@ namespace llvm {
assert(is<T>() && "Invalid accessor called");
// Is it PT1/PT2?
if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1)
- return Val.get<InnerUnion>().get<T>();
+ return Val.template get<InnerUnion>().template get<T>();
- return Val.get<T>();
+ return Val.template get<T>();
}
/// dyn_cast<T>() - If the current value is of the specified pointer type,
@@ -291,8 +292,10 @@ namespace llvm {
int is() const {
// Is it PT1/PT2?
if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1)
- return Val.is<InnerUnion1>() && Val.get<InnerUnion1>().is<T>();
- return Val.is<InnerUnion2>() && Val.get<InnerUnion2>().is<T>();
+ return Val.template is<InnerUnion1>() &&
+ Val.template get<InnerUnion1>().template is<T>();
+ return Val.template is<InnerUnion2>() &&
+ Val.template get<InnerUnion2>().template is<T>();
}
/// get<T>() - Return the value of the specified pointer type. If the
@@ -302,9 +305,9 @@ namespace llvm {
assert(is<T>() && "Invalid accessor called");
// Is it PT1/PT2?
if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1)
- return Val.get<InnerUnion1>().get<T>();
+ return Val.template get<InnerUnion1>().template get<T>();
- return Val.get<InnerUnion2>().get<T>();
+ return Val.template get<InnerUnion2>().template get<T>();
}
/// dyn_cast<T>() - If the current value is of the specified pointer type,
OpenPOWER on IntegriCloud