S/390: Remove support for g5 and g6 machines
g5 and g6 were deprecated since gcc 6.1.0 (commit 3bd8520f). gcc/ChangeLog: 2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com> * common/config/s390/s390-common.c (processor_flags_table): Remove flags. * config.gcc: Remove with_arch/with_tune support. * config/s390/2064.md: Remove cpu attribute comparisons. * config/s390/driver-native.c (s390_host_detect_local_cpu): Remove MTN. * config/s390/linux.h (ASM_SPEC): Remove -march support. * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Use a table to get an arch level. * config/s390/s390-opts.h (enum processor_type): Remove enum values. * config/s390/s390.c (processor_table): Remove entries, add arch_level values. (s390_issue_rate): Remove cases. (s390_option_override): Adjust s390_option_override_internal() call. (s390_option_override_internal): Remove deprecation warning. (s390_valid_target_attribute_tree): Adjust s390_option_override_internal() call. * config/s390/s390.h (struct s390_processor): Share with s390-c.c, add arch_level field. * config/s390/s390.md: Remove occurrences in cpu attribute. * config/s390/s390.opt: Remove -march/-mtune support. * config/s390/tpf.h (ASM_SPEC): Remove -march support. * doc/invoke.texi: Remove deprecation warning. gcc/testsuite/ChangeLog: 2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com> * gcc.target/s390/hotpatch-8.c: Remove. * gcc.target/s390/hotpatch-9.c: Remove. * gcc.target/s390/mnop-mcount-m31-fpic.c: Remove. * gcc.target/s390/mnop-mcount-m31.c: Remove. From-SVN: r263393
This commit is contained in:
parent
e408261123
commit
52d4aa4fcf
19 changed files with 84 additions and 162 deletions
|
@ -1,3 +1,33 @@
|
|||
2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
|
||||
* common/config/s390/s390-common.c (processor_flags_table):
|
||||
Remove flags.
|
||||
* config.gcc: Remove with_arch/with_tune support.
|
||||
* config/s390/2064.md: Remove cpu attribute comparisons.
|
||||
* config/s390/driver-native.c (s390_host_detect_local_cpu):
|
||||
Remove MTN.
|
||||
* config/s390/linux.h (ASM_SPEC):
|
||||
Remove -march support.
|
||||
* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal):
|
||||
Use a table to get an arch level.
|
||||
* config/s390/s390-opts.h (enum processor_type):
|
||||
Remove enum values.
|
||||
* config/s390/s390.c
|
||||
(processor_table): Remove entries, add arch_level values.
|
||||
(s390_issue_rate): Remove cases.
|
||||
(s390_option_override): Adjust
|
||||
s390_option_override_internal() call.
|
||||
(s390_option_override_internal): Remove deprecation warning.
|
||||
(s390_valid_target_attribute_tree): Adjust
|
||||
s390_option_override_internal() call.
|
||||
* config/s390/s390.h (struct s390_processor):
|
||||
Share with s390-c.c, add arch_level field.
|
||||
* config/s390/s390.md:
|
||||
Remove occurrences in cpu attribute.
|
||||
* config/s390/s390.opt: Remove -march/-mtune support.
|
||||
* config/s390/tpf.h (ASM_SPEC): Remove -march support.
|
||||
* doc/invoke.texi: Remove deprecation warning.
|
||||
|
||||
2018-08-08 Luis Machado <luis.machado@linaro.org>
|
||||
|
||||
* config/aarch64/aarch64.c (qdf24xx_vector_cost): New static
|
||||
|
|
|
@ -29,8 +29,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
|
||||
EXPORTED_CONST int processor_flags_table[] =
|
||||
{
|
||||
/* g5 */ PF_IEEE_FLOAT,
|
||||
/* g6 */ PF_IEEE_FLOAT,
|
||||
/* z900 */ PF_IEEE_FLOAT | PF_ZARCH,
|
||||
/* z990 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT,
|
||||
/* z9-109 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
|
||||
|
|
|
@ -4574,7 +4574,7 @@ case "${target}" in
|
|||
for which in arch tune; do
|
||||
eval "val=\$with_$which"
|
||||
case ${val} in
|
||||
"" | native | g5 | g6 | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | arch3 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12)
|
||||
"" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12)
|
||||
# OK
|
||||
;;
|
||||
*)
|
||||
|
|
|
@ -39,63 +39,61 @@
|
|||
;; |
|
||||
;; wr
|
||||
|
||||
;; This scheduler description is also used for the g5 and g6.
|
||||
|
||||
(define_automaton "z_ipu")
|
||||
(define_cpu_unit "z_e1" "z_ipu")
|
||||
(define_cpu_unit "z_wr" "z_ipu")
|
||||
|
||||
|
||||
(define_insn_reservation "z_la" 1
|
||||
(and (eq_attr "cpu" "z900,g5,g6")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(eq_attr "type" "la"))
|
||||
"z_e1,z_wr")
|
||||
|
||||
(define_insn_reservation "z_larl" 1
|
||||
(and (eq_attr "cpu" "z900,g5,g6")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(eq_attr "type" "larl"))
|
||||
"z_e1,z_wr")
|
||||
|
||||
(define_insn_reservation "z_load" 1
|
||||
(and (eq_attr "cpu" "z900,g5,g6")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(eq_attr "type" "load"))
|
||||
"z_e1,z_wr")
|
||||
|
||||
(define_insn_reservation "z_store" 1
|
||||
(and (eq_attr "cpu" "z900,g5,g6")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(eq_attr "type" "store"))
|
||||
"z_e1,z_wr")
|
||||
|
||||
(define_insn_reservation "z_sem" 2
|
||||
(and (eq_attr "cpu" "z900,g5,g6")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(eq_attr "type" "sem"))
|
||||
"z_e1*2,z_wr")
|
||||
|
||||
(define_insn_reservation "z_call" 5
|
||||
(and (eq_attr "cpu" "z900,g5,g6")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(eq_attr "type" "jsr"))
|
||||
"z_e1*5,z_wr")
|
||||
|
||||
(define_insn_reservation "z_mul" 5
|
||||
(and (eq_attr "cpu" "g5,g6,z900")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(eq_attr "type" "imulsi,imulhi"))
|
||||
"z_e1*5,z_wr")
|
||||
|
||||
(define_insn_reservation "z_inf" 10
|
||||
(and (eq_attr "cpu" "g5,g6,z900")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(eq_attr "type" "idiv,imuldi"))
|
||||
"z_e1*10,z_wr")
|
||||
|
||||
;; For everything else we check the atype flag.
|
||||
|
||||
(define_insn_reservation "z_int" 1
|
||||
(and (eq_attr "cpu" "z900,g5,g6")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(and (not (eq_attr "type" "la,larl,load,store,jsr"))
|
||||
(eq_attr "atype" "reg")))
|
||||
"z_e1,z_wr")
|
||||
|
||||
(define_insn_reservation "z_agen" 1
|
||||
(and (eq_attr "cpu" "z900,g5,g6")
|
||||
(and (eq_attr "cpu" "z900")
|
||||
(and (not (eq_attr "type" "la,larl,load,store,jsr"))
|
||||
(eq_attr "atype" "agen")))
|
||||
"z_e1,z_wr")
|
||||
|
|
|
@ -86,8 +86,6 @@ s390_host_detect_local_cpu (int argc, const char **argv)
|
|||
machine_id = strtol (p, NULL, 16);
|
||||
switch (machine_id)
|
||||
{
|
||||
/* g5 and g6 default to z900 */
|
||||
case 0x9672:
|
||||
case 0x2064:
|
||||
case 0x2066:
|
||||
cpu = "z900";
|
||||
|
|
|
@ -55,7 +55,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#undef ASM_SPEC
|
||||
#define ASM_SPEC \
|
||||
"%{m31&m64}%{mesa&mzarch}%{march=z*}" \
|
||||
"%{march=arch3:-march=g5}" \
|
||||
"%{march=arch5:-march=z900}" \
|
||||
"%{march=arch6:-march=z990}" \
|
||||
"%{march=arch7:-march=z9-ec}" \
|
||||
|
|
|
@ -335,15 +335,8 @@ s390_cpu_cpp_builtins_internal (cpp_reader *pfile,
|
|||
"__bool");
|
||||
{
|
||||
char macro_def[64];
|
||||
int arch_level;
|
||||
gcc_assert (s390_arch != PROCESSOR_NATIVE);
|
||||
arch_level = (int)s390_arch + 3;
|
||||
if (s390_arch >= PROCESSOR_2094_Z9_EC)
|
||||
/* Z9_EC has the same level as Z9_109. */
|
||||
arch_level--;
|
||||
/* Review when a new arch is added and increase the value. */
|
||||
char dummy[(PROCESSOR_max > 12) ? -1 : 1] __attribute__((unused));
|
||||
sprintf (macro_def, "__ARCH__=%d", arch_level);
|
||||
sprintf (macro_def, "__ARCH__=%d", processor_table[s390_arch].arch_level);
|
||||
cpp_undef (pfile, "__ARCH__");
|
||||
cpp_define (pfile, macro_def);
|
||||
}
|
||||
|
|
|
@ -20,16 +20,14 @@ along with GCC; see the file COPYING3. If not see
|
|||
#ifndef S390_OPTS_H
|
||||
#define S390_OPTS_H
|
||||
|
||||
/* Which processor to generate code or schedule for. The cpu attribute
|
||||
/* Which processor to generate code or schedule for. The `cpu' attribute
|
||||
defines a list that mirrors this list, so changes to s390.md must be
|
||||
made at the same time. The enumeration must also be kept in snyc with
|
||||
processor_table in s390.c (the enumeration values are used as indices into
|
||||
the table). */
|
||||
made at the same time. The enumeration must also be kept in sync with
|
||||
`processor_table' and `processor_flags_table' in s390.c (the enumeration
|
||||
values are used as indices into these tables). */
|
||||
|
||||
enum processor_type
|
||||
{
|
||||
PROCESSOR_9672_G5,
|
||||
PROCESSOR_9672_G6,
|
||||
PROCESSOR_2064_Z900,
|
||||
PROCESSOR_2084_Z990,
|
||||
PROCESSOR_2094_Z9_109,
|
||||
|
|
|
@ -326,29 +326,18 @@ struct processor_costs zEC12_cost =
|
|||
COSTS_N_INSNS (160), /* DSGR cracked */
|
||||
};
|
||||
|
||||
static struct
|
||||
const struct s390_processor processor_table[] =
|
||||
{
|
||||
/* The preferred name to be used in user visible output. */
|
||||
const char *const name;
|
||||
/* CPU name as it should be passed to Binutils via .machine */
|
||||
const char *const binutils_name;
|
||||
const enum processor_type processor;
|
||||
const struct processor_costs *cost;
|
||||
}
|
||||
const processor_table[] =
|
||||
{
|
||||
{ "g5", "g5", PROCESSOR_9672_G5, &z900_cost },
|
||||
{ "g6", "g6", PROCESSOR_9672_G6, &z900_cost },
|
||||
{ "z900", "z900", PROCESSOR_2064_Z900, &z900_cost },
|
||||
{ "z990", "z990", PROCESSOR_2084_Z990, &z990_cost },
|
||||
{ "z9-109", "z9-109", PROCESSOR_2094_Z9_109, &z9_109_cost },
|
||||
{ "z9-ec", "z9-ec", PROCESSOR_2094_Z9_EC, &z9_109_cost },
|
||||
{ "z10", "z10", PROCESSOR_2097_Z10, &z10_cost },
|
||||
{ "z196", "z196", PROCESSOR_2817_Z196, &z196_cost },
|
||||
{ "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost },
|
||||
{ "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost },
|
||||
{ "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost },
|
||||
{ "native", "", PROCESSOR_NATIVE, NULL }
|
||||
{ "z900", "z900", PROCESSOR_2064_Z900, &z900_cost, 5 },
|
||||
{ "z990", "z990", PROCESSOR_2084_Z990, &z990_cost, 6 },
|
||||
{ "z9-109", "z9-109", PROCESSOR_2094_Z9_109, &z9_109_cost, 7 },
|
||||
{ "z9-ec", "z9-ec", PROCESSOR_2094_Z9_EC, &z9_109_cost, 7 },
|
||||
{ "z10", "z10", PROCESSOR_2097_Z10, &z10_cost, 8 },
|
||||
{ "z196", "z196", PROCESSOR_2817_Z196, &z196_cost, 9 },
|
||||
{ "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost, 10 },
|
||||
{ "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost, 11 },
|
||||
{ "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost, 12 },
|
||||
{ "native", "", PROCESSOR_NATIVE, NULL, 0 }
|
||||
};
|
||||
|
||||
extern int reload_completed;
|
||||
|
@ -8190,8 +8179,6 @@ s390_issue_rate (void)
|
|||
return 3;
|
||||
case PROCESSOR_2097_Z10:
|
||||
return 2;
|
||||
case PROCESSOR_9672_G5:
|
||||
case PROCESSOR_9672_G6:
|
||||
case PROCESSOR_2064_Z900:
|
||||
/* Starting with EC12 we use the sched_reorder hook to take care
|
||||
of instruction dispatch constraints. The algorithm only
|
||||
|
@ -15457,27 +15444,9 @@ s390_override_options_after_change (void)
|
|||
}
|
||||
|
||||
static void
|
||||
s390_option_override_internal (bool main_args_p,
|
||||
struct gcc_options *opts,
|
||||
s390_option_override_internal (struct gcc_options *opts,
|
||||
const struct gcc_options *opts_set)
|
||||
{
|
||||
const char *prefix;
|
||||
const char *suffix;
|
||||
|
||||
/* Set up prefix/suffix so the error messages refer to either the command
|
||||
line argument, or the attribute(target). */
|
||||
if (main_args_p)
|
||||
{
|
||||
prefix = "-m";
|
||||
suffix = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
prefix = "option(\"";
|
||||
suffix = "\")";
|
||||
}
|
||||
|
||||
|
||||
/* Architecture mode defaults according to ABI. */
|
||||
if (!(opts_set->x_target_flags & MASK_ZARCH))
|
||||
{
|
||||
|
@ -15490,24 +15459,12 @@ s390_option_override_internal (bool main_args_p,
|
|||
/* Set the march default in case it hasn't been specified on cmdline. */
|
||||
if (!opts_set->x_s390_arch)
|
||||
opts->x_s390_arch = PROCESSOR_2064_Z900;
|
||||
else if (opts->x_s390_arch == PROCESSOR_9672_G5
|
||||
|| opts->x_s390_arch == PROCESSOR_9672_G6)
|
||||
warning (OPT_Wdeprecated, "%sarch=%s%s is deprecated and will be removed "
|
||||
"in future releases; use at least %sarch=z900%s",
|
||||
prefix, opts->x_s390_arch == PROCESSOR_9672_G5 ? "g5" : "g6",
|
||||
suffix, prefix, suffix);
|
||||
|
||||
opts->x_s390_arch_flags = processor_flags_table[(int) opts->x_s390_arch];
|
||||
|
||||
/* Determine processor to tune for. */
|
||||
if (!opts_set->x_s390_tune)
|
||||
opts->x_s390_tune = opts->x_s390_arch;
|
||||
else if (opts->x_s390_tune == PROCESSOR_9672_G5
|
||||
|| opts->x_s390_tune == PROCESSOR_9672_G6)
|
||||
warning (OPT_Wdeprecated, "%stune=%s%s is deprecated and will be removed "
|
||||
"in future releases; use at least %stune=z900%s",
|
||||
prefix, opts->x_s390_tune == PROCESSOR_9672_G5 ? "g5" : "g6",
|
||||
suffix, prefix, suffix);
|
||||
|
||||
opts->x_s390_tune_flags = processor_flags_table[opts->x_s390_tune];
|
||||
|
||||
|
@ -15763,7 +15720,7 @@ s390_option_override (void)
|
|||
/* Set up function hooks. */
|
||||
init_machine_status = s390_init_machine_status;
|
||||
|
||||
s390_option_override_internal (true, &global_options, &global_options_set);
|
||||
s390_option_override_internal (&global_options, &global_options_set);
|
||||
|
||||
/* Save the initial options in case the user does function specific
|
||||
options. */
|
||||
|
@ -16068,7 +16025,7 @@ s390_valid_target_attribute_tree (tree args,
|
|||
dest[i] |= src[i];
|
||||
|
||||
/* Do any overrides, such as arch=xxx, or tune=xxx support. */
|
||||
s390_option_override_internal (false, opts, &new_opts_set);
|
||||
s390_option_override_internal (opts, &new_opts_set);
|
||||
/* Save the current options unless we are validating options for
|
||||
#pragma. */
|
||||
t = build_target_option_node (opts);
|
||||
|
|
|
@ -1029,6 +1029,19 @@ do { \
|
|||
|
||||
extern const int processor_flags_table[];
|
||||
|
||||
struct s390_processor
|
||||
{
|
||||
/* The preferred name to be used in user visible output. */
|
||||
const char *const name;
|
||||
/* CPU name as it should be passed to Binutils via .machine */
|
||||
const char *const binutils_name;
|
||||
const enum processor_type processor;
|
||||
const struct processor_costs *cost;
|
||||
int arch_level;
|
||||
};
|
||||
|
||||
extern const struct s390_processor processor_table[];
|
||||
|
||||
/* The truth element value for vector comparisons. Our instructions
|
||||
always generate -1 in that case. */
|
||||
#define VECTOR_STORE_FLAG_VALUE(MODE) CONSTM1_RTX (GET_MODE_INNER (MODE))
|
||||
|
|
|
@ -492,11 +492,9 @@
|
|||
|
||||
|
||||
;; Processor type. This attribute must exactly match the processor_type
|
||||
;; enumeration in s390.h. The current machine description does not
|
||||
;; distinguish between g5 and g6, but there are differences between the two
|
||||
;; CPUs could in theory be modeled.
|
||||
;; enumeration in s390.h.
|
||||
|
||||
(define_attr "cpu" "g5,g6,z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,arch12"
|
||||
(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,arch12"
|
||||
(const (symbol_ref "s390_tune_attr")))
|
||||
|
||||
(define_attr "cpu_facility"
|
||||
|
@ -561,8 +559,7 @@
|
|||
]
|
||||
(const_int 0)))
|
||||
|
||||
;; Pipeline description for z900. For lack of anything better,
|
||||
;; this description is also used for the g5 and g6.
|
||||
;; Pipeline description for z900.
|
||||
(include "2064.md")
|
||||
|
||||
;; Pipeline description for z990, z9-109 and z9-ec.
|
||||
|
|
|
@ -58,15 +58,6 @@ Generate code for given CPU.
|
|||
Enum
|
||||
Name(processor_type) Type(enum processor_type)
|
||||
|
||||
EnumValue
|
||||
Enum(processor_type) String(g5) Value(PROCESSOR_9672_G5)
|
||||
|
||||
EnumValue
|
||||
Enum(processor_type) String(arch3) Value(PROCESSOR_9672_G5)
|
||||
|
||||
EnumValue
|
||||
Enum(processor_type) String(g6) Value(PROCESSOR_9672_G6)
|
||||
|
||||
EnumValue
|
||||
Enum(processor_type) String(z900) Value(PROCESSOR_2064_Z900)
|
||||
|
||||
|
|
|
@ -94,7 +94,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#undef ASM_SPEC
|
||||
#define ASM_SPEC \
|
||||
"%{m31&m64}%{mesa&mzarch}%{march=z*}" \
|
||||
"%{march=arch3:-march=g5}" \
|
||||
"%{march=arch5:-march=z900}" \
|
||||
"%{march=arch6:-march=z990}" \
|
||||
"%{march=arch7:-march=z9-ec}" \
|
||||
|
|
|
@ -24857,8 +24857,7 @@ system representing a certain processor type. Possible values for
|
|||
@samp{z196}/@samp{arch9}, @samp{zEC12}, @samp{z13}/@samp{arch11}, and
|
||||
@samp{native}.
|
||||
|
||||
The default is @option{-march=z900}. @samp{g5}/@samp{arch3} and
|
||||
@samp{g6} are deprecated and will be removed with future releases.
|
||||
The default is @option{-march=z900}.
|
||||
|
||||
Specifying @samp{native} as cpu type can be used to select the best
|
||||
architecture option for the host processor.
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
|
||||
* gcc.target/s390/hotpatch-8.c: Remove.
|
||||
* gcc.target/s390/hotpatch-9.c: Remove.
|
||||
* gcc.target/s390/mnop-mcount-m31-fpic.c: Remove.
|
||||
* gcc.target/s390/mnop-mcount-m31.c: Remove.
|
||||
|
||||
2018-08-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
P0595R1 - is_constant_evaluated
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
/* Functional tests for the function hotpatching feature. */
|
||||
|
||||
/* { dg-do compile { target { ! lp64 } } } */
|
||||
/* { dg-options "-mesa -march=g5 -Wno-deprecated -mhotpatch=0,3" } */
|
||||
/* { dg-skip-if "" { *-*-* } { "*" } { "-O*" } } */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void hp1(void)
|
||||
{
|
||||
printf("hello, world!\n");
|
||||
}
|
||||
|
||||
/* Check number of occurences of certain instructions. */
|
||||
/* { dg-final { scan-assembler-not "pre-label NOPs" } } */
|
||||
/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(3 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */
|
||||
/* { dg-final { scan-assembler-times "nopr\t%r0" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
|
||||
/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
|
||||
/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */
|
|
@ -1,19 +0,0 @@
|
|||
/* Functional tests for the function hotpatching feature. */
|
||||
|
||||
/* { dg-do compile { target { ! lp64 } } } */
|
||||
/* { dg-options "-mesa -march=g5 -Wno-deprecated -mhotpatch=0,4" } */
|
||||
/* { dg-skip-if "" { *-*-* } { "*" } { "-O*" } } */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void hp1(void)
|
||||
{
|
||||
printf("hello, world!\n");
|
||||
}
|
||||
|
||||
/* Check number of occurences of certain instructions. */
|
||||
/* { dg-final { scan-assembler-not "pre-label NOPs" } } */
|
||||
/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(4 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */
|
||||
/* { dg-final { scan-assembler-not "nopr\t%r0" } } */
|
||||
/* { dg-final { scan-assembler-times "nop\t0" 2 } } */
|
||||
/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
|
|
@ -1,8 +0,0 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-m31 -mesa -march=g5 -fPIC -pg -mnop-mcount -Wno-deprecated" } */
|
||||
|
||||
void
|
||||
profileme (void)
|
||||
{
|
||||
/* { dg-final { scan-assembler "NOPs for -mnop-mcount \\(16 halfwords\\)\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0" } } */
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-m31 -mesa -march=g5 -pg -mnop-mcount -Wno-deprecated" } */
|
||||
|
||||
void
|
||||
profileme (void)
|
||||
{
|
||||
/* { dg-final { scan-assembler "NOPs for -mnop-mcount \\(15 halfwords\\)\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bcr\t0,0" } } */
|
||||
}
|
Loading…
Add table
Reference in a new issue