* config/i386/i386.md (UNSPECV_NOPS): Rename from UNSPEC_NOPS and
define as unspec_volatile.
("nops"): Define as unspec_volatile. Use fputs to write to
asm_out_file directly. Output NOPs on separate lines using while loop.
* config/i386/i386.c (ix86_code_end): Use fputs to write to
asm_out_file directly. Output NOPs on separate lines using while loop.
testsuite/ChangeLog:
* gcc.target/i386/pad-1.c: Remove -S from dg-options.
* gcc.target/i386/pad-3.c: Ditto.
* gcc.target/i386/pad-7.c: Ditto.
* gcc.target/i386/pad-7.c: Ditto.
* gcc.target/i386/pr36502.c: Ditto.
* gcc.target/i386/zee.c: Ditto.
* gcc.target/i386/
20060821-1.c: Ditto.
* gcc.target/i386/pad-2.c: Ditto. Scan for NOPs on separate lines.
* gcc.target/i386/pad-5a.c: Ditto. Do not use scan-assembler-not.
* gcc.target/i386/pad-5b.c: Ditto.
* gcc.target/i386/pad-6a.c: Ditto.
* gcc.target/i386/pad-6b.c: Ditto.
* gcc.target/i386/pad-8.c: Ditto.
* gcc.target/i386/pad-9.c: Ditto.
* gcc.target/i386/pad-10.c: Ditto.
* gcc.target/i386/pad-4.c: Ditto. Require pic effective target.
From-SVN: r164564
+2010-09-23 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (UNSPECV_NOPS): Rename from UNSPEC_NOPS and
+ define as unspec_volatile.
+ ("nops"): Define as unspec_volatile. Use fputs to write to
+ asm_out_file directly. Output NOPs on separate lines using while loop.
+ * config/i386/i386.c (ix86_code_end): Use fputs to write to
+ asm_out_file directly. Output NOPs on separate lines using while loop.
+
2010-09-23 Richard Guenther <rguenther@suse.de>
PR tree-optimization/45565
2010-09-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
- * doc/contrib.texi (Contributors): Allow URL to wrap in PDF
- output.
+ * doc/contrib.texi (Contributors): Allow URL to wrap in PDF output.
* doc/cppopts.texi: Fix markup of index entry.
* doc/extend.texi (Constructing Calls): Fix markup of
__builtin_va_arg_pack and __builtin_va_arg_pack_len definition.
long lines, avoid overlong pages from long @itemx lists.
* doc/objc.texi (Garbage Collection): Allow URLs to wrap.
* doc/standards.texi (Standards): Likewise.
- * doc/trouble.texi (Incompatibilities): Fix markup of index
- entry.
+ * doc/trouble.texi (Incompatibilities): Fix markup of index entry.
2010-09-22 Joseph Myers <joseph@codesourcery.com>
resize option array here.
* opts.h (prune_options): Remove prototype.
* gcc.c (process_command): Take decoded options; don't call
- decode_cmdline_options_to_array here. Use decoded options for
- argv[0].
+ decode_cmdline_options_to_array here. Use decoded options for argv[0].
(main): Call decode_cmdline_options_to_array here instead of
prune_options. Update call to process_command.
* config/darwin-driver.c: Include opts.h.
* postreload.c (move2add_note_store): Add reg_symbol_ref[] checks
to update conditions. Fix reg_mode[] check.
-2010-09-22 Hariharan Sandanagobalane <hariharan@picochip.com>
+2010-09-22 Hariharan Sandanagobalane <hariharan@picochip.com>
* config/picochip/picochip.md (movhicc): Use expand to check whether
movhicc is available and split it after reload.
* tree-inline.c (copy_phis_for_bb): Delay commit of edge
insertions until after all PHI nodes of the block are processed.
-2010-09-18 Tijl Coosemans <tijl@coosemans.org>
+2010-09-18 Tijl Coosemans <tijl@coosemans.org>
* config/i386/freebsd.h (SUBTARGET32_DEFAULT_CPU): Add.
2010-09-15 Tejas Belagod <tejas.belagod@arm.com>
* config/arm/neon.md (vec_pack_trunc_<mode>): Instruction
- pattern for vmovn. Expansion in case of non
+ pattern for vmovn. Expansion in case of non
-mvectorize-with-neon-quad.
(neon_vec_pack_trunc_<mode>): Instruction pattern for vmovn for
non- -mvectorize-with-neon-quad case.
xops[0] = gen_rtx_REG (Pmode, regno);
xops[1] = gen_rtx_MEM (Pmode, stack_pointer_rtx);
- /* Pad stack IP move with 4 instructions. 2 NOPs count as 1
- instruction. */
+ /* Pad stack IP move with 4 instructions (two NOPs count
+ as one instruction.) */
if (TARGET_PAD_SHORT_FUNCTION)
- output_asm_insn ("nop; nop; nop; nop; nop; nop; nop; nop",
- xops);
+ {
+ int i = 8;
+
+ while (i--)
+ fputs ("\tnop\n", asm_out_file);
+ }
+
output_asm_insn ("mov%z0\t{%1, %0|%0, %1}", xops);
- output_asm_insn ("ret", xops);
+ fputs ("\tret\n", asm_out_file);
final_end_function ();
init_insn_lengths ();
free_after_compilation (cfun);
UNSPEC_LD_MPIC ; load_macho_picbase
UNSPEC_TRUNC_NOOP
UNSPEC_DIV_ALREADY_SPLIT
- UNSPEC_NOPS
;; For SSE/MMX support:
UNSPEC_FIX_NOTRUNC
UNSPECV_LOCK
UNSPECV_PROLOGUE_USE
UNSPECV_CLD
+ UNSPECV_NOPS
UNSPECV_VZEROALL
UNSPECV_VZEROUPPER
UNSPECV_RDTSC
;; Generate nops. Operand 0 is the number of nops, up to 8.
(define_insn "nops"
- [(unspec [(match_operand 0 "const_int_operand" "")]
- UNSPEC_NOPS)]
+ [(unspec_volatile [(match_operand 0 "const_int_operand" "")]
+ UNSPECV_NOPS)]
"reload_completed"
{
- switch (INTVAL (operands[0]))
- {
- case 1:
- return "nop";
- case 2:
- return "nop; nop";
- case 3:
- return "nop; nop; nop";
- case 4:
- return "nop; nop; nop; nop";
- case 5:
- return "nop; nop; nop; nop; nop";
- case 6:
- return "nop; nop; nop; nop; nop; nop";
- case 7:
- return "nop; nop; nop; nop; nop; nop; nop";
- case 8:
- return "nop; nop; nop; nop; nop; nop; nop; nop";
- default:
- gcc_unreachable ();
- break;
- }
+ int num = INTVAL (operands[0]);
+
+ gcc_assert (num >= 1 && num <= 8);
+
+ while (num--)
+ fputs ("\tnop\n", asm_out_file);
+
+ return "";
}
[(set (attr "length") (symbol_ref "INTVAL (operands[0])"))
(set_attr "length_immediate" "0")
+2010-09-23 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/pad-1.c: Remove -S from dg-options.
+ * gcc.target/i386/pad-3.c: Ditto.
+ * gcc.target/i386/pad-7.c: Ditto.
+ * gcc.target/i386/pad-7.c: Ditto.
+ * gcc.target/i386/pr36502.c: Ditto.
+ * gcc.target/i386/zee.c: Ditto.
+ * gcc.target/i386/20060821-1.c: Ditto.
+ * gcc.target/i386/pad-2.c: Ditto. Scan for NOPs on separate lines.
+ * gcc.target/i386/pad-5a.c: Ditto. Do not use scan-assembler-not.
+ * gcc.target/i386/pad-5b.c: Ditto.
+ * gcc.target/i386/pad-6a.c: Ditto.
+ * gcc.target/i386/pad-6b.c: Ditto.
+ * gcc.target/i386/pad-8.c: Ditto.
+ * gcc.target/i386/pad-9.c: Ditto.
+ * gcc.target/i386/pad-10.c: Ditto.
+ * gcc.target/i386/pad-4.c: Ditto. Require pic effective target.
+
2010-09-23 Richard Guenther <rguenther@suse.de>
PR tree-optimization/45565
2005-10-11 Fariborz Jahanian <fjahanian@apple.com>
Radar 4291785
- objc.dg/naming-4.m: New
- objc.dg/naming-5.m: New
- obj-c++.dg/naming-1.mm: New
- obj-c++.dg/naming-2.mm: New
+ * objc.dg/naming-4.m: New
+ * objc.dg/naming-5.m: New
+ * obj-c++.dg/naming-1.mm: New
+ * obj-c++.dg/naming-2.mm: New
2010-09-21 Jonathan Wakely <redi@gcc.gnu.org>
Jack Howarth <howarth@bromo.med.uc.edu>
/* { dg-do compile } */
-/* { dg-options "-O2 -msse3 -S" } */
+/* { dg-options "-O2 -msse3" } */
/* { dg-final { scan-assembler-not "%mm" } } */
/* PR 28825 */
#include <pmmintrin.h>
/* { dg-do compile } */
-/* { dg-options "-O2 -fomit-frame-pointer -mtune=generic -S" } */
+/* { dg-options "-O2 -fomit-frame-pointer -mtune=generic" } */
/* { dg-final { scan-assembler "rep" } } */
/* { dg-final { scan-assembler-not "nop" } } */
/* { dg-do compile } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
/* { dg-final { scan-assembler-not "nop" } } */
/* { dg-final { scan-assembler-not "rep" } } */
/* { dg-do compile } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
-/* { dg-final { scan-assembler-times "nop; nop; nop; nop; nop; nop; nop; nop" 1 } } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
+/* { dg-final { scan-assembler-times "nop" 8 } } */
/* { dg-final { scan-assembler-not "rep" } } */
void
/* { dg-do compile } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -fno-pic -S" } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom -fno-pic" } */
/* { dg-final { scan-assembler-not "nop" } } */
/* { dg-final { scan-assembler-not "rep" } } */
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S -fPIC" } */
-/* { dg-final { scan-assembler-times "nop; nop; nop; nop; nop; nop; nop; nop" 1 } } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom -fPIC" } */
+/* { dg-final { scan-assembler-times "nop" 8 } } */
/* { dg-final { scan-assembler-not "rep" } } */
extern int bar;
int
foo ()
{
+ asm volatile ("");
return bar;
}
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
-/* { dg-final { scan-assembler-times "nop; nop" 1 } } */
-/* { dg-final { scan-assembler-not "nop; nop; nop" } } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
+/* { dg-final { scan-assembler-times "nop" 2 } } */
/* { dg-final { scan-assembler-not "rep" } } */
int
/* { dg-do compile } */
/* { dg-require-effective-target lp64 } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
-/* { dg-final { scan-assembler-times "nop; nop; nop; nop" 1 } } */
-/* { dg-final { scan-assembler-not "nop; nop; nop; nop; nop" } } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
+/* { dg-final { scan-assembler-times "nop" 4 } } */
/* { dg-final { scan-assembler-not "rep" } } */
int
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
-/* { dg-final { scan-assembler-times "nop; nop; nop; nop" 1 } } */
-/* { dg-final { scan-assembler-not "nop; nop; nop; nop; nop" } } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
+/* { dg-final { scan-assembler-times "nop" 4 } } */
/* { dg-final { scan-assembler-not "rep" } } */
int
/* { dg-do compile } */
/* { dg-require-effective-target lp64 } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
-/* { dg-final { scan-assembler-times "nop; nop; nop; nop; nop; nop" 1 } } */
-/* { dg-final { scan-assembler-not "nop; nop; nop; nop; nop; nop; nop" } } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
+/* { dg-final { scan-assembler-times "nop" 6 } } */
/* { dg-final { scan-assembler-not "rep" } } */
int
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
/* { dg-final { scan-assembler-not "nop" } } */
/* { dg-final { scan-assembler-not "rep" } } */
/* { dg-do compile } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
-/* { dg-final { scan-assembler-times "nop; nop; nop; nop; nop; nop" 1 } } */
-/* { dg-final { scan-assembler-not "nop; nop; nop; nop; nop; nop; nop" } } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
+/* { dg-final { scan-assembler-times "nop" 6 } } */
/* { dg-final { scan-assembler-not "rep" } } */
int
/* { dg-do compile } */
/* { dg-require-effective-target lp64 } */
-/* { dg-options "-O2 -fomit-frame-pointer -march=atom -S" } */
-/* { dg-final { scan-assembler-times "nop; nop; nop; nop" 1 } } */
-/* { dg-final { scan-assembler-not "nop; nop; nop; nop; nop" } } */
+/* { dg-options "-O2 -fomit-frame-pointer -march=atom" } */
+/* { dg-final { scan-assembler-times "nop" 4 } } */
/* { dg-final { scan-assembler-not "rep" } } */
extern void bar (void);
/* PR target/36502 */
/* { dg-do compile { target { *-*-darwin* && ilp32 } } } */
-/* { dg-options "-O -fomit-frame-pointer -fno-pic -S" } */
+/* { dg-options "-O -fomit-frame-pointer -fno-pic" } */
int a;
void f() {a++;}
/* { dg-final { scan-assembler-not "esp" } } */
/* { dg-do compile } */
/* { dg-require-effective-target lp64 } */
-/* { dg-options "-O2 -fzee -S" } */
+/* { dg-options "-O2 -fzee" } */
/* { dg-final { scan-assembler-not "mov\[\\t \]+\(%\[\^,\]+\),\[\\t \]*\\1" } } */
int mask[100];
int foo(unsigned x)