Avoid using std::raise() for divide by zero

This commit is contained in:
Alexander Richardson 2022-12-14 20:06:16 +00:00 committed by Rasmus Munk Larsen
parent 62de593c40
commit 37de432907
2 changed files with 5 additions and 5 deletions

View File

@ -177,10 +177,6 @@ using std::ptrdiff_t;
#include "src/Core/arch/Default/TypeCasting.h"
#include "src/Core/arch/Default/GenericPacketMathFunctionsFwd.h"
#ifndef EIGEN_GPU_COMPILE_PHASE
#include <csignal>
#endif
#if defined EIGEN_VECTORIZE_AVX512
#if defined EIGEN_VECTORIZE_AVX512FP16
#include "src/Core/arch/AVX512/PacketMathFP16.h"

View File

@ -388,7 +388,11 @@ template <typename Packet>
struct maybe_raise_div_by_zero<Packet, true> {
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Packet x) {
if (EIGEN_PREDICT_FALSE(predux_any(pcmp_eq(x, pzero(x))))) {
std::raise(SIGFPE);
// Use volatile variables to force a division by zero, which will
// result in the default platform behaviour (usually SIGFPE).
volatile typename unpacket_traits<Packet>::type zero = 0;
volatile typename unpacket_traits<Packet>::type val = 1;
val = val / zero;
}
}
};