zahiraam added inline comments.
================ Comment at: clang/lib/CodeGen/CGExprScalar.cpp:3140 + return CGF.Builder.CreateFPExt(result, ConvertType(E->getType())); + } + return result; ---------------- rjmccall wrote: > zahiraam wrote: > > rjmccall wrote: > > > Please extract this block out as: > > > > > > ``` > > > llvm::Value *EmitPromotedValue(llvm::Value *result, QualType > > > PromotionType); > > > ``` > > These changes you are proposing is when the argument of the unary __imag / > > __real is of type _Complex Float16. I would think that this new method > > EmitPromotedValue would be replacing the equivalent code in > > ComplexEmitter::EmitPromoted instead, not in the scalar emitter, right? > I probably mixed up which emitter I commented on. The upshot is that I would > like there to be `EmitPromotedValue` and `EmitUnpromotedValue` helper > functions on both emitters (which of course would take/return an > `llvm::Value*` on the scalar emitter and a `CGComplexPair` on the complex > emitter), just so that we have all the value promotion/unpromotion logic for > each emitter in one place. Let's see if what I have done is satisfactory! It's not quite "symmetrical" for scalar and complex. Let me know. Thanks. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113107/new/ https://reviews.llvm.org/D113107 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits