mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 09:34:42 +01:00
[demangler] PPC and S390: Fix parsing of e-prefixed long double literals
Summary: This patch is to fix the parsing of long double literals encoded with the e prefix on PowerPC and S390. For both PowerPC and S390, type code e is used for 64-bit long double literals and g is used for 128-bit long double literals. libcxxabi test case test_demangle.pass.cpp fails without the fix. Authored by: xingxue-ibm Reviewers: hubert.reinterpretcast, jasonliu, erik.pilkington, uweigand, mclow.li sts, libc++abi Reviewed by: hubert.reinterpretcast, erik.pilkington Differential Revision: https://reviews.llvm.org/D74163
This commit is contained in:
@@ -4225,7 +4225,13 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExprPrimary() {
|
||||
return getDerived().template parseFloatingLiteral<double>();
|
||||
case 'e':
|
||||
++First;
|
||||
#if defined(__powerpc__) || defined(__s390__)
|
||||
// Handle cases where long doubles encoded with e have the same size
|
||||
// and representation as doubles.
|
||||
return getDerived().template parseFloatingLiteral<double>();
|
||||
#else
|
||||
return getDerived().template parseFloatingLiteral<long double>();
|
||||
#endif
|
||||
case '_':
|
||||
if (consumeIf("_Z")) {
|
||||
Node *R = getDerived().parseEncoding();
|
||||
|
||||
@@ -4225,7 +4225,13 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExprPrimary() {
|
||||
return getDerived().template parseFloatingLiteral<double>();
|
||||
case 'e':
|
||||
++First;
|
||||
#if defined(__powerpc__) || defined(__s390__)
|
||||
// Handle cases where long doubles encoded with e have the same size
|
||||
// and representation as doubles.
|
||||
return getDerived().template parseFloatingLiteral<double>();
|
||||
#else
|
||||
return getDerived().template parseFloatingLiteral<long double>();
|
||||
#endif
|
||||
case '_':
|
||||
if (consumeIf("_Z")) {
|
||||
Node *R = getDerived().parseEncoding();
|
||||
|
||||
Reference in New Issue
Block a user