IPA passes are bigger than other passes...
IPA passes are bigger than other passes, so more memory needs to be allocated for them (and more copied) in make_pass_instance. From-SVN: r155161
This commit is contained in:
parent
9cf10655bb
commit
63a00e0d91
@ -1,3 +1,8 @@
|
||||
2009-12-11 Duncan Sands <baldrick@free.fr>
|
||||
|
||||
* passes.c (make_pass_instance): Allocate and copy the right amount of
|
||||
memory for ipa passes, which are not the same size as other passes.
|
||||
|
||||
2009-12-11 Joern Rennecke <amylaar@spamcop.net>
|
||||
|
||||
* plugin.c (get_named_event_id): Fix hash table rebuild to include
|
||||
|
17
gcc/passes.c
17
gcc/passes.c
@ -460,8 +460,21 @@ make_pass_instance (struct opt_pass *pass, bool track_duplicates)
|
||||
{
|
||||
struct opt_pass *new_pass;
|
||||
|
||||
new_pass = XNEW (struct opt_pass);
|
||||
memcpy (new_pass, pass, sizeof (*new_pass));
|
||||
if (pass->type == GIMPLE_PASS
|
||||
|| pass->type == RTL_PASS
|
||||
|| pass->type == SIMPLE_IPA_PASS)
|
||||
{
|
||||
new_pass = XNEW (struct opt_pass);
|
||||
memcpy (new_pass, pass, sizeof (struct opt_pass));
|
||||
}
|
||||
else if (pass->type == IPA_PASS)
|
||||
{
|
||||
new_pass = (struct opt_pass *)XNEW (struct ipa_opt_pass_d);
|
||||
memcpy (new_pass, pass, sizeof (struct ipa_opt_pass_d));
|
||||
}
|
||||
else
|
||||
gcc_unreachable ();
|
||||
|
||||
new_pass->next = NULL;
|
||||
|
||||
new_pass->todo_flags_start &= ~TODO_mark_first_instance;
|
||||
|
Loading…
Reference in New Issue
Block a user