Skip to content

Commit

Permalink
[libc][NFC] Make few fenv functions work with fexcept_t from other li…
Browse files Browse the repository at this point in the history
…bcs.
  • Loading branch information
Siva Chandra Reddy committed Mar 4, 2021
1 parent c16fef1 commit 9550f8b
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 8 deletions.
7 changes: 2 additions & 5 deletions libc/src/fenv/fegetexceptflag.cpp
Expand Up @@ -15,11 +15,8 @@
namespace __llvm_libc {

LLVM_LIBC_FUNCTION(int, fegetexceptflag, (fexcept_t * flagp, int excepts)) {
// Since the return type of fetestexcept is int, we ensure that fexcept_t
// matches in size.
static_assert(sizeof(int) == sizeof(fexcept_t),
"sizeof(fexcept_t) != sizeof(int)");
*reinterpret_cast<int *>(flagp) = fputil::testExcept(FE_ALL_EXCEPT) & excepts;
// TODO: Add a compile time check to see if the excepts actually fit in flagp.
*flagp = static_cast<fexcept_t>(fputil::testExcept(FE_ALL_EXCEPT) & excepts);
return 0;
}

Expand Down
6 changes: 3 additions & 3 deletions libc/src/fenv/fesetexceptflag.cpp
Expand Up @@ -17,9 +17,9 @@ namespace __llvm_libc {
LLVM_LIBC_FUNCTION(int, fesetexceptflag,
(const fexcept_t *flagp, int excepts)) {
// Since the return type of fetestexcept is int, we ensure that fexcept_t
// matches in size.
static_assert(sizeof(int) == sizeof(fexcept_t),
"sizeof(fexcept_t) != sizeof(int)");
// can fit in int type.
static_assert(sizeof(int) >= sizeof(fexcept_t),
"fexcept_t value cannot fit in an int value.");
int excepts_to_set = *reinterpret_cast<const int *>(flagp) & excepts;
return fputil::setExcept(excepts_to_set);
}
Expand Down

0 comments on commit 9550f8b

Please sign in to comment.