Hi, java bootstrap currently fails on s390 with:
/build3/gcc-head/libjava/classpath/javax/swing/plaf/basic/BasicLookAndFeel.java:1649:0: internal compiler error: in dwarf2out_var_location, at dwarf2out.c:21972 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. The problem is that a literal pool split happens just between a call insn and the NOTE_INSN_CALL_ARG_LOCATION following it. dwarf2out currently expects the call insn to be found just one insn before. The attached patch makes sure that we never split at such a location. With the patch java bootstrap gets a bit further and then fails due to delegitimize_address still returning UNSPECs :( but that's a different story. Committed to mainline. Bye, -Andreas- 2011-03-18 Andreas Krebbel <andreas.kreb...@de.ibm.com> * config/s390/s390.c (s390_chunkify_start): Prevent literal pool splitting between a call and its corresponding CALL_ARG_LOCATION note. Index: gcc/config/s390/s390.c =================================================================== *** gcc/config/s390/s390.c.orig --- gcc/config/s390/s390.c *************** s390_chunkify_start (void) *** 6651,6657 **** s390_add_execute (curr_pool, insn); s390_add_pool_insn (curr_pool, insn); } ! else if (GET_CODE (insn) == INSN || GET_CODE (insn) == CALL_INSN) { rtx pool_ref = NULL_RTX; find_constant_pool_ref (PATTERN (insn), &pool_ref); --- 6651,6657 ---- s390_add_execute (curr_pool, insn); s390_add_pool_insn (curr_pool, insn); } ! else if (GET_CODE (insn) == INSN || CALL_P (insn)) { rtx pool_ref = NULL_RTX; find_constant_pool_ref (PATTERN (insn), &pool_ref); *************** s390_chunkify_start (void) *** 6676,6681 **** --- 6676,6690 ---- pending_ltrel = pool_ref; } } + /* Make sure we do not split between a call and its + corresponding CALL_ARG_LOCATION note. */ + if (CALL_P (insn)) + { + rtx next = NEXT_INSN (insn); + if (next && NOTE_P (next) + && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION) + continue; + } } if (GET_CODE (insn) == JUMP_INSN || GET_CODE (insn) == CODE_LABEL)