mirror of git://gcc.gnu.org/git/gcc.git
* lto-opts.c (lto_file_read_options): Add loop over all inputs.
From-SVN: r162633
This commit is contained in:
parent
d720b8692c
commit
c71eb2b76c
|
@ -1,3 +1,7 @@
|
||||||
|
2010-07-28 Andi Kleen <ak@linux.intel.com>
|
||||||
|
|
||||||
|
* lto-opts.c (lto_file_read_options): Add loop over all inputs.
|
||||||
|
|
||||||
2010-07-28 Richard Guenther <rguenther@suse.de>
|
2010-07-28 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR middle-end/44903
|
PR middle-end/44903
|
||||||
|
|
|
@ -349,8 +349,8 @@ input_options (struct lto_input_block *ib)
|
||||||
void
|
void
|
||||||
lto_read_file_options (struct lto_file_decl_data *file_data)
|
lto_read_file_options (struct lto_file_decl_data *file_data)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len, l, skip;
|
||||||
const char *data;
|
const char *data, *p;
|
||||||
const struct lto_simple_header *header;
|
const struct lto_simple_header *header;
|
||||||
int32_t opts_offset;
|
int32_t opts_offset;
|
||||||
struct lto_input_block ib;
|
struct lto_input_block ib;
|
||||||
|
@ -358,14 +358,30 @@ lto_read_file_options (struct lto_file_decl_data *file_data)
|
||||||
data = lto_get_section_data (file_data, LTO_section_opts, NULL, &len);
|
data = lto_get_section_data (file_data, LTO_section_opts, NULL, &len);
|
||||||
if (!data)
|
if (!data)
|
||||||
return;
|
return;
|
||||||
header = (const struct lto_simple_header *) data;
|
|
||||||
opts_offset = sizeof (*header);
|
|
||||||
|
|
||||||
lto_check_version (header->lto_header.major_version,
|
/* Option could be multiple sections merged (through ld -r)
|
||||||
header->lto_header.minor_version);
|
Keep reading all options. This is ok right now because
|
||||||
|
the options just get mashed together anyways.
|
||||||
|
This will have to be done differently once lto-opts knows
|
||||||
|
how to associate options with different files. */
|
||||||
|
l = len;
|
||||||
|
p = data;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
header = (const struct lto_simple_header *) p;
|
||||||
|
opts_offset = sizeof (*header);
|
||||||
|
|
||||||
LTO_INIT_INPUT_BLOCK (ib, data + opts_offset, 0, header->main_size);
|
lto_check_version (header->lto_header.major_version,
|
||||||
input_options (&ib);
|
header->lto_header.minor_version);
|
||||||
|
|
||||||
|
LTO_INIT_INPUT_BLOCK (ib, p + opts_offset, 0, header->main_size);
|
||||||
|
input_options (&ib);
|
||||||
|
|
||||||
|
skip = header->main_size + opts_offset;
|
||||||
|
l -= skip;
|
||||||
|
p += skip;
|
||||||
|
}
|
||||||
|
while (l > 0);
|
||||||
|
|
||||||
lto_free_section_data (file_data, LTO_section_opts, 0, data, len);
|
lto_free_section_data (file_data, LTO_section_opts, 0, data, len);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue