The DIV instructions of MIPS won't be trapped themself if the divisor
is zero. The compiler will emit a conditional trap instruct for it.
So the signal will be SIGTRAP instead of SIGFPE.
gcc/testsuite
* c-c++-common/ubsan/overflow-div-3.c: Use SIGTRAP for MIPS.
---
gcc/testsuite/c-c++-common/ubsan/overflow-div-3.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/gcc/testsuite/c-c++-common/ubsan/overflow-div-3.c
b/gcc/testsuite/c-c++-common/ubsan/overflow-div-3.c
index 479dffb0304..eef58aca832 100644
--- a/gcc/testsuite/c-c++-common/ubsan/overflow-div-3.c
+++ b/gcc/testsuite/c-c++-common/ubsan/overflow-div-3.c
@@ -7,6 +7,11 @@
#include <stdlib.h>
int cnt;
+#ifdef __mips
+ int sig = SIGTRAP;
+#else
+ int sig = SIGFPE;
+#endif
__attribute__((noipa)) int
foo (int x, int y)
@@ -30,7 +35,7 @@ main (void)
sigemptyset (&s.sa_mask);
s.sa_handler = handler;
s.sa_flags = 0;
- sigaction (SIGFPE, &s, NULL);
+ sigaction (sig, &s, NULL);
volatile int a = foo (42, 0);
cnt++;
volatile int b = foo (INT_MIN, -1);
--
2.39.3 (Apple Git-146)