This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/32636] [4.3 Regression] 25_algorithms/search_n/iterator.cc: miscompiled on hppa2.0w-hp-hpux11.11
- From: "jakub at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Dec 2007 15:07:34 -0000
- Subject: [Bug rtl-optimization/32636] [4.3 Regression] 25_algorithms/search_n/iterator.cc: miscompiled on hppa2.0w-hp-hpux11.11
- References: <bug-32636-507@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #30 from jakub at gcc dot gnu dot org 2007-12-11 15:07 -------
mark_target_live_regs doesn't recognize %r28 as live on the fallthrough insn
after the branch. There are no BARRIER insns before that fallthrough insn (the
jump is conditional and there are no unconditional jumps before that), so
find_basic_block gives b == 2, i.e. ENTRY successor. Basic block has:
;; basic block 2, loop depth 0, count 0
;; prev block 0, next block 3
;; pred: ENTRY [100.0%] (fallthru)
;; succ: 24 [26.7%] (can_fallthru) 3 [73.3%] (fallthru,can_fallthru)
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u-1(30){ }}
;; lr in 2 [%r2] 3 [%r3] 4 [%r4] 5 [%r5] 6 [%r6] 7 [%r7] 8 [%r8] 9
[%r9] 10 [%r10] 11 [%r11] 12 [%r12] 23 [%r23] 24 [%r24] 25 [%r25] 26 [%r26] 28
[%r28] 30 [%r30]
;; lr use 2 [%r2] 3 [%r3] 4 [%r4] 5 [%r5] 6 [%r6] 7 [%r7] 8 [%r8] 9
[%r9] 10 [%r10] 11 [%r11] 12 [%r12] 23 [%r23] 24 [%r24] 25 [%r25] 26 [%r26] 28
[%r28] 30 [%r30]
;; lr def 3 [%r3] 5 [%r5] 6 [%r6] 7 [%r7] 8 [%r8] 30 [%r30]
;; live in 2 [%r2] 3 [%r3] 4 [%r4] 5 [%r5] 6 [%r6] 7 [%r7] 8 [%r8] 9
[%r9] 10 [%r10] 11 [%r11] 12 [%r12] 23 [%r23] 24 [%r24] 25 [%r25] 26 [%r26]
;; live gen 3 [%r3] 5 [%r5] 6 [%r6] 7 [%r7] 8 [%r8] 30 [%r30]
;; live kill
In reality %r28 is live from the caller and used (multiple times) throughout
the function, but it is not among df_get_live_in (BASIC_BLOCK (2)), but e.g. in
lr in. CCing dataflow maintainers if they have ideas what's wrong here.
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |zadeck at gcc dot gnu dot
| |org, spark at gcc dot gnu
| |dot org, bonzini at gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32636