https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87876
Bug ID: 87876 Summary: Mac failing: conversion from longdouble to long int is ambiguous Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: d Assignee: ibuclaw at gdcproject dot org Reporter: mcccs at gmx dot com Target Milestone: --- macOS 10.14.1 compiled with GCC 8.2 /Users/username/Downloads/gcc-trunk/gcc/d/dmd/constfold.c:1162:50: error: conversion from 'real_t' {aka 'longdouble'} to 'sinteger_t' {aka 'long int'} is ambiguous result = (d_int8)(sinteger_t)r; ^ In file included from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/root/ctfloat.h:11, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/globals.h:14, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/errors.h:13, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/constfold.c:22: /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:54:3: note: candidate: 'longdouble::operator int32_t()' operator int32_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:57:3: note: candidate: 'longdouble::operator int64_t()' operator int64_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:60:3: note: candidate: 'longdouble::operator uint32_t()' operator uint32_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:63:3: note: candidate: 'longdouble::operator uint64_t()' operator uint64_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:66:3: note: candidate: 'longdouble::operator bool()' operator bool (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/dmd/constfold.c:1166:50: error: conversion from 'real_t' {aka 'longdouble'} to 'dinteger_t' {aka 'long unsigned int'} is ambiguous result = (d_uns8)(dinteger_t)r; ^ In file included from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/root/ctfloat.h:11, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/globals.h:14, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/errors.h:13, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/constfold.c:22: /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:54:3: note: candidate: 'longdouble::operator int32_t()' operator int32_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:57:3: note: candidate: 'longdouble::operator int64_t()' operator int64_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:60:3: note: candidate: 'longdouble::operator uint32_t()' operator uint32_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:63:3: note: candidate: 'longdouble::operator uint64_t()' operator uint64_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:66:3: note: candidate: 'longdouble::operator bool()' operator bool (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/dmd/constfold.c:1169:51: error: conversion from 'real_t' {aka 'longdouble'} to 'sinteger_t' {aka 'long int'} is ambiguous result = (d_int16)(sinteger_t)r; ^ In file included from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/root/ctfloat.h:11, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/globals.h:14, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/errors.h:13, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/constfold.c:22: /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:54:3: note: candidate: 'longdouble::operator int32_t()' operator int32_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:57:3: note: candidate: 'longdouble::operator int64_t()' operator int64_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:60:3: note: candidate: 'longdouble::operator uint32_t()' operator uint32_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:63:3: note: candidate: 'longdouble::operator uint64_t()' operator uint64_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:66:3: note: candidate: 'longdouble::operator bool()' operator bool (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/dmd/constfold.c:1173:51: error: conversion from 'real_t' {aka 'longdouble'} to 'dinteger_t' {aka 'long unsigned int'} is ambiguous result = (d_uns16)(dinteger_t)r; ^ In file included from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/root/ctfloat.h:11, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/globals.h:14, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/errors.h:13, from /Users/username/Downloads/gcc-trunk/gcc/d/dmd/constfold.c:22: /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:54:3: note: candidate: 'longdouble::operator int32_t()' operator int32_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:57:3: note: candidate: 'longdouble::operator int64_t()' operator int64_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:60:3: note: candidate: 'longdouble::operator uint32_t()' operator uint32_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:63:3: note: candidate: 'longdouble::operator uint64_t()' operator uint64_t (void) ^~~~~~~~ /Users/username/Downloads/gcc-trunk/gcc/d/longdouble.h:66:3: note: candidate: 'longdouble::operator bool()' operator bool (void) ^~~~~~~~ make[2]: *** [d/constfold.o] Error 1 make[1]: *** [all-gcc] Error 2 make: *** [all] Error 2