This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: sh fixup_addr_diff_vecs patch


>>>>> "Joern" == Joern Rennecke <amylaar@redhat.com> writes:

 >> I've found a case where cse and jump optimization is changing:
 >> 
 >> (jump_insn 178 177 179 (parallel[ 
 >> (set (pc)
 >> (plus:SI (reg:SI 97)
 >> (label_ref 0)))
 >> (use (label_ref 180))
 >> ] ) -1 (nil)
 >> (nil))
 >> 
 >> into:
 >> 
 >> (jump_insn 178 218 179 (set (pc)
 >> (label_ref 155)) -1 (insn_list 218 (nil))
 >> (expr_list:REG_DEAD (reg:SI 1 r1)
 >> (nil)))

 > Shouldn't jump then delete the ADDR_DIFF_VEC too?

Yeah, in theory.  I haven't looked into why it wasn't deleting it
though.  But I think the patch should go in, to make sure that if the
casesi2 instruction isn't there, the compiler doesn't die.

I ran across this bug in an old toolchain, so recent snapshots of gcc
probably delete the ADDR_DIFF_VEC.

But the patch doesn't hurt... :)

Aldy

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]