cpplib.h (TTYPE_TABLE): Move CPP_MIN and CPP_MAX into block of operators allowed in #if...
* cpplib.h (TTYPE_TABLE): Move CPP_MIN and CPP_MAX into block of operators allowed in #if and having an _EQ variant. Add CPP_MIN_EQ, CPP_MAX_EQ, and CPP_DEFINED. (cpp_token flags): Add NAMED_OP. (enum node_type): Add T_OPERATOR. (struct cpp_hashnode): Add code slot to value union. * cpphash.h (spec_nodes): Remove n_defined. * cpplex.c (lex_line): Convert T_OPERATOR nodes to their proper types. (spell_token, can_paste, maybe_paste_with_next): Handle named operators. (is_macro_disabled): Tweak error messages. * cpplib.c (get_define_node): Disallow all named operators as macro names. Tweak error messages. (_cpp_init_stacks): Don't set up spec_nodes->n_defined. * cppinit.c (builtin_array): Add entries for the named operators. * cppexp.c (lex): Check for CPP_DEFINED token. (priority table): Add entries for CPP_MIN and CPP_MAX. (_cpp_parse_expr): Handle CPP_MIN and CPP_MAX. testsuite: * gcc.dg/cpp/directiv.c, gcc.dg/cpp/macsyntx.c, gcc.dg/cpp/undef1.c: Tweak error regexps. From-SVN: r35137
This commit is contained in:
parent
b86db3ebc2
commit
92936ecf1a
11 changed files with 245 additions and 156 deletions
|
@ -1,3 +1,28 @@
|
|||
2000-07-19 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
Implement C++ named operators.
|
||||
|
||||
* cpplib.h (TTYPE_TABLE): Move CPP_MIN and CPP_MAX into block
|
||||
of operators allowed in #if and having an _EQ variant. Add
|
||||
CPP_MIN_EQ, CPP_MAX_EQ, and CPP_DEFINED.
|
||||
(cpp_token flags): Add NAMED_OP.
|
||||
(enum node_type): Add T_OPERATOR.
|
||||
(struct cpp_hashnode): Add code slot to value union.
|
||||
* cpphash.h (spec_nodes): Remove n_defined.
|
||||
|
||||
* cpplex.c (lex_line): Convert T_OPERATOR nodes to their proper types.
|
||||
(spell_token, can_paste, maybe_paste_with_next): Handle named operators.
|
||||
(is_macro_disabled): Tweak error messages.
|
||||
|
||||
* cpplib.c (get_define_node): Disallow all named operators as
|
||||
macro names. Tweak error messages.
|
||||
(_cpp_init_stacks): Don't set up spec_nodes->n_defined.
|
||||
|
||||
* cppinit.c (builtin_array): Add entries for the named operators.
|
||||
* cppexp.c (lex): Check for CPP_DEFINED token.
|
||||
(priority table): Add entries for CPP_MIN and CPP_MAX.
|
||||
(_cpp_parse_expr): Handle CPP_MIN and CPP_MAX.
|
||||
|
||||
2000-07-19 Bernd Schmidt <bernds@cygnus.co.uk>
|
||||
|
||||
* gcse.c (INSN_CUID): If ENABLE_CHECKING, abort if the uid is
|
||||
|
@ -24,7 +49,7 @@ Wed Jul 19 01:22:15 CEST 2000 Marc Espie <espie@cvs.openbsd.org>
|
|||
2000-07-18 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* cpplib.h (TTYPE_TABLE): Rearrange to use only two per-entry
|
||||
macros, not five.
|
||||
macros, not five.
|
||||
|
||||
* cpphash.h (TOKEN_NAME): New macro.
|
||||
(_cpp_spell_operator): Deleted.
|
||||
|
@ -38,7 +63,7 @@ Wed Jul 19 01:22:15 CEST 2000 Marc Espie <espie@cvs.openbsd.org>
|
|||
Use TOKEN_NAME and/or TOKEN_SPELL, do not reference
|
||||
token_spellings directly.
|
||||
* cpplib.c: Use TOKEN_SPELL.
|
||||
|
||||
|
||||
* cpplex.c (_cpp_push_token): If the token being pushed back
|
||||
is the previous token in this context, just subtract one from
|
||||
context->posn.
|
||||
|
@ -62,20 +87,20 @@ Wed Jul 19 01:22:15 CEST 2000 Marc Espie <espie@cvs.openbsd.org>
|
|||
|
||||
2000-07-17 Gabriel Dos Reis <gdr@codesourcery.com>
|
||||
|
||||
* diagnostic.h (report_diagnostic): Change prototype.
|
||||
* diagnostic.h (report_diagnostic): Change prototype.
|
||||
|
||||
* diagnostic.c (output_do_verbatim, diagnostic_for_asm,
|
||||
diagnostic_for_decl): Change prototype.
|
||||
(error_with_decl, warning_with_decl, pedwarn_with_decl, warning,
|
||||
error, warning, error_with_file_and_line,
|
||||
warning_with_file_and_line, pedwarn_with_file_and_line, fatal):
|
||||
Adjust call to report_diagnostic, diagnostic_for_decl.
|
||||
(error_for_asm, warning_for_asm): Adjust call to diagnostic_for_asm.
|
||||
(output_verbatim, verbatim): Adjust call to output_do_verbatim.
|
||||
|
||||
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic. End
|
||||
varaible argument list.
|
||||
|
||||
* diagnostic.c (output_do_verbatim, diagnostic_for_asm,
|
||||
diagnostic_for_decl): Change prototype.
|
||||
(error_with_decl, warning_with_decl, pedwarn_with_decl, warning,
|
||||
error, warning, error_with_file_and_line,
|
||||
warning_with_file_and_line, pedwarn_with_file_and_line, fatal):
|
||||
Adjust call to report_diagnostic, diagnostic_for_decl.
|
||||
(error_for_asm, warning_for_asm): Adjust call to diagnostic_for_asm.
|
||||
(output_verbatim, verbatim): Adjust call to output_do_verbatim.
|
||||
|
||||
* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic. End
|
||||
varaible argument list.
|
||||
|
||||
2000-07-17 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* cpphash.c: Don't include hashtab.h. Most macro-handling code
|
||||
|
@ -87,7 +112,7 @@ Wed Jul 19 01:22:15 CEST 2000 Marc Espie <espie@cvs.openbsd.org>
|
|||
Vlad's expandable hash table.
|
||||
(cpp_lookup): Use new functions.
|
||||
(_cpp_init_macros, _cpp_cleanup_macros): Adjust for new
|
||||
implementation.
|
||||
implementation.
|
||||
* cppmacro.c: New file.
|
||||
* cppinit.c (dump_macros_helper): New.
|
||||
(cpp_finish): Iterate over the identifier table directly.
|
||||
|
@ -112,7 +137,7 @@ Wed Jul 19 01:22:15 CEST 2000 Marc Espie <espie@cvs.openbsd.org>
|
|||
2000-07-17 Geoffrey Keating <geoffk@cygnus.com>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
||||
|
||||
* extend.texi (Extended Asm): Mention that a memory clobber
|
||||
does not count as a side-effect.
|
||||
|
||||
|
@ -156,7 +181,7 @@ Mon Jul 17 23:43:26 MET DST 2000 Jan Hubicka <jh@suse.cz>
|
|||
|
||||
2000-07-17 Chandrakala Chavva <cchavva@cygnus.com>
|
||||
|
||||
* loop.c (check_dbra_loop) : Return if more than one condition is
|
||||
* loop.c (check_dbra_loop) : Return if more than one condition is
|
||||
present to control the loop.
|
||||
|
||||
Mon Jul 17 08:26:35 2000 Clinton Popetz <cpopetz@cygnus.com>
|
||||
|
@ -284,7 +309,7 @@ Mon Jul 17 02:37:06 2000 Marc Espie <espie@openbsd.org>
|
|||
2000-07-15 Gabriel Dos Reis <gdr@codesourcery.com>
|
||||
|
||||
* diagnostic.c (doing_line_wrapping, line_wrapper_printf, notice,
|
||||
v_error_with_decl, v_warning_with_decl, v_pedwarn_with_decl): Remove.
|
||||
v_error_with_decl, v_warning_with_decl, v_pedwarn_with_decl): Remove.
|
||||
(v_message_with_decl): Rename to ...
|
||||
(format_with_decl): ... this. Tweak
|
||||
(diagnostic_for_decl): New function.
|
||||
|
@ -292,14 +317,14 @@ Mon Jul 17 02:37:06 2000 Marc Espie <espie@openbsd.org>
|
|||
(announce_function): Use verbatim.
|
||||
(default_print_error_function): Likewise.
|
||||
(error_with_decl, warning_with_decl, pedwarn_with_decl): Use new
|
||||
infratructure.
|
||||
infratructure.
|
||||
|
||||
2000-07-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* mips.c (function_arg_pass_by_reference): Don't do automatic
|
||||
aggregate initialization.
|
||||
(machine_dependent_reorg): Initialize variable `mode'.
|
||||
|
||||
|
||||
* mips.md (absdi2): Change variable `regno1' to unsigned int.
|
||||
(reload_indi): Rename loword/hiword to lo_word/hi_word to avoid
|
||||
conflicts with sys/param.h macro of the same name.
|
||||
|
@ -337,7 +362,7 @@ Fri Jul 14 18:13:53 2000 Mark P Mitchell <mark@codesourcery.com>
|
|||
|
||||
2000-07-14 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* dwarf2out.c (dwarf2out_frame_debug_expr): If we store the CFA
|
||||
* dwarf2out.c (dwarf2out_frame_debug_expr): If we store the CFA
|
||||
register in the stack and later in another register, use the new
|
||||
register.
|
||||
|
||||
|
@ -358,7 +383,7 @@ Fri Jul 14 10:25:53 2000 Clinton Popetz <cpopetz@cygnus.com>
|
|||
|
||||
* .cvsignore: Add generated YACC files.
|
||||
* objc/.cvsignore: New file.
|
||||
|
||||
|
||||
2000-07-14 Neil Booth <NeilB@earthling.net>
|
||||
|
||||
* cpplex.c (adjust_column): New funcion.
|
||||
|
@ -421,14 +446,14 @@ Fri Jul 14 10:25:53 2000 Clinton Popetz <cpopetz@cygnus.com>
|
|||
error_with_file_and_line, warning_with_file_and_line, sorry,
|
||||
error_for_asm, warning_for_asm, fatal): Reimplement.
|
||||
(finish_diagnostic): Clear diagnostic info as well.
|
||||
|
||||
|
||||
2000-07-13 Neil Booth <NeilB@earthling.net>
|
||||
|
||||
* c-common.h (flag_digraphs): New.
|
||||
* c-decl.c (c_decode_option): Set flag_digraphs as appropriate.
|
||||
* c-lex.c (yylex): Use flag_digraphs to decide whether to
|
||||
honour digraphs.
|
||||
|
||||
|
||||
2000-07-13 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* gcc.c (do_spec_1): Add new %B operator.
|
||||
|
@ -446,7 +471,7 @@ Fri Jul 14 10:25:53 2000 Clinton Popetz <cpopetz@cygnus.com>
|
|||
named specs.
|
||||
(C and assembly specs): Use the new named specs, as appropriate.
|
||||
|
||||
* objc/lang-specs.h: Use the new named specs.
|
||||
* objc/lang-specs.h: Use the new named specs.
|
||||
Remove unnecessary braces.
|
||||
|
||||
2000-07-12 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
|
26
gcc/cppexp.c
26
gcc/cppexp.c
|
@ -419,10 +419,10 @@ lex (pfile, skip_evaluation)
|
|||
else
|
||||
SYNTAX_ERROR2 ("invalid character '\\%03o' in #if", tok->val.aux);
|
||||
|
||||
case CPP_NAME:
|
||||
if (tok->val.node == pfile->spec_nodes->n_defined)
|
||||
return parse_defined (pfile);
|
||||
case CPP_DEFINED:
|
||||
return parse_defined (pfile);
|
||||
|
||||
case CPP_NAME:
|
||||
op.op = CPP_INT;
|
||||
op.unsignedp = 0;
|
||||
op.value = 0;
|
||||
|
@ -648,12 +648,13 @@ be handled with operator-specific code. */
|
|||
#define OR_PRIO (8 << PRIO_SHIFT)
|
||||
#define XOR_PRIO (9 << PRIO_SHIFT)
|
||||
#define AND_PRIO (10 << PRIO_SHIFT)
|
||||
#define EQUAL_PRIO (11 << PRIO_SHIFT)
|
||||
#define LESS_PRIO (12 << PRIO_SHIFT)
|
||||
#define SHIFT_PRIO (13 << PRIO_SHIFT)
|
||||
#define PLUS_PRIO (14 << PRIO_SHIFT)
|
||||
#define MUL_PRIO (15 << PRIO_SHIFT)
|
||||
#define UNARY_PRIO ((16 << PRIO_SHIFT) | RIGHT_ASSOC | NO_L_OPERAND)
|
||||
#define MINMAX_PRIO (11 << PRIO_SHIFT)
|
||||
#define EQUAL_PRIO (12 << PRIO_SHIFT)
|
||||
#define LESS_PRIO (13 << PRIO_SHIFT)
|
||||
#define SHIFT_PRIO (14 << PRIO_SHIFT)
|
||||
#define PLUS_PRIO (15 << PRIO_SHIFT)
|
||||
#define MUL_PRIO (16 << PRIO_SHIFT)
|
||||
#define UNARY_PRIO ((17 << PRIO_SHIFT) | RIGHT_ASSOC | NO_L_OPERAND)
|
||||
|
||||
/* Operator to priority map. Must be in the same order as the first
|
||||
N entries of enum cpp_ttype. */
|
||||
|
@ -674,6 +675,8 @@ op_to_prio[] =
|
|||
/* XOR */ XOR_PRIO,
|
||||
/* RSHIFT */ SHIFT_PRIO,
|
||||
/* LSHIFT */ SHIFT_PRIO,
|
||||
/* MIN */ MINMAX_PRIO, /* C++ specific */
|
||||
/* MAX */ MINMAX_PRIO, /* extensions */
|
||||
|
||||
/* COMPL */ UNARY_PRIO,
|
||||
/* AND_AND */ ANDAND_PRIO,
|
||||
|
@ -700,6 +703,9 @@ op_to_prio[] =
|
|||
#define BITWISE(OP) \
|
||||
top->value = v1 OP v2; \
|
||||
top->unsignedp = unsigned1 | unsigned2;
|
||||
#define MINMAX(OP) \
|
||||
top->value = (v1 OP v2) ? v1 : v2; \
|
||||
top->unsignedp = unsigned1 | unsigned2;
|
||||
#define UNARY(OP) \
|
||||
top->value = OP v2; \
|
||||
top->unsignedp = unsigned2; \
|
||||
|
@ -831,6 +837,8 @@ _cpp_parse_expr (pfile)
|
|||
case CPP_OR: BITWISE(|); break;
|
||||
case CPP_LSHIFT: SHIFT(left_shift, right_shift); break;
|
||||
case CPP_RSHIFT: SHIFT(right_shift, left_shift); break;
|
||||
case CPP_MIN: MINMAX(<); break;
|
||||
case CPP_MAX: MINMAX(>); break;
|
||||
|
||||
case CPP_PLUS:
|
||||
if (!(top->flags & HAVE_VALUE))
|
||||
|
|
|
@ -124,7 +124,6 @@ struct include_file
|
|||
struct spec_nodes
|
||||
{
|
||||
cpp_hashnode *n_L; /* L"str" */
|
||||
cpp_hashnode *n_defined; /* #if defined */
|
||||
cpp_hashnode *n__STRICT_ANSI__; /* STDC_0_IN_SYSTEM_HEADERS */
|
||||
cpp_hashnode *n__CHAR_UNSIGNED__; /* plain char is unsigned */
|
||||
cpp_hashnode *n__VA_ARGS__; /* C99 vararg macros */
|
||||
|
|
|
@ -491,26 +491,33 @@ cpp_cleanup (pfile)
|
|||
|
||||
/* This structure defines one built-in macro. A node of type TYPE will
|
||||
be entered in the macro hash table under the name NAME, with value
|
||||
VALUE (if any). Two values are not compile time constants, so we tag
|
||||
VALUE (if any). If TYPE is T_OPERATOR, the CODE field is used instead.
|
||||
|
||||
Two values are not compile time constants, so we tag
|
||||
them in the FLAGS field instead:
|
||||
VERS value is the global version_string, quoted
|
||||
ULP value is the global user_label_prefix
|
||||
|
||||
Also, macros with CPLUS set in the flags field are entered only for C++.
|
||||
*/
|
||||
|
||||
struct builtin
|
||||
{
|
||||
const U_CHAR *name;
|
||||
const char *value;
|
||||
unsigned short type;
|
||||
unsigned char code;
|
||||
unsigned char type;
|
||||
unsigned short flags;
|
||||
unsigned int len;
|
||||
};
|
||||
#define VERS 0x01
|
||||
#define ULP 0x02
|
||||
#define VERS 0x01
|
||||
#define ULP 0x02
|
||||
#define CPLUS 0x04
|
||||
|
||||
#define B(n, t) { U n, 0, t, 0, sizeof n - 1 }
|
||||
#define C(n, v) { U n, v, T_MACRO, 0, sizeof n - 1 }
|
||||
#define X(n, f) { U n, 0, T_MACRO, f, sizeof n - 1 }
|
||||
#define B(n, t) { U n, 0, 0, t, 0, sizeof n - 1 }
|
||||
#define C(n, v) { U n, v, 0, T_MACRO, 0, sizeof n - 1 }
|
||||
#define X(n, f) { U n, 0, 0, T_MACRO, f, sizeof n - 1 }
|
||||
#define O(n, c, f) { U n, 0, c, T_OPERATOR, f, sizeof n - 1 }
|
||||
static const struct builtin builtin_array[] =
|
||||
{
|
||||
B("__TIME__", T_TIME),
|
||||
|
@ -534,6 +541,23 @@ static const struct builtin builtin_array[] =
|
|||
#ifndef NO_BUILTIN_WCHAR_TYPE
|
||||
C("__WCHAR_TYPE__", WCHAR_TYPE),
|
||||
#endif
|
||||
|
||||
/* Named operators known to the preprocessor. These cannot be #defined
|
||||
and always have their stated meaning. They are treated like normal
|
||||
string tokens except for the type code and the meaning. Most of them
|
||||
are only for C++ (but see iso646.h). */
|
||||
O("defined", CPP_DEFINED, 0),
|
||||
O("and", CPP_AND_AND, CPLUS),
|
||||
O("and_eq", CPP_AND_EQ, CPLUS),
|
||||
O("bitand", CPP_AND, CPLUS),
|
||||
O("bitor", CPP_OR, CPLUS),
|
||||
O("compl", CPP_COMPL, CPLUS),
|
||||
O("not", CPP_NOT, CPLUS),
|
||||
O("not_eq", CPP_NOT_EQ, CPLUS),
|
||||
O("or", CPP_OR_OR, CPLUS),
|
||||
O("or_eq", CPP_OR_EQ, CPLUS),
|
||||
O("xor", CPP_XOR, CPLUS),
|
||||
O("xor_eq", CPP_XOR_EQ, CPLUS),
|
||||
};
|
||||
#undef B
|
||||
#undef C
|
||||
|
@ -550,6 +574,9 @@ initialize_builtins (pfile)
|
|||
const struct builtin *b;
|
||||
for(b = builtin_array; b < builtin_array_end; b++)
|
||||
{
|
||||
if (b->flags & CPLUS && ! CPP_OPTION (pfile, cplusplus))
|
||||
continue;
|
||||
|
||||
if (b->type == T_MACRO)
|
||||
{
|
||||
const char *val;
|
||||
|
@ -578,6 +605,8 @@ initialize_builtins (pfile)
|
|||
{
|
||||
cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
|
||||
hp->type = b->type;
|
||||
if (b->type == T_OPERATOR)
|
||||
hp->value.code = b->code;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
47
gcc/cpplex.c
47
gcc/cpplex.c
|
@ -1460,6 +1460,13 @@ lex_line (pfile, list)
|
|||
list->directive = _cpp_check_directive (pfile, cur_token,
|
||||
!(list->tokens[0].flags
|
||||
& PREV_WHITE));
|
||||
/* Convert named operators to their proper types. */
|
||||
if (cur_token->val.node->type == T_OPERATOR)
|
||||
{
|
||||
cur_token->flags |= NAMED_OP;
|
||||
cur_token->type = cur_token->val.node->value.code;
|
||||
}
|
||||
|
||||
cur_token++;
|
||||
break;
|
||||
|
||||
|
@ -1860,8 +1867,8 @@ lex_line (pfile, list)
|
|||
&& cur_token > first + 1 && !CPP_OPTION (pfile, lang_asm))
|
||||
{
|
||||
if (first[1].type == CPP_NAME)
|
||||
cpp_error (pfile, "invalid preprocessing directive #%.*s",
|
||||
(int) first[1].val.node->length, first[1].val.node->name);
|
||||
cpp_error (pfile, "invalid preprocessing directive #%s",
|
||||
first[1].val.node->name);
|
||||
else
|
||||
cpp_error (pfile, "invalid preprocessing directive");
|
||||
}
|
||||
|
@ -1954,6 +1961,8 @@ spell_token (pfile, token, buffer)
|
|||
|
||||
if (token->flags & DIGRAPH)
|
||||
spelling = digraph_spellings[token->type - CPP_FIRST_DIGRAPH];
|
||||
else if (token->flags & NAMED_OP)
|
||||
goto spell_ident;
|
||||
else
|
||||
spelling = TOKEN_NAME (token);
|
||||
|
||||
|
@ -1963,6 +1972,7 @@ spell_token (pfile, token, buffer)
|
|||
break;
|
||||
|
||||
case SPELL_IDENT:
|
||||
spell_ident:
|
||||
memcpy (buffer, token->val.node->name, token->val.node->length);
|
||||
buffer += token->val.node->length;
|
||||
break;
|
||||
|
@ -2245,8 +2255,8 @@ is_macro_disabled (pfile, expansion, token)
|
|||
_cpp_push_token (pfile, next);
|
||||
if (CPP_WTRADITIONAL (pfile))
|
||||
cpp_warning (pfile,
|
||||
"function macro %.*s must be used with arguments in traditional C",
|
||||
(int) token->val.node->length, token->val.node->name);
|
||||
"function macro %s must be used with arguments in traditional C",
|
||||
token->val.node->name);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@ -2379,8 +2389,7 @@ parse_args (pfile, hp, args)
|
|||
|
||||
if (token->type == CPP_EOF)
|
||||
{
|
||||
cpp_error (pfile, "unterminated invocation of macro \"%.*s\"",
|
||||
hp->length, hp->name);
|
||||
cpp_error(pfile, "unterminated argument list for macro \"%s\"", hp->name);
|
||||
return 1;
|
||||
}
|
||||
else if (argc < macro->paramc)
|
||||
|
@ -2401,9 +2410,7 @@ parse_args (pfile, hp, args)
|
|||
}
|
||||
else
|
||||
{
|
||||
cpp_error (pfile,
|
||||
"insufficient arguments in invocation of macro \"%.*s\"",
|
||||
hp->length, hp->name);
|
||||
cpp_error (pfile, "not enough arguments for macro \"%s\"", hp->name);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@ -2411,9 +2418,7 @@ parse_args (pfile, hp, args)
|
|||
else if (argc > macro->paramc
|
||||
&& !(macro->paramc == 0 && argc == 1 && empty_argument (args, 0)))
|
||||
{
|
||||
cpp_error (pfile,
|
||||
"too many arguments in invocation of macro \"%.*s\"",
|
||||
hp->length, hp->name);
|
||||
cpp_error (pfile, "too many arguments for macro \"%s\"", hp->name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -2583,6 +2588,12 @@ can_paste (pfile, token1, token2, digraph)
|
|||
enum cpp_ttype a = token1->type, b = token2->type;
|
||||
int cxx = CPP_OPTION (pfile, cplusplus);
|
||||
|
||||
/* Treat named operators as if they were ordinary NAMEs. */
|
||||
if (token1->flags & NAMED_OP)
|
||||
a = CPP_NAME;
|
||||
if (token2->flags & NAMED_OP)
|
||||
b = CPP_NAME;
|
||||
|
||||
if (a <= CPP_LAST_EQ && b == CPP_EQ)
|
||||
return a + (CPP_EQ_EQ - CPP_EQ);
|
||||
|
||||
|
@ -2756,6 +2767,12 @@ maybe_paste_with_next (pfile, token)
|
|||
|
||||
pasted->type = type;
|
||||
pasted->flags = digraph ? DIGRAPH : 0;
|
||||
|
||||
if (type == CPP_NAME && pasted->val.node->type == T_OPERATOR)
|
||||
{
|
||||
pasted->type = pasted->val.node->value.code;
|
||||
pasted->flags |= NAMED_OP;
|
||||
}
|
||||
}
|
||||
|
||||
/* The pasted token gets the whitespace flags and position of the
|
||||
|
@ -3101,11 +3118,11 @@ _cpp_get_token (pfile)
|
|||
token = maybe_paste_with_next (pfile, token);
|
||||
|
||||
/* If it isn't a macro, return it now. */
|
||||
if (token->type != CPP_NAME
|
||||
|| token->val.node->type == T_VOID)
|
||||
if (token->type != CPP_NAME || token->val.node->type == T_VOID)
|
||||
return token;
|
||||
|
||||
/* Is macro expansion disabled in general? */
|
||||
/* Is macro expansion disabled in general, or are we in the
|
||||
middle of a token paste? */
|
||||
if (pfile->no_expand_level == pfile->cur_context || pfile->paste_level)
|
||||
return token;
|
||||
|
||||
|
|
44
gcc/cpplib.c
44
gcc/cpplib.c
|
@ -236,39 +236,42 @@ static cpp_hashnode *
|
|||
get_define_node (pfile)
|
||||
cpp_reader *pfile;
|
||||
{
|
||||
cpp_hashnode *node;
|
||||
const cpp_token *token;
|
||||
|
||||
/* Skip any -C comments. */
|
||||
while ((token = _cpp_get_token (pfile))->type == CPP_COMMENT)
|
||||
;
|
||||
|
||||
/* The token immediately after #define must be an identifier. That
|
||||
identifier is not allowed to be "defined". See predefined macro
|
||||
names (6.10.8.4). In C++, it is not allowed to be any of the
|
||||
<iso646.h> macro names (which are keywords in C++) either. */
|
||||
|
||||
if (token->type != CPP_NAME)
|
||||
{
|
||||
cpp_error_with_line (pfile, token->line, token->col,
|
||||
if (token->type == CPP_DEFINED)
|
||||
cpp_error_with_line (pfile, token->line, token->col,
|
||||
"\"defined\" cannot be used as a macro name");
|
||||
else if (token->flags & NAMED_OP)
|
||||
cpp_error_with_line (pfile, token->line, token->col,
|
||||
"\"%s\" cannot be used as a macro name in C++",
|
||||
token->val.node->name);
|
||||
else
|
||||
cpp_error_with_line (pfile, token->line, token->col,
|
||||
"macro names must be identifiers");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* That identifier is not allowed to be "defined". See predefined
|
||||
macro names (6.10.8.4). */
|
||||
node = token->val.node;
|
||||
|
||||
if (node == pfile->spec_nodes->n_defined)
|
||||
{
|
||||
cpp_error_with_line (pfile, pfile->token_list.line, token->col,
|
||||
"\"defined\" is not a legal macro name");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Check for poisoned identifiers now. */
|
||||
if (node->type == T_POISON)
|
||||
if (token->val.node->type == T_POISON)
|
||||
{
|
||||
cpp_error (pfile, "attempt to use poisoned \"%s\"", node->name);
|
||||
cpp_error_with_line (pfile, token->line, token->col,
|
||||
"attempt to use poisoned \"%s\"",
|
||||
token->val.node->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return node;
|
||||
return token->val.node;
|
||||
}
|
||||
|
||||
/* Process a #define command. */
|
||||
|
@ -876,8 +879,8 @@ do_pragma_dependency (pfile)
|
|||
_cpp_dump_list (pfile, &pfile->token_list, msg, 0);
|
||||
limit = pfile->limit;
|
||||
pfile->limit = text;
|
||||
/* There must be something non-whitespace after. */
|
||||
while (*text == ' ')
|
||||
/* There must be something non-whitespace after. */
|
||||
text++;
|
||||
cpp_warning (pfile, "%.*s", (int)(limit - text), text);
|
||||
}
|
||||
|
@ -915,8 +918,7 @@ detect_if_not_defined (pfile)
|
|||
return 0;
|
||||
|
||||
token++;
|
||||
if (token->type != CPP_NAME
|
||||
|| token->val.node != pfile->spec_nodes->n_defined)
|
||||
if (token->type != CPP_DEFINED)
|
||||
return 0;
|
||||
|
||||
token++;
|
||||
|
@ -1338,8 +1340,7 @@ do_assert (pfile)
|
|||
return;
|
||||
|
||||
err:
|
||||
cpp_warning (pfile, "\"%.*s\" re-asserted",
|
||||
node->length - 1, node->name + 1);
|
||||
cpp_warning (pfile, "\"%s\" re-asserted", node->name + 1);
|
||||
FREE_ANSWER (new_answer);
|
||||
}
|
||||
|
||||
|
@ -1535,7 +1536,6 @@ _cpp_init_stacks (pfile)
|
|||
/* Perhaps not the ideal place to put this. */
|
||||
pfile->spec_nodes = s = xnew (struct spec_nodes);
|
||||
s->n_L = cpp_lookup (pfile, DSC("L"));
|
||||
s->n_defined = cpp_lookup (pfile, DSC("defined"));
|
||||
s->n__STRICT_ANSI__ = cpp_lookup (pfile, DSC("__STRICT_ANSI__"));
|
||||
s->n__CHAR_UNSIGNED__ = cpp_lookup (pfile, DSC("__CHAR_UNSIGNED__"));
|
||||
s->n__VA_ARGS__ = cpp_lookup (pfile, DSC("__VA_ARGS__"));
|
||||
|
|
12
gcc/cpplib.h
12
gcc/cpplib.h
|
@ -64,6 +64,8 @@ typedef struct cpp_hashnode cpp_hashnode;
|
|||
OP(CPP_XOR, "^") \
|
||||
OP(CPP_RSHIFT, ">>") \
|
||||
OP(CPP_LSHIFT, "<<") \
|
||||
OP(CPP_MIN, "<?") /* extension */ \
|
||||
OP(CPP_MAX, ">?") \
|
||||
\
|
||||
OP(CPP_COMPL, "~") \
|
||||
OP(CPP_AND_AND, "&&") /* logical */ \
|
||||
|
@ -88,6 +90,8 @@ typedef struct cpp_hashnode cpp_hashnode;
|
|||
OP(CPP_XOR_EQ, "^=") \
|
||||
OP(CPP_RSHIFT_EQ, ">>=") \
|
||||
OP(CPP_LSHIFT_EQ, "<<=") \
|
||||
OP(CPP_MIN_EQ, "<?=") /* extension */ \
|
||||
OP(CPP_MAX_EQ, ">?=") \
|
||||
/* Digraphs together, beginning with CPP_FIRST_DIGRAPH. */ \
|
||||
OP(CPP_HASH, "#") /* digraphs */ \
|
||||
OP(CPP_PASTE, "##") \
|
||||
|
@ -106,8 +110,7 @@ typedef struct cpp_hashnode cpp_hashnode;
|
|||
OP(CPP_SCOPE, "::") \
|
||||
OP(CPP_DEREF_STAR, "->*") \
|
||||
OP(CPP_DOT_STAR, ".*") \
|
||||
OP(CPP_MIN, "<?") /* extension */ \
|
||||
OP(CPP_MAX, ">?") \
|
||||
OP(CPP_DEFINED, "defined") /* #if */ \
|
||||
\
|
||||
TK(CPP_NAME, SPELL_IDENT) /* word */ \
|
||||
TK(CPP_INT, SPELL_STRING) /* 23 */ \
|
||||
|
@ -147,10 +150,11 @@ struct cpp_string
|
|||
/* Flags for the cpp_token structure. */
|
||||
#define PREV_WHITE (1 << 0) /* If whitespace before this token. */
|
||||
#define BOL (1 << 1) /* Beginning of logical line. */
|
||||
#define DIGRAPH (1 << 2) /* If it was a digraph. */
|
||||
#define DIGRAPH (1 << 2) /* If it was a digraph. */
|
||||
#define STRINGIFY_ARG (1 << 3) /* If macro argument to be stringified. */
|
||||
#define PASTE_LEFT (1 << 4) /* If on LHS of a ## operator. */
|
||||
#define PASTED (1 << 5) /* The result of a ## operator. */
|
||||
#define NAMED_OP (1 << 6) /* C++ named operators, also defined */
|
||||
|
||||
/* A preprocessing token. This has been carefully packed and should
|
||||
occupy 16 bytes on 32-bit hosts and 24 bytes on 64-bit hosts. */
|
||||
|
@ -603,6 +607,7 @@ enum node_type
|
|||
T_INCLUDE_LEVEL, /* `__INCLUDE_LEVEL__' */
|
||||
T_TIME, /* `__TIME__' */
|
||||
T_STDC, /* `__STDC__' */
|
||||
T_OPERATOR, /* operator with a name; val.code is token type */
|
||||
T_POISON, /* poisoned identifier */
|
||||
T_MACRO, /* a macro, either object-like or function-like */
|
||||
T_ASSERTION /* predicate for #assert */
|
||||
|
@ -624,6 +629,7 @@ struct cpp_hashnode
|
|||
{
|
||||
const cpp_toklist *expansion; /* a macro's replacement list. */
|
||||
struct answer *answers; /* answers to an assertion. */
|
||||
enum cpp_ttype code; /* code for a named operator. */
|
||||
} value;
|
||||
|
||||
union tree_node *fe_value; /* front end value */
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2000-07-19 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* gcc.dg/cpp/directiv.c, gcc.dg/cpp/macsyntx.c,
|
||||
gcc.dg/cpp/undef1.c: Tweak error regexps.
|
||||
|
||||
2000-07-18 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* cpplex.c (_cpp_push_token): If the token being pushed back
|
||||
|
@ -431,12 +436,12 @@ Thu Jun 29 09:42:40 2000 Jeffrey A Law (law@cygnus.com)
|
|||
* lib/g++.exp (g++_include_flags): Tweak.
|
||||
|
||||
2000-06-27 H.J. Lu <hjl@gnu.org>
|
||||
Loren J. Rittle <ljrittle@acm.org>
|
||||
Loren J. Rittle <ljrittle@acm.org>
|
||||
|
||||
* lib/g++.exp (g++_include_flags): Override libgloss.exp
|
||||
version with one that knows about the new gcc tree structure.
|
||||
(g++_link_flags): Same.
|
||||
|
||||
* lib/g++.exp (g++_include_flags): Override libgloss.exp
|
||||
version with one that knows about the new gcc tree structure.
|
||||
(g++_link_flags): Same.
|
||||
|
||||
2000-06-26 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* gcc.dg/20000419-1.c, gcc.dg/cpp-mi.c, gcc.dg/cpp-tradwarn1.c,
|
||||
|
@ -444,7 +449,7 @@ Thu Jun 29 09:42:40 2000 Jeffrey A Law (law@cygnus.com)
|
|||
case we are cross-compiling.
|
||||
|
||||
* g++.old-deja/Makefile.in, g++.old-deja/configure.in,
|
||||
g++.old-deja/g++.niklas/Makefile.in,
|
||||
g++.old-deja/g++.niklas/Makefile.in,
|
||||
g++.old-deja/g++.niklas/configure.in,
|
||||
g++.old-deja/g++.other/Makefile.in,
|
||||
g++.old-deja/g++.other/configure.in,
|
||||
|
@ -479,7 +484,7 @@ Thu Jun 29 09:42:40 2000 Jeffrey A Law (law@cygnus.com)
|
|||
2000-06-25 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* gcc.dg/20000625-1.c, gcc.dg/20000625-2.c, gcc.dg/cpp-mi3.c:
|
||||
New tests.
|
||||
New tests.
|
||||
* gcc.dg/cpp-mi3.def: New file.
|
||||
|
||||
* gcc.dg/cpp-as1.c: Also test that macro expansion does not occur
|
||||
|
@ -580,7 +585,7 @@ Fri Jun 9 21:54:28 2000 Clinton Popetz <cpopetz@cygnus.com>
|
|||
|
||||
2000-06-03 David Billinghurst <David Billinghurst@riotinto.com.au>
|
||||
|
||||
* g77.f-torture/compile/20000601-1.f: New test.
|
||||
* g77.f-torture/compile/20000601-1.f: New test.
|
||||
|
||||
2000-06-03 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
|
@ -623,7 +628,7 @@ Fri Jun 9 21:54:28 2000 Clinton Popetz <cpopetz@cygnus.com>
|
|||
* g++.old-deja/g++.law/refs4.C: Likewise.
|
||||
* g++.old-deja/g++.law/temps4.C: Likewise.
|
||||
* g++.old-deja/g++.brendan/complex1.C: Don't assume argc is 1.
|
||||
* gcc.c-torture/execute/20000112-1.c: Include string.h.
|
||||
* gcc.c-torture/execute/20000112-1.c: Include string.h.
|
||||
|
||||
2000-05-27 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
|
@ -635,7 +640,7 @@ Fri Jun 9 21:54:28 2000 Clinton Popetz <cpopetz@cygnus.com>
|
|||
g++.mike/p9732b.C, g++.other/addrof1.C, g++.other/dyncast5.C,
|
||||
g++.other/init5.C, g++.other/init7.C, g++.other/union2.C,
|
||||
g++.pt/vbase1.C, g++.robertl/eb14.C, g++.robertl/eh990323-1.C,
|
||||
g++.robertl/eh990323-2.C, g++.robertl/eh990323-3.C,
|
||||
g++.robertl/eh990323-2.C, g++.robertl/eh990323-3.C,
|
||||
g++.robertl/eh990323-4.C, g++.robertl/eh990323-5.C,
|
||||
g++.robertl/ice990323-2.C: Prototype exit and/or abort.
|
||||
|
||||
|
@ -883,7 +888,7 @@ Wed Apr 12 10:25:08 2000 Jeffrey A Law (law@cygnus.com)
|
|||
* g++.old-deja/g++.abi/cxa_vec.C: New test.
|
||||
|
||||
2000-04-08 Neil Booth <NeilB@earthling.net>
|
||||
|
||||
|
||||
* gcc.dg/cpp-nullchar.c: Remove test as
|
||||
embedded nulls cause problems.
|
||||
|
||||
|
@ -892,7 +897,7 @@ Wed Apr 12 10:25:08 2000 Jeffrey A Law (law@cygnus.com)
|
|||
* gcc.dg/compare2.c: New test.
|
||||
|
||||
2000-04-08 Neil Booth <NeilB@earthling.net>
|
||||
|
||||
|
||||
* gcc.dg/cpp-nullchar.c: New test.
|
||||
|
||||
2000-04-07 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
@ -913,7 +918,7 @@ Wed Apr 12 10:25:08 2000 Jeffrey A Law (law@cygnus.com)
|
|||
|
||||
* cpp-ifparen.c, cpp-missingop.c, cpp-missingparen.c,
|
||||
cpp-shift.c, cpp-shortcircuit.c, cpp-unary.c: Add FSF
|
||||
copyright.
|
||||
copyright.
|
||||
|
||||
Wed Apr 5 22:51:36 2000 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
|
@ -1060,7 +1065,7 @@ Fri Mar 10 01:15:19 2000 Hans-Peter Nilsson <hp@bitrange.com>
|
|||
|
||||
2000-03-06 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.warn/impint2.C: New test.
|
||||
* g++.old-deja/g++.warn/impint2.C: New test.
|
||||
|
||||
Sun Mar 5 23:25:12 2000 Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
|
@ -1202,7 +1207,7 @@ Fri Feb 11 12:35:40 2000 Jeffrey A Law (law@cygnus.com)
|
|||
* lib/g++.exp (g++init): Use g++, not xgcc, to invoke the C++
|
||||
compiler.
|
||||
(tool_option_proc): Fix typo.
|
||||
|
||||
|
||||
2000-01-24 Geoff Keating <geoffk@cygnus.com>
|
||||
|
||||
* gcc.dg/special/ecos.exp (gcsec-1.c): Check the version
|
||||
|
@ -1391,7 +1396,7 @@ Wed Dec 29 20:54:46 1999 Greg McGary <gkm@eng.ascend.com>
|
|||
1999-12-14 Bernd Schmidt <bernds@cygnus.co.uk>
|
||||
|
||||
* gcc.dg/991214-1.c: New test.
|
||||
|
||||
|
||||
Mon Dec 13 23:03:09 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* gcc.c-torture/compile/991213-3.c: New test.
|
||||
|
@ -1489,18 +1494,18 @@ Fri Oct 8 18:46:11 1999 Bernd Schmidt <bernds@cygnus.co.uk>
|
|||
|
||||
1999-11-05 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* lib/target-supports.exp: New file: Provide procs to test for
|
||||
* lib/target-supports.exp: New file: Provide procs to test for
|
||||
features supported by the target.
|
||||
(check_weak_available): Moved here from ecos.exp.
|
||||
(check_alias_available): New proc: Determine of the target
|
||||
toolchain supports the alias attribute.
|
||||
|
||||
|
||||
* gcc.dg/special/ecos.exp: Move check_weak_available to
|
||||
target-supports.exp.
|
||||
target-supports.exp.
|
||||
(alias-1.c): Only perform the test if the target supports
|
||||
aliases.
|
||||
aliases.
|
||||
(wkali-1.c): Only perform the test if the target supports
|
||||
aliases.
|
||||
aliases.
|
||||
|
||||
* gcc.dg/990506-0.c: Expect error messages from cross
|
||||
targets as well as native targets.
|
||||
|
@ -1847,7 +1852,7 @@ Sun Jul 25 21:41:37 1999 Jeffrey A Law (law@cygnus.com)
|
|||
|
||||
1999-06-29 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* lib/file-format.exp: New file: Move definition of proc
|
||||
* lib/file-format.exp: New file: Move definition of proc
|
||||
gcc_target_object_format to here from
|
||||
gcc.dg/special/ecos.exp.
|
||||
|
||||
|
@ -1856,7 +1861,7 @@ Sun Jul 25 21:41:37 1999 Jeffrey A Law (law@cygnus.com)
|
|||
|
||||
* gcc.dg/special/ecos.exp: Remove definition of proc
|
||||
gcc_target_object_format.
|
||||
|
||||
|
||||
Mon Jun 28 08:20:51 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* gcc.c-torture/execute/990628-1.c: New test.
|
||||
|
@ -1921,7 +1926,7 @@ Thu May 27 02:18:51 1999 Joern Rennecke <amylaar@cygnus.com>
|
|||
1999-05-25 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* gcc.c-torture/execute/bf-sign-2.c: Explicitly declare signed
|
||||
bitfields as signed.
|
||||
bitfields as signed.
|
||||
|
||||
1999-05-25 Craig Burley <craig@jcb-sc.com>
|
||||
|
||||
|
@ -2135,7 +2140,7 @@ Fri Mar 12 16:17:28 1999 Jim Wilson <wilson@cygnus.com>
|
|||
* gcc.c-torture/execute/bf-sign-2.c (struct X): Add u15 field.
|
||||
(main): Add check for u15. Conditionalize u31 check depending on
|
||||
whether ints are <32 bits or >=32 bits.
|
||||
|
||||
|
||||
1999-03-08 Craig Burley <craig@jcb-sc.com>
|
||||
|
||||
* g77.f-torture/execute/19981119-0.f: Improve testiness.
|
||||
|
@ -2265,14 +2270,14 @@ Mon Feb 8 21:42:57 1999 Richard Henderson <rth@cygnus.com>
|
|||
|
||||
* g++.dg/special/ecos.exp: New driver for new tests with special
|
||||
requirements
|
||||
|
||||
|
||||
* g++.dg/special/conpr-1.C: New test
|
||||
* g++.dg/special/conpr-2.C: New test
|
||||
* g++.dg/special/conpr-2a.C: New test
|
||||
* g++.dg/special/conpr-3.C: New test
|
||||
* g++.dg/special/conpr-3a.C: New test
|
||||
* g++.dg/special/conpr-3b.C: New test
|
||||
|
||||
|
||||
* lib/g++-dg.exp: New driver file, based on lib/gcc-dg.exp to
|
||||
allow g++ to use the dg driver
|
||||
|
||||
|
@ -2291,7 +2296,7 @@ Sat Feb 6 18:00:38 1999 Jeffrey A Law (law@cygnus.com)
|
|||
structure S.
|
||||
|
||||
* gcc.c-torture/execute/memcheck/blkarg.x: New file: Expected
|
||||
failure for all targets.
|
||||
failure for all targets.
|
||||
|
||||
* gcc.c-torture/execute/memcheck/driver.c (main): Use exit or
|
||||
abort to terminate program execution.
|
||||
|
@ -2482,7 +2487,7 @@ Sun Oct 11 05:04:28 1998 Ken Raeburn <raeburn@cygnus.com>
|
|||
|
||||
1998-11-07 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* README: New file, general information about the testsuite and
|
||||
* README: New file, general information about the testsuite and
|
||||
new description of the various C++ test subdirectories.
|
||||
* README.g++: Eliminate obsolete information, update and move most
|
||||
relevant stuff to README.
|
||||
|
@ -2688,7 +2693,7 @@ Thu Oct 1 17:15:26 1998 Nick Clifton <nickc@cygnus.com>
|
|||
|
||||
* gcc.c-torture/compile/981001-1.c: New test.
|
||||
* gcc.c-torture/execute/981001-1.c: New test.
|
||||
|
||||
|
||||
Thu Oct 1 19:05:20 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* gcc.c-torture/compile/981001-2.c: New test.
|
||||
|
@ -2733,7 +2738,7 @@ Thu Oct 1 19:05:20 1998 Jeffrey A Law (law@cygnus.com)
|
|||
* g++.old-deja/g++.other/static2.C: Invocation of static data
|
||||
member of type pointer-to-function denoted as non-static member.
|
||||
|
||||
* g++.old-deja/g++.other/typedef5.C: Add some more tests involving
|
||||
* g++.old-deja/g++.other/typedef5.C: Add some more tests involving
|
||||
checks involving function types and aliases.
|
||||
|
||||
1998-09-12 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
@ -2839,7 +2844,7 @@ Fri Aug 21 03:14:04 1998 Jeffrey A Law (law@cygnus.com)
|
|||
1998-08-19 Mark Mitchell <mark@markmitchell.com>
|
||||
|
||||
* lib/old-dejagnu.exp (old-dejagnu): Remove sig6/sig11 handling
|
||||
code.
|
||||
code.
|
||||
|
||||
1998-08-09 Mark Mitchell <mark@markmitchell.com>
|
||||
|
||||
|
@ -2937,19 +2942,19 @@ Mon Jul 13 22:26:37 1998 Jeffrey A Law (law@cygnus.com)
|
|||
* g77.f-torture/execute/970816-3.f: New test from Craig.
|
||||
|
||||
Fri Jul 10 23:43:33 1998 Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>
|
||||
|
||||
|
||||
* g++.other/singleton.C: Return error value instead of taking
|
||||
SIGSEGV.
|
||||
|
||||
Fri Jul 10 10:02:03 1998 Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
|
||||
Fri Jul 10 10:02:03 1998 Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
|
||||
|
||||
* g++.other/singleton.C: New test. Warning is under dispute.
|
||||
Runtime crash is not.
|
||||
|
||||
Thu Jul 9 23:07:45 1998 Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>
|
||||
|
||||
* g++.ns/{alias2.C, alias5.C, koenig4.C, lookup3.C ns13.C,
|
||||
ns14.C, ns15.C, template3.C, undef1.C, using4.C, using5.C,
|
||||
* g++.ns/{alias2.C, alias5.C, koenig4.C, lookup3.C ns13.C,
|
||||
ns14.C, ns15.C, template3.C, undef1.C, using4.C, using5.C,
|
||||
using6.C, using7.C}: New namespace tests.
|
||||
|
||||
Thu Jul 9 22:44:49 1998 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
@ -3031,10 +3036,10 @@ Fri Jun 19 23:26:12 1998 Bruno Haible <haible@ilog.fr>
|
|||
* g++.old-deja/g++.other/warn01.c: Likewise.
|
||||
|
||||
Fri Jun 19 14:06:36 1998 Robert Lipe <robertl@dgii.com>
|
||||
|
||||
|
||||
* gcc.dg/980414-1.c: Move comments outside of ASM to improve
|
||||
compatibility with assmblers with a different comment character.
|
||||
Eliminate use of GAS-specific extensions.
|
||||
Eliminate use of GAS-specific extensions.
|
||||
|
||||
Fri Jun 19 02:05:14 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
|
@ -3492,7 +3497,7 @@ Sun Feb 23 18:12:04 1997 Bob Manson <manson@charmed.cygnus.com>
|
|||
|
||||
* lib/gcc.exp(gcc_init): Add args parameter (which will contain
|
||||
the name of the expect testcase file).
|
||||
|
||||
|
||||
* lib/g++.exp(g++_init): Ditto.
|
||||
|
||||
Thu Feb 20 13:53:05 1997 Bob Manson <manson@charmed.cygnus.com>
|
||||
|
@ -3536,14 +3541,14 @@ Tue Feb 11 12:57:11 1997 Bob Manson <manson@charmed.cygnus.com>
|
|||
Sat Feb 8 14:45:55 1997 Bob Manson <manson@charmed.cygnus.com>
|
||||
|
||||
* g++.law/virtual1.exp: Don't use CXX_FLAGS.
|
||||
|
||||
|
||||
* lib/mike-g++.exp: Don't set the compiler to be tested here.
|
||||
* lib/g++.exp: Set it here instead. Also, allow use of the
|
||||
--tool_exec and --tool_opt options. Change CXX to
|
||||
GXX_UNDER_TEST.
|
||||
|
||||
|
||||
* g++.old-deja/old-deja.exp: Change CXX to GXX_UNDER_TEST.
|
||||
|
||||
|
||||
* lib/gcc.exp: Allow use of --tool_exec and --tool_opt.
|
||||
|
||||
Fri Feb 7 12:55:45 1997 Bob Manson <manson@charmed.cygnus.com>
|
||||
|
@ -3566,7 +3571,7 @@ Tue Feb 4 12:51:09 1997 Bob Manson <manson@charmed.cygnus.com>
|
|||
|
||||
* lib/gcc.exp: Add gcc,stack_size target feature.
|
||||
|
||||
* lib/g++.exp(g++_target_compile): Add the include and link
|
||||
* lib/g++.exp(g++_target_compile): Add the include and link
|
||||
paths here, not in two other places. And, it's $options, not
|
||||
options.
|
||||
|
||||
|
@ -3617,7 +3622,7 @@ Wed Jan 29 00:36:25 1997 Bob Manson <manson@charmed.cygnus.com>
|
|||
|
||||
g++.*/*: Pass any additional flags used to compile to postbase;
|
||||
delete CXXFLAGS.
|
||||
|
||||
|
||||
gcc.c-torture/*: Remove calls to gcc_init and gcc_finish; this
|
||||
is now done by runtest.exp. Use gcc_target_compile instead of
|
||||
compile.
|
||||
|
@ -3634,7 +3639,7 @@ Wed Jan 29 00:36:25 1997 Bob Manson <manson@charmed.cygnus.com>
|
|||
lib/mike-{gcc,g++}.exp: Ditto.
|
||||
lib/old-dejagnu.exp: Ditto.
|
||||
lib/plumhall.exp: Ditto.
|
||||
|
||||
|
||||
Wed Jan 8 14:43:07 1997 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* lib/plumhall.exp (ph_make): Use CFLAGS and ANSICFLAGS when linking.
|
||||
|
@ -3983,7 +3988,7 @@ Tue Sep 19 17:26:07 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
|
|||
* lib/mike-g++.exp (postbase): If we've built a libg++.so, then
|
||||
pass the runtime shared library options for Solaris, OSF/1, and
|
||||
Irix5, and link with -lcurses to avoid unresolved references.
|
||||
|
||||
|
||||
Wed Sep 13 15:28:10 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
|
||||
|
||||
* lib/gcc.exp (gcc_init): Return if gcc_initialized is 1, so we
|
||||
|
@ -4338,7 +4343,7 @@ Mon Jan 2 11:50:10 1995 Jeff Law (law@snake.cs.utah.edu)
|
|||
* g++.law/{enum8.C, enum9.C, friend5.C}: Likewise.
|
||||
* g++.law/{nest2.C, nest3.C, nest4.C, nest5.C}: Likewise.
|
||||
* g++.law/{nest6.C, next7.C, operators30.C}: Likewise.
|
||||
* g++.law/{operators31.C, operators32.C,
|
||||
* g++.law/{operators31.C, operators32.C,
|
||||
* g++.law/{operators33.C, operators34.C}: Likewise.
|
||||
* g++.law/{pic1.C, refs2.C}: Likewise.
|
||||
* g++.law/{refs3.C, refs4.C, static-mem3.C}: Likewise.
|
||||
|
@ -4355,7 +4360,7 @@ Mon Jan 2 11:50:10 1995 Jeff Law (law@snake.cs.utah.edu)
|
|||
* g++.law/{nest3.exp, nest4.exp}: Likewise.
|
||||
* g++.law/{nest5.exp, nest6.exp, nest7.exp}: Likewise.
|
||||
* g++.law/{operators30.exp, operators31.exp}: Likewise.
|
||||
* g++.law/{operators32.exp, operators33.exp}: Likewise.
|
||||
* g++.law/{operators32.exp, operators33.exp}: Likewise.
|
||||
* g++.law/{operators34.exp}: Likewise.
|
||||
* g++.law/{pic1.exp, refs2.exp, refs3.exp refs4.exp}: Likewise.
|
||||
* g++.law/{static-mem3.exp, static-mem4.exp}: Likewise.
|
||||
|
@ -4720,7 +4725,7 @@ Sun Aug 14 09:23:53 1994 Jeff Law (law@snake.cs.utah.edu)
|
|||
* gcc.c-torture/noncompile/noncompile.exp (940712-1 test): No
|
||||
longer expected to fail.
|
||||
|
||||
* gcc.c-torture/execute/strct-pack-3.c: Add missing argument to
|
||||
* gcc.c-torture/execute/strct-pack-3.c: Add missing argument to
|
||||
"f" function call.
|
||||
|
||||
* gcc.misc-tests/mg.exp: Call gcc_stat when finished.
|
||||
|
@ -4779,29 +4784,29 @@ Sat May 21 10:39:38 1994 Bill Cox (bill@rtl.cygnus.com)
|
|||
|
||||
Thu May 19 18:00:03 1994 Bill Cox (bill@rtl.cygnus.com)
|
||||
|
||||
* config/sim.exp, config/udi.exp, config/unix.exp, config/vx.exp,
|
||||
* config/sim.exp, config/udi.exp, config/unix.exp, config/vx.exp,
|
||||
g++.brendan/alignof.exp, g++.brendan/arm3.exp, g++.brendan/code-gen5.exp,
|
||||
g++.brendan/crash29.exp, g++.brendan/crash5.exp, g++.brendan/cvt3.exp,
|
||||
g++.brendan/delete1.exp, g++.brendan/nest12.exp, g++.brendan/nest13.exp,
|
||||
g++.brendan/overload3.exp, g++.brendan/redecl1.exp, g++.brendan/visibility2.exp,
|
||||
g++.jason/cond.exp, g++.jason/hmc1.exp, g++.jason/report.exp,
|
||||
g++.law/access1.exp, g++.law/access2.exp, g++.law/arg6.exp,
|
||||
g++.law/arg7.exp, g++.law/arg8.exp, g++.law/arm1.exp,
|
||||
g++.law/access1.exp, g++.law/access2.exp, g++.law/arg6.exp,
|
||||
g++.law/arg7.exp, g++.law/arg8.exp, g++.law/arm1.exp,
|
||||
g++.law/arm10.exp, g++.law/arm4.exp, g++.law/arm5.exp,
|
||||
g++.law/ctors15.exp, g++.law/ctors19.exp, g++.law/cvt1.exp,
|
||||
g++.law/cvt12.exp, g++.law/cvt13.exp, g++.law/cvt18.exp,
|
||||
g++.law/cvt22.exp, g++.law/cvt3.exp, g++.law/cvt5.exp,
|
||||
g++.law/cvt6.exp, g++.law/cvt8.exp, g++.law/dtors3.exp,
|
||||
g++.law/cvt12.exp, g++.law/cvt13.exp, g++.law/cvt18.exp,
|
||||
g++.law/cvt22.exp, g++.law/cvt3.exp, g++.law/cvt5.exp,
|
||||
g++.law/cvt6.exp, g++.law/cvt8.exp, g++.law/dtors3.exp,
|
||||
g++.law/except1.exp, g++.law/except3.exp, g++.law/except4.exp,
|
||||
g++.law/except5.exp, g++.law/except6.exp, g++.law/init5.exp,
|
||||
g++.law/except5.exp, g++.law/except6.exp, g++.law/init5.exp,
|
||||
g++.law/init8.exp, g++.law/inline4.exp, g++.law/memoized1.exp,
|
||||
g++.law/missing1.exp, g++.law/operators14.exp, g++.law/operators18.exp,
|
||||
g++.law/operators9.exp, g++.law/scope2.exp, g++.law/temps2.exp,
|
||||
g++.law/temps3.exp, g++.law/temps5.exp, g++.law/typeck2.exp,
|
||||
g++.law/temps3.exp, g++.law/temps5.exp, g++.law/typeck2.exp,
|
||||
g++.mike/misc4.exp, g++.mike/misc6.exp, g++.niklas/t118.exp,
|
||||
g++.niklas/t128.exp, g++.niklas/t138.exp, g++.niklas/t139.exp,
|
||||
g++.niklas/t140.exp, g++.niklas/t141.exp, gcc.code_quality/code_quality.exp,
|
||||
gcc.compile/compile.exp, gcc.dje/dje.exp, gcc.execute/execute.exp,
|
||||
gcc.compile/compile.exp, gcc.dje/dje.exp, gcc.execute/execute.exp,
|
||||
gcc.failure/failure.exp, gcc.ieee/ieee.exp, gcc.noncompile/noncompile.exp,
|
||||
gcc.special/special.exp, gcc.unsorted/unsorted.exp, lib/c-torture.exp,
|
||||
lib/chill.exp, lib/g++.exp, lib/gcc.exp, lib/mike-g++.exp, lib/mike-gcc.exp,
|
||||
|
@ -4919,7 +4924,7 @@ Sun Dec 19 21:45:34 1993 Jeffrey A. Law (law@snake.cs.utah.edu
|
|||
|
||||
* g++.law: Add more tests derived from g++-bugs snapshots.
|
||||
|
||||
* g++.law/init11.{c,exp}: Delete test. Brendan sez it's
|
||||
* g++.law/init11.{c,exp}: Delete test. Brendan sez it's
|
||||
equivalent to g++.law/init9.
|
||||
|
||||
* lib/mike-gcc.exp (postbase): Delete the .o file after we've
|
||||
|
@ -4937,7 +4942,7 @@ Fri Dec 17 10:18:16 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
|
|||
Wed Dec 15 20:36:40 1993 Rob Savoye (rob@darkstar.cygnus.com)
|
||||
|
||||
* lib/gcc.exp, lib/g++.exp: Use catch rather than exec to get the
|
||||
version number.
|
||||
version number.
|
||||
|
||||
Sun Dec 12 21:10:04 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||
|
||||
|
@ -5056,10 +5061,10 @@ Tue Sep 14 19:23:58 1993 Jeffrey Wheat (cassidy at deneb.cygnus.com)
|
|||
* chill.noncompile/noncompile.exp: rewrite, based on execute.exp
|
||||
* lib/chill.exp: major changes to diff proc and compile and link
|
||||
procs. added chill_fail and chill_pass wrappers to pass and
|
||||
fail. added more comments, and handle error codes better.
|
||||
fail. added more comments, and handle error codes better.
|
||||
Added a hack to capture stderr from exec, so noncompile tests
|
||||
can work.
|
||||
|
||||
|
||||
Sat Sep 11 15:30:10 1993 Jeffrey Wheat (cassidy@cygnus.com)
|
||||
|
||||
* chill.execute/execute.exp: rewrite of testsuite driver
|
||||
|
@ -5116,8 +5121,8 @@ Tue Jul 27 10:08:08 PDT 1993 Jeff Wheat (cassidy@cygnus.com)
|
|||
* Upgraded c-torture tests from 1.19 to 1.20
|
||||
|
||||
* new files:
|
||||
* gcc.compile: 930609-1.c 930611-1.c 930618-1.c 930621-1.c
|
||||
* gcc.compile: 930623-1.c 930623-2.c
|
||||
* gcc.compile: 930609-1.c 930611-1.c 930618-1.c 930621-1.c
|
||||
* gcc.compile: 930623-1.c 930623-2.c
|
||||
* gcc.noncompile: 930622-1.c 930622-2.c
|
||||
* gcc.failure: 920411-1.c 920627-2.c
|
||||
* gcc.ieee: 920518-1.c 920810-1.c 930529-1.c
|
||||
|
@ -5142,7 +5147,7 @@ Tue Jul 13 18:38:56 PDT 1993 Jeff Wheat (cassidy@cygnus.com)
|
|||
Sat Jun 19 07:13:05 1993 Bill Cox (bill@rtl.cygnus.com)
|
||||
|
||||
This should complete moving the CHILL test files.
|
||||
* chill.noncompile(.cvsignore printf.grt
|
||||
* chill.noncompile(.cvsignore printf.grt
|
||||
in-printf.grt chprintf.grt chprintf.ch):
|
||||
Added test-support files.
|
||||
(Makefile): Modified further.
|
||||
|
@ -5250,7 +5255,7 @@ Mon Apr 12 15:15:37 1993 Mike Werner (mtw@deneb.cygnus.com)
|
|||
Changed several of the test result messages to be more descriptive.
|
||||
* config/unix-g++.exp: Proc g++_load now actually works and
|
||||
executes the tests passed to it and returns a usable return
|
||||
value.
|
||||
value.
|
||||
|
||||
Sun Apr 11 17:22:37 1993 Rob Savoye (rob at darkstar.cygnus.com)
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ EMPTY #define bar
|
|||
/* Check that directives always start a line, even if in middle of
|
||||
macro expansion. */
|
||||
#define func(x) x
|
||||
func (2 /* { dg-error "unterminated invocation" } */
|
||||
func (2 /* { dg-error "unterminated argument" } */
|
||||
#define foobar /* { dg-error "may not be used inside" } */
|
||||
|
||||
/* For tidiness, I think the directive should still be processed
|
||||
|
@ -43,5 +43,5 @@ func (2 /* { dg-error "unterminated invocation" } */
|
|||
|
||||
Note that the #if is still treated as a conditional, so there
|
||||
should be no errors about #endif without #if. */
|
||||
#if func ( /* { dg-error "unterminated invocation" } */
|
||||
#if func ( /* { dg-error "unterminated argument" } */
|
||||
#endif
|
||||
|
|
|
@ -48,11 +48,11 @@ one() /* OK. */
|
|||
one(ichi) /* OK. */
|
||||
one(ichi\
|
||||
, ni) /* { dg-error "too many" } */
|
||||
two(ichi) /* { dg-error "insufficient" } */
|
||||
two(ichi) /* { dg-error "not enough" } */
|
||||
var0() /* OK. */
|
||||
var0(ichi) /* OK. */
|
||||
var1() /* { dg-error "insufficient" } */
|
||||
var1(ichi) /* { dg-error "insufficient" } */
|
||||
var1() /* { dg-error "not enough" } */
|
||||
var1(ichi) /* { dg-error "not enough" } */
|
||||
var1(ichi, ni) /* OK. */
|
||||
|
||||
/* This tests two deprecated oddities of GNU rest args - omitting a
|
||||
|
@ -70,4 +70,4 @@ rest(ichi) /* { dg-warning "deprecated" } */
|
|||
#define half_invocation do_nowt(2
|
||||
#define do_nowt(x) x
|
||||
half_invocation ) /* OK. */
|
||||
do_nowt (half_invocation)) /* { dg-error "unterminated invocation" } */
|
||||
do_nowt (half_invocation)) /* { dg-error "unterminated argument" } */
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
|
||||
#define foo(bar) bar
|
||||
|
||||
foo( blah /* { dg-error "unterminated invocation" } */
|
||||
foo( blah /* { dg-error "unterminated argument" } */
|
||||
#undef foo /* { dg-error "may not be used inside" "foo(#undef foo)" } */
|
||||
blah )
|
||||
|
|
Loading…
Add table
Reference in a new issue