public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/40887]  New: GCC generates suboptimal code for indirect function calls on ARM
@ 2009-07-28  5:11 lessen42 at gmail dot com
  2009-07-28  5:14 ` [Bug middle-end/40887] " lessen42 at gmail dot com
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: lessen42 at gmail dot com @ 2009-07-28  5:11 UTC (permalink / raw)
  To: gcc-bugs

Consider the following code:

int (*indirect_func)();

int indirect_call()
{
    return indirect_func();
}

gcc 4.4.0 generates the following with -O2 -mcpu=cortex-a8 -S:

indirect_call:
    @ args = 0, pretend = 0, frame = 0
    @ frame_needed = 0, uses_anonymous_args = 0
    movw    r3, #:lower16:indirect_func
    stmfd   sp!, {r4, lr}
    movt    r3, #:upper16:indirect_func
    mov     lr, pc
    ldr     pc, [r3, #0]
    ldmfd   sp!, {r4, pc}

The problem is that the instruction "ldr pc, [r3, #0]" is not considered a
function call by the Cortex-A8's branch predictor, as noted in DDI0344J section
5.2.1, Return stack predictions. Thus, the return from the called function is
mispredicted resulting in a penalty of 13 cycles compared to a direct call.

Rather than doing
mov lr, pc
ldr pc, [r3]
it should instead use the blx instruction as so:
ldr lr, [r3]
blx lr
which is considered a function call by the branch predictor, and has an
overhead of only one cycle compared to a direct call.

gcc -v:
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: ../gcc-4.4.0/configure --target=arm-none-linux-gnueabi
--prefix=/usr/local/arm --enable-threads
--with-sysroot=/usr/local/arm/arm-none-linux-gnueabi/libc
Thread model: posix
gcc version 4.4.0 (GCC)


-- 
           Summary: GCC generates suboptimal code for indirect function
                    calls on ARM
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: lessen42 at gmail dot com
  GCC host triplet: i386-apple-darwin
GCC target triplet: arm-none-linux-gnueabi


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
@ 2009-07-28  5:14 ` lessen42 at gmail dot com
  2009-07-28  8:29 ` ramana at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: lessen42 at gmail dot com @ 2009-07-28  5:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from lessen42 at gmail dot com  2009-07-28 05:14 -------
Created an attachment (id=18261)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18261&action=view)
Use blx for indirect function calls on armv5+

This fixes the test case and the obvious cases of this I found in x264; there
may be more instances of not calling/returning from a function that doesn't
match Cortex-A8 and A9's branch predictors (and maybe more)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
  2009-07-28  5:14 ` [Bug middle-end/40887] " lessen42 at gmail dot com
