diff options
author | Jan Hubicka <jh@suse.cz> | 2003-04-24 17:53:22 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-04-24 15:53:22 +0000 |
commit | 26f74aa3f74d5efd8cd37bfe3700f16f400189c1 (patch) | |
tree | 42dda3f08919effac46e44408e208494d0509e12 /gcc/cfgbuild.c | |
parent | 796621e8c274bfce5c7f3f1d23126267b91f102f (diff) | |
download | gcc-26f74aa3f74d5efd8cd37bfe3700f16f400189c1.zip gcc-26f74aa3f74d5efd8cd37bfe3700f16f400189c1.tar.gz gcc-26f74aa3f74d5efd8cd37bfe3700f16f400189c1.tar.bz2 |
re PR c/10308 ([x86] ICE with -O -fgcse or -O2)
* cfgbuild.c (make_edges): Do not use next_nonnote_insn when
looking for fallthru edge.
* athlon.md (athlon-agu, athlon-store, athlon-fany, athlon-faddmul):
Fix.
(athlon-load2, athlon-store2, athlon-fpsched, athlon-fpload,
athlon-fvector): New.
(athlon_*): Revisit to match new optimization guide.
* i386.c (ix86_adjust_cost): Fix memory operand costs on Athlon/k8
* i386.md (cvt??2?? patterns): Fix modes.
(fistp patterns): Set modes.
Accidentaly commited with my earlier reload patch:
PR c/10308
* reload.c (find_reloads_address_1): Reload plus at the place of
index register.
From-SVN: r66037
Diffstat (limited to 'gcc/cfgbuild.c')
-rw-r--r-- | gcc/cfgbuild.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c index 889ae9d..69fcc15 100644 --- a/gcc/cfgbuild.c +++ b/gcc/cfgbuild.c @@ -439,15 +439,17 @@ make_edges (label_value_list, min, max, update_p) } /* Find out if we can drop through to the next block. */ - insn = next_nonnote_insn (insn); + insn = NEXT_INSN (insn); + while (insn + && GET_CODE (insn) == NOTE + && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BASIC_BLOCK) + insn = NEXT_INSN (insn); + if (!insn || (bb->next_bb == EXIT_BLOCK_PTR && force_fallthru)) cached_make_edge (edge_cache, bb, EXIT_BLOCK_PTR, EDGE_FALLTHRU); else if (bb->next_bb != EXIT_BLOCK_PTR) { - rtx tmp = bb->next_bb->head; - if (GET_CODE (tmp) == NOTE) - tmp = next_nonnote_insn (tmp); - if (force_fallthru || insn == tmp) + if (force_fallthru || insn == bb->next_bb->head) cached_make_edge (edge_cache, bb, bb->next_bb, EDGE_FALLTHRU); } } |