This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Fix PR ada/22333
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 17 Nov 2005 22:08:23 +0100
- Subject: Fix PR ada/22333
This PR tracks 3 generic ACATS failures at -O2 (c34007p c34007r c45282b).
The problem is that the gimplifier was confused by the &COMPOUND_EXPR
construct generated by Gigi and missed the addressability.
Fixed by specifically enhancing gnat_gimplify_expr, bootstrapped/regtested on
i586-suse-linux, applied to mainline.
2005-11-17 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
PR ada/22333
* trans.c (gnat_gimplify_expr, case ADDR_EXPR): Always make
a temporary if taking the address of something that is neither
reference, declaration, or constant, since the gimplifier
can't handle that case.
--
Eric Botcazou
--- bfd/vms-tir.c.0 2005-11-17 19:48:17.928110112 +0100
+++ bfd/vms-tir.c 2005-11-17 20:14:50.469007096 +0100
@@ -263,6 +263,9 @@ cmd_name (cmd)
case ETIR_S_C_STO_CA: return "ETIR_S_C_STO_CA";
case ETIR_S_C_STO_RB: return "ETIR_S_C_STO_RB";
case ETIR_S_C_STO_AB: return "ETIR_S_C_STO_AB";
+ case ETIR_S_C_STO_OFF: return "ETIR_S_C_STO_OFF";
+ case ETIR_S_C_STO_IMM: return "ETIR_S_C_STO_IMM";
+ case ETIR_S_C_STO_LW: return "ETIR_S_C_STO_LW";
case ETIR_S_C_STO_GBL_LW: return "ETIR_S_C_STO_GBL_LW";
case ETIR_S_C_STO_LP_PSB: return "ETIR_S_C_STO_LP_PSB";
case ETIR_S_C_STO_HINT_GBL: return "ETIR_S_C_STO_HINT_GBL";
@@ -286,10 +289,12 @@ cmd_name (cmd)
case ETIR_S_C_STC_BOH_GBL: return "ETIR_S_C_STC_BOH_GBL";
case ETIR_S_C_STC_BOH_PS: return "ETIR_S_C_STC_BOH_PS";
case ETIR_S_C_STC_NBH_GBL: return "ETIR_S_C_STC_NBH_GBL";
+ case ETIR_S_C_CTL_SETRB: return "ETIR_S_C_CTL_SETRB";
+ case ETIR_S_C_STC_LP_PSB: return "ETIR_S_C_STC_LP_PSB";
default:
/* These names have not yet been added to this switch statement. */
- abort ();
+ (*_bfd_error_handler) (_("unknown command %d"), cmd);
}
}
#define HIGHBIT(op) ((op & 0x80000000L) == 0x80000000L)
@@ -1732,7 +1737,7 @@ etir_cmd (abfd, cmd, ptr)
int i = 0;
#if VMS_DEBUG
- _bfd_vms_debug (4, "etir_cmd %d/%x\n", cmd, cmd);
+ _bfd_vms_debug (4, "etir_cmd: %s(%d)\n", cmd_name (cmd), cmd);
_bfd_hexdump (8, ptr, 16, (int) ptr);
#endif
@@ -1749,7 +1754,7 @@ etir_cmd (abfd, cmd, ptr)
}
#if VMS_DEBUG
- _bfd_vms_debug (4, "etir_cmd: = 0\n");
+ _bfd_vms_debug (4, "etir_cmd: ok\n");
#endif
return 0;
}
@@ -1811,7 +1816,7 @@ analyze_etir (abfd, ptr, length)
}
#if VMS_DEBUG
- _bfd_vms_debug (3, "analyze_etir: = %d\n", result);
+ _bfd_vms_debug (3, "analyze_etir: result = %d\n", result);
#endif
return result;