=?utf-8?q?Mészáros?= Gergely <[email protected]>,Gergely Meszaros
<[email protected]>,Gergely Meszaros <[email protected]>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/[email protected]>
================
@@ -10685,6 +10724,7 @@ QualType Sema::CheckMultiplyDivideOperands(ExprResult
&LHS, ExprResult &RHS,
if (compType.isNull() || !compType->isArithmeticType())
return InvalidOperands(Loc, LHS, RHS);
if (IsDiv) {
+ DetectPrecisionLossInComplexDivision(*this, RHS.get()->getType(), Loc);
----------------
zahiraam wrote:
> The dividend is not relevant assuming its a built-in arithmetic type, which I
> think it must be at this point in the code already. I'll try verifying this
> assumption though. Note that IIUC the types have "usual arithmetic
> conversions" applied to them here.
>
> Whether the dividend is real or complex does not matter because complex
> divided by complex and real divided by complex both need promotion, but
> neither complex by complex (because it is elementwise) or real by real do.
OK looking at the divisor's type only is enough. When the divisor is of complex
type than a promotion is needed. When the complex type of the divisor and the
dividend are not of the same precision, a promotion is needed but that's
happening with the current code.
How about if we have `_Complex float / double`? Or` _Complex double / float`?
This should need a promotion, and it's not in the patch.
https://github.com/llvm/llvm-project/pull/131477
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits