public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: target/5054: [ARM/Thumb] ICE with -mlong-calls
@ 2002-01-22  4:46 Phil Blundell
  0 siblings, 0 replies; 6+ messages in thread
From: Phil Blundell @ 2002-01-22  4:46 UTC (permalink / raw)
  To: pb; +Cc: gcc-prs

The following reply was made to PR target/5054; it has been noted by GNATS.

From: Phil Blundell <pb@nexus.co.uk>
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: target/5054: [ARM/Thumb] ICE with -mlong-calls
Date: 22 Jan 2002 12:44:13 +0000

 On Tue, 2002-01-22 at 12:09, Richard Earnshaw wrote:
 > >  Note that it checks operands[2], which is the "call type" cookie.  This
 > >  gets set to const1_rtx when -mlong-calls is in effect.  The expectation
 > >  seems to be that the define_expand "call" will transform this into a
 > >  register-based call, but this is inhibited within arm_is_longcall_p for
 > >  functions defined elsewhere in the current compilation unit.
 > 
 > The ARM variant uses arm_is_longcall_p in the predicate rather than 
 > directly testing the type cookie.  I suspect the thumb variants should be 
 > doing the same.
 
 Mmm, right.  A bit like this, then.
 
 p.
 
 Index: arm.md
 ===================================================================
 RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.md,v
 retrieving revision 1.80.2.1
 diff -c -r1.80.2.1 arm.md
 *** arm.md	2001/05/18 12:45:22	1.80.2.1
 --- arm.md	2002/01/22 12:39:01
 ***************
 *** 6656,6662 ****
      (use (match_operand 2 "" ""))
      (clobber (reg:SI LR_REGNUM))]
     "TARGET_THUMB
 !    && operands[2] == const0_rtx && (GET_CODE (operands[0]) == SYMBOL_REF)"
     "bl\\t%a0"
     [(set_attr "length" "4")
      (set_attr "type" "call")]
 --- 6656,6663 ----
      (use (match_operand 2 "" ""))
      (clobber (reg:SI LR_REGNUM))]
     "TARGET_THUMB
 !    && GET_CODE (operands[0]) == SYMBOL_REF
 !    && !arm_is_longcall_p (operands[0], INTVAL (operands[2]), 1)"
     "bl\\t%a0"
     [(set_attr "length" "4")
      (set_attr "type" "call")]
 ***************
 *** 6669,6675 ****
      (use (match_operand 3 "" ""))
      (clobber (reg:SI LR_REGNUM))]
     "TARGET_THUMB
 !    && operands[3] == const0_rtx && (GET_CODE (operands[1]) == SYMBOL_REF)"
     "bl\\t%a1"
     [(set_attr "length" "4")
      (set_attr "type" "call")]
 --- 6670,6677 ----
      (use (match_operand 3 "" ""))
      (clobber (reg:SI LR_REGNUM))]
     "TARGET_THUMB
 !    && GET_CODE (operands[1]) == SYMBOL_REF
 !    && !arm_is_longcall_p (operands[1], INTVAL (operands[3]), 1)"
     "bl\\t%a1"
     [(set_attr "length" "4")
      (set_attr "type" "call")]
 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: target/5054: [ARM/Thumb] ICE with -mlong-calls
@ 2002-03-15  3:44 pb
  0 siblings, 0 replies; 6+ messages in thread
From: pb @ 2002-03-15  3:44 UTC (permalink / raw)
  To: fenix, gcc-bugs, gcc-prs, msinilo, pb

Synopsis: [ARM/Thumb] ICE with -mlong-calls

State-Changed-From-To: feedback->closed
State-Changed-By: pb
State-Changed-When: Fri Mar 15 03:44:41 2002
State-Changed-Why:
    Feedback not forthcoming

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=5054


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: target/5054: [ARM/Thumb] ICE with -mlong-calls
@ 2002-02-19 14:26 pb
  0 siblings, 0 replies; 6+ messages in thread
From: pb @ 2002-02-19 14:26 UTC (permalink / raw)
  To: fenix, gcc-bugs, gcc-prs, msinilo, pb

Synopsis: [ARM/Thumb] ICE with -mlong-calls

