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