public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/40677]  New: flag -mmultiple is ignored
@ 2009-07-07 20:20 edmar at freescale dot com
  2009-07-07 20:21 ` [Bug c/40677] " edmar at freescale dot com
                   ` (9 more replies)
  0 siblings, 10 replies; 12+ messages in thread
From: edmar at freescale dot com @ 2009-07-07 20:20 UTC (permalink / raw)
  To: gcc-bugs

The compiler fails to generate lmw/stmw when compiling the attached test case.
(no_global_regs_above) never returns true.

Obvious fix with attached patch.
Note: I have no write privilege.

Compiled with:
gcc -Os -mcpu=601 -S test.c


-- 
           Summary: flag -mmultiple is ignored
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: edmar at freescale dot com
  GCC host triplet: powerpc-unknown-linux-gnu-gcc
GCC target triplet: powerpc-unknown-linux-gnu-gcc


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


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

* [Bug c/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
@ 2009-07-07 20:21 ` edmar at freescale dot com
  2009-07-07 20:22 ` edmar at freescale dot com
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: edmar at freescale dot com @ 2009-07-07 20:21 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from edmar at freescale dot com  2009-07-07 20:21 -------
Created an attachment (id=18153)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18153&action=view)
test case


-- 


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


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

* [Bug c/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
  2009-07-07 20:21 ` [Bug c/40677] " edmar at freescale dot com
@ 2009-07-07 20:22 ` edmar at freescale dot com
  2009-07-08  8:21 ` [Bug target/40677] " rguenth at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: edmar at freescale dot com @ 2009-07-07 20:22 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from edmar at freescale dot com  2009-07-07 20:22 -------
Created an attachment (id=18154)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18154&action=view)
patch to fix bug


-- 


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


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

* [Bug target/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
  2009-07-07 20:21 ` [Bug c/40677] " edmar at freescale dot com
  2009-07-07 20:22 ` edmar at freescale dot com
@ 2009-07-08  8:21 ` rguenth at gcc dot gnu dot org
  2009-07-08 15:07 ` edmar at freescale dot com
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-07-08  8:21 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from rguenth at gcc dot gnu dot org  2009-07-08 08:21 -------
patches should be sent to gcc-patches@gcc.gnu.org with a changelog entry
and a note how it was tested.


-- 


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


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

* [Bug target/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
                   ` (2 preceding siblings ...)
  2009-07-08  8:21 ` [Bug target/40677] " rguenth at gcc dot gnu dot org
@ 2009-07-08 15:07 ` edmar at freescale dot com
  2009-07-15 12:38 ` dje at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: edmar at freescale dot com @ 2009-07-08 15:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from edmar at freescale dot com  2009-07-08 15:06 -------
I did not run any test suite, nor prepared any test case suitable for inclusion
in dejagnu suite.
I opened a bug hopping the information I gave would help resolve the issue
faster.


-- 


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


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

* [Bug target/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
                   ` (3 preceding siblings ...)
  2009-07-08 15:07 ` edmar at freescale dot com
@ 2009-07-15 12:38 ` dje at gcc dot gnu dot org
  2009-07-15 12:51 ` dje at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: dje at gcc dot gnu dot org @ 2009-07-15 12:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from dje at gcc dot gnu dot org  2009-07-15 12:38 -------
The patch seems reasonable, but it exposes a latent bug in Nathan's mmultiple
patch that was not tested because of this bug.

This patch should have been tested and posted to the GCC mailinglist
referencing this PR.


-- 

dje at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dje at gcc dot gnu dot org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-07-15 12:38:19
               date|                            |


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


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

* [Bug target/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
                   ` (4 preceding siblings ...)
  2009-07-15 12:38 ` dje at gcc dot gnu dot org
@ 2009-07-15 12:51 ` dje at gcc dot gnu dot org
  2009-08-26 13:55 ` galak at kernel dot crashing dot org
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: dje at gcc dot gnu dot org @ 2009-07-15 12:51 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from dje at gcc dot gnu dot org  2009-07-15 12:50 -------
The fix for this actually is more involved.  Nathan had a patch last October
which exposed similar bootstrap problems.  He posted a revised patch

http://gcc.gnu.org/ml/gcc-patches/2008-11/msg01103.html


-- 

dje at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |http://gcc.gnu.org/ml/gcc-
                   |                            |patches/2008-
                   |                            |11/msg01103.html


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


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

* [Bug target/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
                   ` (5 preceding siblings ...)
  2009-07-15 12:51 ` dje at gcc dot gnu dot org
@ 2009-08-26 13:55 ` galak at kernel dot crashing dot org
  2009-09-09 17:00 ` dje at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: galak at kernel dot crashing dot org @ 2009-08-26 13:55 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from galak at kernel dot crashing dot org  2009-08-26 13:54 -------
I'm not what the means are bump the priority on this as a significant
regression in gcc4.4 as code that was building with gcc4.3 no longer builds
because the size of the generated binaries is significantly larger without
load/store multiple or out of line save/restore functions.

u-boot (an open source bootloader used on a large # of embedded PPC platforms
no longer builds with gcc4.4)

UNDEF_SYM=`objdump -x board/freescale/mpc8536ds/libmpc8536ds.a
lib_generic/libgeneric.a lib_generic/lzma/liblzma.a lib_generic/lzo/liblzo.a
board/freescale/common/libfreescale.a cpu/mpc85xx/libmpc85xx.a lib_ppc/libppc.a
fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a
fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a fs/yaffs2/libyaffs2.a
fs/ubifs/libubifs.a net/libnet.a disk/libdisk.a
drivers/bios_emulator/libatibiosemu.a drivers/block/libblock.a
drivers/dma/libdma.a drivers/fpga/libfpga.a drivers/gpio/libgpio.a
drivers/hwmon/libhwmon.a drivers/i2c/libi2c.a drivers/input/libinput.a
drivers/misc/libmisc.a drivers/mmc/libmmc.a drivers/mtd/libmtd.a
drivers/mtd/nand/libnand.a drivers/mtd/onenand/libonenand.a
drivers/mtd/ubi/libubi.a drivers/mtd/spi/libspi_flash.a drivers/net/libnet.a
drivers/net/phy/libphy.a drivers/net/sk98lin/libsk98lin.a drivers/pci/libpci.a
drivers/pcmcia/libpcmcia.a drivers/power/libpower.a drivers/spi/libspi.a
drivers/qe/qe.a cpu/mpc8xxx/ddr/libddr.a drivers/rtc/librtc.a
drivers/serial/libserial.a drivers/twserial/libtws.a
drivers/usb/gadget/libusb_gadget.a drivers/usb/host/libusb_host.a
drivers/usb/musb/libusb_musb.a drivers/video/libvideo.a
drivers/watchdog/libwatchdog.a common/libcommon.a libfdt/libfdt.a api/libapi.a
post/libpost.a | sed  -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`; cd
/root/u-boot && ld -Bstatic -T u-boot.lds  -n -Ttext 0xeff80000 $UNDEF_SYM
cpu/mpc85xx/start.o cpu/mpc85xx/resetvec.o --start-group
lib_generic/libgeneric.a lib_generic/lzma/liblzma.a lib_generic/lzo/liblzo.a
board/freescale/common/libfreescale.a cpu/mpc85xx/libmpc85xx.a lib_ppc/libppc.a
fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a
fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a fs/yaffs2/libyaffs2.a
fs/ubifs/libubifs.a net/libnet.a disk/libdisk.a
drivers/bios_emulator/libatibiosemu.a drivers/block/libblock.a
drivers/dma/libdma.a drivers/fpga/libfpga.a drivers/gpio/libgpio.a
drivers/hwmon/libhwmon.a drivers/i2c/libi2c.a drivers/input/libinput.a
drivers/misc/libmisc.a drivers/mmc/libmmc.a drivers/mtd/libmtd.a
drivers/mtd/nand/libnand.a drivers/mtd/onenand/libonenand.a
drivers/mtd/ubi/libubi.a drivers/mtd/spi/libspi_flash.a drivers/net/libnet.a
drivers/net/phy/libphy.a drivers/net/sk98lin/libsk98lin.a drivers/pci/libpci.a
drivers/pcmcia/libpcmcia.a drivers/power/libpower.a drivers/spi/libspi.a
drivers/qe/qe.a cpu/mpc8xxx/ddr/libddr.a drivers/rtc/librtc.a
drivers/serial/libserial.a drivers/twserial/libtws.a
drivers/usb/gadget/libusb_gadget.a drivers/usb/host/libusb_host.a
drivers/usb/musb/libusb_musb.a drivers/video/libvideo.a
drivers/watchdog/libwatchdog.a common/libcommon.a libfdt/libfdt.a api/libapi.a
post/libpost.a board/freescale/mpc8536ds/libmpc8536ds.a --end-group -L
/usr/lib/gcc/ppc64-redhat-linux/4.4.1 -lgcc -Map u-boot.map -o u-boot
ld: Warning: /usr/lib/gcc/ppc64-redhat-linux/4.4.1/libgcc.a(_lshrdi3.o) uses
hard float, u-boot uses soft float
ld: Warning: /usr/lib/gcc/ppc64-redhat-linux/4.4.1/libgcc.a(_ashldi3.o) uses
hard float, u-boot uses soft float
ld: Warning: /usr/lib/gcc/ppc64-redhat-linux/4.4.1/libgcc.a(_ashrdi3.o) uses
hard float, u-boot uses soft float
ld: Warning: /usr/lib/gcc/ppc64-redhat-linux/4.4.1/libgcc.a(_udivdi3.o) uses
hard float, u-boot uses soft float
ld: Warning: /usr/lib/gcc/ppc64-redhat-linux/4.4.1/libgcc.a(_umoddi3.o) uses
hard float, u-boot uses soft float
ld: section .bootpg loaded at [00000000effff000,00000000effff1cb] overlaps
section .data loaded at [00000000efffb040,00000000effff4f7]
ld: section .resetvec loaded at [00000000effffffc,00000000efffffff] overlaps
section .data.rel.local loaded at [00000000effffef8,00000000f000122b]
ld: u-boot: section .bootpg vma 0xeffff000 overlaps previous sections
ld: u-boot: section .data.rel.ro.local vma 0xeffff4f8 overlaps previous
sections
ld: u-boot: section .data.rel vma 0xeffff55c overlaps previous sections
ld: u-boot: section .data.rel.local vma 0xeffffef8 overlaps previous sections
ld: u-boot: section .resetvec vma 0xeffffffc overlaps previous sections
ld: u-boot: section .data.rel.ro vma 0xf000122c overlaps previous sections
ld: u-boot: section .u_boot_cmd vma 0xf000124c overlaps previous sections
make: *** [u-boot] Error 1


-- 

galak at kernel dot crashing dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |galak at kernel dot crashing
                   |                            |dot org


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


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

* [Bug target/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
                   ` (6 preceding siblings ...)
  2009-08-26 13:55 ` galak at kernel dot crashing dot org
@ 2009-09-09 17:00 ` dje at gcc dot gnu dot org
  2009-09-09 17:50 ` jakub at gcc dot gnu dot org
  2009-09-15 20:12 ` jakub at gcc dot gnu dot org
  9 siblings, 0 replies; 12+ messages in thread
From: dje at gcc dot gnu dot org @ 2009-09-09 17:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from dje at gcc dot gnu dot org  2009-09-09 16:59 -------
Kumar,

If you want this fixed then you or Edmar or someone at Freescale should fix the
patch referenced in comment #6.


-- 


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


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

* [Bug target/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
                   ` (7 preceding siblings ...)
  2009-09-09 17:00 ` dje at gcc dot gnu dot org
@ 2009-09-09 17:50 ` jakub at gcc dot gnu dot org
  2009-09-15 20:12 ` jakub at gcc dot gnu dot org
  9 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu dot org @ 2009-09-09 17:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from jakub at gcc dot gnu dot org  2009-09-09 17:49 -------
See http://gcc.gnu.org/ml/gcc-patches/2009-09/msg00592.html


-- 


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


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

* [Bug target/40677] flag -mmultiple is ignored
  2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
                   ` (8 preceding siblings ...)
  2009-09-09 17:50 ` jakub at gcc dot gnu dot org
@ 2009-09-15 20:12 ` jakub at gcc dot gnu dot org
  9 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu dot org @ 2009-09-15 20:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from jakub at gcc dot gnu dot org  2009-09-15 20:12 -------
Subject: Bug 40677

Author: jakub
Date: Tue Sep 15 20:12:18 2009
New Revision: 151729

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151729
Log:
        PR target/41175
        PR target/40677
        * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
        problem.
        (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
        SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
        (rs6000_savres_strategy): Always save FP registers inline if the
        target doesn't support hardware double-precision.  Set the above
        bits in return value when needed.
        (rs6000_savres_routine_sym): Fix computation for cache selector.
        Mark the generated symbol as a function.  Rename exitp argument to
        lr.  Move code for determining the name of the symbol...
        (rs6000_savres_routine_name): ...here.  New function.  Add cases for
        getting the names right on AIX and 64-bit Linux.
        (savres_routine_name): New variable.
        (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
        lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
        on what the target routine uses as a base register.  If savep && lr
        describe saving of r0 into memory slot.
        (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
        line calls for AIX ABI.
        (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
        determine FP save/restore functions.
        (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
        frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
        gen_addsi3.
        (rs6000_emit_epilogue): Adjust computation of restore_lr.
        Duplicate restoration of LR and execute the appropriate one
        depending on whether GPRs are being restored inline.  Set r11 from
        offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
        r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
        Fix out of line calls for AIX ABI.
        * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
        New insn.
        * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
        register 11.
        (*restore_gpregs_spe): Likewise.
        (*return_and_restore_gpregs_spe): Likewise.
        * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
        Define to empty string unconditionally.
        * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
        Define to empty string unconditionally.
        (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
        !TARGET_64BIT.

        * gcc.target/powerpc/pr41175.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/powerpc/pr41175.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/rs6000/linux64.h
    trunk/gcc/config/rs6000/rs6000.c
    trunk/gcc/config/rs6000/rs6000.md
    trunk/gcc/config/rs6000/spe.md
    trunk/gcc/config/rs6000/sysv4.h
    trunk/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug target/40677] flag -mmultiple is ignored
       [not found] <bug-40677-4@http.gcc.gnu.org/bugzilla/>
@ 2012-01-09 23:36 ` pinskia at gcc dot gnu.org
  0 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu.org @ 2012-01-09 23:36 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.5.0

--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-01-09 23:35:29 UTC ---
Fixed for 4.5.0.


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

end of thread, other threads:[~2012-01-09 23:36 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-07 20:20 [Bug c/40677] New: flag -mmultiple is ignored edmar at freescale dot com
2009-07-07 20:21 ` [Bug c/40677] " edmar at freescale dot com
2009-07-07 20:22 ` edmar at freescale dot com
2009-07-08  8:21 ` [Bug target/40677] " rguenth at gcc dot gnu dot org
2009-07-08 15:07 ` edmar at freescale dot com
2009-07-15 12:38 ` dje at gcc dot gnu dot org
2009-07-15 12:51 ` dje at gcc dot gnu dot org
2009-08-26 13:55 ` galak at kernel dot crashing dot org
2009-09-09 17:00 ` dje at gcc dot gnu dot org
2009-09-09 17:50 ` jakub at gcc dot gnu dot org
2009-09-15 20:12 ` jakub at gcc dot gnu dot org
     [not found] <bug-40677-4@http.gcc.gnu.org/bugzilla/>
2012-01-09 23:36 ` pinskia at gcc dot gnu.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).