summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cglin.c25
1 files changed, 25 insertions, 0 deletions
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