aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/vax
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/vax')
-rw-r--r--gcc/config/vax/elf.h9
-rw-r--r--gcc/config/vax/vax.c16
-rw-r--r--gcc/config/vax/vax.h11
3 files changed, 22 insertions, 14 deletions
diff --git a/gcc/config/vax/elf.h b/gcc/config/vax/elf.h
index 122e3cf..533ce92 100644
--- a/gcc/config/vax/elf.h
+++ b/gcc/config/vax/elf.h
@@ -19,6 +19,9 @@ along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#undef TARGET_ELF
+#define TARGET_ELF 1
+
#undef REGISTER_PREFIX
#undef REGISTER_NAMES
#define REGISTER_PREFIX "%"
@@ -70,12 +73,6 @@ Boston, MA 02111-1307, USA. */
#undef ASM_OUTPUT_BEFORE_CASE_LABEL
#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE, PREFIX, NUM, TABLE)
-/* Get the udiv/urem calls out of the user's namespace. */
-#undef UDIVSI3_LIBCALL
-#define UDIVSI3_LIBCALL "*__udiv"
-#undef UMODSI3_LIBCALL
-#define UMODSI3_LIBCALL "*__urem"
-
#undef OVERRIDE_OPTIONS
#define OVERRIDE_OPTIONS \
do \
diff --git a/gcc/config/vax/vax.c b/gcc/config/vax/vax.c
index ad40e982..4f8ffb0 100644
--- a/gcc/config/vax/vax.c
+++ b/gcc/config/vax/vax.c
@@ -35,6 +35,7 @@ Boston, MA 02111-1307, USA. */
#include "insn-attr.h"
#include "recog.h"
#include "expr.h"
+#include "optabs.h"
#include "flags.h"
#include "debug.h"
#include "tm_p.h"
@@ -43,6 +44,7 @@ Boston, MA 02111-1307, USA. */
static void vax_output_function_prologue (FILE *, HOST_WIDE_INT);
static void vax_file_start (void);
+static void vax_init_libfuncs (void);
static void vax_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
HOST_WIDE_INT, tree);
static int vax_address_cost_1 (rtx);
@@ -62,6 +64,9 @@ static bool vax_rtx_costs (rtx, int, int, int *);
#undef TARGET_ASM_FILE_START_APP_OFF
#define TARGET_ASM_FILE_START_APP_OFF true
+#undef TARGET_INIT_LIBFUNCS
+#define TARGET_INIT_LIBFUNCS vax_init_libfuncs
+
#undef TARGET_ASM_OUTPUT_MI_THUNK
#define TARGET_ASM_OUTPUT_MI_THUNK vax_output_mi_thunk
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
@@ -141,6 +146,17 @@ vax_file_start (void)
fprintf (asm_out_file, "___vax_%c_doubles:\n", ASM_DOUBLE_CHAR);
}
+/* We can use the BSD C library routines for the libgcc calls that are
+ still generated, since that's what they boil down to anyways. When
+ ELF, avoid the user's namespace. */
+
+static void
+vax_init_libfuncs (void)
+{
+ set_optab_libfunc (udiv_optab, SImode, TARGET_ELF ? "*__udiv" : "*udiv");
+ set_optab_libfunc (umod_optab, SImode, TARGET_ELF ? "*__umod" : "*umod");
+}
+
/* This is like nonimmediate_operand with a restriction on the type of MEM. */
void
diff --git a/gcc/config/vax/vax.h b/gcc/config/vax/vax.h
index bb1450d..0bbcc27 100644
--- a/gcc/config/vax/vax.h
+++ b/gcc/config/vax/vax.h
@@ -78,6 +78,9 @@ extern int target_flags;
/* Nonzero if compiling with `G'-format floating point */
#define TARGET_G_FLOAT (target_flags & MASK_G_FLOAT)
+/* Nonzero if ELF. Redefined by vax/elf.h. */
+#define TARGET_ELF 0
+
/* Macro to define tables used to set the flags.
This is a list in braces of pairs in braces,
each pair being { "NAME", VALUE }
@@ -855,14 +858,6 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES };
used to replace branches can be expensive. */
#define BRANCH_COST 0
-
-/*
- * We can use the BSD C library routines for the libgcc calls that are
- * still generated, since that's what they boil down to anyways.
- */
-
-#define UDIVSI3_LIBCALL "*udiv"
-#define UMODSI3_LIBCALL "*urem"
/* Tell final.c how to eliminate redundant test instructions. */