From b32c757d27581b42a9d83e229828aead444741d7 Mon Sep 17 00:00:00 2001 From: John van Groningen Date: Fri, 31 Oct 2008 15:51:02 +0000 Subject: fix compare of constant of more than 32 bits (on 64 bit platforms) --- cglin.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/cglin.c b/cglin.c index 1d01d50..97cb6e8 100644 --- a/cglin.c +++ b/cglin.c @@ -3405,6 +3405,31 @@ static int compare_node (INSTRUCTION_GRAPH graph,int i_test_1,int i_test_2) mode_1=ad_1.ad_mode; mode_2=ad_2.ad_mode; +#ifdef G_A64 + if (mode_1==P_IMMEDIATE && ((int)ad_1.ad_offset)!=ad_1.ad_offset){ + int dreg; + + dreg=get_dregister(); + i_move_i_r (ad_1.ad_offset,dreg); + mode_1=P_REGISTER; + ad_1.ad_mode=mode_1; + ad_1.ad_register=dreg; + ad_1.ad_count_p=&ad_1.ad_count; + ad_1.ad_count=1; + } + if (mode_2==P_IMMEDIATE && ((int)ad_2.ad_offset)!=ad_2.ad_offset){ + int dreg; + + dreg=get_dregister(); + i_move_i_r (ad_2.ad_offset,dreg); + mode_2=P_REGISTER; + ad_2.ad_mode=mode_2; + ad_2.ad_register=dreg; + ad_2.ad_count_p=&ad_2.ad_count; + ad_2.ad_count=1; + } +#endif + if (mode_1==P_IMMEDIATE && ! (mode_2==P_IMMEDIATE || mode_2==P_DESCRIPTOR_NUMBER)){ LONG i; #ifdef M68000 -- cgit v1.2.3