[Bug target/58426] vax fails to compile gcov.c in stage1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58426 --- Comment #1 from Martin Husemann --- The error happens here: #1 0x002d15ca in output_addr_const (file=0x7f5b79c8, x=0x7f10a250, 2136701384, 2131796560) at ../../gcc-4.8.1/gcc/final.c:3877 #2 0x002d1466 in output_addr_const (file=0x7f5b79c8, x=0x7ecb52a0, 2136701384, 2127254176) at ../../gcc-4.8.1/gcc/final.c:3837 #3 0x00762eb4 in print_operand (file=0x7f5b79c8, x=0x7ecb52a0, code=0, 2136701384, 2127254176, 0) at ../../gcc-4.8.1/gcc/config/vax/vax.c:557 #4 0x00520a05 in default_print_operand (stream=0x7f5b79c8, x=0x7ecb52a0, code=0, 2136701384, 2127254176, 0) at ../../gcc-4.8.1/gcc/targhooks.c:327 #5 0x002d1a04 in output_operand (x=0x7ecb52a0, code=0, 2127254176, 0) at ../../gcc-4.8.1/gcc/final.c:3735 #6 0x002d1dcb in output_asm_insn (templ=0x9245a0 "addl3 %1,%2,%0", operands=0xc7fee0, 9586080, 13106912) at ../../gcc-4.8.1/gcc/final.c:3633 #7 0x002d45b1 in final_scan_insn (insn=0x7ec4ce58, file=0x7f5b79c8, optimize_p=1, nopeepholes=0, seen=0x7fffe438, 2126827096, 2136701384, 1, 0, 2147476536) at ../../gcc-4.8.1/gcc/final.c:2931 #8 0x002d4a08 in final (first=0x7ec2d9c0, file=0x7f5b79c8, optimize_p=1, 2126698944, 2136701384, 1) at ../../gcc-4.8.1/gcc/final.c:1967 and the expression passed by vax.c to output_addr_const() is: $3 = {code = PLUS, mode = SImode, jump = 0, call = 0, unchanging = 0, volatil = 0, in_struct = 0, used = 0, frame_related = 0, return_val = 0, u = {fld = {{rt_int = 2131796560, rt_uint = 2131796560, rt_str = 0x7f10a250 "&", rt_rtx = 0x7f10a250, rt_rtvec = 0x7f10a250, rt_type = 2131796560, rt_addr_diff_vec_flags = {min_align = 80, base_after_vec = 0, min_after_vec = 1, max_after_vec = 0, min_after_base = 0, max_after_base = 0, offset_unsigned = 1, scale = 16}, rt_cselib = 0x7f10a250, rt_tree = 0x7f10a250, rt_bb = 0x7f10a250, rt_mem = 0x7f10a250, rt_reg = 0x7f10a250, rt_constant = 0x7f10a250, rt_cfi = 0x7f10a250}}, hwint = {2131796560}, block_sym = {fld = {{rt_int = 2131796560, rt_uint = 2131796560, rt_str = 0x7f10a250 "&", rt_rtx = 0x7f10a250, rt_rtvec = 0x7f10a250, rt_type = 2131796560, rt_addr_diff_vec_flags = {min_align = 80, base_after_vec = 0, min_after_vec = 1, max_after_vec = 0, min_after_base = 0, max_after_base = 0, offset_unsigned = 1, scale = 16}, rt_cselib = 0x7f10a250, rt_tree = 0x7f10a250, rt_bb = 0x7f10a250, rt_mem = 0x7f10a250, rt_reg = 0x7f10a250, rt_constant = 0x7f10a250, rt_cfi = 0x7f10a250}, { rt_int = 2126996200, rt_uint = 2126996200, rt_str = 0x7ec762e8 "\037", rt_rtx = 0x7ec762e8, rt_rtvec = 0x7ec762e8, rt_type = 2126996200, rt_addr_diff_vec_flags = {min_align = 232, base_after_vec = 0, min_after_vec = 1, max_after_vec = 0, min_after_base = 0, max_after_base = 0, offset_unsigned = 1, scale = 199}, rt_cselib = 0x7ec762e8, rt_tree = 0x7ec762e8, rt_bb = 0x7ec762e8, rt_mem = 0x7ec762e8, rt_reg = 0x7ec762e8, rt_constant = 0x7ec762e8, rt_cfi = 0x7ec762e8}, {rt_int = 393266, rt_uint = 393266, rt_str = 0x60032 "ded_initEjj", rt_rtx = 0x60032, rt_rtvec = 0x60032, rt_type = 393266, rt_addr_diff_vec_flags = { min_align = 50, base_after_vec = 0, min_after_vec = 0, max_after_vec = 0, min_after_base = 0, max_after_base = 0, offset_unsigned = 0, scale = 6}, rt_cselib = 0x60032, rt_tree = 0x60032, rt_bb = 0x60032, rt_mem = 0x60032, rt_reg = 0x60032, rt_constant = 0x60032, rt_cfi = 0x60032}}, block = 0x7f10a250, offset = 2126996200}, rv = {cl = 0, decimal = 0, sign = 0, signalling = 1, canonical = 0, uexp = 33309321, sig = { 2126996200, 393266, 2131796560, 2126996200, 23}}, fv = {data = { low = 2131796560, high = 2126996200}, mode = 393266}}}
[Bug target/58426] vax fails to compile gcov.c in stage1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58426 --- Comment #2 from Martin Husemann --- The more interesting XEXP(x, 0) of that rtx is the one triggering the failure: $15 = {code = REG, mode = SImode, jump = 0, call = 0, unchanging = 0, volatil = 0, in_struct = 0, used = 0, frame_related = 1, return_val = 0, u = {fld = {{rt_int = 13, rt_uint = 13, rt_str = 0xd , rt_rtx = 0xd, rt_rtvec = 0xd, rt_type = TQmode, rt_addr_diff_vec_flags = { min_align = 13, base_after_vec = 0, min_after_vec = 0, max_after_vec = 0, min_after_base = 0, max_after_base = 0, offset_unsigned = 0, scale = 0}, rt_cselib = 0xd, rt_tree = 0xd, rt_bb = 0xd, rt_mem = 0xd, rt_reg = 0xd, rt_constant = 0xd, rt_cfi = 0xd}}, hwint = {13}, block_sym = {fld = {{rt_int = 13, rt_uint = 13, rt_str = 0xd , rt_rtx = 0xd, rt_rtvec = 0xd, rt_type = TQmode, rt_addr_diff_vec_flags = {min_align = 13, base_after_vec = 0, min_after_vec = 0, max_after_vec = 0, min_after_base = 0, max_after_base = 0, offset_unsigned = 0, scale = 0}, rt_cselib = 0xd, rt_tree = 0xd, rt_bb = 0xd, rt_mem = 0xd, rt_reg = 0xd, rt_constant = 0xd, rt_cfi = 0xd}, {rt_int = 13, rt_uint = 13, rt_str = 0xd , rt_rtx = 0xd, rt_rtvec = 0xd, rt_type = TQmode, rt_addr_diff_vec_flags = {min_align = 13, base_after_vec = 0, min_after_vec = 0, max_after_vec = 0, min_after_base = 0, max_after_base = 0, offset_unsigned = 0, scale = 0}, rt_cselib = 0xd, rt_tree = 0xd, rt_bb = 0xd, rt_mem = 0xd, rt_reg = 0xd, rt_constant = 0xd, rt_cfi = 0xd}, {rt_int = 0, rt_uint = 0, rt_str = 0x0, rt_rtx = 0x0, rt_rtvec = 0x0, rt_type = VOIDmode, rt_addr_diff_vec_flags = {min_align = 0, base_after_vec = 0, min_after_vec = 0, max_after_vec = 0, min_after_base = 0, max_after_base = 0, offset_unsigned = 0, scale = 0}, rt_cselib = 0x0, rt_tree = 0x0, rt_bb = 0x0, rt_mem = 0x0, rt_reg = 0x0, rt_constant = 0x0, rt_cfi = 0x0}}, block = 0x40060026, offset = 12}, rv = {cl = 1, decimal = 1, sign = 1, signalling = 0, canonical = 0, uexp = 0, sig = {13, 0, 1074135078, 12, 12}}, fv = {data = {low = 13, high = 13}, mode = VOIDmode}}}
[Bug target/58426] vax fails to compile gcov.c in stage1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58426 --- Comment #3 from Jan-Benedict Glaw --- Hm, the initial PLUS part looks a bit like what I ment to fix with a recent patch. How old is your checkout? My fix was committed as r202600 / git:3719e41cf6b9d. So I hope I didn't break something else. (This showed up in GIT at Sun Sep 15 09:44:29 2013 +.) For reference: http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=3719e41cf6b9d447d8e8e2971d6a459bc41853b2 --- a/gcc/config/vax/constraints.md +++ b/gcc/config/vax/constraints.md @@ -114,5 +114,6 @@ (define_constraint "T" "@internal satisfies CONSTANT_P and, if pic is enabled, is not a SYMBOL_REF, LABEL_REF, or CONST." - (ior (not (match_code "const,symbol_ref,label_ref")) - (match_test "!flag_pic"))) + (and (match_test ("CONSTANT_P (op)")) + (ior (not (match_code "symbol_ref,label_ref,const")) + (match_test "!flag_pic" As you seem to use 4.8.1, your GCC is older than my commit, so I think backporting this patch would probably cure your problem. Give it a try!
[Bug target/58426] vax fails to compile gcov.c in stage1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58426 Eric Botcazou changed: What|Removed |Added CC||ebotcazou at gcc dot gnu.org --- Comment #4 from Eric Botcazou --- Use p debug_rtx(...) from within GDB instead of raw dumping RTXes...
[Bug target/58426] vax fails to compile gcov.c in stage1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58426 Martin Husemann changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #5 from Martin Husemann --- > As you seem to use 4.8.1, your GCC is older than my commit, so I think > backporting this patch would probably cure your problem. Give it a try! Yes, I was using stock 4.8.1. And indeed this change seems to fix it. Thanks!