qiucf added inline comments.
================ Comment at: clang/lib/Parse/ParseExprCXX.cpp:2245 + case tok::kw___ibm128: + DS.SetTypeSpecType(DeclSpec::TST_ibm128, Loc, PrevSpec, DiagID, Policy); + break; ---------------- hubert.reinterpretcast wrote: > qiucf wrote: > > hubert.reinterpretcast wrote: > > > Not sure what the best method is to implement this, but `long double` and > > > `__ibm128` are the same type for GCC when `-mabi=ibmlongdouble` is in > > > effect. > > Seems clang is also different from GCC under `-mabi=ieeelongdouble`? I saw > > `__float128` and `long double` are the same for GCC but not for clang. > Have you checked whether the new libstdc++ for which this support is being > added needs the GCC behaviour to work properly? > > The GCC behaviour allows the following to be compiled without introducing > novel overload resolution tiebreakers: > ``` > void f(__float128); > void f(__ibm128); > void f(int); > > long double ld; > > int main() { f(ld); } > ``` As I saw both GCC and clang have error for ambiguous `operator<<` for: ``` std::cout << "long double:\n"; std::cout << std::numeric_limits<long double>::max() << std::endl; std::cout << std::numeric_limits<long double>::min() << std::endl; std::cout << "__float128:\n"; std::cout << std::numeric_limits<__float128>::max() << std::endl; std::cout << std::numeric_limits<__float128>::min() << std::endl; std::cout << "__ibm128:\n"; std::cout << std::numeric_limits<__ibm128>::max() << std::endl; std::cout << std::numeric_limits<__ibm128>::min() << std::endl; ``` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D93377/new/ https://reviews.llvm.org/D93377 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits