PR target/46098
* config/i386/sse.md (*avx_movu<ssemodesuffix><avxmodesuffix>):
Rename from avx_movu<ssemodesuffix><avxmodesuffix>.
(avx_movu<ssemodesuffix><avxmodesuffix>): New expander.
(*<sse>_movu<ssemodesuffix>): Rename from <sse>_movu<ssemodesuffix>.
(<sse>_movu<ssemodesuffix>): New expander.
(*avx_movdqu<avxmodesuffix>): Rename from avx_movdqu<avxmodesuffix>.
(avx_movdqu<avxmodesuffix>): New expander.
(*sse2_movdqu): Rename from sse2_movdqu.
(sse2_movdqu): New expander.
Uros Bizjak [Fri, 4 May 2012 18:43:10 +0000 (20:43 +0200)]
backport: re PR target/53228 (target attributes in libcpp/lex.c cause illegal instructions to be used elsewhere)
Backport from mainline
2012-05-04 Uros Bizjak <ubizjak@gmail.com>
PR target/53228
* config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE.
(TARGET_CMOV): Rename from TARGET_CMOVE.
(TARGET_CMOVE): New define.
* config/i386/i386.c (override_options): Use TARGET_CMOV.
Do not set TARGET_CMOVE here.
re PR target/53199 (__builtin_bswap64 and __builtin_bswap32 generate errors if -mcpu=power6)
[gcc]
2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/53199
* config/rs6000/rs6000.md (bswapdi splitters): If
-mavoid-indexed-addresses (or -mcpu=power6 which sets it by
default) is used, generate an alternate sequence that does not
depend on using indexed addressing.
[gcc/testsuite]
2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/53199
* gcc.target/powwerpc/pr53199.c: New file.
backport: re PR target/50820 ([avr] Use EIND consistently)
Backport from 2011-10-21 4.6-branch 180303.
PR target/50820
* config/avr/libgcc.S (__EIND__): New define to 0x3C.
(__tablejump__): Consistently use EIND for indirect jump/call.
(__tablejump_elpm__): Ditto.
backport: re PR target/45263 (registers used in __do_global_ctors can get clobbered)
Backport from 2011-05-30 4.6-branch r174427.
PR target/45263
* config/avr/libgcc.S (__do_global_ctors, __do_global_dtors):
Don't use r20 around calls of __tablejump_elpm__
Backport from 2011-07-11 4.6-branch r176143
PR target/39633
* config/avr/avr.c (notice_update_cc): For ashiftrt:QI, only
offsets 1..5 set cc0 in a usable way.
backport: re PR target/46779 ([avr] wrong code generation for values held in R28/R29)
Backport from 2011-07-08 4.6-branch r176055.
PR target/46779
* config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.
In particular, allow 8-bit values in r28 and r29.
(avr_hard_regno_scratch_ok): Disallow any register that might be
part of the frame pointer.
(avr_hard_regno_rename_ok): Same.
(avr_legitimate_address_p): Don't allow SUBREGs.
re PR middle-end/52894 (Stage1 bootstrap fails with gcc-4.6.3: Infinite loop in pointer_set_insert)
PR middle-end/52894
* varasm.c (process_pending_assemble_externals): Set
pending_assemble_externals_processed true.
(assemble_external): Call assemble_external_real if the pending
assemble externals have been processed.
Eric Botcazou [Wed, 4 Apr 2012 08:21:00 +0000 (08:21 +0000)]
backport: init.c (__gl_main_cpu): New global variable.
Backport from 4.6 branch
* init.c (__gl_main_cpu): New global variable.
* par-ch3.adb: Remove a couple of blank lines.
* types.ads (Big_String_Ptr): Don't give it zero storage size.
(Source_Buffer_Ptr): Likewise.
* uintp.adb (Hash_Num): Use "mod" operator from Types.
Uros Bizjak [Thu, 29 Mar 2012 19:59:36 +0000 (21:59 +0200)]
backport: re PR target/52698 (-maddress-mode=long doesn't work)
Backported from mainline
2012-03-27 Uros Bizjak <ubizjak@gmail.com>
PR target/52698
* config/i386/i386-protos.h (ix86_legitimize_reload_address):
New prototype.
* config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): New define.
* config/i386/i386.c: Include reload.h.
(ix86_legitimize_reload_address): New function.
Steven Bosscher [Sat, 24 Mar 2012 13:46:33 +0000 (13:46 +0000)]
re PR middle-end/52640 (performance bottleneck: gcc/tree.c;value_member)
gcc/
PR middle-end/52640
* varasm.c: Include pointer-set.h.
(pending_assemble_externals_set): New pointer set.
(process_pending_assemble_externals): Destroy the pointer set.
(assemble_external): See if decl is in pending_assemble_externals_set,
and add it to pending_assemble_externals if necessary.
(init_varasm_once): Allocate pending_assemble_externals_set.
testsuite/
PR middle-end/52640
* gcc.c-torture/compile/limits-externdecl.c: New test.