aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/mangle.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/mangle.c')
-rw-r--r--gcc/cp/mangle.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index 360e1fc759d..623fc3d3504 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -1506,8 +1506,8 @@ write_CV_qualifiers_for_type (type)
::= m # unsigned long
::= x # long long, __int64
::= y # unsigned long long, __int64
- ::= n # __int128 [not supported]
- ::= o # unsigned __int128 [not supported]
+ ::= n # __int128
+ ::= o # unsigned __int128
::= f # float
::= d # double
::= e # long double, __float80
@@ -1552,15 +1552,23 @@ write_builtin_type (type)
write_char (integer_type_codes[itk]);
break;
}
-
+
if (itk == itk_none)
{
tree t = type_for_mode (TYPE_MODE (type), TREE_UNSIGNED (type));
if (type == t)
- /* Couldn't find this type. */
- abort ();
- type = t;
- goto iagain;
+ {
+ if (TYPE_PRECISION (type) == 128)
+ write_char (TREE_UNSIGNED (type) ? 'o' : 'n');
+ else
+ /* Couldn't find this type. */
+ abort ();
+ }
+ else
+ {
+ type = t;
+ goto iagain;
+ }
}
}
break;