summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-04-22 16:46:21 +0000
committerDouglas Gregor <dgregor@apple.com>2010-04-22 16:46:21 +0000
commite1f79e868a143ea255c03c79a4d9b210733ac620 (patch)
tree11bd5420dfd0c01799570dd8210462f7d146d8fc /clang/lib/Sema/TreeTransform.h
parent28175bf916c03a49788d9189facbdc89b8999cd2 (diff)
downloadbcm5719-llvm-e1f79e868a143ea255c03c79a4d9b210733ac620.tar.gz
bcm5719-llvm-e1f79e868a143ea255c03c79a4d9b210733ac620.zip
Expand the one use of TransformPointerLikeType and eliminate this macro. No functionality change
llvm-svn: 102073
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r--clang/lib/Sema/TreeTransform.h41
1 files changed, 17 insertions, 24 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index 02f74175006..0463a12f091 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -2259,29 +2259,6 @@ QualType TransformTypeSpecType(TypeLocBuilder &TLB, TyLoc T) {
return T.getType();
}
-// Ugly metaprogramming macros because I couldn't be bothered to make
-// the equivalent template version work.
-#define TransformPointerLikeType(TypeClass) do { \
- QualType PointeeType \
- = getDerived().TransformType(TLB, TL.getPointeeLoc()); \
- if (PointeeType.isNull()) \
- return QualType(); \
- \
- QualType Result = TL.getType(); \
- if (getDerived().AlwaysRebuild() || \
- PointeeType != TL.getPointeeLoc().getType()) { \
- Result = getDerived().Rebuild##TypeClass(PointeeType, \
- TL.getSigilLoc()); \
- if (Result.isNull()) \
- return QualType(); \
- } \
- \
- TypeClass##Loc NewT = TLB.push<TypeClass##Loc>(Result); \
- NewT.setSigilLoc(TL.getSigilLoc()); \
- \
- return Result; \
-} while(0)
-
template<typename Derived>
QualType TreeTransform<Derived>::TransformBuiltinType(TypeLocBuilder &TLB,
BuiltinTypeLoc T,
@@ -2348,7 +2325,23 @@ QualType
TreeTransform<Derived>::TransformBlockPointerType(TypeLocBuilder &TLB,
BlockPointerTypeLoc TL,
QualType ObjectType) {
- TransformPointerLikeType(BlockPointerType);
+ QualType PointeeType
+ = getDerived().TransformType(TLB, TL.getPointeeLoc());
+ if (PointeeType.isNull())
+ return QualType();
+
+ QualType Result = TL.getType();
+ if (getDerived().AlwaysRebuild() ||
+ PointeeType != TL.getPointeeLoc().getType()) {
+ Result = getDerived().RebuildBlockPointerType(PointeeType,
+ TL.getSigilLoc());
+ if (Result.isNull())
+ return QualType();
+ }
+
+ BlockPointerLoc NewT = TLB.push<BlockPointerLoc>(Result);
+ NewT.setSigilLoc(TL.getSigilLoc());
+ return Result;
}
/// Transforms a reference type. Note that somewhat paradoxically we
OpenPOWER on IntegriCloud