@ 2009-07-28  8:29 ` ramana at gcc dot gnu dot org
  2009-07-28  8:45 ` lessen42+gcc at gmail dot com
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: ramana at gcc dot gnu dot org @ 2009-07-28  8:29 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from ramana at gcc dot gnu dot org  2009-07-28 08:29 -------
(In reply to comment #0)
> Consider the following code:
> 
> int (*indirect_func)();
> 
> int indirect_call()
> {
>     return indirect_func();
> }
> 
> gcc 4.4.0 generates the following with -O2 -mcpu=cortex-a8 -S:
> 
> indirect_call:
>     @ args = 0, pretend = 0, frame = 0
>     @ frame_needed = 0, uses_anonymous_args = 0
>     movw    r3, #:lower16:indirect_func
>     stmfd   sp!, {r4, lr}
>     movt    r3, #:upper16:indirect_func
>     mov     lr, pc
>     ldr     pc, [r3, #0]
>     ldmfd   sp!, {r4, pc}
> 
> The problem is that the instruction "ldr pc, [r3, #0]" is not considered a
> function call by the Cortex-A8's branch predictor, as noted in DDI0344J section
> 5.2.1, Return stack predictions. Thus, the return from the called function is
> mispredicted resulting in a penalty of 13 cycles compared to a direct call
> 
> Rather than doing
> mov lr, pc
> ldr pc, [r3]
> it should instead use the blx instruction as so:
> ldr lr, [r3]
> blx lr
> which is considered a function call by the branch predictor, and has an
> overhead of only one cycle compared to a direct call.

The point made is correct but there is something you've missed in your patch !
loading lr with the address of the function you want to call, destroys the
return address ,- so your code is never going to return ! 

Instead you want -

ldr r3,[r3]
blx r3

Or better still bx r3 but that is PR19599 :)






> 
> gcc -v:
> Using built-in specs.
> Target: arm-none-linux-gnueabi
> Configured with: ../gcc-4.4.0/configure --target=arm-none-linux-gnueabi
> --prefix=/usr/local/arm --enable-threads
> --with-sysroot=/usr/local/arm/arm-none-linux-gnueabi/libc
> Thread model: posix
> gcc version 4.4.0 (GCC)
> 


-- 

ramana at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-07-28 08:29:41
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
  2009-07-28  5:14 ` [Bug middle-end/40887] " lessen42 at gmail dot com
  2009-07-28  8:29 ` ramana at gcc dot gnu dot org
@ 2009-07-28  8:45 ` lessen42+gcc at gmail dot com
  2009-07-28 12:09 ` ramana at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: lessen42+gcc at gmail dot com @ 2009-07-28  8:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from lessen42+gcc at gmail dot com  2009-07-28 08:45 -------
(In reply to comment #2)
> The point made is correct but there is something you've missed in your patch !
> loading lr with the address of the function you want to call, destroys the
> return address ,- so your code is never going to return ! 
> 
> Instead you want -
> 
> ldr r3,[r3]
> blx r3
> 
> Or better still bx r3 but that is PR19599 :)

blx sets the link register to the correct return address as a part of the
instruction, and the return address of the calling function has to already have
been saved before this point or the mov lr, pc would destroy it already.

Though perhaps the code should just always use ip with armv5+ like on the other
side of the if() since that's callee saved and the tail-optimized "bx lr" would
be suboptimal, since that's considered a function return.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (2 preceding siblings ...)
  2009-07-28  8:45 ` lessen42+gcc at gmail dot com
@ 2009-07-28 12:09 ` ramana at gcc dot gnu dot org
  2009-07-28 14:24 ` mans at mansr dot com
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: ramana at gcc dot gnu dot org @ 2009-07-28 12:09 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from ramana at gcc dot gnu dot org  2009-07-28 12:09 -------
(In reply to comment #3)
> (In reply to comment #2)
> > The point made is correct but there is something you've missed in your patch !
> > loading lr with the address of the function you want to call, destroys the
> > return address ,- so your code is never going to return ! 
> > 
> > Instead you want -
> > 
> > ldr r3,[r3]
> > blx r3
> > 
> > Or better still bx r3 but that is PR19599 :)
> 
> blx sets the link register to the correct return address as a part of the
> instruction, and the return address of the calling function has to already have
> been saved before this point or the mov lr, pc would destroy it already.

Oops yes, you are right - I must have been asleep ! . I would rather split the
load out as a separate insn and allow it to be scheduled separately.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (3 preceding siblings ...)
  2009-07-28 12:09 ` ramana at gcc dot gnu dot org
@ 2009-07-28 14:24 ` mans at mansr dot com
  2009-12-12  1:14 ` rearnsha at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: mans at mansr dot com @ 2009-07-28 14:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from mans at mansr dot com  2009-07-28 14:24 -------
Just to be clear, this bug report is about *all* calls through function
pointers.  PR19599 only mentions a failed tail-call optimisation.  That the
example in this bug would benefit from this optimisation is secondary.

I agree about splitting the operations to allow better scheduling.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (4 preceding siblings ...)
  2009-07-28 14:24 ` mans at mansr dot com
@ 2009-12-12  1:14 ` rearnsha at gcc dot gnu dot org
  2009-12-21  8:27 ` siarhei dot siamashka at gmail dot com
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2009-12-12  1:14 UTC (permalink / raw)
  To: gcc-bugs



-- 

rearnsha at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (5 preceding siblings ...)
  2009-12-12  1:14 ` rearnsha at gcc dot gnu dot org
@ 2009-12-21  8:27 ` siarhei dot siamashka at gmail dot com
  2009-12-21  8:53 ` siarhei dot siamashka at gmail dot com
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: siarhei dot siamashka at gmail dot com @ 2009-12-21  8:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from siarhei dot siamashka at gmail dot com  2009-12-21 08:27 -------
Created an attachment (id=19356)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19356&action=view)
return-address-prediction-bench.c

