On Wed, Nov 29, 2017 at 06:12:02AM +0000, Taylor R Campbell wrote: > (My guess is that there's something screwy with i387 long doubles, but > I don't have a good guess about where that screwiness might be > happening without single-stepping through it.)
My blame is on qemu. I added the missing printf of diff to your test program. I tested on two real i386 machines, one running netbsd-7 (gcc 4.8.5) and get: str -12345.678900 exp -0x1.81cd6e631f8a1p+13 -1.23456789000000008e+04 act -0x1.81cd6e631f8a1p+13 -1.23456789000000008e+04 diff 0x0p+0 0.00000000000000000e+00 and on -current (gcc 5.5.0) I get: str -12345.678900 exp -0x1.81cd6e631f8a1p+13 -1.23456789000000008e+04 act -0x1.81cd6e631f8a1p+13 -1.23456789000000008e+04 diff 0x0p+0 0.00000000000000000e+00 The CPUs identify as: for the netbsd-7-1 machine: cpu0: highest basic info 0000000a cpu0: highest extended info 80000008 cpu0: "Intel(R) Atom(TM) CPU D525 @ 1.80GHz" cpu0: Intel 45nm Atom Family (686-class), 1800.03 MHz cpu0: family 0x6 model 0x1c stepping 0xa (id 0x106ca) cpu0: features 0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE> cpu0: features 0xbfebfbff<MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2> cpu0: features 0xbfebfbff<SS,HTT,TM,SBF> cpu0: features1 0x40e31d<SSE3,DTES64,MONITOR,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM> cpu0: features1 0x40e31d<MOVBE> cpu0: features2 0x20100000<XD,EM64T> cpu0: features3 0x1<LAHF> cpu0: I-cache 32KB 64B/line 8-way, D-cache 24KB 64B/line 6-way cpu0: L2 cache 512KB 64B/line 8-way cpu0: ITLB 32 4KB entries fully associative cpu0: DTLB 64 4KB entries 4-way, 4K/4M: 8 entries cpu0: Initial APIC ID 2 cpu0: Cluster/Package ID 0 cpu0: Core ID 1 cpu0: SMT ID 0 cpu0: DSPM-eax 0x1<DTS> cpu0: DSPM-ecx 0x1<HWF> cpu0: SEF highest subleaf 00000000 cpu0: microcode version 0x107, platform ID 3 and for the -current machine: cpu0: highest basic info 00000002 cpu0: highest extended info 80000004 cpu0: "Intel(R) Pentium(R) 4 CPU 2.60GHz" cpu0: Intel Pentium 4 (686-class), 2593.65 MHz cpu0: family 0xf model 0x2 stepping 0x9 (id 0xf29) cpu0: features 0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE> cpu0: features 0xbfebfbff<MCA,CMOV,PAT,PSE36,CLFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2> cpu0: features 0xbfebfbff<SS,HTT,TM,SBF> cpu0: features1 0x4400<CID,xTPR> cpu0: I-cache 12K uOp cache 8-way, D-cache 8KB 64B/line 4-way cpu0: L2 cache 512KB 64B/line 8-way cpu0: ITLB 4K/4M: 64 entries cpu0: DTLB 4K/4M: 64 entries cpu0: Initial APIC ID 1 cpu0: Cluster/Package ID 0 cpu0: SMT ID 1 cpu0: microcode version 0x11, platform ID 2 I also ran the gcc 4.5 produced binary on a xen DOMU machine and get the same results as native. Martin