summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn van Groningen2016-05-26 13:59:18 +0000
committerJohn van Groningen2016-05-26 13:59:18 +0000
commit808e64fecbc0983c2771a3ef2f7ecd96c04fa4b8 (patch)
tree8f6a292fd63eb793e8c4cbb22594a0671a0852cd
parentgenerate a lot of $d and $a mapping symbols for ARM (diff)
fix push_r_arg_D instruction for MACH_O64
-rw-r--r--cgcode.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/cgcode.c b/cgcode.c
index 95f4761..59340fa 100644
--- a/cgcode.c
+++ b/cgcode.c
@@ -6220,17 +6220,21 @@ void code_push_r_arg_D (VOID)
graph_1=s_pop_b();
graph_2=s_get_b (0);
+#ifdef MACH_O64
+ graph_1=g_and (g_load_i (-8),g_add (g_load_i (8-1),graph_1));
+#else
graph_1=g_and (g_load_i (-4),g_add (g_load_i (4-1),graph_1));
+#endif
#if defined (G_AI64)
# if defined (MACH_O64) || defined (LINUX)
-# ifdef LINUX
+# ifndef MACH_O64
if (pic_flag)
# endif
{
graph_1=g_add (g_lsl (g_load_i (3),graph_2),graph_1);
graph_2=g_load_id (0,graph_1);
}
-# ifdef LINUX
+# ifndef MACH_O64
else
# endif
# endif