This looks like a really serious performance issue. Not just indirect call
alone is penalized, but the whole return address prediction stack is busted,
causing return address mispredictions for all the nested calls. The attached
test program demonstrates it.

$ time ./return-address-prediction-bench 1
Indirect call for the topmost function

real    0m0.793s
user    0m0.789s
sys     0m0.000s

$ time ./return-address-prediction-bench
Indirect call for the leaf function

real    0m1.797s
user    0m1.789s
sys     0m0.008s

gcc 4.4.2, "-O2 -mcpu=cortex-a8"

Change of function pointer type "void (*f)()" -> "void (* volatile f)()" can be
also used to "workaround" the problem. In this case execution times for both
variants of test are approximately the same.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (6 preceding siblings ...)
  2009-12-21  8:27 ` siarhei dot siamashka at gmail dot com
@ 2009-12-21  8:53 ` siarhei dot siamashka at gmail dot com
  2009-12-21 17:18 ` ramana at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: siarhei dot siamashka at gmail dot com @ 2009-12-21  8:53 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from siarhei dot siamashka at gmail dot com  2009-12-21 08:53 -------
(In reply to comment #4)
> I would rather split the load out as a separate insn and allow it to be scheduled separately.

A question just to clarify the status of this issue. Are you waiting for David
(or anybody else) to provide an updated patch with such split load? Are there
no other options available besides either a perfect fix or no fix at all?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug middle-end/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (7 preceding siblings ...)
  2009-12-21  8:53 ` siarhei dot siamashka at gmail dot com
@ 2009-12-21 17:18 ` ramana at gcc dot gnu dot org
  2009-12-23  9:01 ` [Bug target/40887] " ramana at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: ramana at gcc dot gnu dot org @ 2009-12-21 17:18 UTC (permalink / raw)
  To: gcc-bugs



-- 

ramana at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |ramana at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2009-07-28 08:29:41         |2009-12-21 17:18:35
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug target/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (8 preceding siblings ...)
  2009-12-21 17:18 ` ramana at gcc dot gnu dot org
@ 2009-12-23  9:01 ` ramana at gcc dot gnu dot org
  2009-12-24 10:46 ` ramana at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: ramana at gcc dot gnu dot org @ 2009-12-23  9:01 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from ramana at gcc dot gnu dot org  2009-12-23 09:00 -------
Patch submitted here. http://gcc.gnu.org/ml/gcc-patches/2009-12/msg01060.html


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug target/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (9 preceding siblings ...)
  2009-12-23  9:01 ` [Bug target/40887] " ramana at gcc dot gnu dot org
@ 2009-12-24 10:46 ` ramana at gcc dot gnu dot org
  2010-01-07 14:42 ` drow at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: ramana at gcc dot gnu dot org @ 2009-12-24 10:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from ramana at gcc dot gnu dot org  2009-12-24 10:46 -------
Subject: Bug 40887

Author: ramana
Date: Thu Dec 24 10:46:00 2009
New Revision: 155453

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155453
Log:
Fix PR target/40887