State-Changed-From-To: analyzed->feedback
State-Changed-By: pb
State-Changed-When: Tue Feb 19 14:24:48 2002
State-Changed-Why:
    Fixed in CVS HEAD

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=5054


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: target/5054: [ARM/Thumb] ICE with -mlong-calls
@ 2002-01-22  4:46 Richard Earnshaw
  0 siblings, 0 replies; 6+ messages in thread
From: Richard Earnshaw @ 2002-01-22  4:46 UTC (permalink / raw)
  To: pb; +Cc: gcc-prs

The following reply was made to PR target/5054; it has been noted by GNATS.

From: Richard Earnshaw <rearnsha@arm.com>
To: Phil Blundell <pb@nexus.co.uk>
Cc: Richard.Earnshaw@arm.com, gcc-gnats@gcc.gnu.org
Subject: Re: target/5054: [ARM/Thumb] ICE with -mlong-calls 
Date: Tue, 22 Jan 2002 12:44:06 +0000

 > > The ARM variant uses arm_is_longcall_p in the predicate rather than 
 > > directly testing the type cookie.  I suspect the thumb variants should be 
 > > doing the same.
 > 
 > Mmm, right.  A bit like this, then.
 
 
 Indeed.
 
 OK, assuming it solves the problem in question.
 
 R.
 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: target/5054: [ARM/Thumb] ICE with -mlong-calls
@ 2002-01-22  2:56 Phil Blundell
  0 siblings, 0 replies; 6+ messages in thread
From: Phil Blundell @ 2002-01-22  2:56 UTC (permalink / raw)
  To: pb; +Cc: gcc-prs

The following reply was made to PR target/5054; it has been noted by GNATS.

From: Phil Blundell <pb@nexus.co.uk>
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: target/5054: [ARM/Thumb] ICE with -mlong-calls
Date: 22 Jan 2002 10:50:09 +0000

 The problem here seems to be this Thumb pattern:
 
 (define_insn "*call_insn"
   [(call (mem:SI (match_operand:SI 0 "" "X"))
 	 (match_operand:SI 1 "" ""))
    (use (match_operand 2 "" ""))
    (clobber (reg:SI LR_REGNUM))]
   "TARGET_THUMB
    && operands[2] == const0_rtx && (GET_CODE (operands[0]) ==
 SYMBOL_REF)"
   "bl\\t%a0"
   [(set_attr "length" "4")
    (set_attr "type" "call")]
 )
 
 Note that it checks operands[2], which is the "call type" cookie.  This
 gets set to const1_rtx when -mlong-calls is in effect.  The expectation
 seems to be that the define_expand "call" will transform this into a
 register-based call, but this is inhibited within arm_is_longcall_p for
 functions defined elsewhere in the current compilation unit.
 
 I guess that the define_expand ought to force operands[2] to const0_rtx
 when it decides not to do a long call, something like this:
 
     if (GET_CODE (callee) != REG
       && INTVAL (operands[2]) == CALL_LONG)
       {
         if (arm_is_longcall_p (operands[0], INTVAL (operands[2]), 0))
           XEXP (operands[0], 0) = force_reg (Pmode, callee);
         else
           operands[2] = const0_rtx;
       }
 
 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: target/5054: [ARM/Thumb] ICE with -mlong-calls
@ 2002-01-22  2:35 pb
  0 siblings, 0 replies; 6+ messages in thread
From: pb @ 2002-01-22  2:35 UTC (permalink / raw)
  To: fenix, gcc-bugs, gcc-prs, msinilo, nobody, pb

Old Synopsis: ARM/Thumb crash in gcc 3.0.2
New Synopsis: [ARM/Thumb] ICE with -mlong-calls

Responsible-Changed-From-To: unassigned->pb
Responsible-Changed-By: pb
Responsible-Changed-When: Tue Jan 22 02:35:50 2002
Responsible-Changed-Why:
    .
State-Changed-From-To: feedback->analyzed
State-Changed-By: pb
State-Changed-When: Tue Jan 22 02:35:50 2002
State-Changed-Why:
    Reproducible with 3.0 branch, arm-linux target.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=5054


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2002-03-15 11:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-01-22  4:46 target/5054: [ARM/Thumb] ICE with -mlong-calls Phil Blundell
  -- strict thread matches above, loose matches on Subject: below --
2002-03-15  3:44 pb
2002-02-19 14:26 pb
2002-01-22  4:46 Richard Earnshaw
2002-01-22  2:56 Phil Blundell
2002-01-22  2:35 pb

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).