For some reason, assumed-size Cray pointees had an upper bound of one, which causes problems with middle-end optimizations (see PR). This patch changes it have an unknown upper bound. The patch is straight forward, except for the change in trans-decl.c's gfc_trans_deferred_vars, where I simply ignore Cray pointees. I am not sure whether this is correct, but it seems to work and I cannot imagine initializations to Cray pointees for which one would need to pass the symbol to gfc_trans_g77_array. If one does the call, it ICEs due to a NULL pointer. Build and regtested on x86-64-linux. OK for the trunk? Tobias PS: I have not added a test case as - unpatched - the cray_pointers_2.f90 test would fail as soon as the middle-end change is in.