Port-vax archive

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

Re: Native build failure...



On Jul 26, 2010, at 3:03 PM, Michael L. Hitch wrote:

> On Mon, 26 Jul 2010, Johnny Billquist wrote:
> 
>> Interesting. And that might be relevant...
>> 
>> Anyway, after some more fiddling, I managed to get gdb to give a lot more 
>> useful information...
> ...
>> #0  update_file (file=0x7f44b6a0, depth=18, 2135209632, 18)
>>   at /usr/src/tools/gmake/../../gnu/dist/gmake/remake.c:464
>> 464           if (! d->ignore_mtime)
> 
>  That looks rather familiar :)
>  It should correspond to the blbs instruction.
> 
>> (gdb) print/x $r6
>> $2 = 0x7f5ffff0
> 
>  And that would look like an address at the end of a page, with the 
> likelyhood that 0x7f600000 is not allocated.
> 
>> Anything else I can do that will help?
> 
>  I'm fairly sure that the workaround I had in the message I posted last year 
> would still work.
> 
>  According to that rather vague memory of mine, I think that Matt had sent me 
> a fix for this, but I've had trouble finding it.  I did find the following 
> change that I had on one of my build systems that looks like it's probably 
> the fix.  You could try it and see.
> 
> 
> 
> Index: gnu/dist/gcc4/gcc/config/vax/vax.md
> ===================================================================
> RCS file: /cvsroot/src/gnu/dist/gcc4/gcc/config/vax/vax.md,v
> retrieving revision 1.12
> diff -u -p -r1.12 vax.md
> --- gnu/dist/gcc4/gcc/config/vax/vax.md       20 Apr 2007 16:30:32 -0000      
> 1.12
> +++ gnu/dist/gcc4/gcc/config/vax/vax.md       26 Jul 2010 22:02:24 -0000
> @@ -1129,6 +1129,30 @@
> (define_insn ""
>   [(set (pc)
>       (if_then_else
> +      (ne (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q")
> +                           (const_int 1)
> +                           (const_int 0))
> +          (const_int 0))
> +      (label_ref (match_operand 1 "" ""))
> +      (pc)))]
> +  "REG_P (XEXP (operands[0], 0)) || MEM_P (XEXP (operands[0], 0))"
> +  "jlbs %0,%l1")
> +
> +(define_insn ""
> +  [(set (pc)
> +     (if_then_else
> +      (eq (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q")
> +                           (const_int 1)
> +                           (const_int 0))
> +          (const_int 0))
> +      (label_ref (match_operand 1 "" ""))
> +      (pc)))]
> +  "REG_P (XEXP (operands[0], 0)) || MEM_P (XEXP (operands[0], 0))"
> +  "jlbc %0,%l1")
> +
> +(define_insn ""
> +  [(set (pc)
> +     (if_then_else
>        (ne (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q,g")
>                             (const_int 1)
>                             (match_operand:SI 1 "general_operand" "I,nrmT"))
> @@ -1136,9 +1160,26 @@
>        (label_ref (match_operand 2 "" ""))
>        (pc)))]
>   ""
> -  "@
> -   jlbs %0,%l2
> -   jbs %1,%0,%l2")
> +  "*
> +{
> +  if (which_alternative == 0
> +      && MEM_P (operands[0])
> +      && GET_CODE (XEXP (operands[0], 0)) == PLUS
> +      && REG_P (XEXP (XEXP (operands[0], 0), 0))
> +      && CONST_INT_P (XEXP (XEXP (operands[0], 0), 1))
> +      && (INTVAL (XEXP (XEXP (operands[0], 0), 1)) >> 2) == 0)
> +    {
> +      HOST_WIDE_INT o = INTVAL (XEXP (XEXP (operands[0], 0), 1));
> +
> +      if (o == 0)
> +     return \"jlbs %0,%l2\";
> +
> +      operands[0] = gen_rtx_MEM (QImode, XEXP (XEXP (operands[0], 0), 0));
> +      operands[1] = GEN_INT (o % 4 * 8);
> +    }
> +
> +  return \"jbs %1,%0,%l2\";
> +}")
> 
> (define_insn ""
>   [(set (pc)
> @@ -1150,9 +1191,26 @@
>        (label_ref (match_operand 2 "" ""))
>        (pc)))]
>   ""
> -  "@
> -   jlbc %0,%l2
> -   jbc %1,%0,%l2")
> +  "*
> +{
> +  if (which_alternative == 0
> +      && MEM_P (operands[0])
> +      && GET_CODE (XEXP (operands[0], 0)) == PLUS
> +      && REG_P (XEXP (XEXP (operands[0], 0), 0))
> +      && CONST_INT_P (XEXP (XEXP (operands[0], 0), 1))
> +      && (INTVAL (XEXP (XEXP (operands[0], 0), 1)) >> 2) == 0)
> +    {
> +      HOST_WIDE_INT o = INTVAL (XEXP (XEXP (operands[0], 0), 1));
> +
> +      if (o % 4 == 0)
> +     return \"jlbc %0,%l2\";
> +
> +      operands[0] = gen_rtx_MEM (QImode, XEXP (XEXP (operands[0], 0), 0));
> +      operands[1] = GEN_INT (o % 4 * 8);
> +    }
> +
> +  return \"jbc %1,%0,%l2\";
> +}")
> 
> (define_insn ""
>   [(set (pc)

That's overkill.  I committed a much more reasonable (and smaller) fix.  


Home | Main Index | Thread Index | Old Index