cfglayout.c (insn_locators_initialize): Update the current location before initializing a location.

* cfglayout.c (insn_locators_initialize): Update the current
	location before initializing a location.

From-SVN: r85554
This commit is contained in:
Nathan Sidwell 2004-08-04 11:30:31 +00:00 committed by Nathan Sidwell
parent 545eacdb41
commit 2496942a61
2 changed files with 41 additions and 31 deletions

View File

@ -1,3 +1,8 @@
2004-08-04 Nathan Sidwell <nathan@codesourcery.com>
* cfglayout.c (insn_locators_initialize): Update the current
location before initializing a location.
2004-08-03 Zack Weinberg <zack@codesourcery.com>
* dbxout.c (dbxout_function_decl): Always call dbxout_function_end.

View File

@ -267,12 +267,38 @@ insn_locators_initialize (void)
for (insn = get_insns (); insn; insn = next)
{
int active = 0;
next = NEXT_INSN (insn);
if ((active_insn_p (insn)
&& GET_CODE (PATTERN (insn)) != ADDR_VEC
&& GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC)
|| !NEXT_INSN (insn)
if (NOTE_P (insn))
{
switch (NOTE_LINE_NUMBER (insn))
{
case NOTE_INSN_BLOCK_BEG:
case NOTE_INSN_BLOCK_END:
abort ();
default:
if (NOTE_LINE_NUMBER (insn) > 0)
{
expanded_location xloc;
NOTE_EXPANDED_LOCATION (xloc, insn);
line_number = xloc.line;
file_name = xloc.file;
}
break;
}
}
else
active = (active_insn_p (insn)
&& GET_CODE (PATTERN (insn)) != ADDR_VEC
&& GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC);
check_block_change (insn, &block);
if (active
|| !next
|| (!prologue_locator && file_name))
{
if (last_block != block)
@ -296,34 +322,13 @@ insn_locators_initialize (void)
VARRAY_PUSH_CHAR_PTR (file_locators_files, (char *) file_name);
last_file_name = file_name;
}
if (!prologue_locator && file_name)
prologue_locator = loc;
if (!next)
epilogue_locator = loc;
if (active)
INSN_LOCATOR (insn) = loc;
}
if (!prologue_locator && file_name)
prologue_locator = loc;
if (!NEXT_INSN (insn))
epilogue_locator = loc;
if (active_insn_p (insn))
INSN_LOCATOR (insn) = loc;
else if (NOTE_P (insn))
{
switch (NOTE_LINE_NUMBER (insn))
{
case NOTE_INSN_BLOCK_BEG:
case NOTE_INSN_BLOCK_END:
abort ();
default:
if (NOTE_LINE_NUMBER (insn) > 0)
{
expanded_location xloc;
NOTE_EXPANDED_LOCATION (xloc, insn);
line_number = xloc.line;
file_name = xloc.file;
}
break;
}
}
check_block_change (insn, &block);
}
/* Tag the blocks with a depth number so that change_scope can find