public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* 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 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-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-03-15 3:44 target/5054: [ARM/Thumb] ICE with -mlong-calls pb
-- strict thread matches above, loose matches on Subject: below --
2002-02-19 14:26 pb
2002-01-22 4:46 Phil Blundell
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).