This disables a check generated in VMS emulation mode (-gnatdm) for 32-bit targets since it confuses the RTL middle-end for no real benefit.
Tested on i586-suse-linux, applied on the mainline. 2011-07-13 Eric Botcazou <ebotca...@adacore.com> * gcc-interface/utils.c (build_vms_descriptor32): Skip the 32-bit range comparison if Pmode is SImode. -- Eric Botcazou
Index: gcc-interface/utils.c =================================================================== --- gcc-interface/utils.c (revision 176072) +++ gcc-interface/utils.c (working copy) @@ -2556,8 +2556,10 @@ build_vms_descriptor32 (tree type, Mecha tem = build_unary_op (ADDR_EXPR, pointer64_type, build0 (PLACEHOLDER_EXPR, type)); tem = build3 (COND_EXPR, pointer32_type, - build_binary_op (GE_EXPR, boolean_type_node, tem, - build_int_cstu (pointer64_type, 0x80000000)), + Pmode != SImode + ? build_binary_op (GE_EXPR, boolean_type_node, tem, + build_int_cstu (pointer64_type, 0x80000000)) + : boolean_false_node, build0 (PLACEHOLDER_EXPR, void_type_node), convert (pointer32_type, tem));