https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65909
--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> --- Ugh, I forgot that we sometimes use dg-require-namedlocale with an empty string. I only checked that the change worked for some tests using non-empty names. I don't know why the old code worked when doing: set result [${tool}_load "./$exe" "$args" ""] But the new code expands $args to {} when doing: puts $f " const char *namedloc = transform_locale(\"$args\");" Some tcl weirdness, I guess. This works, but is pretty ugly: --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -1048,7 +1048,11 @@ proc check_v3_target_namedlocale { args } { puts $f "}" puts $f "int main ()" puts $f "{" - puts $f " const char *namedloc = transform_locale(\"$args\");" + if { [lindex $args 0] == "" } { + puts $f " const char *namedloc = new char\[1\]();" + } else { + puts $f " const char *namedloc = transform_locale(\"$args\");" + } puts $f " try" puts $f " {" puts $f " locale((const char*)namedloc);"