diff options
Diffstat (limited to 'compilerplugins')
-rw-r--r-- | compilerplugins/clang/overrideparam.cxx | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compilerplugins/clang/overrideparam.cxx b/compilerplugins/clang/overrideparam.cxx index be76b5ba9bad..aca1e952ba66 100644 --- a/compilerplugins/clang/overrideparam.cxx +++ b/compilerplugins/clang/overrideparam.cxx @@ -160,12 +160,14 @@ bool OverrideParam::hasSameDefaultParams(const ParmVarDecl * parmVarDecl, const { return x1 == x2; } +#if CLANG_VERSION >= 30900 APFloat f1(0.0f), f2(0.0f); if (defaultArgExpr->EvaluateAsFloat(f1, compiler.getASTContext()) && superDefaultArgExpr->EvaluateAsFloat(f2, compiler.getASTContext())) { return f1.bitwiseIsEqual(f2); } +#endif // catch params with defaults like "= OUString()" if (isa<MaterializeTemporaryExpr>(defaultArgExpr) && isa<MaterializeTemporaryExpr>(superDefaultArgExpr)) @@ -177,7 +179,11 @@ bool OverrideParam::hasSameDefaultParams(const ParmVarDecl * parmVarDecl, const { return true; } +#if CLANG_VERSION >= 30900 return false; +#else + return true; // clang3-8 doesn't have EvaluateAsFloat, so we can't be as precise +#endif } |