cpplearner marked an inline comment as done.
cpplearner added inline comments.


================
Comment at: clang/lib/AST/ExprConstant.cpp:3441
+                                  Value);
+    }
     APSInt LHS = HandleIntToIntCast(Info, E, PromotedLHSType,
----------------
rjmccall wrote:
> Can we more fundamentally restructure this entire handler so that, if the 
> compound assignment's computation result type is an arithmetic type, we just 
> promote both operands to that type, do the arithmetic there, and then coerce 
> back down?  This is C++, so the LHS type imposes almost no restrictions on 
> the RHS type; also, this is Clang, where we support way too many arithmetic 
> types for our own good.
It seems the conditional statement is unavoidable, because `APSInt` and 
`APFloat` can't be handled at the same time (i.e. you need to choose among 
`Handle{Int,Float}To{Int,Float}Cast`, and between 
`handleIntIntBinOp`/`handleFloatFloatBinOp`). Maybe it's possible to add a 
layer that can accept both `APSInt` and `APFloat`, but it seems like an 
overkill if it's only used in the compound assignment case.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55413/new/

https://reviews.llvm.org/D55413



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to