diff options
author | John van Groningen | 2016-05-26 13:59:18 +0000 |
---|---|---|
committer | John van Groningen | 2016-05-26 13:59:18 +0000 |
commit | 808e64fecbc0983c2771a3ef2f7ecd96c04fa4b8 (patch) | |
tree | 8f6a292fd63eb793e8c4cbb22594a0671a0852cd | |
parent | generate a lot of $d and $a mapping symbols for ARM (diff) |
fix push_r_arg_D instruction for MACH_O64
-rw-r--r-- | cgcode.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -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 |