summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2018-07-22 05:21:47 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2018-07-22 05:21:47 +0000
commitcc4ad95c303daf27ba3a1815eb81b2c832383ba2 (patch)
treec740130471721ea30c00d8b05108a5685c3ff619 /clang/lib/Sema/TreeTransform.h
parentb8b21d2fcac48ef26d3af325cc4d6cf4bddb78f7 (diff)
downloadbcm5719-llvm-cc4ad95c303daf27ba3a1815eb81b2c832383ba2.tar.gz
bcm5719-llvm-cc4ad95c303daf27ba3a1815eb81b2c832383ba2.zip
PR38257: don't perform ADL when instantiating a unary & operator that turns out
to be forming a pointer-to-member. llvm-svn: 337653
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r--clang/lib/Sema/TreeTransform.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index 5ed92aea32c..19567397112 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -12658,9 +12658,11 @@ TreeTransform<Derived>::RebuildCXXOperatorCallExpr(OverloadedOperatorKind Op,
// -> is never a builtin operation.
return SemaRef.BuildOverloadedArrowExpr(nullptr, First, OpLoc);
} else if (Second == nullptr || isPostIncDec) {
- if (!First->getType()->isOverloadableType()) {
- // The argument is not of overloadable type, so try to create a
- // built-in unary operation.
+ if (!First->getType()->isOverloadableType() ||
+ (Op == OO_Amp && getSema().isQualifiedMemberAccess(First))) {
+ // The argument is not of overloadable type, or this is an expression
+ // of the form &Class::member, so try to create a built-in unary
+ // operation.
UnaryOperatorKind Opc
= UnaryOperator::getOverloadedOpcode(Op, isPostIncDec);
OpenPOWER on IntegriCloud