From: Dominik Vogt Date: Thu, 12 Mar 2015 11:13:40 +0000 (+0000) Subject: S/390: Hotpatching fixes. X-Git-Tag: releases/gcc-5.1.0~473 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=f8af0e30507397f8ad7895d788b432b6695a4a66;p=gcc.git S/390: Hotpatching fixes. 2015-03-02 Dominik Vogt * config/s390/s390.c (s390_reorg): Move code to output nops after label to s390_reorg (). (s390_asm_output_function_label): Likewise. * config/s390/s390.c (s390_asm_output_function_label): Fix function label alignment with -mhtopatch. * config/s390/s390.md ("unspecv"): New values UNSPECV_NOP_2_BYTE, UNSPECV_NOP_4_BYTE and UNSPECV_NOP_6_BYTE ("nop_2_byte"): New define_insn. ("nop_4_byte"): Likewise. ("nop_6_byte"): Likewise. * doc/extend.texi (hotpatch): hotpatch attribute doc fixes. * doc/invoke.texi (-mhotpatch): -mhotpatch doc fixes. 2015-03-02 Dominik Vogt * gcc.target/s390/hotpatch-21.c: New test for hotpatch alignment. * gcc.target/s390/hotpatch-22.c: Likewise. * gcc.target/s390/hotpatch-23.c: Likewise. * gcc.target/s390/hotpatch-24.c: Likewise. * gcc.target/s390/hotpatch-2.c: Also check hotpatch alignment. * gcc.target/s390/hotpatch-1.c: Update expected output. * gcc.target/s390/hotpatch-2.c: Likewise. * gcc.target/s390/hotpatch-3.c: Likewise. * gcc.target/s390/hotpatch-4.c: Likewise. * gcc.target/s390/hotpatch-5.c: Likewise. * gcc.target/s390/hotpatch-6.c: Likewise. * gcc.target/s390/hotpatch-7.c: Likewise. * gcc.target/s390/hotpatch-8.c: Likewise. * gcc.target/s390/hotpatch-9.c: Likewise. * gcc.target/s390/hotpatch-10.c: Likewise. * gcc.target/s390/hotpatch-11.c: Likewise. * gcc.target/s390/hotpatch-12.c: Likewise. * gcc.target/s390/hotpatch-13.c: Likewise. * gcc.target/s390/hotpatch-14.c: Likewise. * gcc.target/s390/hotpatch-15.c: Likewise. * gcc.target/s390/hotpatch-16.c: Likewise. * gcc.target/s390/hotpatch-17.c: Likewise. * gcc.target/s390/hotpatch-18.c: Likewise. * gcc.target/s390/hotpatch-19.c: Likewise. From-SVN: r221381 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 43d67175732b..590099891206 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2015-03-12 Dominik Vogt + + * config/s390/s390.c (s390_reorg): Move code to output nops after label + to s390_reorg (). + (s390_asm_output_function_label): Likewise. + * config/s390/s390.c (s390_asm_output_function_label): + Fix function label alignment with -mhtopatch. + * config/s390/s390.md ("unspecv"): New values UNSPECV_NOP_2_BYTE, + UNSPECV_NOP_4_BYTE and UNSPECV_NOP_6_BYTE + ("nop_2_byte"): New define_insn. + ("nop_4_byte"): Likewise. + ("nop_6_byte"): Likewise. + * doc/extend.texi (hotpatch): hotpatch attribute doc fixes. + * doc/invoke.texi (-mhotpatch): -mhotpatch doc fixes. + 2015-03-12 Ilya Enkovich PR target/65103 diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 593c0cc8ee2d..d2b87046b3a4 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -5295,6 +5295,7 @@ s390_asm_output_function_label (FILE *asm_out_file, const char *fname, if (hotpatch_p) { + unsigned int function_alignment; int i; /* Add a trampoline code area before the function label and initialize it @@ -5308,34 +5309,14 @@ s390_asm_output_function_label (FILE *asm_out_file, const char *fname, stored directly before the label without crossing a cacheline boundary. All this is necessary to make sure the trampoline code can be changed atomically. */ + function_alignment = MAX (8, DECL_ALIGN (decl) / BITS_PER_UNIT); + if (! DECL_USER_ALIGN (decl)) + function_alignment = MAX (function_alignment, + (unsigned int) align_functions); + ASM_OUTPUT_ALIGN (asm_out_file, floor_log2 (function_alignment)); } ASM_OUTPUT_LABEL (asm_out_file, fname); - - /* Output a series of NOPs after the function label. */ - if (hotpatch_p) - { - while (hw_after > 0) - { - if (hw_after >= 3 && TARGET_CPU_ZARCH) - { - asm_fprintf (asm_out_file, "\tbrcl\t\t0,0\n"); - hw_after -= 3; - } - else if (hw_after >= 2) - { - gcc_assert (hw_after == 2 || !TARGET_CPU_ZARCH); - asm_fprintf (asm_out_file, "\tnop\t0\n"); - hw_after -= 2; - } - else - { - gcc_assert (hw_after == 1); - asm_fprintf (asm_out_file, "\tnopr\t%%r7\n"); - hw_after -= 1; - } - } - } } /* Output machine-dependent UNSPECs occurring in address constant X @@ -11368,6 +11349,7 @@ static void s390_reorg (void) { bool pool_overflow = false; + int hw_before, hw_after; /* Make sure all splits have been performed; splits after machine_dependent_reorg might confuse insn length counts. */ @@ -11503,6 +11485,40 @@ s390_reorg (void) if (insn_added_p) shorten_branches (get_insns ()); } + + s390_function_num_hotpatch_hw (current_function_decl, &hw_before, &hw_after); + if (hw_after > 0) + { + rtx_insn *insn; + + /* Inject nops for hotpatching. */ + for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) + { + if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_FUNCTION_BEG) + break; + } + gcc_assert (insn); + /* Output a series of NOPs after the NOTE_INSN_FUNCTION_BEG. */ + while (hw_after > 0) + { + if (hw_after >= 3 && TARGET_CPU_ZARCH) + { + insn = emit_insn_after (gen_nop_6_byte (), insn); + hw_after -= 3; + } + else if (hw_after >= 2) + { + insn = emit_insn_after (gen_nop_4_byte (), insn); + hw_after -= 2; + } + else + { + insn = emit_insn_after (gen_nop_2_byte (), insn); + hw_after -= 1; + } + } + gcc_assert (hw_after == 0); + } } /* Return true if INSN is a fp load insn writing register REGNO. */ diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index bf698b1cf81c..76dca0a68aef 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -153,6 +153,11 @@ UNSPECV_CAS UNSPECV_ATOMIC_OP + ; Hotpatching (unremovable NOPs) + UNSPECV_NOP_2_BYTE + UNSPECV_NOP_4_BYTE + UNSPECV_NOP_6_BYTE + ; Transactional Execution support UNSPECV_TBEGIN UNSPECV_TBEGIN_TDB @@ -9705,6 +9710,26 @@ "lr\t1,1" [(set_attr "op_type" "RR")]) +;;- Undeletable nops (used for hotpatching) + +(define_insn "nop_2_byte" + [(unspec_volatile [(const_int 0)] UNSPECV_NOP_2_BYTE)] + "" + "nopr\t%%r7" + [(set_attr "op_type" "RR")]) + +(define_insn "nop_4_byte" + [(unspec_volatile [(const_int 0)] UNSPECV_NOP_4_BYTE)] + "" + "nop\t0" + [(set_attr "op_type" "RX")]) + +(define_insn "nop_6_byte" + [(unspec_volatile [(const_int 0)] UNSPECV_NOP_6_BYTE)] + "TARGET_CPU_ZARCH" + "brcl\t0, 0" + [(set_attr "op_type" "RIL")]) + ; ; Special literal pool access instruction pattern(s). diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 1534ed93b3d9..08ce074c2606 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -20216,9 +20216,9 @@ The @var{stack-guard} option can only be used in conjunction with @var{stack-siz If the hotpatch option is enabled, a ``hot-patching'' function prologue is generated for all functions in the compilation unit. The funtion label is prepended with the given number of two-byte -Nop instructions (@var{pre-halfwords}, maximum 1000000). After +NOP instructions (@var{pre-halfwords}, maximum 1000000). After the label, 2 * @var{post-halfwords} bytes are appended, using the -larges nop like instructions the architecture allows (maximum +largest NOP like instructions the architecture allows (maximum 1000000). If both arguments are zero, hotpatching is disabled. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4bd7f0e72112..baf5f426f5cb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,30 @@ +2015-03-12 Dominik Vogt + + * gcc.target/s390/hotpatch-21.c: New test for hotpatch alignment. + * gcc.target/s390/hotpatch-22.c: Likewise. + * gcc.target/s390/hotpatch-23.c: Likewise. + * gcc.target/s390/hotpatch-24.c: Likewise. + * gcc.target/s390/hotpatch-2.c: Also check hotpatch alignment. + * gcc.target/s390/hotpatch-1.c: Update expected output. + * gcc.target/s390/hotpatch-2.c: Likewise. + * gcc.target/s390/hotpatch-3.c: Likewise. + * gcc.target/s390/hotpatch-4.c: Likewise. + * gcc.target/s390/hotpatch-5.c: Likewise. + * gcc.target/s390/hotpatch-6.c: Likewise. + * gcc.target/s390/hotpatch-7.c: Likewise. + * gcc.target/s390/hotpatch-8.c: Likewise. + * gcc.target/s390/hotpatch-9.c: Likewise. + * gcc.target/s390/hotpatch-10.c: Likewise. + * gcc.target/s390/hotpatch-11.c: Likewise. + * gcc.target/s390/hotpatch-12.c: Likewise. + * gcc.target/s390/hotpatch-13.c: Likewise. + * gcc.target/s390/hotpatch-14.c: Likewise. + * gcc.target/s390/hotpatch-15.c: Likewise. + * gcc.target/s390/hotpatch-16.c: Likewise. + * gcc.target/s390/hotpatch-17.c: Likewise. + * gcc.target/s390/hotpatch-18.c: Likewise. + * gcc.target/s390/hotpatch-19.c: Likewise. + 2015-03-12 Ilya Enkovich PR target/65103 diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-1.c b/gcc/testsuite/gcc.target/s390/hotpatch-1.c index 61d8f39f52ad..4e29817991eb 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-1.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-1.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-10.c b/gcc/testsuite/gcc.target/s390/hotpatch-10.c index 1097ab437bb8..352c9d500d70 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-10.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-10.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-11.c b/gcc/testsuite/gcc.target/s390/hotpatch-11.c index be08acc7922c..beb8738c653a 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-11.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-11.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-12.c b/gcc/testsuite/gcc.target/s390/hotpatch-12.c index 6e909c0ec48e..d109478b04f5 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-12.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-12.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 999 } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-13.c b/gcc/testsuite/gcc.target/s390/hotpatch-13.c index 959789cf13db..9ac9f842d633 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-13.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-13.c @@ -14,4 +14,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-14.c b/gcc/testsuite/gcc.target/s390/hotpatch-14.c index 0f1f41f25024..209e4ac5e47a 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-14.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-14.c @@ -14,4 +14,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-15.c b/gcc/testsuite/gcc.target/s390/hotpatch-15.c index e3064953c322..109034ef019b 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-15.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-15.c @@ -14,4 +14,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-16.c b/gcc/testsuite/gcc.target/s390/hotpatch-16.c index 66f13fe3c5c8..b01c1c322544 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-16.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-16.c @@ -14,4 +14,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-17.c b/gcc/testsuite/gcc.target/s390/hotpatch-17.c index b301c5cd294e..ce0b950f8d3a 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-17.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-17.c @@ -14,4 +14,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-18.c b/gcc/testsuite/gcc.target/s390/hotpatch-18.c index 1c06783f4bcd..9a24d5e6a776 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-18.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-18.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-19.c b/gcc/testsuite/gcc.target/s390/hotpatch-19.c index a1ec9c76c8b2..3586da29a896 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-19.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-19.c @@ -20,4 +20,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-2.c b/gcc/testsuite/gcc.target/s390/hotpatch-2.c index 0c82a5a966c8..18be5aa23831 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-2.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-2.c @@ -13,4 +13,5 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ +/* { dg-final { scan-assembler-times "\.align\t8" 2 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-21.c b/gcc/testsuite/gcc.target/s390/hotpatch-21.c new file mode 100644 index 000000000000..d72dee318cfb --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-21.c @@ -0,0 +1,14 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -mhotpatch=0,1" } */ + +#include + +void __attribute__ ((aligned(512))) hp1(void) +{ + printf("hello, world!\n"); +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "\.align\t512" 2 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-22.c b/gcc/testsuite/gcc.target/s390/hotpatch-22.c new file mode 100644 index 000000000000..650746610238 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-22.c @@ -0,0 +1,14 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -mhotpatch=0,1 -falign-functions=1024" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "\.align\t1024" 2 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-23.c b/gcc/testsuite/gcc.target/s390/hotpatch-23.c new file mode 100644 index 000000000000..7dce5b8b0fa3 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-23.c @@ -0,0 +1,14 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -mhotpatch=0,1 -falign-functions=4096" } */ + +#include + +void __attribute__ ((aligned(2048))) hp1(void) +{ + printf("hello, world!\n"); +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "\.align\t2048" 2 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-24.c b/gcc/testsuite/gcc.target/s390/hotpatch-24.c new file mode 100644 index 000000000000..4d6815cb5161 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-24.c @@ -0,0 +1,14 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -mhotpatch=0,1 -falign-functions=2048" } */ + +#include + +void __attribute__ ((aligned(4096))) hp1(void) +{ + printf("hello, world!\n"); +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "\.align\t4096" 2 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-3.c b/gcc/testsuite/gcc.target/s390/hotpatch-3.c index 041ef9ce83c5..8a2ab538e8dc 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-3.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-3.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-4.c b/gcc/testsuite/gcc.target/s390/hotpatch-4.c index 050a0651406d..9a69459797e2 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-4.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-4.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-times "brcl\t\t0,0" 1 } } */ +/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-5.c b/gcc/testsuite/gcc.target/s390/hotpatch-5.c index 785dba7066fb..b3d990f499a3 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-5.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-5.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-times "brcl\t\t0,0" 1 } } */ +/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-6.c b/gcc/testsuite/gcc.target/s390/hotpatch-6.c index da96e4368afe..10ba5580b0d4 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-6.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-6.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ -/* { dg-final { scan-assembler-times "brcl\t\t0,0" 1 } } */ +/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-7.c b/gcc/testsuite/gcc.target/s390/hotpatch-7.c index b7c19d7d6fe0..edf67d3e22ec 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-7.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-7.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-not "nop\t0" } } */ -/* { dg-final { scan-assembler-times "brcl\t\t0,0" 2 } } */ +/* { dg-final { scan-assembler-times "brcl\t0, 0" 2 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-8.c b/gcc/testsuite/gcc.target/s390/hotpatch-8.c index 25edd9b0ed22..a179c4a633cb 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-8.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-8.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ /* { dg-final { scan-assembler-times "nop\t0" 1 } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-9.c b/gcc/testsuite/gcc.target/s390/hotpatch-9.c index 2143f9d42803..c4e21f2d3def 100644 --- a/gcc/testsuite/gcc.target/s390/hotpatch-9.c +++ b/gcc/testsuite/gcc.target/s390/hotpatch-9.c @@ -13,4 +13,4 @@ void hp1(void) /* Check number of occurences of certain instructions. */ /* { dg-final { scan-assembler-not "nopr\t%r7" } } */ /* { dg-final { scan-assembler-times "nop\t0" 2 } } */ -/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */ +/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */