Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

vax & gcc 6.4.0



Hi folks.

-current tries to update GCC to 6.4.0.
I have been trying to resolve an ICE hit when cross-building vax.
I'm not entirely sure why it appears now, and why I get totally
different problems building gcc-trunk.

The ICE points to code that suggests the back-end is emitting
unrecognizable code. Removing roughly this chunk in builtins.md avoids
the crash, but I can't find which specific thing is wrong about it.

this mailing list has a lot of people with a stronger GCC clue than
myself, can someone see if anything is obviously wrong about it?

(the full details are at http://gnats.netbsd.org/53039
I am building with:
HAVE_GCC=6
STRIP= #defined
HOST_CXXFLAGS= -O0 -g -ggdb3
running ./build.sh -m vax tools
then using the g++ in the toolsdir to build this file:
http://coypu.sdf.org/test.cc
)

sync_lock_test_and_set<mode> in builtins.md, removing it will avoid the
ICE:



(define_expand "sync_lock_test_and_set<mode>"
  [(set (match_operand:VAXint 0 "nonimmediate_operand" "=&g")
	(unspec:VAXint [(match_operand:VAXint 1 "memory_operand" "+m")
		    (match_operand:VAXint 2 "const_int_operand" "n")
		   ] VUNSPEC_LOCK))]
  ""
  "
{
  rtx label;

  if (operands[2] != const1_rtx)
    FAIL;

  label = gen_label_rtx ();
  emit_move_insn (operands[0], const1_rtx);
  emit_jump_insn (gen_jbbssi<mode> (operands[1], const0_rtx, label, operands[1]));
  emit_move_insn (operands[0], const0_rtx);
  emit_label (label);
  DONE;
}")

(define_insn "jbbssisi"
  [(parallel
    [(set (pc)
	  (if_then_else
	    (ne (zero_extract:SI (match_operand:SI 0 "memory_operand" "Q")
				 (const_int 1)
				 (match_operand:SI 1 "general_operand" "nrm"))
		(const_int 0))
	    (label_ref (match_operand 2 "" ""))
	    (pc)))
     (set (zero_extract:SI (match_operand:SI 3 "memory_operand" "+0")
			   (const_int 1)
			   (match_dup 1))
	  (const_int 1))])]
  ""
  "jbssi %1,%0,%l2")


Home | Main Index | Thread Index | Old Index