summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2008-12-03 23:17:54 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2008-12-03 23:17:54 +0000
commitba3fdfcbff06349851b22bea6ba3c6904e748a59 (patch)
tree7c09fd7abfc9b14bf17dde2378f03e02d6b53924 /clang/lib/AST
parent84efaf6a6306fb534551d05382bf4812658b7cc5 (diff)
downloadbcm5719-llvm-ba3fdfcbff06349851b22bea6ba3c6904e748a59.tar.gz
bcm5719-llvm-ba3fdfcbff06349851b22bea6ba3c6904e748a59.zip
Fix some type punning errors in SizeOfAlignOf and Typeid AST nodes. This should satisfy compilers and language lawyers alike.
llvm-svn: 60511
Diffstat (limited to 'clang/lib/AST')
-rw-r--r--clang/lib/AST/Expr.cpp4
-rw-r--r--clang/lib/AST/ExprCXX.cpp4
-rw-r--r--clang/lib/AST/StmtSerialization.cpp2
3 files changed, 5 insertions, 5 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 948dbc24189..e4386eceda1 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -1314,12 +1314,12 @@ Stmt::child_iterator SizeOfAlignOfExpr::child_begin() {
return child_iterator(T);
return child_iterator();
}
- return child_iterator((Stmt**)&Argument);
+ return child_iterator(&Argument.Ex);
}
Stmt::child_iterator SizeOfAlignOfExpr::child_end() {
if (isArgumentType())
return child_iterator();
- return child_iterator((Stmt**)&Argument + 1);
+ return child_iterator(&Argument.Ex + 1);
}
// ArraySubscriptExpr
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index 1bf07c4a63e..2d517196be6 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -28,10 +28,10 @@ void CXXConditionDeclExpr::Destroy(ASTContext& C) {
// CXXTypeidExpr - has child iterators if the operand is an expression
Stmt::child_iterator CXXTypeidExpr::child_begin() {
- return isTypeOperand() ? child_iterator() : (Stmt**)&Operand;
+ return isTypeOperand() ? child_iterator() : &Operand.Ex;
}
Stmt::child_iterator CXXTypeidExpr::child_end() {
- return isTypeOperand() ? child_iterator() : (Stmt**)&Operand+1;
+ return isTypeOperand() ? child_iterator() : &Operand.Ex+1;
}
// CXXBoolLiteralExpr
diff --git a/clang/lib/AST/StmtSerialization.cpp b/clang/lib/AST/StmtSerialization.cpp
index a8602245f3e..78a2cbcaa76 100644
--- a/clang/lib/AST/StmtSerialization.cpp
+++ b/clang/lib/AST/StmtSerialization.cpp
@@ -1394,7 +1394,7 @@ CXXNamedCastExpr::CreateImpl(Deserializer& D, ASTContext& C, StmtClass SC) {
void CXXTypeidExpr::EmitImpl(llvm::Serializer& S) const {
S.Emit(getType());
- S.Emit(isTypeOperand());
+ S.EmitBool(isTypeOperand());
if (isTypeOperand()) {
S.Emit(getTypeOperand());
} else {
OpenPOWER on IntegriCloud