aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2010-09-23 15:25:30 +0200
committerUros Bizjak <uros@gcc.gnu.org>2010-09-23 15:25:30 +0200
commit17eba94716651dad5794c22ef649c65776c74cb8 (patch)
tree75c727f24633429d3f712c9cf054f904e2b76083 /gcc
parent3d11339491ec3085638198715c880e7d19e1ae6b (diff)
downloadgcc-17eba94716651dad5794c22ef649c65776c74cb8.zip
gcc-17eba94716651dad5794c22ef649c65776c74cb8.tar.gz
gcc-17eba94716651dad5794c22ef649c65776c74cb8.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog24
-rw-r--r--gcc/config/i386/i386.c15
-rw-r--r--gcc/config/i386/i386.md36
-rw-r--r--gcc/testsuite/ChangeLog27
-rw-r--r--gcc/testsuite/gcc.target/i386/20060821-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-10.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-2.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-4.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-5a.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-5b.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-6a.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-6b.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-7.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-8.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/pad-9.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr36502.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/zee.c2
19 files changed, 84 insertions, 72 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 425e14f..ac4745b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 49c3c9c..b258521 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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);
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index e3161bb..55086f3 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -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")
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index db8da87..65fca96 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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>
diff --git a/gcc/testsuite/gcc.target/i386/20060821-1.c b/gcc/testsuite/gcc.target/i386/20060821-1.c
index 56e980f..29a9afe 100644
--- a/gcc/testsuite/gcc.target/i386/20060821-1.c
+++ b/gcc/testsuite/gcc.target/i386/20060821-1.c
@@ -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>
diff --git a/gcc/testsuite/gcc.target/i386/pad-1.c b/gcc/testsuite/gcc.target/i386/pad-1.c
index 87a9d6c..770c44d 100644
--- a/gcc/testsuite/gcc.target/i386/pad-1.c
+++ b/gcc/testsuite/gcc.target/i386/pad-1.c
@@ -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" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pad-10.c b/gcc/testsuite/gcc.target/i386/pad-10.c
index 6ba3b78..e10d24c 100644
--- a/gcc/testsuite/gcc.target/i386/pad-10.c
+++ b/gcc/testsuite/gcc.target/i386/pad-10.c
@@ -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" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pad-2.c b/gcc/testsuite/gcc.target/i386/pad-2.c
index 964547c..37743c4 100644
--- a/gcc/testsuite/gcc.target/i386/pad-2.c
+++ b/gcc/testsuite/gcc.target/i386/pad-2.c
@@ -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
diff --git a/gcc/testsuite/gcc.target/i386/pad-3.c b/gcc/testsuite/gcc.target/i386/pad-3.c
index 28db2cc..b9a547d 100644
--- a/gcc/testsuite/gcc.target/i386/pad-3.c
+++ b/gcc/testsuite/gcc.target/i386/pad-3.c
@@ -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" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pad-4.c b/gcc/testsuite/gcc.target/i386/pad-4.c
index a7033fa..ad6b029 100644
--- a/gcc/testsuite/gcc.target/i386/pad-4.c
+++ b/gcc/testsuite/gcc.target/i386/pad-4.c
@@ -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;
}
diff --git a/gcc/testsuite/gcc.target/i386/pad-5a.c b/gcc/testsuite/gcc.target/i386/pad-5a.c
index 9d0aa2a..d29e628 100644
--- a/gcc/testsuite/gcc.target/i386/pad-5a.c
+++ b/gcc/testsuite/gcc.target/i386/pad-5a.c
@@ -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
diff --git a/gcc/testsuite/gcc.target/i386/pad-5b.c b/gcc/testsuite/gcc.target/i386/pad-5b.c
index 2e1cf12..1d95bf3 100644
--- a/gcc/testsuite/gcc.target/i386/pad-5b.c
+++ b/gcc/testsuite/gcc.target/i386/pad-5b.c
@@ -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
diff --git a/gcc/testsuite/gcc.target/i386/pad-6a.c b/gcc/testsuite/gcc.target/i386/pad-6a.c
index e865967..e2db5ad 100644
--- a/gcc/testsuite/gcc.target/i386/pad-6a.c
+++ b/gcc/testsuite/gcc.target/i386/pad-6a.c
@@ -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
diff --git a/gcc/testsuite/gcc.target/i386/pad-6b.c b/gcc/testsuite/gcc.target/i386/pad-6b.c
index 41aeaee..d8f9bec 100644
--- a/gcc/testsuite/gcc.target/i386/pad-6b.c
+++ b/gcc/testsuite/gcc.target/i386/pad-6b.c
@@ -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
diff --git a/gcc/testsuite/gcc.target/i386/pad-7.c b/gcc/testsuite/gcc.target/i386/pad-7.c
index 7a7493d..8904eca 100644
--- a/gcc/testsuite/gcc.target/i386/pad-7.c
+++ b/gcc/testsuite/gcc.target/i386/pad-7.c
@@ -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" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pad-8.c b/gcc/testsuite/gcc.target/i386/pad-8.c
index 873a0a4..0e939fa 100644
--- a/gcc/testsuite/gcc.target/i386/pad-8.c
+++ b/gcc/testsuite/gcc.target/i386/pad-8.c
@@ -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
diff --git a/gcc/testsuite/gcc.target/i386/pad-9.c b/gcc/testsuite/gcc.target/i386/pad-9.c
index 3d68805..69e3344 100644
--- a/gcc/testsuite/gcc.target/i386/pad-9.c
+++ b/gcc/testsuite/gcc.target/i386/pad-9.c
@@ -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);
diff --git a/gcc/testsuite/gcc.target/i386/pr36502.c b/gcc/testsuite/gcc.target/i386/pr36502.c
index 5794159..bc4c7cc 100644
--- a/gcc/testsuite/gcc.target/i386/pr36502.c
+++ b/gcc/testsuite/gcc.target/i386/pr36502.c
@@ -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" } } */
diff --git a/gcc/testsuite/gcc.target/i386/zee.c b/gcc/testsuite/gcc.target/i386/zee.c
index 4ed3aa8..b46e890 100644
--- a/gcc/testsuite/gcc.target/i386/zee.c
+++ b/gcc/testsuite/gcc.target/i386/zee.c
@@ -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)