alias.c (clear_reg_alias_info): Use K&R format definition.

* alias.c (clear_reg_alias_info): Use K&R format definition.
	Avoid unsigned warning.
	* builtins.c: Use "unsigned int", not "unsigned".
	(target_char_cast): Use host_integerp and tree_low_cst.
	(expand_builtin_args_info, expand_builtin_frame_address): Likewise.
	(c_strlen): Likewise; OFFSET now HOST_WIDE_INT.
	(c_getstr): Likewise.
	(std_expand_builtin_va_arg): Use int_size_in_bytes.
	(builtin_memcpy_read_str): Avoid unsigned warning.
	(expand_builtin_memcpy): Alignments are unsigned.
	(expand_builtin_strncpy, expand_builtin_memset): Likewise.
	(expand_builtin_expect_jump): Use integer_zerop and integer_onep.
	* predict.c (expensive_function_p): LIMIT now unsigned.
	* resource.c (mark_target_live_regs): Make some vars unsigned.
	* sdbout.c: Use "unsigned int", not "unsigned".
	(MAKE_LINE_SAFE): Add cast to avoid unsigned warning.
	(sdbout_source_line): Likewise.
	(sdbout_record_type_name): Remove "const" for NAME declaration.
	* config/alpha/alpha.c (alpha_expand_block_move): Whitespace fixes.

From-SVN: r45503
This commit is contained in:
Richard Kenner 2001-09-10 10:55:20 +00:00 committed by Richard Kenner
parent 2e547b13f1
commit 5197bd5062
7 changed files with 112 additions and 80 deletions

View File

@ -1,3 +1,25 @@
Mon Sep 10 06:47:35 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* alias.c (clear_reg_alias_info): Use K&R format definition.
Avoid unsigned warning.
* builtins.c: Use "unsigned int", not "unsigned".
(target_char_cast): Use host_integerp and tree_low_cst.
(expand_builtin_args_info, expand_builtin_frame_address): Likewise.
(c_strlen): Likewise; OFFSET now HOST_WIDE_INT.
(c_getstr): Likewise.
(std_expand_builtin_va_arg): Use int_size_in_bytes.
(builtin_memcpy_read_str): Avoid unsigned warning.
(expand_builtin_memcpy): Alignments are unsigned.
(expand_builtin_strncpy, expand_builtin_memset): Likewise.
(expand_builtin_expect_jump): Use integer_zerop and integer_onep.
* predict.c (expensive_function_p): LIMIT now unsigned.
* resource.c (mark_target_live_regs): Make some vars unsigned.
* sdbout.c: Use "unsigned int", not "unsigned".
(MAKE_LINE_SAFE): Add cast to avoid unsigned warning.
(sdbout_source_line): Likewise.
(sdbout_record_type_name): Remove "const" for NAME declaration.
* config/alpha/alpha.c (alpha_expand_block_move): Whitespace fixes.
2001-09-10 Richard Sandiford <rsandifo@redhat.com>
* calls.c (store_one_arg): Expand comment.

View File

@ -966,12 +966,11 @@ record_base_value (regno, val, invariant)
changes the offset. */
void
clear_reg_alias_info (rtx reg)
clear_reg_alias_info (reg)
rtx reg;
{
int regno = REGNO (reg);
if (regno < reg_known_value_size)
reg_known_value[regno] = reg;
if (REGNO (reg) < reg_known_value_size)
reg_known_value[REGNO (reg)] = reg;
}
/* Returns a canonical version of X, from the point of view alias

View File

@ -74,7 +74,7 @@ tree built_in_decls[(int) END_BUILTINS];
tree (*lang_type_promotes_to) PARAMS ((tree));
static int get_pointer_alignment PARAMS ((tree, unsigned));
static int get_pointer_alignment PARAMS ((tree, unsigned int));
static tree c_strlen PARAMS ((tree));
static const char *c_getstr PARAMS ((tree));
static rtx c_readstr PARAMS ((const char *,
@ -150,7 +150,7 @@ static int validate_arglist PARAMS ((tree, ...));
/* Return the alignment in bits of EXP, a pointer valued expression.
But don't return more than MAX_ALIGN no matter what.
The alignment returned is, by default, the alignment of the thing that
EXP points to (if it is not a POINTER_TYPE, 0 is returned).
EXP points to. If it is not a POINTER_TYPE, 0 is returned.
Otherwise, look at the expression to see if we can do better, i.e., if the
expression is actually pointing at an object whose alignment is tighter. */
@ -158,9 +158,9 @@ static int validate_arglist PARAMS ((tree, ...));
static int
get_pointer_alignment (exp, max_align)
tree exp;
unsigned max_align;
unsigned int max_align;
{
unsigned align, inner;
unsigned int align, inner;
if (TREE_CODE (TREE_TYPE (exp)) != POINTER_TYPE)
return 0;
@ -231,7 +231,8 @@ c_strlen (src)
tree src;
{
tree offset_node;
int offset, max;
HOST_WIDE_INT offset;
int max;
const char *ptr;
src = string_constant (src, &offset_node);
@ -263,16 +264,11 @@ c_strlen (src)
}
/* We have a known offset into the string. Start searching there for
a null character. */
if (offset_node == 0)
a null character if we can represent it as a single HOST_WIDE_INT. */
if (offset_node == 0 || ! host_integerp (offset_node, 0))
offset = 0;
else
{
/* Did we get a long long offset? If so, punt. */
if (TREE_INT_CST_HIGH (offset_node) != 0)
return 0;
offset = TREE_INT_CST_LOW (offset_node);
}
offset = tree_low_cst (offset_node, 0);
/* If the offset is known to be out of bounds, warn, and call strlen at
runtime. */
@ -299,7 +295,8 @@ c_getstr (src)
tree src;
{
tree offset_node;
int offset, max;
HOST_WIDE_INT offset;
int max;
const char *ptr;
src = string_constant (src, &offset_node);
@ -309,19 +306,12 @@ c_getstr (src)
max = TREE_STRING_LENGTH (src) - 1;
ptr = TREE_STRING_POINTER (src);
if (!offset_node)
offset = 0;
else if (TREE_CODE (offset_node) != INTEGER_CST)
if (offset_node == 0 || !host_integerp (offset_node, 0))
return ptr;
offset = tree_low_cst (offset_node, 0);
if (offset < 0 || offset > max)
return 0;
else
{
/* Did we get a long long offset? If so, punt. */
if (TREE_INT_CST_HIGH (offset_node) != 0)
return 0;
offset = TREE_INT_CST_LOW (offset_node);
if (offset < 0 || offset > max)
return 0;
}
return ptr + offset;
}
@ -373,11 +363,11 @@ target_char_cast (cst, p)
{
unsigned HOST_WIDE_INT val, hostval;
if (TREE_CODE (cst) != INTEGER_CST
if (!host_integerp (cst, 1)
|| CHAR_TYPE_SIZE > HOST_BITS_PER_WIDE_INT)
return 1;
val = TREE_INT_CST_LOW (cst);
val = tree_low_cst (cst, 1);
if (CHAR_TYPE_SIZE < HOST_BITS_PER_WIDE_INT)
val &= (((unsigned HOST_WIDE_INT) 1) << CHAR_TYPE_SIZE) - 1;
@ -1014,6 +1004,7 @@ expand_builtin_apply_args_1 ()
possibly be used in performing a function call. The code is
moved to the start of the function so the incoming values are
saved. */
static rtx
expand_builtin_apply_args ()
{
@ -1265,6 +1256,7 @@ expand_builtin_return (result)
}
/* Used by expand_builtin_classify_type and fold_builtin_classify_type. */
static enum type_class
type_to_class (type)
tree type;
@ -1297,6 +1289,7 @@ type_to_class (type)
/* Expand a call to __builtin_classify_type with arguments found in
ARGLIST. */
static rtx
expand_builtin_classify_type (arglist)
tree arglist;
@ -1307,6 +1300,7 @@ expand_builtin_classify_type (arglist)
}
/* Expand expression EXP, which is a call to __builtin_constant_p. */
static rtx
expand_builtin_constant_p (exp)
tree exp;
@ -1333,6 +1327,7 @@ expand_builtin_constant_p (exp)
function in-line. EXP is the expression that is a call to the builtin
function; if convenient, the result should be placed in TARGET.
SUBTARGET may be used as the target for computing one of EXP's operands. */
static rtx
expand_builtin_mathfn (exp, target, subtarget)
tree exp;
@ -1789,13 +1784,16 @@ builtin_memcpy_read_str (data, offset, mode)
{
const char *str = (const char *) data;
if (offset + GET_MODE_SIZE (mode) > strlen (str) + 1)
if (offset < 0
|| ((unsigned HOST_WIDE_INT) offset + GET_MODE_SIZE (mode)
> strlen (str) + 1))
abort (); /* Attempt to read past the end of constant string. */
return c_readstr (str + offset, mode);
}
/* Expand a call to the memcpy builtin, with arguments in ARGLIST. */
static rtx
expand_builtin_memcpy (arglist)
tree arglist;
@ -1810,8 +1808,9 @@ expand_builtin_memcpy (arglist)
tree len = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
const char *src_str;
int src_align = get_pointer_alignment (src, BIGGEST_ALIGNMENT);
int dest_align = get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
unsigned int src_align = get_pointer_alignment (src, BIGGEST_ALIGNMENT);
unsigned int dest_align
= get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
rtx dest_mem, src_mem, dest_addr, len_rtx;
/* If either SRC or DEST is not a pointer type, don't do
@ -1953,18 +1952,19 @@ expand_builtin_strncpy (arglist, target, mode)
if (tree_int_cst_lt (slen, len))
{
tree dest = TREE_VALUE (arglist);
int dest_align = get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
unsigned int dest_align
= get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
const char *p = c_getstr (TREE_VALUE (TREE_CHAIN (arglist)));
rtx dest_mem;
if (!p || !dest_align || TREE_INT_CST_HIGH (len)
|| !can_store_by_pieces (TREE_INT_CST_LOW (len),
if (!p || dest_align == 0 || !host_integerp (len, 1)
|| !can_store_by_pieces (tree_low_cst (len, 1),
builtin_strncpy_read_str,
(PTR) p, dest_align))
return 0;
dest_mem = get_memory_rtx (dest);
store_by_pieces (dest_mem, TREE_INT_CST_LOW (len),
store_by_pieces (dest_mem, tree_low_cst (len, 1),
builtin_strncpy_read_str,
(PTR) p, dest_align);
return force_operand (XEXP (dest_mem, 0), NULL_RTX);
@ -2012,7 +2012,8 @@ expand_builtin_memset (exp)
tree len = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
char c;
int dest_align = get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
unsigned int dest_align
= get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
rtx dest_mem, dest_addr, len_rtx;
/* If DEST is not a pointer type, don't do this
@ -2028,16 +2029,16 @@ expand_builtin_memset (exp)
if (c)
{
if (TREE_CODE (len) != INTEGER_CST || TREE_INT_CST_HIGH (len))
if (!host_integerp (len, 1))
return 0;
if (current_function_check_memory_usage
|| !can_store_by_pieces (TREE_INT_CST_LOW (len),
|| !can_store_by_pieces (tree_low_cst (len, 1),
builtin_memset_read_str,
(PTR) &c, dest_align))
return 0;
dest_mem = get_memory_rtx (dest);
store_by_pieces (dest_mem, TREE_INT_CST_LOW (len),
store_by_pieces (dest_mem, tree_low_cst (len, 1),
builtin_memset_read_str,
(PTR) &c, dest_align);
return force_operand (XEXP (dest_mem, 0), NULL_RTX);
@ -2067,6 +2068,7 @@ expand_builtin_memset (exp)
/* Expand expression EXP, which is a call to the bzero builtin. Return 0
if we failed the caller should emit a normal call. */
static rtx
expand_builtin_bzero (exp)
tree exp;
@ -2098,10 +2100,12 @@ expand_builtin_bzero (exp)
}
#ifdef HAVE_cmpstrsi
/* Expand expression EXP, which is a call to the memcmp or the strcmp builtin.
ARGLIST is the argument list for this call. Return 0 if we failed and the
caller should emit a normal call, otherwise try to get the result in
TARGET, if convenient. */
static rtx
expand_builtin_memcmp (exp, arglist, target)
tree exp;
@ -2286,6 +2290,7 @@ expand_builtin_strcmp (exp, target, mode)
/* Expand expression EXP, which is a call to the strncmp builtin. Return 0
if we failed the caller should emit a normal call, otherwise try to get
the result in TARGET, if convenient. */
static rtx
expand_builtin_strncmp (exp, target, mode)
tree exp;
@ -2393,6 +2398,7 @@ expand_builtin_strncmp (exp, target, mode)
/* Expand expression EXP, which is a call to the strcat builtin.
Return 0 if we failed the caller should emit a normal call,
otherwise try to get the result in TARGET, if convenient. */
static rtx
expand_builtin_strcat (arglist, target, mode)
tree arglist;
@ -2422,6 +2428,7 @@ expand_builtin_strcat (arglist, target, mode)
/* Expand expression EXP, which is a call to the strncat builtin.
Return 0 if we failed the caller should emit a normal call,
otherwise try to get the result in TARGET, if convenient. */
static rtx
expand_builtin_strncat (arglist, target, mode)
tree arglist;
@ -2478,6 +2485,7 @@ expand_builtin_strncat (arglist, target, mode)
/* Expand expression EXP, which is a call to the strspn builtin.
Return 0 if we failed the caller should emit a normal call,
otherwise try to get the result in TARGET, if convenient. */
static rtx
expand_builtin_strspn (arglist, target, mode)
tree arglist;
@ -2518,6 +2526,7 @@ expand_builtin_strspn (arglist, target, mode)
/* Expand expression EXP, which is a call to the strcspn builtin.
Return 0 if we failed the caller should emit a normal call,
otherwise try to get the result in TARGET, if convenient. */
static rtx
expand_builtin_strcspn (arglist, target, mode)
tree arglist;
@ -2641,14 +2650,13 @@ expand_builtin_args_info (exp)
if (arglist != 0)
{
tree arg = TREE_VALUE (arglist);
if (TREE_CODE (arg) != INTEGER_CST)
if (!host_integerp (TREE_VALUE (arglist), 0))
error ("argument of `__builtin_args_info' must be constant");
else
{
int wordnum = TREE_INT_CST_LOW (arg);
HOST_WIDE_INT wordnum = tree_low_cst (TREE_VALUE (arglist), 0);
if (wordnum < 0 || wordnum >= nwords || TREE_INT_CST_HIGH (arg))
if (wordnum < 0 || wordnum >= nwords)
error ("argument of `__builtin_args_info' out of range");
else
return GEN_INT (word_ptr[wordnum]);
@ -2675,6 +2683,7 @@ expand_builtin_args_info (exp)
}
/* Expand ARGLIST, from a call to __builtin_next_arg. */
static rtx
expand_builtin_next_arg (arglist)
tree arglist;
@ -2769,6 +2778,7 @@ stabilize_va_list (valist, needs_lvalue)
/* The "standard" implementation of va_start: just assign `nextarg' to
the variable. */
void
std_expand_builtin_va_start (stdarg_p, valist, nextarg)
int stdarg_p;
@ -2798,6 +2808,7 @@ std_expand_builtin_va_start (stdarg_p, valist, nextarg)
/* Expand ARGLIST, which from a call to __builtin_stdarg_va_start or
__builtin_varargs_va_start, depending on STDARG_P. */
static rtx
expand_builtin_va_start (stdarg_p, arglist)
int stdarg_p;
@ -2847,10 +2858,8 @@ std_expand_builtin_va_arg (valist, type)
{
/* Small args are padded downward. */
HOST_WIDE_INT adj;
adj = TREE_INT_CST_LOW (TYPE_SIZE (type)) / BITS_PER_UNIT;
if (rounded_size > align)
adj = rounded_size;
HOST_WIDE_INT adj
= rounded_size > align ? rounded_size : int_size_in_bytes (type);
addr_tree = build (PLUS_EXPR, TREE_TYPE (addr_tree), addr_tree,
build_int_2 (rounded_size - adj, 0));
@ -3022,6 +3031,7 @@ expand_builtin_va_copy (arglist)
/* Expand a call to one of the builtin functions __builtin_frame_address or
__builtin_return_address. */
static rtx
expand_builtin_frame_address (exp)
tree exp;
@ -3035,8 +3045,7 @@ expand_builtin_frame_address (exp)
if (arglist == 0)
/* Warning about missing arg was already issued. */
return const0_rtx;
else if (TREE_CODE (TREE_VALUE (arglist)) != INTEGER_CST
|| tree_int_cst_sgn (TREE_VALUE (arglist)) < 0)
else if (! host_integerp (TREE_VALUE (arglist), 1))
{
if (DECL_FUNCTION_CODE (fndecl) == BUILT_IN_FRAME_ADDRESS)
error ("invalid arg to `__builtin_frame_address'");
@ -3046,9 +3055,10 @@ expand_builtin_frame_address (exp)
}
else
{
rtx tem = expand_builtin_return_addr (DECL_FUNCTION_CODE (fndecl),
TREE_INT_CST_LOW (TREE_VALUE (arglist)),
hard_frame_pointer_rtx);
rtx tem
= expand_builtin_return_addr (DECL_FUNCTION_CODE (fndecl),
tree_low_cst (TREE_VALUE (arglist), 1),
hard_frame_pointer_rtx);
/* Some ports cannot access arbitrary stack frames. */
if (tem == NULL)
@ -3264,9 +3274,7 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
/* Only handle __builtin_expect (test, 0) and
__builtin_expect (test, 1). */
if (TREE_CODE (TREE_TYPE (arg1)) == INTEGER_TYPE
&& TREE_CODE (arg1) == INTEGER_CST
&& (TREE_INT_CST_LOW (arg1) == 0 || TREE_INT_CST_LOW (arg1) == 1)
&& TREE_INT_CST_HIGH (arg1) == 0)
&& (integer_zerop (arg1) || integer_onep (arg1)))
{
int j;
int num_jumps = 0;
@ -3341,7 +3349,7 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
/* If the test is expected to fail, reverse the
probabilities. */
if (TREE_INT_CST_LOW (arg1) == 0)
if (integer_zerop (arg1))
taken = 1 - taken;
/* If we are jumping to the false label, reverse the
@ -3366,7 +3374,6 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
return ret;
}
/* Expand an expression EXP that calls a built-in function,
with result going to TARGET if that's convenient
@ -3791,6 +3798,7 @@ fold_builtin_constant_p (arglist)
}
/* Fold a call to __builtin_classify_type. */
static tree
fold_builtin_classify_type (arglist)
tree arglist;
@ -3856,6 +3864,7 @@ build_function_call_expr (fn, arglist)
represented as a tree chain of parameters against a specified list
of tree_codes. If the last specifier is a 0, that represents an
ellipses, otherwise the last specifier must be a VOID_TYPE. */
static int
validate_arglist VPARAMS ((tree arglist, ...))
{

View File

@ -3599,7 +3599,7 @@ alpha_expand_block_move (operands)
if (mode == TImode)
{
data_regs[nregs] = gen_lowpart (DImode, tmp);
data_regs[nregs+1] = gen_highpart (DImode, tmp);
data_regs[nregs + 1] = gen_highpart (DImode, tmp);
nregs += 2;
}
else
@ -3620,7 +3620,7 @@ alpha_expand_block_move (operands)
words = bytes / 8;
for (i = 0; i < words; ++i)
data_regs[nregs + i] = gen_reg_rtx(DImode);
data_regs[nregs + i] = gen_reg_rtx (DImode);
for (i = 0; i < words; ++i)
emit_move_insn (data_regs[nregs + i],
@ -3636,7 +3636,7 @@ alpha_expand_block_move (operands)
words = bytes / 4;
for (i = 0; i < words; ++i)
data_regs[nregs + i] = gen_reg_rtx(SImode);
data_regs[nregs + i] = gen_reg_rtx (SImode);
for (i = 0; i < words; ++i)
emit_move_insn (data_regs[nregs + i],
@ -3652,7 +3652,7 @@ alpha_expand_block_move (operands)
words = bytes / 8;
for (i = 0; i < words+1; ++i)
data_regs[nregs + i] = gen_reg_rtx(DImode);
data_regs[nregs + i] = gen_reg_rtx (DImode);
alpha_expand_unaligned_load_words (data_regs + nregs, orig_src,
words, ofs);

View File

@ -793,7 +793,7 @@ expensive_function_p (threshold)
{
unsigned int sum = 0;
int i;
int limit;
unsigned int limit;
/* We can not compute accurately for large thresholds due to scaled
frequencies. */

View File

@ -891,7 +891,7 @@ mark_target_live_regs (insns, target, res)
struct resources *res;
{
int b = -1;
int i;
unsigned int i;
struct target_info *tinfo = NULL;
rtx insn;
rtx jump_insn = 0;
@ -949,7 +949,8 @@ mark_target_live_regs (insns, target, res)
tinfo = (struct target_info *) xmalloc (sizeof (struct target_info));
tinfo->uid = INSN_UID (target);
tinfo->block = b;
tinfo->next = target_hash_table[INSN_UID (target) % TARGET_HASH_PRIME];
tinfo->next
= target_hash_table[INSN_UID (target) % TARGET_HASH_PRIME];
target_hash_table[INSN_UID (target) % TARGET_HASH_PRIME] = tinfo;
}
}
@ -1061,8 +1062,8 @@ mark_target_live_regs (insns, target, res)
&& GET_CODE (XEXP (link, 0)) == REG
&& REGNO (XEXP (link, 0)) < FIRST_PSEUDO_REGISTER)
{
int first_regno = REGNO (XEXP (link, 0));
int last_regno
unsigned int first_regno = REGNO (XEXP (link, 0));
unsigned int last_regno
= (first_regno
+ HARD_REGNO_NREGS (first_regno,
GET_MODE (XEXP (link, 0))));
@ -1080,8 +1081,8 @@ mark_target_live_regs (insns, target, res)
&& GET_CODE (XEXP (link, 0)) == REG
&& REGNO (XEXP (link, 0)) < FIRST_PSEUDO_REGISTER)
{
int first_regno = REGNO (XEXP (link, 0));
int last_regno
unsigned int first_regno = REGNO (XEXP (link, 0));
unsigned int last_regno
= (first_regno
+ HARD_REGNO_NREGS (first_regno,
GET_MODE (XEXP (link, 0))));

View File

@ -94,10 +94,10 @@ extern tree current_function_decl;
static void sdbout_init PARAMS ((const char *));
static void sdbout_finish PARAMS ((const char *));
static void sdbout_start_source_file PARAMS ((unsigned, const char *));
static void sdbout_end_source_file PARAMS ((unsigned));
static void sdbout_begin_block PARAMS ((unsigned, unsigned));
static void sdbout_end_block PARAMS ((unsigned, unsigned));
static void sdbout_start_source_file PARAMS ((unsigned int, const char *));
static void sdbout_end_source_file PARAMS ((unsigned int));
static void sdbout_begin_block PARAMS ((unsigned int, unsigned int));
static void sdbout_end_block PARAMS ((unsigned int, unsigned int));
static void sdbout_source_line PARAMS ((unsigned int, const char *));
static void sdbout_end_epilogue PARAMS ((void));
static void sdbout_global_decl PARAMS ((tree));
@ -263,7 +263,8 @@ do { fprintf (asm_out_file, "\t.tag\t"); \
/* Ensure we don't output a negative line number. */
#define MAKE_LINE_SAFE(line) \
if (line <= sdb_begin_function_line) line = sdb_begin_function_line + 1
if ((int) line <= sdb_begin_function_line) \
line = sdb_begin_function_line + 1
/* Perform linker optimization of merging header file definitions together
for targets with MIPS_DEBUGGING_INFO defined. This won't work without a
@ -439,7 +440,7 @@ static void
sdbout_record_type_name (type)
tree type;
{
const char *name = 0;
char *name = 0;
int no_name;
if (KNOWN_TYPE_TAG (type))
@ -1606,7 +1607,7 @@ sdbout_source_line (line, filename)
const char *filename ATTRIBUTE_UNUSED;
{
/* COFF relative line numbers must be positive. */
if (line > sdb_begin_function_line)
if ((int) line > sdb_begin_function_line)
{
#ifdef ASM_OUTPUT_SOURCE_LINE
ASM_OUTPUT_SOURCE_LINE (asm_out_file, line);