sepavloff added inline comments.

================
Comment at: clang/lib/AST/Interp/Floating.h:54-62
+  explicit operator int8_t() const { return toAPSInt().getExtValue(); }
+  explicit operator uint8_t() const { return toAPSInt().getExtValue(); }
+  explicit operator int16_t() const { return toAPSInt().getExtValue(); }
+  explicit operator uint16_t() const { return toAPSInt().getExtValue(); }
+  explicit operator int32_t() const { return toAPSInt().getExtValue(); }
+  explicit operator uint32_t() const { return toAPSInt().getExtValue(); }
+  explicit operator int64_t() const { return toAPSInt().getExtValue(); }
----------------
tbaeder wrote:
> sepavloff wrote:
> > tbaeder wrote:
> > > sepavloff wrote:
> > > > Conversions to integers are bitcasts+truncation but the conversion to 
> > > > bool is different. What semantics have these operations?
> > > They are basically used for casting. I didn't mean to make the bool 
> > > implementation different, just seemed to make sense to me to do it this 
> > > way.
> > If they are used for casting, they need to preserve value, that is 
> > conversion float->int32 should transform 1.0->0x00000001. The method 
> > `toAPSInt` uses bitcast, so it converts 1.0->0x3f800000. 
> > `APFloat::convertToInteger` should be used to make value-preverving 
> > conversion but it requires knowledge of rounding mode.
> That's good to know, thanks.  I've already used `TowardZero` in 
> `Floating::toSemantics()`, but that was more a guess.
> 
> Is the rounding mode I'm supposed to use simply 
> `LangOptions::getDefaultRoundingMode()`?
Rounding mode is stored in AST node, a call to `Expr::getFPFeaturesInEffect` 
may be used to extract various FP features in the form of `FPOptions`. 
`LangOptions::getDefaultRoundingMode()` returns the default rounding mode, 
which may be changed using `#pragma STDC FENV_ROUND`.


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

https://reviews.llvm.org/D134859

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

Reply via email to