2009-12-24  Julian Brown  <julian@codesourcery.com>
            Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        PR target/40887

        * config/arm/arm.c (output_call_mem): Remove armv5 support.
        * config/arm/arm.md (*call_mem): Disable for armv5. Add note.
        (*call_value_mem): Likewise.


        PR target/40887

        * gcc.target/gcc.arm/pr40887.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/arm/pr40887.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arm/arm.c
    trunk/gcc/config/arm/arm.md
    trunk/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug target/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (10 preceding siblings ...)
  2009-12-24 10:46 ` ramana at gcc dot gnu dot org
@ 2010-01-07 14:42 ` drow at gcc dot gnu dot org
  2010-01-07 15:04 ` ramana at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: drow at gcc dot gnu dot org @ 2010-01-07 14:42 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from drow at gcc dot gnu dot org  2010-01-07 14:42 -------
Ramana, is this fixed or are you planning on applying it to more branches?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug target/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (11 preceding siblings ...)
  2010-01-07 14:42 ` drow at gcc dot gnu dot org
@ 2010-01-07 15:04 ` ramana at gcc dot gnu dot org
  2010-02-18 13:13 ` ramana at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: ramana at gcc dot gnu dot org @ 2010-01-07 15:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from ramana at gcc dot gnu dot org  2010-01-07 15:03 -------
