aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/rs6000-gen-builtins.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/rs6000/rs6000-gen-builtins.cc')
-rw-r--r--gcc/config/rs6000/rs6000-gen-builtins.cc72
1 files changed, 38 insertions, 34 deletions
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.cc b/gcc/config/rs6000/rs6000-gen-builtins.cc
index 0bd7a53..e04ed83 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.cc
+++ b/gcc/config/rs6000/rs6000-gen-builtins.cc
@@ -2261,20 +2261,19 @@ write_decls (void)
fprintf (header_file, "};\n\n");
fprintf (header_file, "#define PPC_MAXRESTROPNDS 3\n");
- fprintf (header_file, "struct GTY(()) bifdata\n");
+ fprintf (header_file, "struct bifdata\n");
fprintf (header_file, "{\n");
- fprintf (header_file, " const char *GTY((skip(\"\"))) bifname;\n");
- fprintf (header_file, " bif_enable GTY((skip(\"\"))) enable;\n");
- fprintf (header_file, " tree fntype;\n");
- fprintf (header_file, " insn_code GTY((skip(\"\"))) icode;\n");
- fprintf (header_file, " int nargs;\n");
- fprintf (header_file, " int bifattrs;\n");
- fprintf (header_file, " int restr_opnd[PPC_MAXRESTROPNDS];\n");
- fprintf (header_file, " restriction GTY((skip(\"\"))) restr[PPC_MAXRESTROPNDS];\n");
- fprintf (header_file, " int restr_val1[PPC_MAXRESTROPNDS];\n");
- fprintf (header_file, " int restr_val2[PPC_MAXRESTROPNDS];\n");
- fprintf (header_file, " const char *GTY((skip(\"\"))) attr_string;\n");
- fprintf (header_file, " rs6000_gen_builtins GTY((skip(\"\"))) assoc_bif;\n");
+ fprintf (header_file, " const char *bifname;\n");
+ fprintf (header_file, " bif_enable enable;\n");
+ fprintf (header_file, " insn_code icode;\n");
+ fprintf (header_file, " int nargs;\n");
+ fprintf (header_file, " int bifattrs;\n");
+ fprintf (header_file, " int restr_opnd[PPC_MAXRESTROPNDS];\n");
+ fprintf (header_file, " restriction restr[PPC_MAXRESTROPNDS];\n");
+ fprintf (header_file, " int restr_val1[PPC_MAXRESTROPNDS];\n");
+ fprintf (header_file, " int restr_val2[PPC_MAXRESTROPNDS];\n");
+ fprintf (header_file, " const char *attr_string;\n");
+ fprintf (header_file, " rs6000_gen_builtins assoc_bif;\n");
fprintf (header_file, "};\n\n");
fprintf (header_file, "#define bif_init_bit\t\t(0x00000001)\n");
@@ -2353,24 +2352,28 @@ write_decls (void)
fprintf (header_file, "\n");
fprintf (header_file,
- "extern GTY(()) bifdata rs6000_builtin_info[RS6000_BIF_MAX];\n\n");
+ "extern bifdata rs6000_builtin_info[RS6000_BIF_MAX];\n\n");
- fprintf (header_file, "struct GTY(()) ovlddata\n");
+ fprintf (header_file,
+ "extern GTY(()) tree rs6000_builtin_info_fntype[RS6000_BIF_MAX];\n\n");
+
+ fprintf (header_file, "struct ovlddata\n");
fprintf (header_file, "{\n");
- fprintf (header_file, " const char *GTY((skip(\"\"))) bifname;\n");
- fprintf (header_file, " rs6000_gen_builtins GTY((skip(\"\"))) bifid;\n");
- fprintf (header_file, " tree fntype;\n");
- fprintf (header_file, " ovlddata *GTY((skip(\"\"))) next;\n");
+ fprintf (header_file, " const char *bifname;\n");
+ fprintf (header_file, " rs6000_gen_builtins bifid;\n");
+ fprintf (header_file, " int next;\n");
fprintf (header_file, "};\n\n");
fprintf (header_file, "struct ovldrecord\n");
fprintf (header_file, "{\n");
fprintf (header_file, " const char *ovld_name;\n");
- fprintf (header_file, " ovlddata *first_instance;\n");
+ fprintf (header_file, " int first_instance;\n");
fprintf (header_file, "};\n\n");
fprintf (header_file,
- "extern GTY(()) ovlddata rs6000_instance_info[RS6000_INST_MAX];\n");
+ "extern ovlddata rs6000_instance_info[RS6000_INST_MAX];\n");
+ fprintf (header_file, "extern GTY(()) tree "
+ "rs6000_instance_info_fntype[RS6000_INST_MAX];\n");
fprintf (header_file, "extern ovldrecord rs6000_overload_info[];\n\n");
fprintf (header_file, "extern void rs6000_init_generated_builtins ();\n\n");
@@ -2481,7 +2484,7 @@ write_bif_static_init (void)
fprintf (init_file, "bifdata rs6000_builtin_info[RS6000_BIF_MAX] =\n");
fprintf (init_file, " {\n");
fprintf (init_file, " { /* RS6000_BIF_NONE: */\n");
- fprintf (init_file, " \"\", ENB_ALWAYS, 0, CODE_FOR_nothing, 0,\n");
+ fprintf (init_file, " \"\", ENB_ALWAYS, CODE_FOR_nothing, 0,\n");
fprintf (init_file, " 0, {0, 0, 0}, {RES_NONE, RES_NONE, RES_NONE},\n");
fprintf (init_file, " {0, 0, 0}, {0, 0, 0}, \"\", RS6000_BIF_NONE\n");
fprintf (init_file, " },\n");
@@ -2493,8 +2496,6 @@ write_bif_static_init (void)
bifp->proto.bifname);
fprintf (init_file, " /* enable*/\t%s,\n",
enable_string[bifp->stanza]);
- /* Type must be instantiated at run time. */
- fprintf (init_file, " /* fntype */\t0,\n");
fprintf (init_file, " /* icode */\tCODE_FOR_%s,\n",
bifp->patname);
fprintf (init_file, " /* nargs */\t%d,\n",
@@ -2586,6 +2587,8 @@ write_bif_static_init (void)
fprintf (init_file, " },\n");
}
fprintf (init_file, " };\n\n");
+
+ fprintf (init_file, "tree rs6000_builtin_info_fntype[RS6000_BIF_MAX];\n\n");
}
/* Write the decls and initializers for rs6000_overload_info[] and
@@ -2598,7 +2601,7 @@ write_ovld_static_init (void)
"- RS6000_OVLD_NONE] =\n");
fprintf (init_file, " {\n");
fprintf (init_file, " { /* RS6000_OVLD_NONE: */\n");
- fprintf (init_file, " \"\", NULL\n");
+ fprintf (init_file, " \"\", -1\n");
fprintf (init_file, " },\n");
for (int i = 0; i <= curr_ovld_stanza; i++)
{
@@ -2607,7 +2610,7 @@ write_ovld_static_init (void)
fprintf (init_file, " /* ovld_name */\t\"%s\",\n",
ovld_stanzas[i].intern_name);
/* First-instance must currently be instantiated at run time. */
- fprintf (init_file, " /* first_instance */\tNULL\n");
+ fprintf (init_file, " /* first_instance */\t-1\n");
fprintf (init_file, " },\n");
}
fprintf (init_file, " };\n\n");
@@ -2615,7 +2618,7 @@ write_ovld_static_init (void)
fprintf (init_file, "ovlddata rs6000_instance_info[RS6000_INST_MAX] =\n");
fprintf (init_file, " {\n");
fprintf (init_file, " { /* RS6000_INST_NONE: */\n");
- fprintf (init_file, " \"\", RS6000_BIF_NONE, NULL_TREE, NULL\n");
+ fprintf (init_file, " \"\", RS6000_BIF_NONE, -1\n");
fprintf (init_file, " },\n");
for (int i = 0; i <= curr_ovld; i++)
{
@@ -2625,19 +2628,20 @@ write_ovld_static_init (void)
ovlds[i].proto.bifname);
fprintf (init_file, " /* bifid */\tRS6000_BIF_%s,\n",
ovlds[i].bif_id_name);
- /* Type must be instantiated at run time. */
- fprintf (init_file, " /* fntype */\t0,\n");
fprintf (init_file, " /* next */\t");
if (i < curr_ovld
&& !strcmp (ovlds[i+1].proto.bifname, ovlds[i].proto.bifname))
fprintf (init_file,
- "&rs6000_instance_info[RS6000_INST_%s]\n",
+ "RS6000_INST_%s\n",
ovlds[i+1].ovld_id_name);
else
- fprintf (init_file, "NULL\n");
+ fprintf (init_file, "-1\n");
fprintf (init_file, " },\n");
}
fprintf (init_file, " };\n\n");
+
+ fprintf (init_file,
+ "tree rs6000_instance_info_fntype[RS6000_INST_MAX];\n\n");
}
/* Write code to initialize the built-in function table. */
@@ -2647,7 +2651,7 @@ write_init_bif_table (void)
for (int i = 0; i <= curr_bif; i++)
{
fprintf (init_file,
- " rs6000_builtin_info[RS6000_BIF_%s].fntype"
+ " rs6000_builtin_info_fntype[RS6000_BIF_%s]"
"\n = %s;\n",
bifs[i].idname, bifs[i].fndecl);
@@ -2736,7 +2740,7 @@ write_init_ovld_table (void)
for (int i = 0; i <= curr_ovld; i++)
{
fprintf (init_file,
- " rs6000_instance_info[RS6000_INST_%s].fntype"
+ " rs6000_instance_info_fntype[RS6000_INST_%s]"
"\n = %s;\n",
ovlds[i].ovld_id_name, ovlds[i].fndecl);
@@ -2793,7 +2797,7 @@ write_init_ovld_table (void)
".first_instance\n",
stanza->stanza_id);
fprintf (init_file,
- " = &rs6000_instance_info[RS6000_INST_%s];\n\n",
+ " = RS6000_INST_%s;\n\n",
ovlds[i].ovld_id_name);
}
}