http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51854
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org, | |jason at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-01-16 18:29:41 UTC --- I wonder whether: --- gcc/cp/mangle.c.jj 2012-01-13 21:47:31.000000000 +0100 +++ gcc/cp/mangle.c 2012-01-16 19:26:48.474088778 +0100 @@ -2927,6 +2927,25 @@ write_template_arg_literal (const tree v write_real_cst (value); break; + case COMPLEX_CST: + if (TREE_CODE (TREE_REALPART (value)) == INTEGER_CST + && TREE_CODE (TREE_IMAGPART (value)) == INTEGER_CST) + { + write_integer_cst (TREE_REALPART (value)); + write_char ('_'); + write_integer_cst (TREE_IMAGPART (value)); + } + else if (TREE_CODE (TREE_REALPART (value)) == REAL_CST + && TREE_CODE (TREE_IMAGPART (value)) == REAL_CST) + { + write_real_cst (TREE_REALPART (value)); + write_char ('_'); + write_real_cst (TREE_IMAGPART (value)); + } + else + gcc_unreachable (); + break; + case STRING_CST: sorry ("string literal in function template signature"); break; isn't the right fix for this (of course, missing testcases etc.).