(In reply to comment #10)
> Ramana, is this fixed or are you planning on applying it to more branches?
> 

This is fixed on trunk. I plan to put this on 4.4 branch but it won't be before
the end of the week that I can get around to testing this. 

cheers
Ramana


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug target/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (12 preceding siblings ...)
  2010-01-07 15:04 ` ramana at gcc dot gnu dot org
@ 2010-02-18 13:13 ` ramana at gcc dot gnu dot org
  2010-02-18 13:34 ` ramana at gcc dot gnu dot org
  2010-06-07 21:00 ` grosser at gcc dot gnu dot org
  15 siblings, 0 replies; 17+ messages in thread
From: ramana at gcc dot gnu dot org @ 2010-02-18 13:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from ramana at gcc dot gnu dot org  2010-02-18 13:13 -------
Subject: Bug 40887

Author: ramana
Date: Thu Feb 18 13:13:03 2010
New Revision: 156862

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156862
Log:



        PR target/40887
        Backport from trunk.
        2009-12-24  Julian Brown  <julian@codesourcery.com>
                    Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        * config/arm/arm.c (output_call_mem): Remove armv5 support.
        * config/arm/arm.md (*call_mem): Disable for armv5. Add note.
        (*call_value_mem): Likewise.

       PR target/40887
        Backport from trunk.
        2009-12-24  Julian Brown  <julian@codesourcery.com>
                    Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        * gcc.target/arm/pr40887.c: New test.

Added:
    branches/gcc-4_4-branch/gcc/testsuite/gcc.target/arm/pr40887.c
      - copied unchanged from r155453,
trunk/gcc/testsuite/gcc.target/arm/pr40887.c
Modified:
    branches/gcc-4_4-branch/gcc/ChangeLog
    branches/gcc-4_4-branch/gcc/config/arm/arm.c
    branches/gcc-4_4-branch/gcc/config/arm/arm.md
    branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug target/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (13 preceding siblings ...)
  2010-02-18 13:13 ` ramana at gcc dot gnu dot org
@ 2010-02-18 13:34 ` ramana at gcc dot gnu dot org
  2010-06-07 21:00 ` grosser at gcc dot gnu dot org
  15 siblings, 0 replies; 17+ messages in thread
From: ramana at gcc dot gnu dot org @ 2010-02-18 13:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from ramana at gcc dot gnu dot org  2010-02-18 13:34 -------
Fixed.


-- 

ramana at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.4.4


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

* [Bug target/40887] GCC generates suboptimal code for indirect function calls on ARM
  2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
                   ` (14 preceding siblings ...)
  2010-02-18 13:34 ` ramana at gcc dot gnu dot org
@ 2010-06-07 21:00 ` grosser at gcc dot gnu dot org
  15 siblings, 0 replies; 17+ messages in thread
From: grosser at gcc dot gnu dot org @ 2010-06-07 21:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from grosser at gcc dot gnu dot org  2010-06-07 20:59 -------
Subject: Bug 40887

Author: grosser
Date: Mon Jun  7 20:59:33 2010
New Revision: 160403

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=160403
Log:
Merge some commits missed during a merge from mainline in Dez 2009.

        * README: Mention changes to Makefile.in and functions.texi.
        * gather-docs: Mention 'make stamp-functions' in the header.

svn+ssh://gcc.gnu.org/svn/gcc/trunk@154545

        * functions.texi: Rebuild.

svn+ssh://gcc.gnu.org/svn/gcc/trunk@154546

Fix PR target/40887

2009-12-24  Julian Brown  <julian@codesourcery.com>
            Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        PR target/40887

        * config/arm/arm.c (output_call_mem): Remove armv5 support.
        * config/arm/arm.md (*call_mem): Disable for armv5. Add note.
        (*call_value_mem): Likewise.

        PR target/40887

        * gcc.target/gcc.arm/pr40887.c: New test.

svn+ssh://gcc.gnu.org/svn/gcc/trunk@155453

Fix PR target/42093

2009-12-23  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        PR target/42093
        * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Fix macro usage
        to TARGET_THUMB1.
        (CASE_VECTOR_SHORTEN_MODE): Allow signed offsets
        only for TARGET_THUMB1.

2009-12-23  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        PR target/42093
        * gcc.target/arm/pr42093.c: New test.

svn+ssh://gcc.gnu.org/svn/gcc/trunk@155428

        PR debug/42454
        * dwarf2out.c (add_ranges_by_labels_to_AT_range_list): New function.
        (dwarf2out_finish): Call add_ranges_by_labels_to_AT_range_list.

        * gcc.dg/debug/dwarf2/aranges-fnsec-1.c: Add check for .debug_ranges.

svn+ssh://gcc.gnu.org/svn/gcc/trunk@155429

Added:
    branches/graphite/gcc/testsuite/gcc.target/arm/pr40887.c
    branches/graphite/gcc/testsuite/gcc.target/arm/pr42093.c
Modified:
    branches/graphite/gcc/config/arm/arm.c
    branches/graphite/gcc/config/arm/arm.h
    branches/graphite/gcc/config/arm/arm.md
    branches/graphite/gcc/dwarf2out.c
    branches/graphite/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
    branches/graphite/libiberty/README
    branches/graphite/libiberty/functions.texi
    branches/graphite/libiberty/gather-docs


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40887


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

end of thread, other threads:[~2010-06-07 21:00 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-28  5:11 [Bug middle-end/40887] New: GCC generates suboptimal code for indirect function calls on ARM lessen42 at gmail dot com
2009-07-28  5:14 ` [Bug middle-end/40887] " lessen42 at gmail dot com
2009-07-28  8:29 ` ramana at gcc dot gnu dot org
2009-07-28  8:45 ` lessen42+gcc at gmail dot com
2009-07-28 12:09 ` ramana at gcc dot gnu dot org
2009-07-28 14:24 ` mans at mansr dot com
2009-12-12  1:14 ` rearnsha at gcc dot gnu dot org
2009-12-21  8:27 ` siarhei dot siamashka at gmail dot com
2009-12-21  8:53 ` siarhei dot siamashka at gmail dot com
2009-12-21 17:18 ` ramana at gcc dot gnu dot org
2009-12-23  9:01 ` [Bug target/40887] " ramana at gcc dot gnu dot org
2009-12-24 10:46 ` ramana at gcc dot gnu dot org
2010-01-07 14:42 ` drow at gcc dot gnu dot org
2010-01-07 15:04 ` ramana at gcc dot gnu dot org
2010-02-18 13:13 ` ramana at gcc dot gnu dot org
2010-02-18 13:34 ` ramana at gcc dot gnu dot org
2010-06-07 21:00 ` grosser at gcc dot gnu dot org

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).