Viewing file: cmpsf-1.c (3.79 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Testcase derived from gcc.c-torture/execute cmpsf-1.c which showed jump threading profile insanities. */ /* { dg-options "-Ofast -fdump-tree-dom2-all" } */
#include <limits.h>
void abort(); extern void exit (int);
#define F 140 #define T 13
int feq (float x, float y) { if (x == y) return T; else return F; }
int fne (float x, float y) { if (x != y) return T; else return F; }
int flt (float x, float y) { if (x < y) return T; else return F; }
int fge (float x, float y) { if (x >= y) return T; else return F; }
int fgt (float x, float y) { if (x > y) return T; else return F; }
int fle (float x, float y) { if (x <= y) return T; else return F; }
float args[] = { 0.0F, 1.0F, -1.0F, __FLT_MAX__, __FLT_MIN__, 0.0000000000001F, 123456789.0F, -987654321.0F };
int correct_results[] = { T, F, F, T, F, T, F, T, T, F, F, T, F, T, F, T, T, F, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, F, T, T, F, F, T, F, T, T, F, T, F, F, T, F, T, F, T, F, T, T, F, F, T, T, F, F, T, F, T, F, T, T, F, F, T, F, T, T, F, F, T, T, F, F, T, F, T, F, T, T, F, F, T, T, F, F, T, F, T, T, F, F, T, T, F, F, T, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, T, F, F, T, F, T, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, T, F, F, T, F, T, F, T, T, F, F, T, T, F, F, T, T, F, F, T, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, F, T, T, F, F, T, F, T, T, F, F, T, T, F, F, T, F, T, F, T, T, F, F, T, T, F, F, T, F, T, F, T, T, F, T, F, F, T, F, T, F, T, T, F, F, T, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, T, F, F, T, F, T, F, T, T, F, F, T, F, T, T, F, T, F, F, T, F, T, F, T, F, T, T, F, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, F, T, T, F, F, T, T, F, F, T, F, T, };
void test (void) { int i, j, *res = correct_results;
for (i = 0; i < 8; i++) { float arg0 = args[i]; for (j = 0; j < 8; j++) { float arg1 = args[j];
if (feq (arg0, arg1) != *res++) abort (); if (fne (arg0, arg1) != *res++) abort (); if (flt (arg0, arg1) != *res++) abort (); if (fge (arg0, arg1) != *res++) abort (); if (fgt (arg0, arg1) != *res++) abort (); if (fle (arg0, arg1) != *res++) abort (); } } }
int main (void) { int i; for (i=0; i<100; i++) test (); exit (0); }
/* { dg-final-use-not-autofdo { scan-tree-dump-not "Invalid sum" "dom2"} } */
|