================
@@ -694,7 +694,8 @@ class ScalarExprEmitter : public 
StmtVisitor<ScalarExprEmitter, mlir::Value> {
         return {};
       }
 
-      if (mlir::isa<cir::SingleType, cir::DoubleType>(value.getType())) {
+      if (mlir::isa<cir::SingleType, cir::DoubleType, cir::LongDoubleType>(
+              value.getType())) {
----------------
andykaylor wrote:

I just looked again at the incubator and classic codegen, and I have a partial 
idea of what happened. Classic codegen implements this as an `fadd` and so it 
needs to construct an APFloat of `1.0`, which requires type-specific float 
semantics. The incubator followed the classic codegen handling for types other 
than float or double for some reason but used a CIR-specific unary operation 
for float and double. I can't see any good reason that we shouldn't use 
`cir.inc/cir.dec` for all FP types, after the special handling for half.

https://github.com/llvm/llvm-project/pull/190812
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to