aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaFixItUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Sema/SemaFixItUtils.cpp')
-rw-r--r--clang/lib/Sema/SemaFixItUtils.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaFixItUtils.cpp b/clang/lib/Sema/SemaFixItUtils.cpp
index 2910a56f866b..2c85a5319430 100644
--- a/clang/lib/Sema/SemaFixItUtils.cpp
+++ b/clang/lib/Sema/SemaFixItUtils.cpp
@@ -124,7 +124,7 @@ bool ConversionFixItGenerator::tryToFixConversion(const Expr *FullExpr,
// Check if the pointer to the argument needs to be passed:
// (type -> type *) or (type & -> type *).
- if (isa<PointerType>(ToQTy)) {
+ if (const auto *ToPtrTy = dyn_cast<PointerType>(ToQTy)) {
bool CanConvert = false;
OverloadFixItKind FixKind = OFIK_TakeAddress;
@@ -132,6 +132,10 @@ bool ConversionFixItGenerator::tryToFixConversion(const Expr *FullExpr,
if (!Expr->isLValue() || Expr->getObjectKind() != OK_Ordinary)
return false;
+ // Do no take address of const pointer to get void*
+ if (isa<PointerType>(FromQTy) && ToPtrTy->isVoidPointerType())
+ return false;
+
CanConvert = CompareTypes(S.Context.getPointerType(FromQTy), ToQTy, S,
Begin, VK_PRValue);
if (CanConvert) {