diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb0b0929be7d..58436c33b0e0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-04-20 Eric Christopher + + * cp/parser.c (cp_parser_declaration): Move translate + up before tokens are lexed. + 2004-04-20 Uros Bizjak * optabs.h (enum optab_index): Add new OTI_asin and OTI_acos. @@ -31,7 +36,7 @@ * doc/invoke.texi (Optimize options): Move -frename-registers to "Not triggered by any -O level" section. Adjust commentary accordingly. - + 2004-04-20 Anil Paranjpe    * toplev.c (compile_file): Move targetm.asm_out.file_end call to end. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index a7f49e0fa12c..fde2f5a0958f 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -6349,6 +6349,8 @@ cp_parser_declaration (cp_parser* parser) if (token1.type != CPP_EOF) token2 = *cp_lexer_peek_nth_token (parser->lexer, 2); + c_lex_string_translate = true; + /* If the next token is `extern' and the following token is a string literal, then we have a linkage specification. */ if (token1.keyword == RID_EXTERN @@ -6398,8 +6400,6 @@ cp_parser_declaration (cp_parser* parser) else /* Try to parse a block-declaration, or a function-definition. */ cp_parser_block_declaration (parser, /*statement_p=*/false); - - c_lex_string_translate = true; } /* Parse a block-declaration. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c88423e1cbb9..f0f5ef4b1c2d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-04-20 Eric Christopher + + * gcc.dg/charset/extern.c: New test. + * g++.dg/charset/extern3.cc: Ditto. + 2004-04-20 Uros Bizjak * gcc.dg/builtins-39.c: New test. @@ -152,7 +157,7 @@ 2004-04-17 Laurent GUERBY * ada/acats/run_all.sh: use -O2 by default. - + 2004-04-17 Richard Sandiford * gcc.dg/vr-mult-[12].c: New tests. diff --git a/gcc/testsuite/g++.dg/charset/extern3.cc b/gcc/testsuite/g++.dg/charset/extern3.cc new file mode 100644 index 000000000000..5e46ca6facfe --- /dev/null +++ b/gcc/testsuite/g++.dg/charset/extern3.cc @@ -0,0 +1,11 @@ +/* { dg-do compile } + { dg-require-iconv "IBM-1047" } + { dg-final { scan-assembler-not "abcdefghijklmnopqrstuvwxyz" } } */ + +extern char *bar; + +extern void foo (void) +{ + char str[]="abcdefghijklmnopqrstuvwxyz"; + bar = str; +} diff --git a/gcc/testsuite/gcc.dg/charset/extern.c b/gcc/testsuite/gcc.dg/charset/extern.c new file mode 100644 index 000000000000..5e46ca6facfe --- /dev/null +++ b/gcc/testsuite/gcc.dg/charset/extern.c @@ -0,0 +1,11 @@ +/* { dg-do compile } + { dg-require-iconv "IBM-1047" } + { dg-final { scan-assembler-not "abcdefghijklmnopqrstuvwxyz" } } */ + +extern char *bar; + +extern void foo (void) +{ + char str[]="abcdefghijklmnopqrstuvwxyz"; + bar = str; +}