diff options
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/c-c++-common/Wconversion-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/dfp/convert-int-saturate.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ubsan/pr63956.C | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wconversion-real-integer.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20031003-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Wconversion-complex-c99.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Wconversion-real-integer.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/c90-const-expr-11.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/overflow-warn-8.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr100927.c | 31 |
10 files changed, 46 insertions, 6 deletions
diff --git a/gcc/testsuite/c-c++-common/Wconversion-1.c b/gcc/testsuite/c-c++-common/Wconversion-1.c index 81f9498d07c..9d874d19548 100644 --- a/gcc/testsuite/c-c++-common/Wconversion-1.c +++ b/gcc/testsuite/c-c++-common/Wconversion-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-Wconversion" } */ +/* { dg-options "-Wconversion -fno-trapping-math" } */ typedef char T; diff --git a/gcc/testsuite/c-c++-common/dfp/convert-int-saturate.c b/gcc/testsuite/c-c++-common/dfp/convert-int-saturate.c index 2d01f99468b..6b362c2aa95 100644 --- a/gcc/testsuite/c-c++-common/dfp/convert-int-saturate.c +++ b/gcc/testsuite/c-c++-common/dfp/convert-int-saturate.c @@ -2,6 +2,7 @@ C99 6.3.1.4(1a) New. Test integer saturation. */ +/* { dg-options "-fno-trapping-math" } */ #ifndef __STDC_WANT_DEC_FP__ #define __STDC_WANT_DEC_FP__ 1 #endif diff --git a/gcc/testsuite/g++.dg/ubsan/pr63956.C b/gcc/testsuite/g++.dg/ubsan/pr63956.C index 6fd0b4f893e..9c15dbd8d54 100644 --- a/gcc/testsuite/g++.dg/ubsan/pr63956.C +++ b/gcc/testsuite/g++.dg/ubsan/pr63956.C @@ -1,6 +1,6 @@ // PR sanitizer/63956 // { dg-do compile } -// { dg-options "-std=c++14 -fsanitize=undefined,float-divide-by-zero,float-cast-overflow" } +// { dg-options "-std=c++14 -fsanitize=undefined,float-divide-by-zero" } #define SA(X) static_assert((X),#X) #define INT_MIN (-__INT_MAX__ - 1) @@ -162,8 +162,13 @@ fn11 (double d) return i * 2; } +void +__attribute__((optimize("no-trapping-math"))) +foo () +{ constexpr int r1 = fn11 (3.4); constexpr int r2 = fn11 (__builtin_inf ()); // { dg-message "in .constexpr. expansion of " } +} constexpr int fn12 (int i) diff --git a/gcc/testsuite/g++.dg/warn/Wconversion-real-integer.C b/gcc/testsuite/g++.dg/warn/Wconversion-real-integer.C index 3b6d1f3c437..d6332140b14 100644 --- a/gcc/testsuite/g++.dg/warn/Wconversion-real-integer.C +++ b/gcc/testsuite/g++.dg/warn/Wconversion-real-integer.C @@ -3,7 +3,7 @@ gcc/testsuite/gcc.dg/Wconversion-real-integer.c */ /* { dg-do compile } -/* { dg-options "-Wconversion -ftrack-macro-expansion=0" } */ +/* { dg-options "-Wconversion -ftrack-macro-expansion=0 -fno-trapping-math" } */ /* { dg-require-effective-target int32plus } */ #include <limits.h> diff --git a/gcc/testsuite/gcc.c-torture/execute/20031003-1.c b/gcc/testsuite/gcc.c-torture/execute/20031003-1.c index 5d39d799e50..5e6f5089fc6 100644 --- a/gcc/testsuite/gcc.c-torture/execute/20031003-1.c +++ b/gcc/testsuite/gcc.c-torture/execute/20031003-1.c @@ -1,5 +1,7 @@ /* PR optimization/9325 */ +/* { dg-additional-options "-fno-trapping-math" } */ + #include <limits.h> extern void abort (void); diff --git a/gcc/testsuite/gcc.dg/Wconversion-complex-c99.c b/gcc/testsuite/gcc.dg/Wconversion-complex-c99.c index e8bc9db237d..69281c7d71e 100644 --- a/gcc/testsuite/gcc.dg/Wconversion-complex-c99.c +++ b/gcc/testsuite/gcc.dg/Wconversion-complex-c99.c @@ -6,7 +6,7 @@ /* { dg-do compile } */ /* { dg-skip-if "doubles are floats,ints are 16bits" { "avr-*-*" } } */ -/* { dg-options " -std=c99 -pedantic -Wconversion " } */ +/* { dg-options " -std=c99 -pedantic -Wconversion -fno-trapping-math" } */ /* { dg-require-effective-target int32plus } */ /* { dg-require-effective-target double64plus } */ diff --git a/gcc/testsuite/gcc.dg/Wconversion-real-integer.c b/gcc/testsuite/gcc.dg/Wconversion-real-integer.c index 92e6987d9ec..ca6007f4fe8 100644 --- a/gcc/testsuite/gcc.dg/Wconversion-real-integer.c +++ b/gcc/testsuite/gcc.dg/Wconversion-real-integer.c @@ -3,7 +3,7 @@ /* { dg-do compile } */ /* { dg-skip-if "doubles are floats,ints are 16bits" { "avr-*-*" } } */ -/* { dg-options "-std=c99 -Wconversion" } */ +/* { dg-options "-std=c99 -Wconversion -fno-trapping-math" } */ /* { dg-require-effective-target int32plus } */ /* { dg-require-effective-target double64plus } */ #include <limits.h> diff --git a/gcc/testsuite/gcc.dg/c90-const-expr-11.c b/gcc/testsuite/gcc.dg/c90-const-expr-11.c index a2720c47bf4..65aab10a129 100644 --- a/gcc/testsuite/gcc.dg/c90-const-expr-11.c +++ b/gcc/testsuite/gcc.dg/c90-const-expr-11.c @@ -2,7 +2,7 @@ constant expressions. */ /* Origin: Joseph Myers <joseph@codesourcery.com> */ /* { dg-do compile } */ -/* { dg-options "-std=iso9899:1990 -pedantic-errors -O2" } */ +/* { dg-options "-std=iso9899:1990 -pedantic-errors -O2 -fno-trapping-math" } */ #include <float.h> #include <limits.h> diff --git a/gcc/testsuite/gcc.dg/overflow-warn-8.c b/gcc/testsuite/gcc.dg/overflow-warn-8.c index e76bcac5e07..75bfa74f3dc 100644 --- a/gcc/testsuite/gcc.dg/overflow-warn-8.c +++ b/gcc/testsuite/gcc.dg/overflow-warn-8.c @@ -1,5 +1,6 @@ #include <limits.h> +/* { dg-options " -fno-trapping-math" } */ void foo (int j) { int i1 = (int)(double)1.0 + INT_MAX; /* { dg-warning "integer overflow" } */ diff --git a/gcc/testsuite/gcc.dg/pr100927.c b/gcc/testsuite/gcc.dg/pr100927.c new file mode 100644 index 00000000000..ea0e627befa --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr100927.c @@ -0,0 +1,31 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftrapping-math -fdump-tree-optimized -fdump-rtl-final" } */ +/* { dg-final { scan-tree-dump-times {(?n)= \(int\)} 3 "optimized" } } */ +/* { dg-final { scan-rtl-dump-times {(?n)\(fix:SI} 3 "final" } } */ + +int +foo_ofr () +{ + union {float a; + int b;}c; + c.b = 0x4f000000; + return (int)c.a; +} + +int +foo_inf () +{ + union {float a; + int b;}c; + c.b = 0xff800000; + return (int)c.a; +} + +int +foo_nan () +{ + union {float a; + int b;}c; + c.b = 0xff800001; + return (int)c.a; +} |