sepavloff added a comment.

As mentioned in another review, using `fcmp` to represent `isnormal` in IR as 
well as any other classification function would result in incorrect code in 
strict mode. The source:

  inline __attribute__((always_inline)) _Bool func(float x) {
    return __builtin_isnormal(x);
  }
  
  _Bool check(float x) {
  #pragma STDC FENV_ACCESS ON
    return func(x);
  }

in this case would produce code that uses FP comparisons to implement 
`isnormal` (in the form of constrained intrinsics), this is incorrect. Using 
correct representation is impossible in this case, as the information about 
original check is already lost.


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

https://reviews.llvm.org/D140294

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

Reply via email to