i386.md (UNSPECV_NOPS): Rename from UNSPEC_NOPS and define as unspec_volatile.

* 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
This commit is contained in:
Uros Bizjak 2010-09-23 15:25:30 +02:00
parent 3d11339491
commit 17eba94716
19 changed files with 84 additions and 72 deletions

View File

@ -1,3 +1,12 @@
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
@ -45,8 +54,7 @@
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.
@ -63,8 +71,7 @@
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>
@ -74,8 +81,7 @@
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.
@ -148,7 +154,7 @@
* 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.
@ -467,7 +473,7 @@
* 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.
@ -1084,7 +1090,7 @@
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.

View File

@ -8024,13 +8024,18 @@ ix86_code_end (void)
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);

View File

@ -104,7 +104,6 @@
UNSPEC_LD_MPIC ; load_macho_picbase
UNSPEC_TRUNC_NOOP
UNSPEC_DIV_ALREADY_SPLIT
UNSPEC_NOPS
;; For SSE/MMX support:
UNSPEC_FIX_NOTRUNC
@ -248,6 +247,7 @@
UNSPECV_LOCK
UNSPECV_PROLOGUE_USE
UNSPECV_CLD
UNSPECV_NOPS
UNSPECV_VZEROALL
UNSPECV_VZEROUPPER
UNSPECV_RDTSC
@ -11468,32 +11468,18 @@
;; 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")

View File

@ -1,3 +1,22 @@
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
@ -121,10 +140,10 @@
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>

View File

@ -1,5 +1,5 @@
/* { dg-do compile } */
/* { dg-options "-O2 -msse3 -S" } */
/* { dg-options "-O2 -msse3" } */
/* { dg-final { scan-assembler-not "%mm" } } */
/* PR 28825 */
#include <pmmintrin.h>

View File

@ -1,5 +1,5 @@
/* { 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" } } */

View File

@ -1,5 +1,5 @@
/* { 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" } } */

View File

@ -1,6 +1,6 @@
/* { 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

View File

@ -1,5 +1,5 @@
/* { 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" } } */

View File

@ -1,7 +1,8 @@
/* { 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;
@ -9,5 +10,6 @@ extern int bar;
int
foo ()
{
asm volatile ("");
return bar;
}

View File

@ -1,8 +1,7 @@
/* { 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

View File

@ -1,8 +1,7 @@
/* { 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

View File

@ -1,8 +1,7 @@
/* { 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

View File

@ -1,8 +1,7 @@
/* { 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

View File

@ -1,6 +1,6 @@
/* { 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" } } */

View File

@ -1,7 +1,6 @@
/* { 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

View File

@ -1,8 +1,7 @@
/* { 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);

View File

@ -1,6 +1,6 @@
/* 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" } } */

View File

@ -1,6 +1,6 @@
/* { 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)