diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-06-05 22:43:40 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-06-05 22:43:40 +0000 |
commit | f15acc5f5cb36c60d9c20cf9dc58d0408cec1264 (patch) | |
tree | 0d388aef5fb535544c870992e98cd0b18c99003d /clang/lib/AST/StmtProfile.cpp | |
parent | 84ea12b5dc0a21698aa8ea2d3768c4b321625c65 (diff) | |
download | bcm5719-llvm-f15acc5f5cb36c60d9c20cf9dc58d0408cec1264.tar.gz bcm5719-llvm-f15acc5f5cb36c60d9c20cf9dc58d0408cec1264.zip |
PR19936: Fix a really dumb bug where we would profile dependent operator* expressions incorrectly.
llvm-svn: 210296
Diffstat (limited to 'clang/lib/AST/StmtProfile.cpp')
-rw-r--r-- | clang/lib/AST/StmtProfile.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/AST/StmtProfile.cpp b/clang/lib/AST/StmtProfile.cpp index 45e94d31e1d..8d97d71db78 100644 --- a/clang/lib/AST/StmtProfile.cpp +++ b/clang/lib/AST/StmtProfile.cpp @@ -627,11 +627,11 @@ static Stmt::StmtClass DecodeOperatorCall(const CXXOperatorCallExpr *S, case OO_Star: if (S->getNumArgs() == 1) { - UnaryOp = UO_Minus; + UnaryOp = UO_Deref; return Stmt::UnaryOperatorClass; } - BinaryOp = BO_Sub; + BinaryOp = BO_Mul; return Stmt::BinaryOperatorClass; case OO_Slash: @@ -776,7 +776,7 @@ static Stmt::StmtClass DecodeOperatorCall(const CXXOperatorCallExpr *S, llvm_unreachable("Invalid overloaded operator expression"); } - + void StmtProfiler::VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *S) { if (S->isTypeDependent()) { @@ -785,7 +785,7 @@ void StmtProfiler::VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *S) { UnaryOperatorKind UnaryOp = UO_Extension; BinaryOperatorKind BinaryOp = BO_Comma; Stmt::StmtClass SC = DecodeOperatorCall(S, UnaryOp, BinaryOp); - + ID.AddInteger(SC); for (unsigned I = 0, N = S->getNumArgs(); I != N; ++I) Visit(S->getArg(I)); @@ -796,10 +796,10 @@ void StmtProfiler::VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *S) { ID.AddInteger(BinaryOp); else assert(SC == Stmt::ArraySubscriptExprClass); - + return; } - + VisitCallExpr(S); ID.AddInteger(S->getOperator()); } |