Commit 52d4aa4f by Ilya Leoshkevich Committed by Andreas Krebbel

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
parent e4082611
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> 2018-08-08 Luis Machado <luis.machado@linaro.org>
* config/aarch64/aarch64.c (qdf24xx_vector_cost): New static * config/aarch64/aarch64.c (qdf24xx_vector_cost): New static
......
...@@ -29,8 +29,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -29,8 +29,6 @@ along with GCC; see the file COPYING3. If not see
EXPORTED_CONST int processor_flags_table[] = EXPORTED_CONST int processor_flags_table[] =
{ {
/* g5 */ PF_IEEE_FLOAT,
/* g6 */ PF_IEEE_FLOAT,
/* z900 */ PF_IEEE_FLOAT | PF_ZARCH, /* z900 */ PF_IEEE_FLOAT | PF_ZARCH,
/* z990 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT, /* z990 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT,
/* z9-109 */ 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 ...@@ -4574,7 +4574,7 @@ case "${target}" in
for which in arch tune; do for which in arch tune; do
eval "val=\$with_$which" eval "val=\$with_$which"
case ${val} in 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 # OK
;; ;;
*) *)
......
...@@ -39,63 +39,61 @@ ...@@ -39,63 +39,61 @@
;; | ;; |
;; wr ;; wr
;; This scheduler description is also used for the g5 and g6.
(define_automaton "z_ipu") (define_automaton "z_ipu")
(define_cpu_unit "z_e1" "z_ipu") (define_cpu_unit "z_e1" "z_ipu")
(define_cpu_unit "z_wr" "z_ipu") (define_cpu_unit "z_wr" "z_ipu")
(define_insn_reservation "z_la" 1 (define_insn_reservation "z_la" 1
(and (eq_attr "cpu" "z900,g5,g6") (and (eq_attr "cpu" "z900")
(eq_attr "type" "la")) (eq_attr "type" "la"))
"z_e1,z_wr") "z_e1,z_wr")
(define_insn_reservation "z_larl" 1 (define_insn_reservation "z_larl" 1
(and (eq_attr "cpu" "z900,g5,g6") (and (eq_attr "cpu" "z900")
(eq_attr "type" "larl")) (eq_attr "type" "larl"))
"z_e1,z_wr") "z_e1,z_wr")
(define_insn_reservation "z_load" 1 (define_insn_reservation "z_load" 1
(and (eq_attr "cpu" "z900,g5,g6") (and (eq_attr "cpu" "z900")
(eq_attr "type" "load")) (eq_attr "type" "load"))
"z_e1,z_wr") "z_e1,z_wr")
(define_insn_reservation "z_store" 1 (define_insn_reservation "z_store" 1
(and (eq_attr "cpu" "z900,g5,g6") (and (eq_attr "cpu" "z900")
(eq_attr "type" "store")) (eq_attr "type" "store"))
"z_e1,z_wr") "z_e1,z_wr")
(define_insn_reservation "z_sem" 2 (define_insn_reservation "z_sem" 2
(and (eq_attr "cpu" "z900,g5,g6") (and (eq_attr "cpu" "z900")
(eq_attr "type" "sem")) (eq_attr "type" "sem"))
"z_e1*2,z_wr") "z_e1*2,z_wr")
(define_insn_reservation "z_call" 5 (define_insn_reservation "z_call" 5
(and (eq_attr "cpu" "z900,g5,g6") (and (eq_attr "cpu" "z900")
(eq_attr "type" "jsr")) (eq_attr "type" "jsr"))
"z_e1*5,z_wr") "z_e1*5,z_wr")
(define_insn_reservation "z_mul" 5 (define_insn_reservation "z_mul" 5
(and (eq_attr "cpu" "g5,g6,z900") (and (eq_attr "cpu" "z900")
(eq_attr "type" "imulsi,imulhi")) (eq_attr "type" "imulsi,imulhi"))
"z_e1*5,z_wr") "z_e1*5,z_wr")
(define_insn_reservation "z_inf" 10 (define_insn_reservation "z_inf" 10
(and (eq_attr "cpu" "g5,g6,z900") (and (eq_attr "cpu" "z900")
(eq_attr "type" "idiv,imuldi")) (eq_attr "type" "idiv,imuldi"))
"z_e1*10,z_wr") "z_e1*10,z_wr")
;; For everything else we check the atype flag. ;; For everything else we check the atype flag.
(define_insn_reservation "z_int" 1 (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")) (and (not (eq_attr "type" "la,larl,load,store,jsr"))
(eq_attr "atype" "reg"))) (eq_attr "atype" "reg")))
"z_e1,z_wr") "z_e1,z_wr")
(define_insn_reservation "z_agen" 1 (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")) (and (not (eq_attr "type" "la,larl,load,store,jsr"))
(eq_attr "atype" "agen"))) (eq_attr "atype" "agen")))
"z_e1,z_wr") "z_e1,z_wr")
......
...@@ -86,8 +86,6 @@ s390_host_detect_local_cpu (int argc, const char **argv) ...@@ -86,8 +86,6 @@ s390_host_detect_local_cpu (int argc, const char **argv)
machine_id = strtol (p, NULL, 16); machine_id = strtol (p, NULL, 16);
switch (machine_id) switch (machine_id)
{ {
/* g5 and g6 default to z900 */
case 0x9672:
case 0x2064: case 0x2064:
case 0x2066: case 0x2066:
cpu = "z900"; cpu = "z900";
......
...@@ -55,7 +55,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -55,7 +55,6 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC \ #define ASM_SPEC \
"%{m31&m64}%{mesa&mzarch}%{march=z*}" \ "%{m31&m64}%{mesa&mzarch}%{march=z*}" \
"%{march=arch3:-march=g5}" \
"%{march=arch5:-march=z900}" \ "%{march=arch5:-march=z900}" \
"%{march=arch6:-march=z990}" \ "%{march=arch6:-march=z990}" \
"%{march=arch7:-march=z9-ec}" \ "%{march=arch7:-march=z9-ec}" \
......
...@@ -335,15 +335,8 @@ s390_cpu_cpp_builtins_internal (cpp_reader *pfile, ...@@ -335,15 +335,8 @@ s390_cpu_cpp_builtins_internal (cpp_reader *pfile,
"__bool"); "__bool");
{ {
char macro_def[64]; char macro_def[64];
int arch_level;
gcc_assert (s390_arch != PROCESSOR_NATIVE); gcc_assert (s390_arch != PROCESSOR_NATIVE);
arch_level = (int)s390_arch + 3; sprintf (macro_def, "__ARCH__=%d", processor_table[s390_arch].arch_level);
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);
cpp_undef (pfile, "__ARCH__"); cpp_undef (pfile, "__ARCH__");
cpp_define (pfile, macro_def); cpp_define (pfile, macro_def);
} }
......
...@@ -20,16 +20,14 @@ along with GCC; see the file COPYING3. If not see ...@@ -20,16 +20,14 @@ along with GCC; see the file COPYING3. If not see
#ifndef S390_OPTS_H #ifndef S390_OPTS_H
#define 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 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 made at the same time. The enumeration must also be kept in sync with
processor_table in s390.c (the enumeration values are used as indices into `processor_table' and `processor_flags_table' in s390.c (the enumeration
the table). */ values are used as indices into these tables). */
enum processor_type enum processor_type
{ {
PROCESSOR_9672_G5,
PROCESSOR_9672_G6,
PROCESSOR_2064_Z900, PROCESSOR_2064_Z900,
PROCESSOR_2084_Z990, PROCESSOR_2084_Z990,
PROCESSOR_2094_Z9_109, PROCESSOR_2094_Z9_109,
......
...@@ -326,29 +326,18 @@ struct processor_costs zEC12_cost = ...@@ -326,29 +326,18 @@ struct processor_costs zEC12_cost =
COSTS_N_INSNS (160), /* DSGR cracked */ COSTS_N_INSNS (160), /* DSGR cracked */
}; };
static struct const struct s390_processor processor_table[] =
{ {
/* The preferred name to be used in user visible output. */ { "z900", "z900", PROCESSOR_2064_Z900, &z900_cost, 5 },
const char *const name; { "z990", "z990", PROCESSOR_2084_Z990, &z990_cost, 6 },
/* CPU name as it should be passed to Binutils via .machine */ { "z9-109", "z9-109", PROCESSOR_2094_Z9_109, &z9_109_cost, 7 },
const char *const binutils_name; { "z9-ec", "z9-ec", PROCESSOR_2094_Z9_EC, &z9_109_cost, 7 },
const enum processor_type processor; { "z10", "z10", PROCESSOR_2097_Z10, &z10_cost, 8 },
const struct processor_costs *cost; { "z196", "z196", PROCESSOR_2817_Z196, &z196_cost, 9 },
} { "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost, 10 },
const processor_table[] = { "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost, 11 },
{ { "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost, 12 },
{ "g5", "g5", PROCESSOR_9672_G5, &z900_cost }, { "native", "", PROCESSOR_NATIVE, NULL, 0 }
{ "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 }
}; };
extern int reload_completed; extern int reload_completed;
...@@ -8190,8 +8179,6 @@ s390_issue_rate (void) ...@@ -8190,8 +8179,6 @@ s390_issue_rate (void)
return 3; return 3;
case PROCESSOR_2097_Z10: case PROCESSOR_2097_Z10:
return 2; return 2;
case PROCESSOR_9672_G5:
case PROCESSOR_9672_G6:
case PROCESSOR_2064_Z900: case PROCESSOR_2064_Z900:
/* Starting with EC12 we use the sched_reorder hook to take care /* Starting with EC12 we use the sched_reorder hook to take care
of instruction dispatch constraints. The algorithm only of instruction dispatch constraints. The algorithm only
...@@ -15457,27 +15444,9 @@ s390_override_options_after_change (void) ...@@ -15457,27 +15444,9 @@ s390_override_options_after_change (void)
} }
static void static void
s390_option_override_internal (bool main_args_p, s390_option_override_internal (struct gcc_options *opts,
struct gcc_options *opts,
const struct gcc_options *opts_set) 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. */ /* Architecture mode defaults according to ABI. */
if (!(opts_set->x_target_flags & MASK_ZARCH)) if (!(opts_set->x_target_flags & MASK_ZARCH))
{ {
...@@ -15490,24 +15459,12 @@ s390_option_override_internal (bool main_args_p, ...@@ -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. */ /* Set the march default in case it hasn't been specified on cmdline. */
if (!opts_set->x_s390_arch) if (!opts_set->x_s390_arch)
opts->x_s390_arch = PROCESSOR_2064_Z900; 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]; opts->x_s390_arch_flags = processor_flags_table[(int) opts->x_s390_arch];
/* Determine processor to tune for. */ /* Determine processor to tune for. */
if (!opts_set->x_s390_tune) if (!opts_set->x_s390_tune)
opts->x_s390_tune = opts->x_s390_arch; 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]; opts->x_s390_tune_flags = processor_flags_table[opts->x_s390_tune];
...@@ -15763,7 +15720,7 @@ s390_option_override (void) ...@@ -15763,7 +15720,7 @@ s390_option_override (void)
/* Set up function hooks. */ /* Set up function hooks. */
init_machine_status = s390_init_machine_status; 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 /* Save the initial options in case the user does function specific
options. */ options. */
...@@ -16068,7 +16025,7 @@ s390_valid_target_attribute_tree (tree args, ...@@ -16068,7 +16025,7 @@ s390_valid_target_attribute_tree (tree args,
dest[i] |= src[i]; dest[i] |= src[i];
/* Do any overrides, such as arch=xxx, or tune=xxx support. */ /* 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 /* Save the current options unless we are validating options for
#pragma. */ #pragma. */
t = build_target_option_node (opts); t = build_target_option_node (opts);
......
...@@ -1029,6 +1029,19 @@ do { \ ...@@ -1029,6 +1029,19 @@ do { \
extern const int processor_flags_table[]; 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 /* The truth element value for vector comparisons. Our instructions
always generate -1 in that case. */ always generate -1 in that case. */
#define VECTOR_STORE_FLAG_VALUE(MODE) CONSTM1_RTX (GET_MODE_INNER (MODE)) #define VECTOR_STORE_FLAG_VALUE(MODE) CONSTM1_RTX (GET_MODE_INNER (MODE))
......
...@@ -492,11 +492,9 @@ ...@@ -492,11 +492,9 @@
;; Processor type. This attribute must exactly match the processor_type ;; Processor type. This attribute must exactly match the processor_type
;; enumeration in s390.h. The current machine description does not ;; enumeration in s390.h.
;; distinguish between g5 and g6, but there are differences between the two
;; CPUs could in theory be modeled.
(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"))) (const (symbol_ref "s390_tune_attr")))
(define_attr "cpu_facility" (define_attr "cpu_facility"
...@@ -561,8 +559,7 @@ ...@@ -561,8 +559,7 @@
] ]
(const_int 0))) (const_int 0)))
;; Pipeline description for z900. For lack of anything better, ;; Pipeline description for z900.
;; this description is also used for the g5 and g6.
(include "2064.md") (include "2064.md")
;; Pipeline description for z990, z9-109 and z9-ec. ;; Pipeline description for z990, z9-109 and z9-ec.
......
...@@ -59,15 +59,6 @@ Enum ...@@ -59,15 +59,6 @@ Enum
Name(processor_type) Type(enum processor_type) Name(processor_type) Type(enum processor_type)
EnumValue 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) Enum(processor_type) String(z900) Value(PROCESSOR_2064_Z900)
EnumValue EnumValue
......
...@@ -94,7 +94,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -94,7 +94,6 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC \ #define ASM_SPEC \
"%{m31&m64}%{mesa&mzarch}%{march=z*}" \ "%{m31&m64}%{mesa&mzarch}%{march=z*}" \
"%{march=arch3:-march=g5}" \
"%{march=arch5:-march=z900}" \ "%{march=arch5:-march=z900}" \
"%{march=arch6:-march=z990}" \ "%{march=arch6:-march=z990}" \
"%{march=arch7:-march=z9-ec}" \ "%{march=arch7:-march=z9-ec}" \
......
...@@ -24857,8 +24857,7 @@ system representing a certain processor type. Possible values for ...@@ -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{z196}/@samp{arch9}, @samp{zEC12}, @samp{z13}/@samp{arch11}, and
@samp{native}. @samp{native}.
The default is @option{-march=z900}. @samp{g5}/@samp{arch3} and The default is @option{-march=z900}.
@samp{g6} are deprecated and will be removed with future releases.
Specifying @samp{native} as cpu type can be used to select the best Specifying @samp{native} as cpu type can be used to select the best
architecture option for the host processor. architecture option for the host processor.
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> 2018-08-08 Jakub Jelinek <jakub@redhat.com>
P0595R1 - is_constant_evaluated P0595R1 - is_constant_evaluated
......
/* 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" } } */
/* 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" } } */
/* { 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" } } */
}
/* { 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" } } */
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment