summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2012-07-25 15:10:44 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2012-07-25 15:10:44 +0000
commit6eb29590d14e36a3f9b888de765eeb0ed4d85a74 (patch)
treebdb3cf569a522f1b7ba2c5d4e351cd5e2e756fe1
parent59ff58d7278c87caa8103b1ac64e60645c5c3e62 (diff)
downloadppe42-gcc-6eb29590d14e36a3f9b888de765eeb0ed4d85a74.tar.gz
ppe42-gcc-6eb29590d14e36a3f9b888de765eeb0ed4d85a74.zip
PR bootstrap/54092
* libfuncs.h: Don't include optabs.h. (struct libfunc_entry): Use "int" for op, mode1, mode2 members. * optabs.c (hash_libfunc): Don't cast members to int. * Makefile.in (LIBFUNCS_H): Don't include OPTABS_H. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189853 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/Makefile.in2
-rw-r--r--gcc/libfuncs.h17
-rw-r--r--gcc/optabs.c2
4 files changed, 20 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 051d5e00b84..928eb0910de 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2012-07-25 Richard Henderson <rth@redhat.com>
+
+ PR bootstrap/54092
+ * libfuncs.h: Don't include optabs.h.
+ (struct libfunc_entry): Use "int" for op, mode1, mode2 members.
+ * optabs.c (hash_libfunc): Don't cast members to int.
+ * Makefile.in (LIBFUNCS_H): Don't include OPTABS_H.
+
2012-07-25 Dodji Seketeli <dodji@redhat.com>
* basic-block.c: Fix typo in comment.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 40f7c4de561..d7b8a76918e 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -971,7 +971,7 @@ GCC_PLUGIN_H = gcc-plugin.h highlev-plugin-common.h plugin.def \
$(CONFIG_H) $(SYSTEM_H) $(HASHTAB_H)
PLUGIN_H = plugin.h $(GCC_PLUGIN_H)
PLUGIN_VERSION_H = plugin-version.h configargs.h
-LIBFUNCS_H = libfuncs.h $(HASHTAB_H) $(OPTABS_H)
+LIBFUNCS_H = libfuncs.h $(HASHTAB_H)
#
# Now figure out from those variables how to compile and link.
diff --git a/gcc/libfuncs.h b/gcc/libfuncs.h
index 75f7a69f532..262e10fbcee 100644
--- a/gcc/libfuncs.h
+++ b/gcc/libfuncs.h
@@ -1,5 +1,5 @@
/* Definitions for code generation pass of GNU compiler.
- Copyright (C) 2001, 2004, 2007, 2008, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -21,7 +21,6 @@ along with GCC; see the file COPYING3. If not see
#define GCC_LIBFUNCS_H
#include "hashtab.h"
-#include "optabs.h"
/* Enumeration of indexes into libfunc_table. */
enum libfunc_index
@@ -48,12 +47,16 @@ enum libfunc_index
LTI_MAX
};
-/* Information about an optab-related libfunc. We use the same hashtable
- for normal optabs and conversion optabs. In the first case mode2
- is unused. */
+/* Information about an optab-related libfunc. The op field is logically
+ an enum optab_d, and the mode fields are logically enum machine_mode.
+ However, in the absence of forward-declared enums, there's no practical
+ benefit of pulling in the defining headers.
+
+ We use the same hashtable for normal optabs and conversion optabs. In
+ the first case mode2 is forced to VOIDmode. */
+
struct GTY(()) libfunc_entry {
- optab op;
- enum machine_mode mode1, mode2;
+ int op, mode1, mode2;
rtx libfunc;
};
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 022adfa22f8..462aa7c70ab 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -75,7 +75,7 @@ static hashval_t
hash_libfunc (const void *p)
{
const struct libfunc_entry *const e = (const struct libfunc_entry *) p;
- return (((int) e->mode1 + (int) e->mode2 * NUM_MACHINE_MODES) ^ e->op);
+ return ((e->mode1 + e->mode2 * NUM_MACHINE_MODES) ^ e->op);
}
/* Used for libfunc_hash. */
OpenPOWER on IntegriCloud