| /* Test floating-point contraction occurs only within source language | |
| expressions. */ | |
| /* { dg-do run } */ | |
| /* { dg-options "-std=c99 -pedantic-errors" } */ | |
| /* { dg-skip-if "ptx only loosely follows IEEE" { "nvptx-*-*" } } */ | |
| extern void abort (void); | |
| extern void exit (int); | |
| volatile float a = 1 + 0x1p-23f, b = 1 - 0x1p-23f, c = -1; | |
| int | |
| main (void) | |
| { | |
| float av = a, bv = b, cv = c; | |
| float p = av * bv; | |
| float r = p + cv; | |
| if (r == 0) | |
| exit (0); | |
| else | |
| abort (); | |
| } |