sh.c (sh_gimplify_va_arg_expr): Don't call pass_by_reference.
authorJoern Rennecke <amylaar@gcc.gnu.org>
Fri, 17 Sep 2004 11:53:14 +0000 (12:53 +0100)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Fri, 17 Sep 2004 11:53:14 +0000 (12:53 +0100)
* sh.c (sh_gimplify_va_arg_expr): Don't call pass_by_reference.
(sh_pass_by_reference): Work around std_gimplify_va_arg_expr bug.
* t-sh (MULTILIB_CPUS): s/ML_m/ML_sh/g .
* t-sh64 (MULTILIB_CPU_DIRS): Likewise.  Match trailing slashes
in substitutions.
(MULTILIB_DIRNAMES): Remove defunct removal of /media32.

From-SVN: r87640

gcc/config/sh/sh.c
gcc/config/sh/t-sh
gcc/config/sh/t-sh64

index b58293d8a35bf89c41225a144af73b5ffc130741..8dc017c3fd49cdfa2ca9d1d0cb086b21d1a77de1 100644 (file)
@@ -6382,7 +6382,7 @@ sh_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p,
   HOST_WIDE_INT size, rsize;
   tree tmp, pptr_type_node;
   tree addr, lab_over, result = NULL;
-  int pass_by_ref = pass_by_reference (NULL, TYPE_MODE (type), type, false);
+  int pass_by_ref = targetm.calls.must_pass_in_stack (TYPE_MODE (type), type);
 
   if (pass_by_ref)
     type = build_pointer_type (type);
@@ -6604,6 +6604,12 @@ sh_pass_by_reference (CUMULATIVE_ARGS *cum, enum machine_mode mode,
   if (targetm.calls.must_pass_in_stack (mode, type))
     return true;
 
+  /* ??? std_gimplify_va_arg_expr passes NULL for cum.  That function
+     wants to know about pass-by-reference semantics for incoming
+     arguments.  */
+  if (! cum)
+    return false;
+
   if (TARGET_SHCOMPACT)
     {
       cum->byref = shcompact_byref (cum, mode, type, named);
index 3660d06aacfaeec3dcf5fcc041101bc19d6b8ddb..c5eb397b142a9d4511111e54bc7285c1d16ea16e 100644 (file)
@@ -22,7 +22,7 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
        cat $(srcdir)/config/fp-bit.c >> fp-bit.c
 
 MULTILIB_ENDIAN = ml/mb
-MULTILIB_CPUS= $(ML_sh1)$(ML_sh2a)$(ML_sh2a_nofpu)$(ML_sh2a_single_only)$(ML_sh2a_single)$(ML_sh2e)$(ML_sh2)$(ML_sh3e)$(ML_sh3)$(ML_sh4_nofpu)$(ML_sh4_single_only)$(ML_sh4_single)$(ML_sh4)$(ML_sh4a_nofpu)$(ML_sh4a_single_only)$(ML_sh4a_single)$(ML_sh4a)$(ML_m5_32media)$(ML_m5_32media_nofpu)$(ML_m5_compact)$(ML_m5_compact_nofpu)$(ML_m5_64media)$(ML_m5_64media_nofpu)
+MULTILIB_CPUS= $(ML_sh1)$(ML_sh2a)$(ML_sh2a_nofpu)$(ML_sh2a_single_only)$(ML_sh2a_single)$(ML_sh2e)$(ML_sh2)$(ML_sh3e)$(ML_sh3)$(ML_sh4_nofpu)$(ML_sh4_single_only)$(ML_sh4_single)$(ML_sh4)$(ML_sh4a_nofpu)$(ML_sh4a_single_only)$(ML_sh4a_single)$(ML_sh4a)$(ML_sh5_32media)$(ML_sh5_32media_nofpu)$(ML_sh5_compact)$(ML_sh5_compact_nofpu)$(ML_sh5_64media)$(ML_sh5_64media_nofpu)
 
 MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) $(MULTILIB_CPUS:/=)
 MULTILIB_DIRNAMES= 
index 5ee83ba86329586450e2dc649b92d3cac8a3cd02..97a13beeb786001786b4fda2c180605ee968769d 100644 (file)
@@ -7,7 +7,7 @@ LIB1ASMFUNCS = \
   _push_pop_shmedia_regs \
   _udivdi3 _divdi3 _umoddi3 _moddi3
 
-MULTILIB_CPU_DIRS= $(ML_sh1) $(ML_sh2e) $(ML_sh2) $(ML_sh3e) $(ML_sh3) $(ML_sh4_nofpu) $(ML_sh4_single_only) $(ML_sh4_single) $(ML_sh4) $(ML_m5_32media:m5_32media=media32) $(ML_m5_32media_nofpu:m5_32media_nofpu=nofpu/media32) $(ML_m5_compact:m5_compact=compact) $(ML_m5_compact_nofpu:m5_compact_nofpu=nofpu/compact) $(ML_m5_64media:m5_64media=media64) $(ML_m5_64media_nofpu:m5_64media_nofpu=nofpu/media64)
+MULTILIB_CPU_DIRS= $(ML_sh1) $(ML_sh2e) $(ML_sh2) $(ML_sh3e) $(ML_sh3) $(ML_sh4_nofpu) $(ML_sh4_single_only) $(ML_sh4_single) $(ML_sh4) $(ML_sh5_32media:m5-32media/=media32) $(ML_sh5_32media_nofpu:m5-32media-nofpu/=nofpu/media32) $(ML_sh5_compact:m5-compact/=compact) $(ML_sh5_compact_nofpu:m5-compact-nofpu/=nofpu/compact) $(ML_sh5_64media:m5-64media/=media64) $(ML_sh5_64media_nofpu:m5-64media-nofpu/=nofpu/media64)
 
 MULTILIB_RAW_DIRNAMES= $(MULTILIB_ENDIAN:/mb= mb) $(MULTILIB_CPU_DIRS:/=)
-MULTILIB_DIRNAMES= $(MULTILIB_RAW_DIRNAMES:/media32=)
+MULTILIB_DIRNAMES= $(MULTILIB_RAW_DIRNAMES)