Fix problems with last patch.
From-SVN: r18033
This commit is contained in:
parent
beb31faa5b
commit
feb60352fb
2 changed files with 19 additions and 2 deletions
|
@ -1,3 +1,13 @@
|
|||
Tue Feb 17 21:17:30 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* rtl.h (force_line_numbers, restore_line_number_status): Declare.
|
||||
* emit-rtl.c (force_line_numbers, restore_line_number_status):
|
||||
New functions.
|
||||
* stmt.c (struct nesting): Replace seenlabel with line_number_status.
|
||||
(expand_start_case): Adjust to this change.
|
||||
(check_seenlabel): New function.
|
||||
(pushcase, pushcase_range, expand_endcase): Use it.
|
||||
|
||||
Tue Feb 17 10:14:32 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* i386.md (adddi3): Add =!r,0,0,X alternative.
|
||||
|
|
11
gcc/stmt.c
11
gcc/stmt.c
|
@ -3895,8 +3895,6 @@ pushcase (value, converter, label, duplicate)
|
|||
index_type = TREE_TYPE (case_stack->data.case_stmt.index_expr);
|
||||
nominal_type = case_stack->data.case_stmt.nominal_type;
|
||||
|
||||
check_seenlabel ();
|
||||
|
||||
/* If the index is erroneous, avoid more problems: pretend to succeed. */
|
||||
if (index_type == error_mark_node)
|
||||
return 0;
|
||||
|
@ -3905,6 +3903,8 @@ pushcase (value, converter, label, duplicate)
|
|||
if (value != 0)
|
||||
value = (*converter) (nominal_type, value);
|
||||
|
||||
check_seenlabel ();
|
||||
|
||||
/* Fail if this value is out of range for the actual type of the index
|
||||
(which may be narrower than NOMINAL_TYPE). */
|
||||
if (value != 0 && ! int_fits_type_p (value, index_type))
|
||||
|
@ -4612,6 +4612,13 @@ expand_end_case (orig_index)
|
|||
|
||||
do_pending_stack_adjust ();
|
||||
|
||||
/* This might get an spurious warning in the presence of a syntax error;
|
||||
it could be fixed by moving the call to check_seenlabel after the
|
||||
check for error_mark_node, and copying the code of check_seenlabel that
|
||||
deals with case_stack->data.case_stmt.line_number_status /
|
||||
restore_line_number_status in front of the call to end_cleanup_deferral;
|
||||
However, this might miss some useful warnings in the presence of
|
||||
non-syntax errors. */
|
||||
check_seenlabel ();
|
||||
|
||||
/* An ERROR_MARK occurs for various reasons including invalid data type. */
|
||||
|
|
Loading…
Add table
Reference in a new issue