aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/libgfortran/generated
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/libgfortran/generated')
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_c10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_c16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_c4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_c8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_i16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_i4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_i8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_abs_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_acos_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_acos_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_acos_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_acos_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_acosh_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_acosh_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_acosh_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_acosh_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_aimag_c10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_aimag_c16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_aimag_c4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_aimag_c8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_aint_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_aint_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_aint_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_aint_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_anint_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_anint_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_anint_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_anint_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_asin_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_asin_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_asin_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_asin_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_asinh_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_asinh_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_asinh_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_asinh_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atan2_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atan2_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atan2_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atan2_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atan_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atan_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atan_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atan_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atanh_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atanh_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atanh_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_atanh_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_conjg_c10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_conjg_c16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_conjg_c4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_conjg_c8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cos_c10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cos_c16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cos_c4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cos_c8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cos_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cos_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cos_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cos_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cosh_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cosh_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cosh_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_cosh_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_dim_i16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_dim_i4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_dim_i8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_dim_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_dim_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_dim_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_dim_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_exp_c10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_exp_c16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_exp_c4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_exp_c8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_exp_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_exp_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_exp_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_exp_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log10_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log10_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log10_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log10_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log_c10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log_c16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log_c4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log_c8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_log_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_mod_i16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_mod_i4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_mod_i8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_mod_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_mod_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_mod_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_mod_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sign_i16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sign_i4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sign_i8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sign_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sign_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sign_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sign_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sin_c10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sin_c16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sin_c4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sin_c8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sin_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sin_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sin_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sin_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sinh_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sinh_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sinh_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sinh_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sqrt_c10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sqrt_c16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sqrt_c4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sqrt_c8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sqrt_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sqrt_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sqrt_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_sqrt_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_tan_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_tan_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_tan_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_tan_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_tanh_r10.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_tanh_r16.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_tanh_r4.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/_tanh_r8.F9046
-rw-r--r--gcc-4.4.3/libgfortran/generated/all_l1.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/all_l16.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/all_l2.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/all_l4.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/all_l8.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/any_l1.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/any_l16.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/any_l2.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/any_l4.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/any_l8.c223
-rw-r--r--gcc-4.4.3/libgfortran/generated/count_16_l.c219
-rw-r--r--gcc-4.4.3/libgfortran/generated/count_1_l.c219
-rw-r--r--gcc-4.4.3/libgfortran/generated/count_2_l.c219
-rw-r--r--gcc-4.4.3/libgfortran/generated/count_4_l.c219
-rw-r--r--gcc-4.4.3/libgfortran/generated/count_8_l.c219
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_c10.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_c16.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_c4.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_c8.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_i1.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_i16.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_i2.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_i4.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_i8.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_r10.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_r16.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_r4.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift0_r8.c171
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift1_16.c256
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift1_4.c256
-rw-r--r--gcc-4.4.3/libgfortran/generated/cshift1_8.c256
-rw-r--r--gcc-4.4.3/libgfortran/generated/eoshift1_16.c296
-rw-r--r--gcc-4.4.3/libgfortran/generated/eoshift1_4.c296
-rw-r--r--gcc-4.4.3/libgfortran/generated/eoshift1_8.c296
-rw-r--r--gcc-4.4.3/libgfortran/generated/eoshift3_16.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/eoshift3_4.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/eoshift3_8.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/exponent_r10.c42
-rw-r--r--gcc-4.4.3/libgfortran/generated/exponent_r16.c42
-rw-r--r--gcc-4.4.3/libgfortran/generated/exponent_r4.c42
-rw-r--r--gcc-4.4.3/libgfortran/generated/exponent_r8.c42
-rw-r--r--gcc-4.4.3/libgfortran/generated/fraction_r10.c41
-rw-r--r--gcc-4.4.3/libgfortran/generated/fraction_r16.c41
-rw-r--r--gcc-4.4.3/libgfortran/generated/fraction_r4.c41
-rw-r--r--gcc-4.4.3/libgfortran/generated/fraction_r8.c41
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_c10.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_c16.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_c4.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_c8.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_i1.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_i16.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_i2.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_i4.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_i8.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_r10.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_r16.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_r4.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_pack_r8.c119
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_c10.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_c16.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_c4.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_c8.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_i1.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_i16.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_i2.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_i4.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_i8.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_r10.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_r16.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_r4.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/in_unpack_r8.c107
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_c10.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_c16.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_c4.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_c8.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_i1.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_i16.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_i2.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_i4.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_i8.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_l16.c242
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_l4.c242
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_l8.c242
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_r10.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_r16.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_r4.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/matmul_r8.c379
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_i1.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_i16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_i2.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_i4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_i8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_r10.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_r16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_r4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_16_r8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_i1.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_i16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_i2.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_i4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_i8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_r10.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_r16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_r4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_4_r8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_i1.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_i16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_i2.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_i4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_i8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_r10.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_r16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_r4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc0_8_r8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_i1.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_i16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_i2.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_i4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_i8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_r10.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_r16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_r4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_16_r8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_i1.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_i16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_i2.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_i4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_i8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_r10.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_r16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_r4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_4_r8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_i1.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_i16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_i2.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_i4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_i8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_r10.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_r16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_r4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxloc1_8_r8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_i1.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_i16.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_i2.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_i4.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_i8.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_r10.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_r16.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_r4.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/maxval_r8.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_i1.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_i16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_i2.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_i4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_i8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_r10.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_r16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_r4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_16_r8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_i1.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_i16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_i2.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_i4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_i8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_r10.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_r16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_r4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_4_r8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_i1.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_i16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_i2.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_i4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_i8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_r10.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_r16.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_r4.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc0_8_r8.c372
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_i1.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_i16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_i2.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_i4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_i8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_r10.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_r16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_r4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_16_r8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_i1.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_i16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_i2.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_i4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_i8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_r10.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_r16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_r4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_4_r8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_i1.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_i16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_i2.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_i4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_i8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_r10.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_r16.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_r4.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minloc1_8_r8.c557
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_i1.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_i16.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_i2.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_i4.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_i8.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_r10.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_r16.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_r4.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/minval_r8.c546
-rw-r--r--gcc-4.4.3/libgfortran/generated/misc_specifics.F90206
-rw-r--r--gcc-4.4.3/libgfortran/generated/nearest_r10.c48
-rw-r--r--gcc-4.4.3/libgfortran/generated/nearest_r16.c48
-rw-r--r--gcc-4.4.3/libgfortran/generated/nearest_r4.c48
-rw-r--r--gcc-4.4.3/libgfortran/generated/nearest_r8.c48
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_c10.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_c16.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_c4.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_c8.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_i1.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_i16.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_i2.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_i4.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_i8.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_r10.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_r16.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_r4.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pack_r8.c315
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c10_i16.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c10_i4.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c10_i8.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c16_i16.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c16_i4.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c16_i8.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c4_i16.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c4_i4.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c4_i8.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c8_i16.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c8_i4.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_c8_i8.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i16_i16.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i16_i4.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i16_i8.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i4_i16.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i4_i4.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i4_i8.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i8_i16.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i8_i4.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_i8_i8.c77
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_r10_i16.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_r10_i8.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_r16_i16.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_r16_i8.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_r4_i16.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_r4_i8.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_r8_i16.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/pow_r8_i8.c75
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_c10.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_c16.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_c4.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_c8.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_i1.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_i16.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_i2.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_i4.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_i8.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_r10.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_r16.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_r4.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/product_r8.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_c10.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_c16.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_c4.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_c8.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_i16.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_i4.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_i8.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_r10.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_r16.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_r4.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/reshape_r8.c352
-rw-r--r--gcc-4.4.3/libgfortran/generated/rrspacing_r10.c51
-rw-r--r--gcc-4.4.3/libgfortran/generated/rrspacing_r16.c51
-rw-r--r--gcc-4.4.3/libgfortran/generated/rrspacing_r4.c51
-rw-r--r--gcc-4.4.3/libgfortran/generated/rrspacing_r8.c51
-rw-r--r--gcc-4.4.3/libgfortran/generated/set_exponent_r10.c41
-rw-r--r--gcc-4.4.3/libgfortran/generated/set_exponent_r16.c41
-rw-r--r--gcc-4.4.3/libgfortran/generated/set_exponent_r4.c41
-rw-r--r--gcc-4.4.3/libgfortran/generated/set_exponent_r8.c41
-rw-r--r--gcc-4.4.3/libgfortran/generated/shape_i16.c57
-rw-r--r--gcc-4.4.3/libgfortran/generated/shape_i4.c57
-rw-r--r--gcc-4.4.3/libgfortran/generated/shape_i8.c57
-rw-r--r--gcc-4.4.3/libgfortran/generated/spacing_r10.c50
-rw-r--r--gcc-4.4.3/libgfortran/generated/spacing_r16.c50
-rw-r--r--gcc-4.4.3/libgfortran/generated/spacing_r4.c50
-rw-r--r--gcc-4.4.3/libgfortran/generated/spacing_r8.c50
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_c10.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_c16.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_c4.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_c8.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_i1.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_i16.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_i2.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_i4.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_i8.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_r10.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_r16.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_r4.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/spread_r8.c273
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_c10.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_c16.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_c4.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_c8.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_i1.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_i16.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_i2.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_i4.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_i8.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_r10.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_r16.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_r4.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/sum_r8.c545
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_c10.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_c16.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_c4.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_c8.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_i16.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_i4.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_i8.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_r10.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_r16.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_r4.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/transpose_r8.c116
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_c10.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_c16.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_c4.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_c8.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_i1.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_i16.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_i2.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_i4.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_i8.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_r10.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_r16.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_r4.c333
-rw-r--r--gcc-4.4.3/libgfortran/generated/unpack_r8.c333
485 files changed, 0 insertions, 117943 deletions
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_c10.F90 b/gcc-4.4.3/libgfortran/generated/_abs_c10.F90
deleted file mode 100644
index 96938938e..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_c10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_10)
-#ifdef HAVE_CABSL
-
-elemental function _gfortran_specific__abs_c10 (parm)
- complex (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__abs_c10
-
- _gfortran_specific__abs_c10 = abs (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_c16.F90 b/gcc-4.4.3/libgfortran/generated/_abs_c16.F90
deleted file mode 100644
index db5cb0087..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_c16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_16)
-#ifdef HAVE_CABSL
-
-elemental function _gfortran_specific__abs_c16 (parm)
- complex (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__abs_c16
-
- _gfortran_specific__abs_c16 = abs (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_c4.F90 b/gcc-4.4.3/libgfortran/generated/_abs_c4.F90
deleted file mode 100644
index d0cb85be3..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_c4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_4)
-#ifdef HAVE_CABSF
-
-elemental function _gfortran_specific__abs_c4 (parm)
- complex (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__abs_c4
-
- _gfortran_specific__abs_c4 = abs (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_c8.F90 b/gcc-4.4.3/libgfortran/generated/_abs_c8.F90
deleted file mode 100644
index b5a284931..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_c8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_8)
-#ifdef HAVE_CABS
-
-elemental function _gfortran_specific__abs_c8 (parm)
- complex (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__abs_c8
-
- _gfortran_specific__abs_c8 = abs (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_i16.F90 b/gcc-4.4.3/libgfortran/generated/_abs_i16.F90
deleted file mode 100644
index d7b825bfa..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_i16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-
-elemental function _gfortran_specific__abs_i16 (parm)
- integer (kind=16), intent (in) :: parm
- integer (kind=16) :: _gfortran_specific__abs_i16
-
- _gfortran_specific__abs_i16 = abs (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_i4.F90 b/gcc-4.4.3/libgfortran/generated/_abs_i4.F90
deleted file mode 100644
index 3d6619a27..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_i4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-
-elemental function _gfortran_specific__abs_i4 (parm)
- integer (kind=4), intent (in) :: parm
- integer (kind=4) :: _gfortran_specific__abs_i4
-
- _gfortran_specific__abs_i4 = abs (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_i8.F90 b/gcc-4.4.3/libgfortran/generated/_abs_i8.F90
deleted file mode 100644
index 9e68ba667..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_i8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-
-elemental function _gfortran_specific__abs_i8 (parm)
- integer (kind=8), intent (in) :: parm
- integer (kind=8) :: _gfortran_specific__abs_i8
-
- _gfortran_specific__abs_i8 = abs (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_r10.F90 b/gcc-4.4.3/libgfortran/generated/_abs_r10.F90
deleted file mode 100644
index 26b6aa6c7..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_FABSL
-
-elemental function _gfortran_specific__abs_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__abs_r10
-
- _gfortran_specific__abs_r10 = abs (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_r16.F90 b/gcc-4.4.3/libgfortran/generated/_abs_r16.F90
deleted file mode 100644
index 3117d4a58..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_FABSL
-
-elemental function _gfortran_specific__abs_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__abs_r16
-
- _gfortran_specific__abs_r16 = abs (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_r4.F90 b/gcc-4.4.3/libgfortran/generated/_abs_r4.F90
deleted file mode 100644
index bb4ac4a76..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_FABSF
-
-elemental function _gfortran_specific__abs_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__abs_r4
-
- _gfortran_specific__abs_r4 = abs (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_abs_r8.F90 b/gcc-4.4.3/libgfortran/generated/_abs_r8.F90
deleted file mode 100644
index b41e69821..000000000
--- a/gcc-4.4.3/libgfortran/generated/_abs_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_FABS
-
-elemental function _gfortran_specific__abs_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__abs_r8
-
- _gfortran_specific__abs_r8 = abs (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_acos_r10.F90 b/gcc-4.4.3/libgfortran/generated/_acos_r10.F90
deleted file mode 100644
index d5c3cd5a4..000000000
--- a/gcc-4.4.3/libgfortran/generated/_acos_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_ACOSL
-
-elemental function _gfortran_specific__acos_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__acos_r10
-
- _gfortran_specific__acos_r10 = acos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_acos_r16.F90 b/gcc-4.4.3/libgfortran/generated/_acos_r16.F90
deleted file mode 100644
index 80aa22c8b..000000000
--- a/gcc-4.4.3/libgfortran/generated/_acos_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_ACOSL
-
-elemental function _gfortran_specific__acos_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__acos_r16
-
- _gfortran_specific__acos_r16 = acos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_acos_r4.F90 b/gcc-4.4.3/libgfortran/generated/_acos_r4.F90
deleted file mode 100644
index 300524ed6..000000000
--- a/gcc-4.4.3/libgfortran/generated/_acos_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_ACOSF
-
-elemental function _gfortran_specific__acos_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__acos_r4
-
- _gfortran_specific__acos_r4 = acos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_acos_r8.F90 b/gcc-4.4.3/libgfortran/generated/_acos_r8.F90
deleted file mode 100644
index ca526cbb0..000000000
--- a/gcc-4.4.3/libgfortran/generated/_acos_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_ACOS
-
-elemental function _gfortran_specific__acos_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__acos_r8
-
- _gfortran_specific__acos_r8 = acos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_acosh_r10.F90 b/gcc-4.4.3/libgfortran/generated/_acosh_r10.F90
deleted file mode 100644
index f8193f9df..000000000
--- a/gcc-4.4.3/libgfortran/generated/_acosh_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_ACOSHL
-
-elemental function _gfortran_specific__acosh_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__acosh_r10
-
- _gfortran_specific__acosh_r10 = acosh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_acosh_r16.F90 b/gcc-4.4.3/libgfortran/generated/_acosh_r16.F90
deleted file mode 100644
index e2ae3bde8..000000000
--- a/gcc-4.4.3/libgfortran/generated/_acosh_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_ACOSHL
-
-elemental function _gfortran_specific__acosh_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__acosh_r16
-
- _gfortran_specific__acosh_r16 = acosh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_acosh_r4.F90 b/gcc-4.4.3/libgfortran/generated/_acosh_r4.F90
deleted file mode 100644
index 61412c32e..000000000
--- a/gcc-4.4.3/libgfortran/generated/_acosh_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_ACOSHF
-
-elemental function _gfortran_specific__acosh_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__acosh_r4
-
- _gfortran_specific__acosh_r4 = acosh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_acosh_r8.F90 b/gcc-4.4.3/libgfortran/generated/_acosh_r8.F90
deleted file mode 100644
index cb230aeed..000000000
--- a/gcc-4.4.3/libgfortran/generated/_acosh_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_ACOSH
-
-elemental function _gfortran_specific__acosh_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__acosh_r8
-
- _gfortran_specific__acosh_r8 = acosh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_aimag_c10.F90 b/gcc-4.4.3/libgfortran/generated/_aimag_c10.F90
deleted file mode 100644
index 584299e39..000000000
--- a/gcc-4.4.3/libgfortran/generated/_aimag_c10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-
-elemental function _gfortran_specific__aimag_c10 (parm)
- complex (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__aimag_c10
-
- _gfortran_specific__aimag_c10 = aimag (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_aimag_c16.F90 b/gcc-4.4.3/libgfortran/generated/_aimag_c16.F90
deleted file mode 100644
index 01f24a282..000000000
--- a/gcc-4.4.3/libgfortran/generated/_aimag_c16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-
-elemental function _gfortran_specific__aimag_c16 (parm)
- complex (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__aimag_c16
-
- _gfortran_specific__aimag_c16 = aimag (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_aimag_c4.F90 b/gcc-4.4.3/libgfortran/generated/_aimag_c4.F90
deleted file mode 100644
index d52e057cf..000000000
--- a/gcc-4.4.3/libgfortran/generated/_aimag_c4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-
-elemental function _gfortran_specific__aimag_c4 (parm)
- complex (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__aimag_c4
-
- _gfortran_specific__aimag_c4 = aimag (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_aimag_c8.F90 b/gcc-4.4.3/libgfortran/generated/_aimag_c8.F90
deleted file mode 100644
index b1a933ffc..000000000
--- a/gcc-4.4.3/libgfortran/generated/_aimag_c8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-
-elemental function _gfortran_specific__aimag_c8 (parm)
- complex (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__aimag_c8
-
- _gfortran_specific__aimag_c8 = aimag (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_aint_r10.F90 b/gcc-4.4.3/libgfortran/generated/_aint_r10.F90
deleted file mode 100644
index 47a942405..000000000
--- a/gcc-4.4.3/libgfortran/generated/_aint_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_TRUNCL
-
-elemental function _gfortran_specific__aint_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__aint_r10
-
- _gfortran_specific__aint_r10 = aint (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_aint_r16.F90 b/gcc-4.4.3/libgfortran/generated/_aint_r16.F90
deleted file mode 100644
index b91640ee2..000000000
--- a/gcc-4.4.3/libgfortran/generated/_aint_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_TRUNCL
-
-elemental function _gfortran_specific__aint_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__aint_r16
-
- _gfortran_specific__aint_r16 = aint (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_aint_r4.F90 b/gcc-4.4.3/libgfortran/generated/_aint_r4.F90
deleted file mode 100644
index 7607afdc6..000000000
--- a/gcc-4.4.3/libgfortran/generated/_aint_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_TRUNCF
-
-elemental function _gfortran_specific__aint_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__aint_r4
-
- _gfortran_specific__aint_r4 = aint (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_aint_r8.F90 b/gcc-4.4.3/libgfortran/generated/_aint_r8.F90
deleted file mode 100644
index c0b666aa0..000000000
--- a/gcc-4.4.3/libgfortran/generated/_aint_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_TRUNC
-
-elemental function _gfortran_specific__aint_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__aint_r8
-
- _gfortran_specific__aint_r8 = aint (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_anint_r10.F90 b/gcc-4.4.3/libgfortran/generated/_anint_r10.F90
deleted file mode 100644
index a768642e1..000000000
--- a/gcc-4.4.3/libgfortran/generated/_anint_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_ROUNDL
-
-elemental function _gfortran_specific__anint_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__anint_r10
-
- _gfortran_specific__anint_r10 = anint (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_anint_r16.F90 b/gcc-4.4.3/libgfortran/generated/_anint_r16.F90
deleted file mode 100644
index 924b9143c..000000000
--- a/gcc-4.4.3/libgfortran/generated/_anint_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_ROUNDL
-
-elemental function _gfortran_specific__anint_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__anint_r16
-
- _gfortran_specific__anint_r16 = anint (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_anint_r4.F90 b/gcc-4.4.3/libgfortran/generated/_anint_r4.F90
deleted file mode 100644
index 000a20b01..000000000
--- a/gcc-4.4.3/libgfortran/generated/_anint_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_ROUNDF
-
-elemental function _gfortran_specific__anint_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__anint_r4
-
- _gfortran_specific__anint_r4 = anint (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_anint_r8.F90 b/gcc-4.4.3/libgfortran/generated/_anint_r8.F90
deleted file mode 100644
index be122bd3f..000000000
--- a/gcc-4.4.3/libgfortran/generated/_anint_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_ROUND
-
-elemental function _gfortran_specific__anint_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__anint_r8
-
- _gfortran_specific__anint_r8 = anint (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_asin_r10.F90 b/gcc-4.4.3/libgfortran/generated/_asin_r10.F90
deleted file mode 100644
index fe2b68a23..000000000
--- a/gcc-4.4.3/libgfortran/generated/_asin_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_ASINL
-
-elemental function _gfortran_specific__asin_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__asin_r10
-
- _gfortran_specific__asin_r10 = asin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_asin_r16.F90 b/gcc-4.4.3/libgfortran/generated/_asin_r16.F90
deleted file mode 100644
index 87bf9e783..000000000
--- a/gcc-4.4.3/libgfortran/generated/_asin_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_ASINL
-
-elemental function _gfortran_specific__asin_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__asin_r16
-
- _gfortran_specific__asin_r16 = asin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_asin_r4.F90 b/gcc-4.4.3/libgfortran/generated/_asin_r4.F90
deleted file mode 100644
index 63367d1e8..000000000
--- a/gcc-4.4.3/libgfortran/generated/_asin_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_ASINF
-
-elemental function _gfortran_specific__asin_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__asin_r4
-
- _gfortran_specific__asin_r4 = asin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_asin_r8.F90 b/gcc-4.4.3/libgfortran/generated/_asin_r8.F90
deleted file mode 100644
index 97e0088bd..000000000
--- a/gcc-4.4.3/libgfortran/generated/_asin_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_ASIN
-
-elemental function _gfortran_specific__asin_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__asin_r8
-
- _gfortran_specific__asin_r8 = asin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_asinh_r10.F90 b/gcc-4.4.3/libgfortran/generated/_asinh_r10.F90
deleted file mode 100644
index a05abe78d..000000000
--- a/gcc-4.4.3/libgfortran/generated/_asinh_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_ASINHL
-
-elemental function _gfortran_specific__asinh_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__asinh_r10
-
- _gfortran_specific__asinh_r10 = asinh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_asinh_r16.F90 b/gcc-4.4.3/libgfortran/generated/_asinh_r16.F90
deleted file mode 100644
index e0e94d547..000000000
--- a/gcc-4.4.3/libgfortran/generated/_asinh_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_ASINHL
-
-elemental function _gfortran_specific__asinh_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__asinh_r16
-
- _gfortran_specific__asinh_r16 = asinh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_asinh_r4.F90 b/gcc-4.4.3/libgfortran/generated/_asinh_r4.F90
deleted file mode 100644
index f80bf5084..000000000
--- a/gcc-4.4.3/libgfortran/generated/_asinh_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_ASINHF
-
-elemental function _gfortran_specific__asinh_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__asinh_r4
-
- _gfortran_specific__asinh_r4 = asinh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_asinh_r8.F90 b/gcc-4.4.3/libgfortran/generated/_asinh_r8.F90
deleted file mode 100644
index 8b636a65c..000000000
--- a/gcc-4.4.3/libgfortran/generated/_asinh_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_ASINH
-
-elemental function _gfortran_specific__asinh_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__asinh_r8
-
- _gfortran_specific__asinh_r8 = asinh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atan2_r10.F90 b/gcc-4.4.3/libgfortran/generated/_atan2_r10.F90
deleted file mode 100644
index c38b3c335..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atan2_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-
-#ifdef HAVE_ATAN2L
-
-elemental function _gfortran_specific__atan2_r10 (p1, p2)
- real (kind=10), intent (in) :: p1, p2
- real (kind=10) :: _gfortran_specific__atan2_r10
-
- _gfortran_specific__atan2_r10 = atan2 (p1, p2)
-end function
-
-#endif
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atan2_r16.F90 b/gcc-4.4.3/libgfortran/generated/_atan2_r16.F90
deleted file mode 100644
index 4d65da2a8..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atan2_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-
-#ifdef HAVE_ATAN2L
-
-elemental function _gfortran_specific__atan2_r16 (p1, p2)
- real (kind=16), intent (in) :: p1, p2
- real (kind=16) :: _gfortran_specific__atan2_r16
-
- _gfortran_specific__atan2_r16 = atan2 (p1, p2)
-end function
-
-#endif
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atan2_r4.F90 b/gcc-4.4.3/libgfortran/generated/_atan2_r4.F90
deleted file mode 100644
index cdebd47dd..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atan2_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-
-#ifdef HAVE_ATAN2F
-
-elemental function _gfortran_specific__atan2_r4 (p1, p2)
- real (kind=4), intent (in) :: p1, p2
- real (kind=4) :: _gfortran_specific__atan2_r4
-
- _gfortran_specific__atan2_r4 = atan2 (p1, p2)
-end function
-
-#endif
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atan2_r8.F90 b/gcc-4.4.3/libgfortran/generated/_atan2_r8.F90
deleted file mode 100644
index 7cfe47ec7..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atan2_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-
-#ifdef HAVE_ATAN2
-
-elemental function _gfortran_specific__atan2_r8 (p1, p2)
- real (kind=8), intent (in) :: p1, p2
- real (kind=8) :: _gfortran_specific__atan2_r8
-
- _gfortran_specific__atan2_r8 = atan2 (p1, p2)
-end function
-
-#endif
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atan_r10.F90 b/gcc-4.4.3/libgfortran/generated/_atan_r10.F90
deleted file mode 100644
index 36a813b69..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atan_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_ATANL
-
-elemental function _gfortran_specific__atan_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__atan_r10
-
- _gfortran_specific__atan_r10 = atan (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atan_r16.F90 b/gcc-4.4.3/libgfortran/generated/_atan_r16.F90
deleted file mode 100644
index b177eeb19..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atan_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_ATANL
-
-elemental function _gfortran_specific__atan_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__atan_r16
-
- _gfortran_specific__atan_r16 = atan (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atan_r4.F90 b/gcc-4.4.3/libgfortran/generated/_atan_r4.F90
deleted file mode 100644
index 0ec9fe64b..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atan_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_ATANF
-
-elemental function _gfortran_specific__atan_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__atan_r4
-
- _gfortran_specific__atan_r4 = atan (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atan_r8.F90 b/gcc-4.4.3/libgfortran/generated/_atan_r8.F90
deleted file mode 100644
index df118004a..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atan_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_ATAN
-
-elemental function _gfortran_specific__atan_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__atan_r8
-
- _gfortran_specific__atan_r8 = atan (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atanh_r10.F90 b/gcc-4.4.3/libgfortran/generated/_atanh_r10.F90
deleted file mode 100644
index a695cee9a..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atanh_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_ATANHL
-
-elemental function _gfortran_specific__atanh_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__atanh_r10
-
- _gfortran_specific__atanh_r10 = atanh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atanh_r16.F90 b/gcc-4.4.3/libgfortran/generated/_atanh_r16.F90
deleted file mode 100644
index d7e216c3e..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atanh_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_ATANHL
-
-elemental function _gfortran_specific__atanh_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__atanh_r16
-
- _gfortran_specific__atanh_r16 = atanh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atanh_r4.F90 b/gcc-4.4.3/libgfortran/generated/_atanh_r4.F90
deleted file mode 100644
index 09fc73f5c..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atanh_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_ATANHF
-
-elemental function _gfortran_specific__atanh_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__atanh_r4
-
- _gfortran_specific__atanh_r4 = atanh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_atanh_r8.F90 b/gcc-4.4.3/libgfortran/generated/_atanh_r8.F90
deleted file mode 100644
index f78eca062..000000000
--- a/gcc-4.4.3/libgfortran/generated/_atanh_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_ATANH
-
-elemental function _gfortran_specific__atanh_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__atanh_r8
-
- _gfortran_specific__atanh_r8 = atanh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_conjg_c10.F90 b/gcc-4.4.3/libgfortran/generated/_conjg_c10.F90
deleted file mode 100644
index d53ac1e19..000000000
--- a/gcc-4.4.3/libgfortran/generated/_conjg_c10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-
-elemental function _gfortran_specific__conjg_10 (parm)
- complex (kind=10), intent (in) :: parm
- complex (kind=10) :: _gfortran_specific__conjg_10
-
- _gfortran_specific__conjg_10 = conjg (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_conjg_c16.F90 b/gcc-4.4.3/libgfortran/generated/_conjg_c16.F90
deleted file mode 100644
index 0052f611c..000000000
--- a/gcc-4.4.3/libgfortran/generated/_conjg_c16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-
-elemental function _gfortran_specific__conjg_16 (parm)
- complex (kind=16), intent (in) :: parm
- complex (kind=16) :: _gfortran_specific__conjg_16
-
- _gfortran_specific__conjg_16 = conjg (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_conjg_c4.F90 b/gcc-4.4.3/libgfortran/generated/_conjg_c4.F90
deleted file mode 100644
index 138266eba..000000000
--- a/gcc-4.4.3/libgfortran/generated/_conjg_c4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-
-elemental function _gfortran_specific__conjg_4 (parm)
- complex (kind=4), intent (in) :: parm
- complex (kind=4) :: _gfortran_specific__conjg_4
-
- _gfortran_specific__conjg_4 = conjg (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_conjg_c8.F90 b/gcc-4.4.3/libgfortran/generated/_conjg_c8.F90
deleted file mode 100644
index ed1c8f5e1..000000000
--- a/gcc-4.4.3/libgfortran/generated/_conjg_c8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-
-elemental function _gfortran_specific__conjg_8 (parm)
- complex (kind=8), intent (in) :: parm
- complex (kind=8) :: _gfortran_specific__conjg_8
-
- _gfortran_specific__conjg_8 = conjg (parm)
-end function
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cos_c10.F90 b/gcc-4.4.3/libgfortran/generated/_cos_c10.F90
deleted file mode 100644
index 612d4387e..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cos_c10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_10)
-#ifdef HAVE_CCOSL
-
-elemental function _gfortran_specific__cos_c10 (parm)
- complex (kind=10), intent (in) :: parm
- complex (kind=10) :: _gfortran_specific__cos_c10
-
- _gfortran_specific__cos_c10 = cos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cos_c16.F90 b/gcc-4.4.3/libgfortran/generated/_cos_c16.F90
deleted file mode 100644
index 7cea76493..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cos_c16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_16)
-#ifdef HAVE_CCOSL
-
-elemental function _gfortran_specific__cos_c16 (parm)
- complex (kind=16), intent (in) :: parm
- complex (kind=16) :: _gfortran_specific__cos_c16
-
- _gfortran_specific__cos_c16 = cos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cos_c4.F90 b/gcc-4.4.3/libgfortran/generated/_cos_c4.F90
deleted file mode 100644
index f0dd76e8d..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cos_c4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_4)
-#ifdef HAVE_CCOSF
-
-elemental function _gfortran_specific__cos_c4 (parm)
- complex (kind=4), intent (in) :: parm
- complex (kind=4) :: _gfortran_specific__cos_c4
-
- _gfortran_specific__cos_c4 = cos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cos_c8.F90 b/gcc-4.4.3/libgfortran/generated/_cos_c8.F90
deleted file mode 100644
index 7acc35a69..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cos_c8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_8)
-#ifdef HAVE_CCOS
-
-elemental function _gfortran_specific__cos_c8 (parm)
- complex (kind=8), intent (in) :: parm
- complex (kind=8) :: _gfortran_specific__cos_c8
-
- _gfortran_specific__cos_c8 = cos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cos_r10.F90 b/gcc-4.4.3/libgfortran/generated/_cos_r10.F90
deleted file mode 100644
index 678dccb57..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cos_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_COSL
-
-elemental function _gfortran_specific__cos_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__cos_r10
-
- _gfortran_specific__cos_r10 = cos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cos_r16.F90 b/gcc-4.4.3/libgfortran/generated/_cos_r16.F90
deleted file mode 100644
index dacd87721..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cos_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_COSL
-
-elemental function _gfortran_specific__cos_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__cos_r16
-
- _gfortran_specific__cos_r16 = cos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cos_r4.F90 b/gcc-4.4.3/libgfortran/generated/_cos_r4.F90
deleted file mode 100644
index c6dc39ae3..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cos_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_COSF
-
-elemental function _gfortran_specific__cos_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__cos_r4
-
- _gfortran_specific__cos_r4 = cos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cos_r8.F90 b/gcc-4.4.3/libgfortran/generated/_cos_r8.F90
deleted file mode 100644
index 51b42cd99..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cos_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_COS
-
-elemental function _gfortran_specific__cos_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__cos_r8
-
- _gfortran_specific__cos_r8 = cos (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cosh_r10.F90 b/gcc-4.4.3/libgfortran/generated/_cosh_r10.F90
deleted file mode 100644
index b7826f25e..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cosh_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_COSHL
-
-elemental function _gfortran_specific__cosh_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__cosh_r10
-
- _gfortran_specific__cosh_r10 = cosh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cosh_r16.F90 b/gcc-4.4.3/libgfortran/generated/_cosh_r16.F90
deleted file mode 100644
index adbb56732..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cosh_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_COSHL
-
-elemental function _gfortran_specific__cosh_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__cosh_r16
-
- _gfortran_specific__cosh_r16 = cosh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cosh_r4.F90 b/gcc-4.4.3/libgfortran/generated/_cosh_r4.F90
deleted file mode 100644
index 98719312e..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cosh_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_COSHF
-
-elemental function _gfortran_specific__cosh_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__cosh_r4
-
- _gfortran_specific__cosh_r4 = cosh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_cosh_r8.F90 b/gcc-4.4.3/libgfortran/generated/_cosh_r8.F90
deleted file mode 100644
index 4b0362f2e..000000000
--- a/gcc-4.4.3/libgfortran/generated/_cosh_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_COSH
-
-elemental function _gfortran_specific__cosh_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__cosh_r8
-
- _gfortran_specific__cosh_r8 = cosh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_dim_i16.F90 b/gcc-4.4.3/libgfortran/generated/_dim_i16.F90
deleted file mode 100644
index 70753b42f..000000000
--- a/gcc-4.4.3/libgfortran/generated/_dim_i16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-
-
-elemental function _gfortran_specific__dim_i16 (p1, p2)
- integer (kind=16), intent (in) :: p1, p2
- integer (kind=16) :: _gfortran_specific__dim_i16
-
- _gfortran_specific__dim_i16 = dim (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_dim_i4.F90 b/gcc-4.4.3/libgfortran/generated/_dim_i4.F90
deleted file mode 100644
index c80a367f1..000000000
--- a/gcc-4.4.3/libgfortran/generated/_dim_i4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-
-
-elemental function _gfortran_specific__dim_i4 (p1, p2)
- integer (kind=4), intent (in) :: p1, p2
- integer (kind=4) :: _gfortran_specific__dim_i4
-
- _gfortran_specific__dim_i4 = dim (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_dim_i8.F90 b/gcc-4.4.3/libgfortran/generated/_dim_i8.F90
deleted file mode 100644
index cbb45fcf1..000000000
--- a/gcc-4.4.3/libgfortran/generated/_dim_i8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-
-
-elemental function _gfortran_specific__dim_i8 (p1, p2)
- integer (kind=8), intent (in) :: p1, p2
- integer (kind=8) :: _gfortran_specific__dim_i8
-
- _gfortran_specific__dim_i8 = dim (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_dim_r10.F90 b/gcc-4.4.3/libgfortran/generated/_dim_r10.F90
deleted file mode 100644
index e84e1428f..000000000
--- a/gcc-4.4.3/libgfortran/generated/_dim_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-
-
-
-elemental function _gfortran_specific__dim_r10 (p1, p2)
- real (kind=10), intent (in) :: p1, p2
- real (kind=10) :: _gfortran_specific__dim_r10
-
- _gfortran_specific__dim_r10 = dim (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_dim_r16.F90 b/gcc-4.4.3/libgfortran/generated/_dim_r16.F90
deleted file mode 100644
index 6738e735c..000000000
--- a/gcc-4.4.3/libgfortran/generated/_dim_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-
-
-
-elemental function _gfortran_specific__dim_r16 (p1, p2)
- real (kind=16), intent (in) :: p1, p2
- real (kind=16) :: _gfortran_specific__dim_r16
-
- _gfortran_specific__dim_r16 = dim (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_dim_r4.F90 b/gcc-4.4.3/libgfortran/generated/_dim_r4.F90
deleted file mode 100644
index 22f5f0092..000000000
--- a/gcc-4.4.3/libgfortran/generated/_dim_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-
-
-
-elemental function _gfortran_specific__dim_r4 (p1, p2)
- real (kind=4), intent (in) :: p1, p2
- real (kind=4) :: _gfortran_specific__dim_r4
-
- _gfortran_specific__dim_r4 = dim (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_dim_r8.F90 b/gcc-4.4.3/libgfortran/generated/_dim_r8.F90
deleted file mode 100644
index e209b9452..000000000
--- a/gcc-4.4.3/libgfortran/generated/_dim_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-
-
-
-elemental function _gfortran_specific__dim_r8 (p1, p2)
- real (kind=8), intent (in) :: p1, p2
- real (kind=8) :: _gfortran_specific__dim_r8
-
- _gfortran_specific__dim_r8 = dim (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_exp_c10.F90 b/gcc-4.4.3/libgfortran/generated/_exp_c10.F90
deleted file mode 100644
index 5549cd630..000000000
--- a/gcc-4.4.3/libgfortran/generated/_exp_c10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_10)
-#ifdef HAVE_CEXPL
-
-elemental function _gfortran_specific__exp_c10 (parm)
- complex (kind=10), intent (in) :: parm
- complex (kind=10) :: _gfortran_specific__exp_c10
-
- _gfortran_specific__exp_c10 = exp (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_exp_c16.F90 b/gcc-4.4.3/libgfortran/generated/_exp_c16.F90
deleted file mode 100644
index 09f4b72a9..000000000
--- a/gcc-4.4.3/libgfortran/generated/_exp_c16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_16)
-#ifdef HAVE_CEXPL
-
-elemental function _gfortran_specific__exp_c16 (parm)
- complex (kind=16), intent (in) :: parm
- complex (kind=16) :: _gfortran_specific__exp_c16
-
- _gfortran_specific__exp_c16 = exp (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_exp_c4.F90 b/gcc-4.4.3/libgfortran/generated/_exp_c4.F90
deleted file mode 100644
index 27c030aae..000000000
--- a/gcc-4.4.3/libgfortran/generated/_exp_c4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_4)
-#ifdef HAVE_CEXPF
-
-elemental function _gfortran_specific__exp_c4 (parm)
- complex (kind=4), intent (in) :: parm
- complex (kind=4) :: _gfortran_specific__exp_c4
-
- _gfortran_specific__exp_c4 = exp (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_exp_c8.F90 b/gcc-4.4.3/libgfortran/generated/_exp_c8.F90
deleted file mode 100644
index 9b03a7120..000000000
--- a/gcc-4.4.3/libgfortran/generated/_exp_c8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_8)
-#ifdef HAVE_CEXP
-
-elemental function _gfortran_specific__exp_c8 (parm)
- complex (kind=8), intent (in) :: parm
- complex (kind=8) :: _gfortran_specific__exp_c8
-
- _gfortran_specific__exp_c8 = exp (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_exp_r10.F90 b/gcc-4.4.3/libgfortran/generated/_exp_r10.F90
deleted file mode 100644
index c66a1b71a..000000000
--- a/gcc-4.4.3/libgfortran/generated/_exp_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_EXPL
-
-elemental function _gfortran_specific__exp_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__exp_r10
-
- _gfortran_specific__exp_r10 = exp (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_exp_r16.F90 b/gcc-4.4.3/libgfortran/generated/_exp_r16.F90
deleted file mode 100644
index 3c6c02db6..000000000
--- a/gcc-4.4.3/libgfortran/generated/_exp_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_EXPL
-
-elemental function _gfortran_specific__exp_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__exp_r16
-
- _gfortran_specific__exp_r16 = exp (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_exp_r4.F90 b/gcc-4.4.3/libgfortran/generated/_exp_r4.F90
deleted file mode 100644
index 2ed5ee383..000000000
--- a/gcc-4.4.3/libgfortran/generated/_exp_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_EXPF
-
-elemental function _gfortran_specific__exp_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__exp_r4
-
- _gfortran_specific__exp_r4 = exp (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_exp_r8.F90 b/gcc-4.4.3/libgfortran/generated/_exp_r8.F90
deleted file mode 100644
index 64111e0ab..000000000
--- a/gcc-4.4.3/libgfortran/generated/_exp_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_EXP
-
-elemental function _gfortran_specific__exp_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__exp_r8
-
- _gfortran_specific__exp_r8 = exp (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log10_r10.F90 b/gcc-4.4.3/libgfortran/generated/_log10_r10.F90
deleted file mode 100644
index 4aa1f9826..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log10_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_LOG10L
-
-elemental function _gfortran_specific__log10_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__log10_r10
-
- _gfortran_specific__log10_r10 = log10 (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log10_r16.F90 b/gcc-4.4.3/libgfortran/generated/_log10_r16.F90
deleted file mode 100644
index 0af36baa8..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log10_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_LOG10L
-
-elemental function _gfortran_specific__log10_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__log10_r16
-
- _gfortran_specific__log10_r16 = log10 (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log10_r4.F90 b/gcc-4.4.3/libgfortran/generated/_log10_r4.F90
deleted file mode 100644
index d98851fce..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log10_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_LOG10F
-
-elemental function _gfortran_specific__log10_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__log10_r4
-
- _gfortran_specific__log10_r4 = log10 (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log10_r8.F90 b/gcc-4.4.3/libgfortran/generated/_log10_r8.F90
deleted file mode 100644
index cd687d009..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log10_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_LOG10
-
-elemental function _gfortran_specific__log10_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__log10_r8
-
- _gfortran_specific__log10_r8 = log10 (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log_c10.F90 b/gcc-4.4.3/libgfortran/generated/_log_c10.F90
deleted file mode 100644
index c7524e4ed..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log_c10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_10)
-#ifdef HAVE_CLOGL
-
-elemental function _gfortran_specific__log_c10 (parm)
- complex (kind=10), intent (in) :: parm
- complex (kind=10) :: _gfortran_specific__log_c10
-
- _gfortran_specific__log_c10 = log (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log_c16.F90 b/gcc-4.4.3/libgfortran/generated/_log_c16.F90
deleted file mode 100644
index 32a8171db..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log_c16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_16)
-#ifdef HAVE_CLOGL
-
-elemental function _gfortran_specific__log_c16 (parm)
- complex (kind=16), intent (in) :: parm
- complex (kind=16) :: _gfortran_specific__log_c16
-
- _gfortran_specific__log_c16 = log (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log_c4.F90 b/gcc-4.4.3/libgfortran/generated/_log_c4.F90
deleted file mode 100644
index b57818b51..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log_c4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_4)
-#ifdef HAVE_CLOGF
-
-elemental function _gfortran_specific__log_c4 (parm)
- complex (kind=4), intent (in) :: parm
- complex (kind=4) :: _gfortran_specific__log_c4
-
- _gfortran_specific__log_c4 = log (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log_c8.F90 b/gcc-4.4.3/libgfortran/generated/_log_c8.F90
deleted file mode 100644
index 3572b7d0a..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log_c8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_8)
-#ifdef HAVE_CLOG
-
-elemental function _gfortran_specific__log_c8 (parm)
- complex (kind=8), intent (in) :: parm
- complex (kind=8) :: _gfortran_specific__log_c8
-
- _gfortran_specific__log_c8 = log (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log_r10.F90 b/gcc-4.4.3/libgfortran/generated/_log_r10.F90
deleted file mode 100644
index 86c19aa8d..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_LOGL
-
-elemental function _gfortran_specific__log_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__log_r10
-
- _gfortran_specific__log_r10 = log (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log_r16.F90 b/gcc-4.4.3/libgfortran/generated/_log_r16.F90
deleted file mode 100644
index 094a04b89..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_LOGL
-
-elemental function _gfortran_specific__log_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__log_r16
-
- _gfortran_specific__log_r16 = log (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log_r4.F90 b/gcc-4.4.3/libgfortran/generated/_log_r4.F90
deleted file mode 100644
index 21dfc77d3..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_LOGF
-
-elemental function _gfortran_specific__log_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__log_r4
-
- _gfortran_specific__log_r4 = log (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_log_r8.F90 b/gcc-4.4.3/libgfortran/generated/_log_r8.F90
deleted file mode 100644
index 7d0dc9211..000000000
--- a/gcc-4.4.3/libgfortran/generated/_log_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_LOG
-
-elemental function _gfortran_specific__log_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__log_r8
-
- _gfortran_specific__log_r8 = log (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_mod_i16.F90 b/gcc-4.4.3/libgfortran/generated/_mod_i16.F90
deleted file mode 100644
index 343699a8b..000000000
--- a/gcc-4.4.3/libgfortran/generated/_mod_i16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-
-
-elemental function _gfortran_specific__mod_i16 (p1, p2)
- integer (kind=16), intent (in) :: p1, p2
- integer (kind=16) :: _gfortran_specific__mod_i16
-
- _gfortran_specific__mod_i16 = mod (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_mod_i4.F90 b/gcc-4.4.3/libgfortran/generated/_mod_i4.F90
deleted file mode 100644
index 47e835294..000000000
--- a/gcc-4.4.3/libgfortran/generated/_mod_i4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-
-
-elemental function _gfortran_specific__mod_i4 (p1, p2)
- integer (kind=4), intent (in) :: p1, p2
- integer (kind=4) :: _gfortran_specific__mod_i4
-
- _gfortran_specific__mod_i4 = mod (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_mod_i8.F90 b/gcc-4.4.3/libgfortran/generated/_mod_i8.F90
deleted file mode 100644
index 64418d238..000000000
--- a/gcc-4.4.3/libgfortran/generated/_mod_i8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-
-
-elemental function _gfortran_specific__mod_i8 (p1, p2)
- integer (kind=8), intent (in) :: p1, p2
- integer (kind=8) :: _gfortran_specific__mod_i8
-
- _gfortran_specific__mod_i8 = mod (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_mod_r10.F90 b/gcc-4.4.3/libgfortran/generated/_mod_r10.F90
deleted file mode 100644
index 104a92016..000000000
--- a/gcc-4.4.3/libgfortran/generated/_mod_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-
-
-
-elemental function _gfortran_specific__mod_r10 (p1, p2)
- real (kind=10), intent (in) :: p1, p2
- real (kind=10) :: _gfortran_specific__mod_r10
-
- _gfortran_specific__mod_r10 = mod (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_mod_r16.F90 b/gcc-4.4.3/libgfortran/generated/_mod_r16.F90
deleted file mode 100644
index 13570b1e6..000000000
--- a/gcc-4.4.3/libgfortran/generated/_mod_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-
-
-
-elemental function _gfortran_specific__mod_r16 (p1, p2)
- real (kind=16), intent (in) :: p1, p2
- real (kind=16) :: _gfortran_specific__mod_r16
-
- _gfortran_specific__mod_r16 = mod (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_mod_r4.F90 b/gcc-4.4.3/libgfortran/generated/_mod_r4.F90
deleted file mode 100644
index a31b65a45..000000000
--- a/gcc-4.4.3/libgfortran/generated/_mod_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-
-
-
-elemental function _gfortran_specific__mod_r4 (p1, p2)
- real (kind=4), intent (in) :: p1, p2
- real (kind=4) :: _gfortran_specific__mod_r4
-
- _gfortran_specific__mod_r4 = mod (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_mod_r8.F90 b/gcc-4.4.3/libgfortran/generated/_mod_r8.F90
deleted file mode 100644
index 931c14141..000000000
--- a/gcc-4.4.3/libgfortran/generated/_mod_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-
-
-
-elemental function _gfortran_specific__mod_r8 (p1, p2)
- real (kind=8), intent (in) :: p1, p2
- real (kind=8) :: _gfortran_specific__mod_r8
-
- _gfortran_specific__mod_r8 = mod (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sign_i16.F90 b/gcc-4.4.3/libgfortran/generated/_sign_i16.F90
deleted file mode 100644
index 71e2c655d..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sign_i16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-
-
-elemental function _gfortran_specific__sign_i16 (p1, p2)
- integer (kind=16), intent (in) :: p1, p2
- integer (kind=16) :: _gfortran_specific__sign_i16
-
- _gfortran_specific__sign_i16 = sign (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sign_i4.F90 b/gcc-4.4.3/libgfortran/generated/_sign_i4.F90
deleted file mode 100644
index 77a632cb4..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sign_i4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-
-
-elemental function _gfortran_specific__sign_i4 (p1, p2)
- integer (kind=4), intent (in) :: p1, p2
- integer (kind=4) :: _gfortran_specific__sign_i4
-
- _gfortran_specific__sign_i4 = sign (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sign_i8.F90 b/gcc-4.4.3/libgfortran/generated/_sign_i8.F90
deleted file mode 100644
index cfd3d40db..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sign_i8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-
-
-elemental function _gfortran_specific__sign_i8 (p1, p2)
- integer (kind=8), intent (in) :: p1, p2
- integer (kind=8) :: _gfortran_specific__sign_i8
-
- _gfortran_specific__sign_i8 = sign (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sign_r10.F90 b/gcc-4.4.3/libgfortran/generated/_sign_r10.F90
deleted file mode 100644
index 43a34fc8f..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sign_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-
-
-
-elemental function _gfortran_specific__sign_r10 (p1, p2)
- real (kind=10), intent (in) :: p1, p2
- real (kind=10) :: _gfortran_specific__sign_r10
-
- _gfortran_specific__sign_r10 = sign (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sign_r16.F90 b/gcc-4.4.3/libgfortran/generated/_sign_r16.F90
deleted file mode 100644
index 58ccbebd1..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sign_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-
-
-
-elemental function _gfortran_specific__sign_r16 (p1, p2)
- real (kind=16), intent (in) :: p1, p2
- real (kind=16) :: _gfortran_specific__sign_r16
-
- _gfortran_specific__sign_r16 = sign (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sign_r4.F90 b/gcc-4.4.3/libgfortran/generated/_sign_r4.F90
deleted file mode 100644
index 510b77a44..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sign_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-
-
-
-elemental function _gfortran_specific__sign_r4 (p1, p2)
- real (kind=4), intent (in) :: p1, p2
- real (kind=4) :: _gfortran_specific__sign_r4
-
- _gfortran_specific__sign_r4 = sign (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sign_r8.F90 b/gcc-4.4.3/libgfortran/generated/_sign_r8.F90
deleted file mode 100644
index 107ee1f88..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sign_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-
-
-
-elemental function _gfortran_specific__sign_r8 (p1, p2)
- real (kind=8), intent (in) :: p1, p2
- real (kind=8) :: _gfortran_specific__sign_r8
-
- _gfortran_specific__sign_r8 = sign (p1, p2)
-end function
-
-
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sin_c10.F90 b/gcc-4.4.3/libgfortran/generated/_sin_c10.F90
deleted file mode 100644
index 9870123c4..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sin_c10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_10)
-#ifdef HAVE_CSINL
-
-elemental function _gfortran_specific__sin_c10 (parm)
- complex (kind=10), intent (in) :: parm
- complex (kind=10) :: _gfortran_specific__sin_c10
-
- _gfortran_specific__sin_c10 = sin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sin_c16.F90 b/gcc-4.4.3/libgfortran/generated/_sin_c16.F90
deleted file mode 100644
index cc335be68..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sin_c16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_16)
-#ifdef HAVE_CSINL
-
-elemental function _gfortran_specific__sin_c16 (parm)
- complex (kind=16), intent (in) :: parm
- complex (kind=16) :: _gfortran_specific__sin_c16
-
- _gfortran_specific__sin_c16 = sin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sin_c4.F90 b/gcc-4.4.3/libgfortran/generated/_sin_c4.F90
deleted file mode 100644
index 35f02708e..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sin_c4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_4)
-#ifdef HAVE_CSINF
-
-elemental function _gfortran_specific__sin_c4 (parm)
- complex (kind=4), intent (in) :: parm
- complex (kind=4) :: _gfortran_specific__sin_c4
-
- _gfortran_specific__sin_c4 = sin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sin_c8.F90 b/gcc-4.4.3/libgfortran/generated/_sin_c8.F90
deleted file mode 100644
index 31eb0950c..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sin_c8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_8)
-#ifdef HAVE_CSIN
-
-elemental function _gfortran_specific__sin_c8 (parm)
- complex (kind=8), intent (in) :: parm
- complex (kind=8) :: _gfortran_specific__sin_c8
-
- _gfortran_specific__sin_c8 = sin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sin_r10.F90 b/gcc-4.4.3/libgfortran/generated/_sin_r10.F90
deleted file mode 100644
index 3cda76226..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sin_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_SINL
-
-elemental function _gfortran_specific__sin_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__sin_r10
-
- _gfortran_specific__sin_r10 = sin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sin_r16.F90 b/gcc-4.4.3/libgfortran/generated/_sin_r16.F90
deleted file mode 100644
index 08ff41ed0..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sin_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_SINL
-
-elemental function _gfortran_specific__sin_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__sin_r16
-
- _gfortran_specific__sin_r16 = sin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sin_r4.F90 b/gcc-4.4.3/libgfortran/generated/_sin_r4.F90
deleted file mode 100644
index dd9d02c26..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sin_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_SINF
-
-elemental function _gfortran_specific__sin_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__sin_r4
-
- _gfortran_specific__sin_r4 = sin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sin_r8.F90 b/gcc-4.4.3/libgfortran/generated/_sin_r8.F90
deleted file mode 100644
index acdc22573..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sin_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_SIN
-
-elemental function _gfortran_specific__sin_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__sin_r8
-
- _gfortran_specific__sin_r8 = sin (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sinh_r10.F90 b/gcc-4.4.3/libgfortran/generated/_sinh_r10.F90
deleted file mode 100644
index 344cda2c1..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sinh_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_SINHL
-
-elemental function _gfortran_specific__sinh_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__sinh_r10
-
- _gfortran_specific__sinh_r10 = sinh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sinh_r16.F90 b/gcc-4.4.3/libgfortran/generated/_sinh_r16.F90
deleted file mode 100644
index 34b0b5534..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sinh_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_SINHL
-
-elemental function _gfortran_specific__sinh_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__sinh_r16
-
- _gfortran_specific__sinh_r16 = sinh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sinh_r4.F90 b/gcc-4.4.3/libgfortran/generated/_sinh_r4.F90
deleted file mode 100644
index 6962c7838..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sinh_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_SINHF
-
-elemental function _gfortran_specific__sinh_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__sinh_r4
-
- _gfortran_specific__sinh_r4 = sinh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sinh_r8.F90 b/gcc-4.4.3/libgfortran/generated/_sinh_r8.F90
deleted file mode 100644
index 2a8157570..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sinh_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_SINH
-
-elemental function _gfortran_specific__sinh_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__sinh_r8
-
- _gfortran_specific__sinh_r8 = sinh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sqrt_c10.F90 b/gcc-4.4.3/libgfortran/generated/_sqrt_c10.F90
deleted file mode 100644
index 9fe264f40..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sqrt_c10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_10)
-#ifdef HAVE_CSQRTL
-
-elemental function _gfortran_specific__sqrt_c10 (parm)
- complex (kind=10), intent (in) :: parm
- complex (kind=10) :: _gfortran_specific__sqrt_c10
-
- _gfortran_specific__sqrt_c10 = sqrt (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sqrt_c16.F90 b/gcc-4.4.3/libgfortran/generated/_sqrt_c16.F90
deleted file mode 100644
index 399182149..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sqrt_c16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_16)
-#ifdef HAVE_CSQRTL
-
-elemental function _gfortran_specific__sqrt_c16 (parm)
- complex (kind=16), intent (in) :: parm
- complex (kind=16) :: _gfortran_specific__sqrt_c16
-
- _gfortran_specific__sqrt_c16 = sqrt (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sqrt_c4.F90 b/gcc-4.4.3/libgfortran/generated/_sqrt_c4.F90
deleted file mode 100644
index 0a3ae7c36..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sqrt_c4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_4)
-#ifdef HAVE_CSQRTF
-
-elemental function _gfortran_specific__sqrt_c4 (parm)
- complex (kind=4), intent (in) :: parm
- complex (kind=4) :: _gfortran_specific__sqrt_c4
-
- _gfortran_specific__sqrt_c4 = sqrt (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sqrt_c8.F90 b/gcc-4.4.3/libgfortran/generated/_sqrt_c8.F90
deleted file mode 100644
index 78b22194b..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sqrt_c8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_COMPLEX_8)
-#ifdef HAVE_CSQRT
-
-elemental function _gfortran_specific__sqrt_c8 (parm)
- complex (kind=8), intent (in) :: parm
- complex (kind=8) :: _gfortran_specific__sqrt_c8
-
- _gfortran_specific__sqrt_c8 = sqrt (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sqrt_r10.F90 b/gcc-4.4.3/libgfortran/generated/_sqrt_r10.F90
deleted file mode 100644
index 37a23f600..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sqrt_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_SQRTL
-
-elemental function _gfortran_specific__sqrt_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__sqrt_r10
-
- _gfortran_specific__sqrt_r10 = sqrt (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sqrt_r16.F90 b/gcc-4.4.3/libgfortran/generated/_sqrt_r16.F90
deleted file mode 100644
index 3669ae4d2..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sqrt_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_SQRTL
-
-elemental function _gfortran_specific__sqrt_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__sqrt_r16
-
- _gfortran_specific__sqrt_r16 = sqrt (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sqrt_r4.F90 b/gcc-4.4.3/libgfortran/generated/_sqrt_r4.F90
deleted file mode 100644
index 409383605..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sqrt_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_SQRTF
-
-elemental function _gfortran_specific__sqrt_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__sqrt_r4
-
- _gfortran_specific__sqrt_r4 = sqrt (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_sqrt_r8.F90 b/gcc-4.4.3/libgfortran/generated/_sqrt_r8.F90
deleted file mode 100644
index a772e10a4..000000000
--- a/gcc-4.4.3/libgfortran/generated/_sqrt_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_SQRT
-
-elemental function _gfortran_specific__sqrt_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__sqrt_r8
-
- _gfortran_specific__sqrt_r8 = sqrt (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_tan_r10.F90 b/gcc-4.4.3/libgfortran/generated/_tan_r10.F90
deleted file mode 100644
index c087bc60b..000000000
--- a/gcc-4.4.3/libgfortran/generated/_tan_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_TANL
-
-elemental function _gfortran_specific__tan_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__tan_r10
-
- _gfortran_specific__tan_r10 = tan (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_tan_r16.F90 b/gcc-4.4.3/libgfortran/generated/_tan_r16.F90
deleted file mode 100644
index d12c1a391..000000000
--- a/gcc-4.4.3/libgfortran/generated/_tan_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_TANL
-
-elemental function _gfortran_specific__tan_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__tan_r16
-
- _gfortran_specific__tan_r16 = tan (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_tan_r4.F90 b/gcc-4.4.3/libgfortran/generated/_tan_r4.F90
deleted file mode 100644
index 4d90a556b..000000000
--- a/gcc-4.4.3/libgfortran/generated/_tan_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_TANF
-
-elemental function _gfortran_specific__tan_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__tan_r4
-
- _gfortran_specific__tan_r4 = tan (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_tan_r8.F90 b/gcc-4.4.3/libgfortran/generated/_tan_r8.F90
deleted file mode 100644
index 4ddf82db5..000000000
--- a/gcc-4.4.3/libgfortran/generated/_tan_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_TAN
-
-elemental function _gfortran_specific__tan_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__tan_r8
-
- _gfortran_specific__tan_r8 = tan (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_tanh_r10.F90 b/gcc-4.4.3/libgfortran/generated/_tanh_r10.F90
deleted file mode 100644
index ee396b74f..000000000
--- a/gcc-4.4.3/libgfortran/generated/_tanh_r10.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_10)
-#ifdef HAVE_TANHL
-
-elemental function _gfortran_specific__tanh_r10 (parm)
- real (kind=10), intent (in) :: parm
- real (kind=10) :: _gfortran_specific__tanh_r10
-
- _gfortran_specific__tanh_r10 = tanh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_tanh_r16.F90 b/gcc-4.4.3/libgfortran/generated/_tanh_r16.F90
deleted file mode 100644
index 41aead446..000000000
--- a/gcc-4.4.3/libgfortran/generated/_tanh_r16.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_16)
-#ifdef HAVE_TANHL
-
-elemental function _gfortran_specific__tanh_r16 (parm)
- real (kind=16), intent (in) :: parm
- real (kind=16) :: _gfortran_specific__tanh_r16
-
- _gfortran_specific__tanh_r16 = tanh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_tanh_r4.F90 b/gcc-4.4.3/libgfortran/generated/_tanh_r4.F90
deleted file mode 100644
index 5113b8581..000000000
--- a/gcc-4.4.3/libgfortran/generated/_tanh_r4.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_4)
-#ifdef HAVE_TANHF
-
-elemental function _gfortran_specific__tanh_r4 (parm)
- real (kind=4), intent (in) :: parm
- real (kind=4) :: _gfortran_specific__tanh_r4
-
- _gfortran_specific__tanh_r4 = tanh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/_tanh_r8.F90 b/gcc-4.4.3/libgfortran/generated/_tanh_r8.F90
deleted file mode 100644
index 7b772d328..000000000
--- a/gcc-4.4.3/libgfortran/generated/_tanh_r8.F90
+++ /dev/null
@@ -1,46 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-
-
-
-
-#include "config.h"
-#include "kinds.inc"
-#include "c99_protos.inc"
-
-#if defined (HAVE_GFC_REAL_8)
-#ifdef HAVE_TANH
-
-elemental function _gfortran_specific__tanh_r8 (parm)
- real (kind=8), intent (in) :: parm
- real (kind=8) :: _gfortran_specific__tanh_r8
-
- _gfortran_specific__tanh_r8 = tanh (parm)
-end function
-
-#endif
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/all_l1.c b/gcc-4.4.3/libgfortran/generated/all_l1.c
deleted file mode 100644
index afde913e7..000000000
--- a/gcc-4.4.3/libgfortran/generated/all_l1.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ALL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_1)
-
-
-extern void all_l1 (gfc_array_l1 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(all_l1);
-
-void
-all_l1 (gfc_array_l1 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ALL intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ALL intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_1 result;
- src = base;
- {
-
- /* Return true only if all the elements are set. */
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (! *src)
- {
- result = 0;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/all_l16.c b/gcc-4.4.3/libgfortran/generated/all_l16.c
deleted file mode 100644
index 422fb894d..000000000
--- a/gcc-4.4.3/libgfortran/generated/all_l16.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ALL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_16)
-
-
-extern void all_l16 (gfc_array_l16 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(all_l16);
-
-void
-all_l16 (gfc_array_l16 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ALL intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ALL intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_16 result;
- src = base;
- {
-
- /* Return true only if all the elements are set. */
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (! *src)
- {
- result = 0;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/all_l2.c b/gcc-4.4.3/libgfortran/generated/all_l2.c
deleted file mode 100644
index 00f0886cb..000000000
--- a/gcc-4.4.3/libgfortran/generated/all_l2.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ALL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_2)
-
-
-extern void all_l2 (gfc_array_l2 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(all_l2);
-
-void
-all_l2 (gfc_array_l2 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ALL intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ALL intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_2 result;
- src = base;
- {
-
- /* Return true only if all the elements are set. */
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (! *src)
- {
- result = 0;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/all_l4.c b/gcc-4.4.3/libgfortran/generated/all_l4.c
deleted file mode 100644
index 500d4a52c..000000000
--- a/gcc-4.4.3/libgfortran/generated/all_l4.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ALL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_4)
-
-
-extern void all_l4 (gfc_array_l4 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(all_l4);
-
-void
-all_l4 (gfc_array_l4 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ALL intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ALL intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_4 result;
- src = base;
- {
-
- /* Return true only if all the elements are set. */
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (! *src)
- {
- result = 0;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/all_l8.c b/gcc-4.4.3/libgfortran/generated/all_l8.c
deleted file mode 100644
index 90f287ccd..000000000
--- a/gcc-4.4.3/libgfortran/generated/all_l8.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ALL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_8)
-
-
-extern void all_l8 (gfc_array_l8 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(all_l8);
-
-void
-all_l8 (gfc_array_l8 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ALL intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ALL intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ALL intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_8 result;
- src = base;
- {
-
- /* Return true only if all the elements are set. */
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (! *src)
- {
- result = 0;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/any_l1.c b/gcc-4.4.3/libgfortran/generated/any_l1.c
deleted file mode 100644
index 0186730a8..000000000
--- a/gcc-4.4.3/libgfortran/generated/any_l1.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ANY intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_1)
-
-
-extern void any_l1 (gfc_array_l1 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(any_l1);
-
-void
-any_l1 (gfc_array_l1 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ANY intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ANY intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_1 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- /* Return true if any of the elements are set. */
- if (*src)
- {
- result = 1;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/any_l16.c b/gcc-4.4.3/libgfortran/generated/any_l16.c
deleted file mode 100644
index 13f78a007..000000000
--- a/gcc-4.4.3/libgfortran/generated/any_l16.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ANY intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_16)
-
-
-extern void any_l16 (gfc_array_l16 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(any_l16);
-
-void
-any_l16 (gfc_array_l16 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ANY intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ANY intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_16 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- /* Return true if any of the elements are set. */
- if (*src)
- {
- result = 1;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/any_l2.c b/gcc-4.4.3/libgfortran/generated/any_l2.c
deleted file mode 100644
index b37d9cb58..000000000
--- a/gcc-4.4.3/libgfortran/generated/any_l2.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ANY intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_2)
-
-
-extern void any_l2 (gfc_array_l2 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(any_l2);
-
-void
-any_l2 (gfc_array_l2 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ANY intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ANY intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_2 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- /* Return true if any of the elements are set. */
- if (*src)
- {
- result = 1;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/any_l4.c b/gcc-4.4.3/libgfortran/generated/any_l4.c
deleted file mode 100644
index b15781296..000000000
--- a/gcc-4.4.3/libgfortran/generated/any_l4.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ANY intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_4)
-
-
-extern void any_l4 (gfc_array_l4 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(any_l4);
-
-void
-any_l4 (gfc_array_l4 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ANY intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ANY intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_4 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- /* Return true if any of the elements are set. */
- if (*src)
- {
- result = 1;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/any_l8.c b/gcc-4.4.3/libgfortran/generated/any_l8.c
deleted file mode 100644
index f66b00f41..000000000
--- a/gcc-4.4.3/libgfortran/generated/any_l8.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Implementation of the ANY intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_8)
-
-
-extern void any_l8 (gfc_array_l8 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(any_l8);
-
-void
-any_l8 (gfc_array_l8 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_LOGICAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_LOGICAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " ANY intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " ANY intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in ANY intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_LOGICAL_8 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- /* Return true if any of the elements are set. */
- if (*src)
- {
- result = 1;
- break;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/count_16_l.c b/gcc-4.4.3/libgfortran/generated/count_16_l.c
deleted file mode 100644
index c0a488e47..000000000
--- a/gcc-4.4.3/libgfortran/generated/count_16_l.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* Implementation of the COUNT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-
-extern void count_16_l (gfc_array_i16 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(count_16_l);
-
-void
-count_16_l (gfc_array_i16 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " COUNT intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in COUNT intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src)
- result++;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/count_1_l.c b/gcc-4.4.3/libgfortran/generated/count_1_l.c
deleted file mode 100644
index a23689759..000000000
--- a/gcc-4.4.3/libgfortran/generated/count_1_l.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* Implementation of the COUNT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1)
-
-
-extern void count_1_l (gfc_array_i1 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(count_1_l);
-
-void
-count_1_l (gfc_array_i1 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " COUNT intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in COUNT intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_INTEGER_1 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src)
- result++;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/count_2_l.c b/gcc-4.4.3/libgfortran/generated/count_2_l.c
deleted file mode 100644
index 7ae90f24d..000000000
--- a/gcc-4.4.3/libgfortran/generated/count_2_l.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* Implementation of the COUNT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2)
-
-
-extern void count_2_l (gfc_array_i2 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(count_2_l);
-
-void
-count_2_l (gfc_array_i2 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " COUNT intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in COUNT intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_INTEGER_2 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src)
- result++;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/count_4_l.c b/gcc-4.4.3/libgfortran/generated/count_4_l.c
deleted file mode 100644
index 75f0f582d..000000000
--- a/gcc-4.4.3/libgfortran/generated/count_4_l.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* Implementation of the COUNT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-
-extern void count_4_l (gfc_array_i4 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(count_4_l);
-
-void
-count_4_l (gfc_array_i4 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " COUNT intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in COUNT intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src)
- result++;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/count_8_l.c b/gcc-4.4.3/libgfortran/generated/count_8_l.c
deleted file mode 100644
index da53d1cd2..000000000
--- a/gcc-4.4.3/libgfortran/generated/count_8_l.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* Implementation of the COUNT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-
-extern void count_8_l (gfc_array_i8 * const restrict,
- gfc_array_l1 * const restrict, const index_type * const restrict);
-export_proto(count_8_l);
-
-void
-count_8_l (gfc_array_i8 * const restrict retarray,
- gfc_array_l1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_LOGICAL_1 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int src_kind;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- src_kind = GFC_DESCRIPTOR_SIZE (array);
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
-
- delta = array->dim[dim].stride * src_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride * src_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride * src_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " COUNT intrinsic: is %ld, should be %ld",
- (long int) GFC_DESCRIPTOR_RANK (retarray),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " COUNT intrinsic in dimension %d:"
- " is %ld, should be %ld", (int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
-
- if (src_kind == 1 || src_kind == 2 || src_kind == 4 || src_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || src_kind == 16
-#endif
- )
- {
- if (base)
- base = GFOR_POINTER_TO_L1 (base, src_kind);
- }
- else
- internal_error (NULL, "Funny sized logical array in COUNT intrinsic");
-
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_LOGICAL_1 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src)
- result++;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_c10.c b/gcc-4.4.3/libgfortran/generated/cshift0_c10.c
deleted file mode 100644
index 1f8078d2f..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_c10.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-void
-cshift0_c10 (gfc_array_c10 *ret, const gfc_array_c10 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_COMPLEX_10 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_COMPLEX_10 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_COMPLEX_10);
- size_t len2 = (len - shift) * sizeof (GFC_COMPLEX_10);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_COMPLEX_10 *dest = rptr;
- const GFC_COMPLEX_10 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_c16.c b/gcc-4.4.3/libgfortran/generated/cshift0_c16.c
deleted file mode 100644
index 83afa517c..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_c16.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-void
-cshift0_c16 (gfc_array_c16 *ret, const gfc_array_c16 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_COMPLEX_16 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_COMPLEX_16 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_COMPLEX_16);
- size_t len2 = (len - shift) * sizeof (GFC_COMPLEX_16);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_COMPLEX_16 *dest = rptr;
- const GFC_COMPLEX_16 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_c4.c b/gcc-4.4.3/libgfortran/generated/cshift0_c4.c
deleted file mode 100644
index 32a60063a..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_c4.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-void
-cshift0_c4 (gfc_array_c4 *ret, const gfc_array_c4 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_COMPLEX_4 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_COMPLEX_4 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_COMPLEX_4);
- size_t len2 = (len - shift) * sizeof (GFC_COMPLEX_4);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_COMPLEX_4 *dest = rptr;
- const GFC_COMPLEX_4 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_c8.c b/gcc-4.4.3/libgfortran/generated/cshift0_c8.c
deleted file mode 100644
index a9d152d64..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_c8.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-void
-cshift0_c8 (gfc_array_c8 *ret, const gfc_array_c8 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_COMPLEX_8 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_COMPLEX_8 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_COMPLEX_8);
- size_t len2 = (len - shift) * sizeof (GFC_COMPLEX_8);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_COMPLEX_8 *dest = rptr;
- const GFC_COMPLEX_8 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_i1.c b/gcc-4.4.3/libgfortran/generated/cshift0_i1.c
deleted file mode 100644
index 539af355b..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_i1.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1)
-
-void
-cshift0_i1 (gfc_array_i1 *ret, const gfc_array_i1 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_INTEGER_1 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_INTEGER_1 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_INTEGER_1);
- size_t len2 = (len - shift) * sizeof (GFC_INTEGER_1);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_INTEGER_1 *dest = rptr;
- const GFC_INTEGER_1 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_i16.c b/gcc-4.4.3/libgfortran/generated/cshift0_i16.c
deleted file mode 100644
index fa48d41b7..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_i16.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-void
-cshift0_i16 (gfc_array_i16 *ret, const gfc_array_i16 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_INTEGER_16 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_INTEGER_16 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_INTEGER_16);
- size_t len2 = (len - shift) * sizeof (GFC_INTEGER_16);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_INTEGER_16 *dest = rptr;
- const GFC_INTEGER_16 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_i2.c b/gcc-4.4.3/libgfortran/generated/cshift0_i2.c
deleted file mode 100644
index af07c0150..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_i2.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2)
-
-void
-cshift0_i2 (gfc_array_i2 *ret, const gfc_array_i2 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_INTEGER_2 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_INTEGER_2 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_INTEGER_2);
- size_t len2 = (len - shift) * sizeof (GFC_INTEGER_2);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_INTEGER_2 *dest = rptr;
- const GFC_INTEGER_2 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_i4.c b/gcc-4.4.3/libgfortran/generated/cshift0_i4.c
deleted file mode 100644
index 1997b1842..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_i4.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-void
-cshift0_i4 (gfc_array_i4 *ret, const gfc_array_i4 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_INTEGER_4 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_INTEGER_4 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_INTEGER_4);
- size_t len2 = (len - shift) * sizeof (GFC_INTEGER_4);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_INTEGER_4 *dest = rptr;
- const GFC_INTEGER_4 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_i8.c b/gcc-4.4.3/libgfortran/generated/cshift0_i8.c
deleted file mode 100644
index 6144d61e0..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_i8.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-void
-cshift0_i8 (gfc_array_i8 *ret, const gfc_array_i8 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_INTEGER_8 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_INTEGER_8 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_INTEGER_8);
- size_t len2 = (len - shift) * sizeof (GFC_INTEGER_8);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_INTEGER_8 *dest = rptr;
- const GFC_INTEGER_8 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_r10.c b/gcc-4.4.3/libgfortran/generated/cshift0_r10.c
deleted file mode 100644
index b3d5f8e48..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_r10.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-void
-cshift0_r10 (gfc_array_r10 *ret, const gfc_array_r10 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_REAL_10 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_REAL_10 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_REAL_10);
- size_t len2 = (len - shift) * sizeof (GFC_REAL_10);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_REAL_10 *dest = rptr;
- const GFC_REAL_10 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_r16.c b/gcc-4.4.3/libgfortran/generated/cshift0_r16.c
deleted file mode 100644
index 3088da414..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_r16.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-void
-cshift0_r16 (gfc_array_r16 *ret, const gfc_array_r16 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_REAL_16 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_REAL_16 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_REAL_16);
- size_t len2 = (len - shift) * sizeof (GFC_REAL_16);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_REAL_16 *dest = rptr;
- const GFC_REAL_16 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_r4.c b/gcc-4.4.3/libgfortran/generated/cshift0_r4.c
deleted file mode 100644
index 176be1fdd..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_r4.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-void
-cshift0_r4 (gfc_array_r4 *ret, const gfc_array_r4 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_REAL_4 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_REAL_4 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_REAL_4);
- size_t len2 = (len - shift) * sizeof (GFC_REAL_4);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_REAL_4 *dest = rptr;
- const GFC_REAL_4 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift0_r8.c b/gcc-4.4.3/libgfortran/generated/cshift0_r8.c
deleted file mode 100644
index 7947ff9aa..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift0_r8.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Helper function for cshift functions.
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-void
-cshift0_r8 (gfc_array_r8 *ret, const gfc_array_r8 *array, ssize_t shift,
- int which)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- GFC_REAL_8 *rptr;
-
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const GFC_REAL_8 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
-
- which = which - 1;
- sstride[0] = 0;
- rstride[0] = 0;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- /* Initialized for avoiding compiler warnings. */
- roffset = 1;
- soffset = 1;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride;
- if (roffset == 0)
- roffset = 1;
- soffset = array->dim[dim].stride;
- if (soffset == 0)
- soffset = 1;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride;
- sstride[n] = array->dim[dim].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (rstride[0] == 0)
- rstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- rptr = ret->data;
- sptr = array->data;
-
- shift = len == 0 ? 0 : shift % (ssize_t)len;
- if (shift < 0)
- shift += len;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
-
- /* If elements are contiguous, perform the operation
- in two block moves. */
- if (soffset == 1 && roffset == 1)
- {
- size_t len1 = shift * sizeof (GFC_REAL_8);
- size_t len2 = (len - shift) * sizeof (GFC_REAL_8);
- memcpy (rptr, sptr + shift, len2);
- memcpy (rptr + (len - shift), sptr, len1);
- }
- else
- {
- /* Otherwise, we will have to perform the copy one element at
- a time. */
- GFC_REAL_8 *dest = rptr;
- const GFC_REAL_8 *src = &sptr[shift * soffset];
-
- for (n = 0; n < len - shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- for (src = sptr, n = 0; n < shift; n++)
- {
- *dest = *src;
- dest += roffset;
- src += soffset;
- }
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- }
- }
- }
-
- return;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift1_16.c b/gcc-4.4.3/libgfortran/generated/cshift1_16.c
deleted file mode 100644
index 7a7d0db1d..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift1_16.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* Implementation of the CSHIFT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Feng Wang <wf_cs@yahoo.com>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-static void
-cshift1 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const GFC_INTEGER_16 * const restrict pwhich,
- index_type size)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char *dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_16 *hptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_16 sh;
- index_type arraysize;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- if (which < 0 || (which + 1) > GFC_DESCRIPTOR_RANK (array))
- runtime_error ("Argument 'DIM' is out of range in call to 'CSHIFT'");
-
- arraysize = size0 ((array_t *)array);
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * arraysize);
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
-
- if (arraysize == 0)
- return;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
-
- /* Initialized for avoiding compiler warnings. */
- roffset = size;
- soffset = size;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- sh = (div (sh, len)).rem;
- if (sh < 0)
- sh += len;
-
- src = &sptr[sh * soffset];
- dest = rptr;
-
- for (n = 0; n < len; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- if (n == len - sh - 1)
- src = sptr;
- else
- src += soffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- }
- }
- }
-}
-
-void cshift1_16 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i16 * const restrict,
- const GFC_INTEGER_16 * const restrict);
-export_proto(cshift1_16);
-
-void
-cshift1_16 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const GFC_INTEGER_16 * const restrict pwhich)
-{
- cshift1 (ret, array, h, pwhich, GFC_DESCRIPTOR_SIZE (array));
-}
-
-
-void cshift1_16_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const GFC_INTEGER_16 * const restrict pwhich,
- GFC_INTEGER_4);
-export_proto(cshift1_16_char);
-
-void
-cshift1_16_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const GFC_INTEGER_16 * const restrict pwhich,
- GFC_INTEGER_4 array_length)
-{
- cshift1 (ret, array, h, pwhich, array_length);
-}
-
-
-void cshift1_16_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const GFC_INTEGER_16 * const restrict pwhich,
- GFC_INTEGER_4);
-export_proto(cshift1_16_char4);
-
-void
-cshift1_16_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const GFC_INTEGER_16 * const restrict pwhich,
- GFC_INTEGER_4 array_length)
-{
- cshift1 (ret, array, h, pwhich, array_length * sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift1_4.c b/gcc-4.4.3/libgfortran/generated/cshift1_4.c
deleted file mode 100644
index c6f124fe1..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift1_4.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* Implementation of the CSHIFT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Feng Wang <wf_cs@yahoo.com>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-static void
-cshift1 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const GFC_INTEGER_4 * const restrict pwhich,
- index_type size)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char *dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_4 *hptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_4 sh;
- index_type arraysize;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- if (which < 0 || (which + 1) > GFC_DESCRIPTOR_RANK (array))
- runtime_error ("Argument 'DIM' is out of range in call to 'CSHIFT'");
-
- arraysize = size0 ((array_t *)array);
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * arraysize);
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
-
- if (arraysize == 0)
- return;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
-
- /* Initialized for avoiding compiler warnings. */
- roffset = size;
- soffset = size;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- sh = (div (sh, len)).rem;
- if (sh < 0)
- sh += len;
-
- src = &sptr[sh * soffset];
- dest = rptr;
-
- for (n = 0; n < len; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- if (n == len - sh - 1)
- src = sptr;
- else
- src += soffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- }
- }
- }
-}
-
-void cshift1_4 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i4 * const restrict,
- const GFC_INTEGER_4 * const restrict);
-export_proto(cshift1_4);
-
-void
-cshift1_4 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const GFC_INTEGER_4 * const restrict pwhich)
-{
- cshift1 (ret, array, h, pwhich, GFC_DESCRIPTOR_SIZE (array));
-}
-
-
-void cshift1_4_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const GFC_INTEGER_4 * const restrict pwhich,
- GFC_INTEGER_4);
-export_proto(cshift1_4_char);
-
-void
-cshift1_4_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const GFC_INTEGER_4 * const restrict pwhich,
- GFC_INTEGER_4 array_length)
-{
- cshift1 (ret, array, h, pwhich, array_length);
-}
-
-
-void cshift1_4_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const GFC_INTEGER_4 * const restrict pwhich,
- GFC_INTEGER_4);
-export_proto(cshift1_4_char4);
-
-void
-cshift1_4_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const GFC_INTEGER_4 * const restrict pwhich,
- GFC_INTEGER_4 array_length)
-{
- cshift1 (ret, array, h, pwhich, array_length * sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/cshift1_8.c b/gcc-4.4.3/libgfortran/generated/cshift1_8.c
deleted file mode 100644
index 54e92dbcf..000000000
--- a/gcc-4.4.3/libgfortran/generated/cshift1_8.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* Implementation of the CSHIFT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Feng Wang <wf_cs@yahoo.com>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-static void
-cshift1 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const GFC_INTEGER_8 * const restrict pwhich,
- index_type size)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char *dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_8 *hptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_8 sh;
- index_type arraysize;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- if (which < 0 || (which + 1) > GFC_DESCRIPTOR_RANK (array))
- runtime_error ("Argument 'DIM' is out of range in call to 'CSHIFT'");
-
- arraysize = size0 ((array_t *)array);
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * arraysize);
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
-
- if (arraysize == 0)
- return;
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
-
- /* Initialized for avoiding compiler warnings. */
- roffset = size;
- soffset = size;
- len = 0;
-
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- sh = (div (sh, len)).rem;
- if (sh < 0)
- sh += len;
-
- src = &sptr[sh * soffset];
- dest = rptr;
-
- for (n = 0; n < len; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- if (n == len - sh - 1)
- src = sptr;
- else
- src += soffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- }
- }
- }
-}
-
-void cshift1_8 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i8 * const restrict,
- const GFC_INTEGER_8 * const restrict);
-export_proto(cshift1_8);
-
-void
-cshift1_8 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const GFC_INTEGER_8 * const restrict pwhich)
-{
- cshift1 (ret, array, h, pwhich, GFC_DESCRIPTOR_SIZE (array));
-}
-
-
-void cshift1_8_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const GFC_INTEGER_8 * const restrict pwhich,
- GFC_INTEGER_4);
-export_proto(cshift1_8_char);
-
-void
-cshift1_8_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const GFC_INTEGER_8 * const restrict pwhich,
- GFC_INTEGER_4 array_length)
-{
- cshift1 (ret, array, h, pwhich, array_length);
-}
-
-
-void cshift1_8_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const GFC_INTEGER_8 * const restrict pwhich,
- GFC_INTEGER_4);
-export_proto(cshift1_8_char4);
-
-void
-cshift1_8_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const GFC_INTEGER_8 * const restrict pwhich,
- GFC_INTEGER_4 array_length)
-{
- cshift1 (ret, array, h, pwhich, array_length * sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/eoshift1_16.c b/gcc-4.4.3/libgfortran/generated/eoshift1_16.c
deleted file mode 100644
index b9fe9c311..000000000
--- a/gcc-4.4.3/libgfortran/generated/eoshift1_16.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/* Implementation of the EOSHIFT intrinsic
- Copyright 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-static void
-eoshift1 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_16 * const restrict pwhich,
- index_type size, const char * filler, index_type filler_len)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_16 *hptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_16 sh;
- GFC_INTEGER_16 delta;
-
- /* The compiler cannot figure out that these are set, initialize
- them to avoid warnings. */
- len = 0;
- soffset = 0;
- roffset = 0;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- extent[0] = 1;
- count[0] = 0;
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * size0 ((array_t *)array));
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
- else
- {
- if (size0 ((array_t *) ret) == 0)
- return;
- }
-
- n = 0;
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- if (( sh >= 0 ? sh : -sh ) > len)
- {
- delta = len;
- sh = len;
- }
- else
- delta = (sh >= 0) ? sh: -sh;
-
- if (sh > 0)
- {
- src = &sptr[delta * soffset];
- dest = rptr;
- }
- else
- {
- src = sptr;
- dest = &rptr[delta * roffset];
- }
- for (n = 0; n < len - delta; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- src += soffset;
- }
- if (sh < 0)
- dest = rptr;
- n = delta;
-
- if (pbound)
- while (n--)
- {
- memcpy (dest, pbound, size);
- dest += roffset;
- }
- else
- while (n--)
- {
- index_type i;
-
- if (filler_len == 1)
- memset (dest, filler[0], size);
- else
- for (i = 0; i < size; i += filler_len)
- memcpy (&dest[i], filler, filler_len);
-
- dest += roffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- }
- }
- }
-}
-
-void eoshift1_16 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i16 * const restrict, const char * const restrict,
- const GFC_INTEGER_16 * const restrict);
-export_proto(eoshift1_16);
-
-void
-eoshift1_16 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_16 * const restrict pwhich)
-{
- eoshift1 (ret, array, h, pbound, pwhich, GFC_DESCRIPTOR_SIZE (array),
- "\0", 1);
-}
-
-
-void eoshift1_16_char (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i16 * const restrict,
- const char * const restrict,
- const GFC_INTEGER_16 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift1_16_char);
-
-void
-eoshift1_16_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_16 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- eoshift1 (ret, array, h, pbound, pwhich, array_length, " ", 1);
-}
-
-
-void eoshift1_16_char4 (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i16 * const restrict,
- const char * const restrict,
- const GFC_INTEGER_16 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift1_16_char4);
-
-void
-eoshift1_16_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_16 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- static const gfc_char4_t space = (unsigned char) ' ';
- eoshift1 (ret, array, h, pbound, pwhich, array_length * sizeof (gfc_char4_t),
- (const char *) &space, sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/eoshift1_4.c b/gcc-4.4.3/libgfortran/generated/eoshift1_4.c
deleted file mode 100644
index 0510d2cd1..000000000
--- a/gcc-4.4.3/libgfortran/generated/eoshift1_4.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/* Implementation of the EOSHIFT intrinsic
- Copyright 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-static void
-eoshift1 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_4 * const restrict pwhich,
- index_type size, const char * filler, index_type filler_len)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_4 *hptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_4 sh;
- GFC_INTEGER_4 delta;
-
- /* The compiler cannot figure out that these are set, initialize
- them to avoid warnings. */
- len = 0;
- soffset = 0;
- roffset = 0;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- extent[0] = 1;
- count[0] = 0;
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * size0 ((array_t *)array));
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
- else
- {
- if (size0 ((array_t *) ret) == 0)
- return;
- }
-
- n = 0;
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- if (( sh >= 0 ? sh : -sh ) > len)
- {
- delta = len;
- sh = len;
- }
- else
- delta = (sh >= 0) ? sh: -sh;
-
- if (sh > 0)
- {
- src = &sptr[delta * soffset];
- dest = rptr;
- }
- else
- {
- src = sptr;
- dest = &rptr[delta * roffset];
- }
- for (n = 0; n < len - delta; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- src += soffset;
- }
- if (sh < 0)
- dest = rptr;
- n = delta;
-
- if (pbound)
- while (n--)
- {
- memcpy (dest, pbound, size);
- dest += roffset;
- }
- else
- while (n--)
- {
- index_type i;
-
- if (filler_len == 1)
- memset (dest, filler[0], size);
- else
- for (i = 0; i < size; i += filler_len)
- memcpy (&dest[i], filler, filler_len);
-
- dest += roffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- }
- }
- }
-}
-
-void eoshift1_4 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i4 * const restrict, const char * const restrict,
- const GFC_INTEGER_4 * const restrict);
-export_proto(eoshift1_4);
-
-void
-eoshift1_4 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_4 * const restrict pwhich)
-{
- eoshift1 (ret, array, h, pbound, pwhich, GFC_DESCRIPTOR_SIZE (array),
- "\0", 1);
-}
-
-
-void eoshift1_4_char (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i4 * const restrict,
- const char * const restrict,
- const GFC_INTEGER_4 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift1_4_char);
-
-void
-eoshift1_4_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_4 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- eoshift1 (ret, array, h, pbound, pwhich, array_length, " ", 1);
-}
-
-
-void eoshift1_4_char4 (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i4 * const restrict,
- const char * const restrict,
- const GFC_INTEGER_4 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift1_4_char4);
-
-void
-eoshift1_4_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_4 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- static const gfc_char4_t space = (unsigned char) ' ';
- eoshift1 (ret, array, h, pbound, pwhich, array_length * sizeof (gfc_char4_t),
- (const char *) &space, sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/eoshift1_8.c b/gcc-4.4.3/libgfortran/generated/eoshift1_8.c
deleted file mode 100644
index d61023e54..000000000
--- a/gcc-4.4.3/libgfortran/generated/eoshift1_8.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/* Implementation of the EOSHIFT intrinsic
- Copyright 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-static void
-eoshift1 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_8 * const restrict pwhich,
- index_type size, const char * filler, index_type filler_len)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_8 *hptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_8 sh;
- GFC_INTEGER_8 delta;
-
- /* The compiler cannot figure out that these are set, initialize
- them to avoid warnings. */
- len = 0;
- soffset = 0;
- roffset = 0;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- extent[0] = 1;
- count[0] = 0;
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * size0 ((array_t *)array));
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
- else
- {
- if (size0 ((array_t *) ret) == 0)
- return;
- }
-
- n = 0;
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- if (( sh >= 0 ? sh : -sh ) > len)
- {
- delta = len;
- sh = len;
- }
- else
- delta = (sh >= 0) ? sh: -sh;
-
- if (sh > 0)
- {
- src = &sptr[delta * soffset];
- dest = rptr;
- }
- else
- {
- src = sptr;
- dest = &rptr[delta * roffset];
- }
- for (n = 0; n < len - delta; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- src += soffset;
- }
- if (sh < 0)
- dest = rptr;
- n = delta;
-
- if (pbound)
- while (n--)
- {
- memcpy (dest, pbound, size);
- dest += roffset;
- }
- else
- while (n--)
- {
- index_type i;
-
- if (filler_len == 1)
- memset (dest, filler[0], size);
- else
- for (i = 0; i < size; i += filler_len)
- memcpy (&dest[i], filler, filler_len);
-
- dest += roffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- }
- }
- }
-}
-
-void eoshift1_8 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i8 * const restrict, const char * const restrict,
- const GFC_INTEGER_8 * const restrict);
-export_proto(eoshift1_8);
-
-void
-eoshift1_8 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_8 * const restrict pwhich)
-{
- eoshift1 (ret, array, h, pbound, pwhich, GFC_DESCRIPTOR_SIZE (array),
- "\0", 1);
-}
-
-
-void eoshift1_8_char (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i8 * const restrict,
- const char * const restrict,
- const GFC_INTEGER_8 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift1_8_char);
-
-void
-eoshift1_8_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_8 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- eoshift1 (ret, array, h, pbound, pwhich, array_length, " ", 1);
-}
-
-
-void eoshift1_8_char4 (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i8 * const restrict,
- const char * const restrict,
- const GFC_INTEGER_8 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift1_8_char4);
-
-void
-eoshift1_8_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const char * const restrict pbound,
- const GFC_INTEGER_8 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- static const gfc_char4_t space = (unsigned char) ' ';
- eoshift1 (ret, array, h, pbound, pwhich, array_length * sizeof (gfc_char4_t),
- (const char *) &space, sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/eoshift3_16.c b/gcc-4.4.3/libgfortran/generated/eoshift3_16.c
deleted file mode 100644
index 282409e2f..000000000
--- a/gcc-4.4.3/libgfortran/generated/eoshift3_16.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Implementation of the EOSHIFT intrinsic
- Copyright 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-static void
-eoshift3 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_16 * const restrict pwhich,
- index_type size, const char * filler, index_type filler_len)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_16 *hptr;
- /* b.* indicates the bound array. */
- index_type bstride[GFC_MAX_DIMENSIONS];
- index_type bstride0;
- const char *bptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_16 sh;
- GFC_INTEGER_16 delta;
-
- /* The compiler cannot figure out that these are set, initialize
- them to avoid warnings. */
- len = 0;
- soffset = 0;
- roffset = 0;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * size0 ((array_t *)array));
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
- else
- {
- if (size0 ((array_t *) ret) == 0)
- return;
- }
-
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- if (bound)
- bstride[n] = bound->dim[n].stride * size;
- else
- bstride[n] = 0;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
- if (bound && bstride[0] == 0)
- bstride[0] = size;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- bstride0 = bstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
- if (bound)
- bptr = bound->data;
- else
- bptr = NULL;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- if (( sh >= 0 ? sh : -sh ) > len)
- {
- delta = len;
- sh = len;
- }
- else
- delta = (sh >= 0) ? sh: -sh;
-
- if (sh > 0)
- {
- src = &sptr[delta * soffset];
- dest = rptr;
- }
- else
- {
- src = sptr;
- dest = &rptr[delta * roffset];
- }
- for (n = 0; n < len - delta; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- src += soffset;
- }
- if (sh < 0)
- dest = rptr;
- n = delta;
-
- if (bptr)
- while (n--)
- {
- memcpy (dest, bptr, size);
- dest += roffset;
- }
- else
- while (n--)
- {
- index_type i;
-
- if (filler_len == 1)
- memset (dest, filler[0], size);
- else
- for (i = 0; i < size; i += filler_len)
- memcpy (&dest[i], filler, filler_len);
-
- dest += roffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- bptr += bstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- bptr -= bstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- bptr += bstride[n];
- }
- }
- }
-}
-
-extern void eoshift3_16 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i16 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_16 *);
-export_proto(eoshift3_16);
-
-void
-eoshift3_16 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_16 * const restrict pwhich)
-{
- eoshift3 (ret, array, h, bound, pwhich, GFC_DESCRIPTOR_SIZE (array),
- "\0", 1);
-}
-
-
-extern void eoshift3_16_char (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i16 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_16 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift3_16_char);
-
-void
-eoshift3_16_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_16 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- eoshift3 (ret, array, h, bound, pwhich, array_length, " ", 1);
-}
-
-
-extern void eoshift3_16_char4 (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i16 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_16 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift3_16_char4);
-
-void
-eoshift3_16_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i16 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_16 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- static const gfc_char4_t space = (unsigned char) ' ';
- eoshift3 (ret, array, h, bound, pwhich, array_length * sizeof (gfc_char4_t),
- (const char *) &space, sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/eoshift3_4.c b/gcc-4.4.3/libgfortran/generated/eoshift3_4.c
deleted file mode 100644
index a16594506..000000000
--- a/gcc-4.4.3/libgfortran/generated/eoshift3_4.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Implementation of the EOSHIFT intrinsic
- Copyright 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-static void
-eoshift3 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_4 * const restrict pwhich,
- index_type size, const char * filler, index_type filler_len)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_4 *hptr;
- /* b.* indicates the bound array. */
- index_type bstride[GFC_MAX_DIMENSIONS];
- index_type bstride0;
- const char *bptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_4 sh;
- GFC_INTEGER_4 delta;
-
- /* The compiler cannot figure out that these are set, initialize
- them to avoid warnings. */
- len = 0;
- soffset = 0;
- roffset = 0;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * size0 ((array_t *)array));
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
- else
- {
- if (size0 ((array_t *) ret) == 0)
- return;
- }
-
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- if (bound)
- bstride[n] = bound->dim[n].stride * size;
- else
- bstride[n] = 0;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
- if (bound && bstride[0] == 0)
- bstride[0] = size;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- bstride0 = bstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
- if (bound)
- bptr = bound->data;
- else
- bptr = NULL;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- if (( sh >= 0 ? sh : -sh ) > len)
- {
- delta = len;
- sh = len;
- }
- else
- delta = (sh >= 0) ? sh: -sh;
-
- if (sh > 0)
- {
- src = &sptr[delta * soffset];
- dest = rptr;
- }
- else
- {
- src = sptr;
- dest = &rptr[delta * roffset];
- }
- for (n = 0; n < len - delta; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- src += soffset;
- }
- if (sh < 0)
- dest = rptr;
- n = delta;
-
- if (bptr)
- while (n--)
- {
- memcpy (dest, bptr, size);
- dest += roffset;
- }
- else
- while (n--)
- {
- index_type i;
-
- if (filler_len == 1)
- memset (dest, filler[0], size);
- else
- for (i = 0; i < size; i += filler_len)
- memcpy (&dest[i], filler, filler_len);
-
- dest += roffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- bptr += bstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- bptr -= bstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- bptr += bstride[n];
- }
- }
- }
-}
-
-extern void eoshift3_4 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i4 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_4 *);
-export_proto(eoshift3_4);
-
-void
-eoshift3_4 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_4 * const restrict pwhich)
-{
- eoshift3 (ret, array, h, bound, pwhich, GFC_DESCRIPTOR_SIZE (array),
- "\0", 1);
-}
-
-
-extern void eoshift3_4_char (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i4 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_4 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift3_4_char);
-
-void
-eoshift3_4_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_4 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- eoshift3 (ret, array, h, bound, pwhich, array_length, " ", 1);
-}
-
-
-extern void eoshift3_4_char4 (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i4 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_4 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift3_4_char4);
-
-void
-eoshift3_4_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i4 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_4 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- static const gfc_char4_t space = (unsigned char) ' ';
- eoshift3 (ret, array, h, bound, pwhich, array_length * sizeof (gfc_char4_t),
- (const char *) &space, sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/eoshift3_8.c b/gcc-4.4.3/libgfortran/generated/eoshift3_8.c
deleted file mode 100644
index 5942de5ea..000000000
--- a/gcc-4.4.3/libgfortran/generated/eoshift3_8.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Implementation of the EOSHIFT intrinsic
- Copyright 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-static void
-eoshift3 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_8 * const restrict pwhich,
- index_type size, const char * filler, index_type filler_len)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type roffset;
- char *rptr;
- char * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type soffset;
- const char *sptr;
- const char *src;
- /* h.* indicates the shift array. */
- index_type hstride[GFC_MAX_DIMENSIONS];
- index_type hstride0;
- const GFC_INTEGER_8 *hptr;
- /* b.* indicates the bound array. */
- index_type bstride[GFC_MAX_DIMENSIONS];
- index_type bstride0;
- const char *bptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type dim;
- index_type len;
- index_type n;
- int which;
- GFC_INTEGER_8 sh;
- GFC_INTEGER_8 delta;
-
- /* The compiler cannot figure out that these are set, initialize
- them to avoid warnings. */
- len = 0;
- soffset = 0;
- roffset = 0;
-
- if (pwhich)
- which = *pwhich - 1;
- else
- which = 0;
-
- if (ret->data == NULL)
- {
- int i;
-
- ret->data = internal_malloc_size (size * size0 ((array_t *)array));
- ret->offset = 0;
- ret->dtype = array->dtype;
- for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
- {
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
-
- if (i == 0)
- ret->dim[i].stride = 1;
- else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
- }
- }
- else
- {
- if (size0 ((array_t *) ret) == 0)
- return;
- }
-
-
- extent[0] = 1;
- count[0] = 0;
- n = 0;
- for (dim = 0; dim < GFC_DESCRIPTOR_RANK (array); dim++)
- {
- if (dim == which)
- {
- roffset = ret->dim[dim].stride * size;
- if (roffset == 0)
- roffset = size;
- soffset = array->dim[dim].stride * size;
- if (soffset == 0)
- soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- }
- else
- {
- count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
-
- hstride[n] = h->dim[n].stride;
- if (bound)
- bstride[n] = bound->dim[n].stride * size;
- else
- bstride[n] = 0;
- n++;
- }
- }
- if (sstride[0] == 0)
- sstride[0] = size;
- if (rstride[0] == 0)
- rstride[0] = size;
- if (hstride[0] == 0)
- hstride[0] = 1;
- if (bound && bstride[0] == 0)
- bstride[0] = size;
-
- dim = GFC_DESCRIPTOR_RANK (array);
- rstride0 = rstride[0];
- sstride0 = sstride[0];
- hstride0 = hstride[0];
- bstride0 = bstride[0];
- rptr = ret->data;
- sptr = array->data;
- hptr = h->data;
- if (bound)
- bptr = bound->data;
- else
- bptr = NULL;
-
- while (rptr)
- {
- /* Do the shift for this dimension. */
- sh = *hptr;
- if (( sh >= 0 ? sh : -sh ) > len)
- {
- delta = len;
- sh = len;
- }
- else
- delta = (sh >= 0) ? sh: -sh;
-
- if (sh > 0)
- {
- src = &sptr[delta * soffset];
- dest = rptr;
- }
- else
- {
- src = sptr;
- dest = &rptr[delta * roffset];
- }
- for (n = 0; n < len - delta; n++)
- {
- memcpy (dest, src, size);
- dest += roffset;
- src += soffset;
- }
- if (sh < 0)
- dest = rptr;
- n = delta;
-
- if (bptr)
- while (n--)
- {
- memcpy (dest, bptr, size);
- dest += roffset;
- }
- else
- while (n--)
- {
- index_type i;
-
- if (filler_len == 1)
- memset (dest, filler[0], size);
- else
- for (i = 0; i < size; i += filler_len)
- memcpy (&dest[i], filler, filler_len);
-
- dest += roffset;
- }
-
- /* Advance to the next section. */
- rptr += rstride0;
- sptr += sstride0;
- hptr += hstride0;
- bptr += bstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- sptr -= sstride[n] * extent[n];
- hptr -= hstride[n] * extent[n];
- bptr -= bstride[n] * extent[n];
- n++;
- if (n >= dim - 1)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- sptr += sstride[n];
- hptr += hstride[n];
- bptr += bstride[n];
- }
- }
- }
-}
-
-extern void eoshift3_8 (gfc_array_char * const restrict,
- const gfc_array_char * const restrict,
- const gfc_array_i8 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_8 *);
-export_proto(eoshift3_8);
-
-void
-eoshift3_8 (gfc_array_char * const restrict ret,
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_8 * const restrict pwhich)
-{
- eoshift3 (ret, array, h, bound, pwhich, GFC_DESCRIPTOR_SIZE (array),
- "\0", 1);
-}
-
-
-extern void eoshift3_8_char (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i8 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_8 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift3_8_char);
-
-void
-eoshift3_8_char (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_8 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- eoshift3 (ret, array, h, bound, pwhich, array_length, " ", 1);
-}
-
-
-extern void eoshift3_8_char4 (gfc_array_char * const restrict,
- GFC_INTEGER_4,
- const gfc_array_char * const restrict,
- const gfc_array_i8 * const restrict,
- const gfc_array_char * const restrict,
- const GFC_INTEGER_8 * const restrict,
- GFC_INTEGER_4, GFC_INTEGER_4);
-export_proto(eoshift3_8_char4);
-
-void
-eoshift3_8_char4 (gfc_array_char * const restrict ret,
- GFC_INTEGER_4 ret_length __attribute__((unused)),
- const gfc_array_char * const restrict array,
- const gfc_array_i8 * const restrict h,
- const gfc_array_char * const restrict bound,
- const GFC_INTEGER_8 * const restrict pwhich,
- GFC_INTEGER_4 array_length,
- GFC_INTEGER_4 bound_length __attribute__((unused)))
-{
- static const gfc_char4_t space = (unsigned char) ' ';
- eoshift3 (ret, array, h, bound, pwhich, array_length * sizeof (gfc_char4_t),
- (const char *) &space, sizeof (gfc_char4_t));
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/exponent_r10.c b/gcc-4.4.3/libgfortran/generated/exponent_r10.c
deleted file mode 100644
index 1b56765b3..000000000
--- a/gcc-4.4.3/libgfortran/generated/exponent_r10.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Implementation of the EXPONENT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_FREXPL)
-
-extern GFC_INTEGER_4 exponent_r10 (GFC_REAL_10 s);
-export_proto(exponent_r10);
-
-GFC_INTEGER_4
-exponent_r10 (GFC_REAL_10 s)
-{
- int ret;
- frexpl (s, &ret);
- return ret;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/exponent_r16.c b/gcc-4.4.3/libgfortran/generated/exponent_r16.c
deleted file mode 100644
index 23f04152d..000000000
--- a/gcc-4.4.3/libgfortran/generated/exponent_r16.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Implementation of the EXPONENT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_FREXPL)
-
-extern GFC_INTEGER_4 exponent_r16 (GFC_REAL_16 s);
-export_proto(exponent_r16);
-
-GFC_INTEGER_4
-exponent_r16 (GFC_REAL_16 s)
-{
- int ret;
- frexpl (s, &ret);
- return ret;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/exponent_r4.c b/gcc-4.4.3/libgfortran/generated/exponent_r4.c
deleted file mode 100644
index b2df840a4..000000000
--- a/gcc-4.4.3/libgfortran/generated/exponent_r4.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Implementation of the EXPONENT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_FREXPF)
-
-extern GFC_INTEGER_4 exponent_r4 (GFC_REAL_4 s);
-export_proto(exponent_r4);
-
-GFC_INTEGER_4
-exponent_r4 (GFC_REAL_4 s)
-{
- int ret;
- frexpf (s, &ret);
- return ret;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/exponent_r8.c b/gcc-4.4.3/libgfortran/generated/exponent_r8.c
deleted file mode 100644
index ed4319ffa..000000000
--- a/gcc-4.4.3/libgfortran/generated/exponent_r8.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Implementation of the EXPONENT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_FREXP)
-
-extern GFC_INTEGER_4 exponent_r8 (GFC_REAL_8 s);
-export_proto(exponent_r8);
-
-GFC_INTEGER_4
-exponent_r8 (GFC_REAL_8 s)
-{
- int ret;
- frexp (s, &ret);
- return ret;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/fraction_r10.c b/gcc-4.4.3/libgfortran/generated/fraction_r10.c
deleted file mode 100644
index 46aa65d2c..000000000
--- a/gcc-4.4.3/libgfortran/generated/fraction_r10.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Implementation of the FRACTION intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_10 fraction_r10 (GFC_REAL_10 s);
-export_proto(fraction_r10);
-
-GFC_REAL_10
-fraction_r10 (GFC_REAL_10 s)
-{
- int dummy_exp;
- return frexpl (s, &dummy_exp);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/fraction_r16.c b/gcc-4.4.3/libgfortran/generated/fraction_r16.c
deleted file mode 100644
index 1ae3262a4..000000000
--- a/gcc-4.4.3/libgfortran/generated/fraction_r16.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Implementation of the FRACTION intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_16 fraction_r16 (GFC_REAL_16 s);
-export_proto(fraction_r16);
-
-GFC_REAL_16
-fraction_r16 (GFC_REAL_16 s)
-{
- int dummy_exp;
- return frexpl (s, &dummy_exp);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/fraction_r4.c b/gcc-4.4.3/libgfortran/generated/fraction_r4.c
deleted file mode 100644
index f2ea9e279..000000000
--- a/gcc-4.4.3/libgfortran/generated/fraction_r4.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Implementation of the FRACTION intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_FREXPF)
-
-extern GFC_REAL_4 fraction_r4 (GFC_REAL_4 s);
-export_proto(fraction_r4);
-
-GFC_REAL_4
-fraction_r4 (GFC_REAL_4 s)
-{
- int dummy_exp;
- return frexpf (s, &dummy_exp);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/fraction_r8.c b/gcc-4.4.3/libgfortran/generated/fraction_r8.c
deleted file mode 100644
index 1e0f9361a..000000000
--- a/gcc-4.4.3/libgfortran/generated/fraction_r8.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Implementation of the FRACTION intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_FREXP)
-
-extern GFC_REAL_8 fraction_r8 (GFC_REAL_8 s);
-export_proto(fraction_r8);
-
-GFC_REAL_8
-fraction_r8 (GFC_REAL_8 s)
-{
- int dummy_exp;
- return frexp (s, &dummy_exp);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_c10.c b/gcc-4.4.3/libgfortran/generated/in_pack_c10.c
deleted file mode 100644
index afe5ba183..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_c10.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_COMPLEX_10 *
-internal_pack_c10 (gfc_array_c10 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_COMPLEX_10 *src;
- GFC_COMPLEX_10 * restrict dest;
- GFC_COMPLEX_10 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_COMPLEX_10 *)internal_malloc_size (ssize * sizeof (GFC_COMPLEX_10));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_c16.c b/gcc-4.4.3/libgfortran/generated/in_pack_c16.c
deleted file mode 100644
index c60c6870e..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_c16.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_COMPLEX_16 *
-internal_pack_c16 (gfc_array_c16 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_COMPLEX_16 *src;
- GFC_COMPLEX_16 * restrict dest;
- GFC_COMPLEX_16 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_COMPLEX_16 *)internal_malloc_size (ssize * sizeof (GFC_COMPLEX_16));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_c4.c b/gcc-4.4.3/libgfortran/generated/in_pack_c4.c
deleted file mode 100644
index a117f7ac4..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_c4.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_COMPLEX_4 *
-internal_pack_c4 (gfc_array_c4 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_COMPLEX_4 *src;
- GFC_COMPLEX_4 * restrict dest;
- GFC_COMPLEX_4 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_COMPLEX_4 *)internal_malloc_size (ssize * sizeof (GFC_COMPLEX_4));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_c8.c b/gcc-4.4.3/libgfortran/generated/in_pack_c8.c
deleted file mode 100644
index f57f2aae1..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_c8.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_COMPLEX_8 *
-internal_pack_c8 (gfc_array_c8 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_COMPLEX_8 *src;
- GFC_COMPLEX_8 * restrict dest;
- GFC_COMPLEX_8 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_COMPLEX_8 *)internal_malloc_size (ssize * sizeof (GFC_COMPLEX_8));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_i1.c b/gcc-4.4.3/libgfortran/generated/in_pack_i1.c
deleted file mode 100644
index 1378f89e7..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_i1.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_INTEGER_1 *
-internal_pack_1 (gfc_array_i1 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_INTEGER_1 *src;
- GFC_INTEGER_1 * restrict dest;
- GFC_INTEGER_1 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_INTEGER_1 *)internal_malloc_size (ssize * sizeof (GFC_INTEGER_1));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_i16.c b/gcc-4.4.3/libgfortran/generated/in_pack_i16.c
deleted file mode 100644
index eced9242c..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_i16.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_INTEGER_16 *
-internal_pack_16 (gfc_array_i16 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_INTEGER_16 *src;
- GFC_INTEGER_16 * restrict dest;
- GFC_INTEGER_16 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_INTEGER_16 *)internal_malloc_size (ssize * sizeof (GFC_INTEGER_16));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_i2.c b/gcc-4.4.3/libgfortran/generated/in_pack_i2.c
deleted file mode 100644
index 5cb89fc12..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_i2.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_INTEGER_2 *
-internal_pack_2 (gfc_array_i2 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_INTEGER_2 *src;
- GFC_INTEGER_2 * restrict dest;
- GFC_INTEGER_2 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_INTEGER_2 *)internal_malloc_size (ssize * sizeof (GFC_INTEGER_2));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_i4.c b/gcc-4.4.3/libgfortran/generated/in_pack_i4.c
deleted file mode 100644
index 7b97b2061..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_i4.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_INTEGER_4 *
-internal_pack_4 (gfc_array_i4 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_INTEGER_4 *src;
- GFC_INTEGER_4 * restrict dest;
- GFC_INTEGER_4 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_INTEGER_4 *)internal_malloc_size (ssize * sizeof (GFC_INTEGER_4));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_i8.c b/gcc-4.4.3/libgfortran/generated/in_pack_i8.c
deleted file mode 100644
index 2a8f6d72e..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_i8.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_INTEGER_8 *
-internal_pack_8 (gfc_array_i8 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_INTEGER_8 *src;
- GFC_INTEGER_8 * restrict dest;
- GFC_INTEGER_8 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_INTEGER_8 *)internal_malloc_size (ssize * sizeof (GFC_INTEGER_8));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_r10.c b/gcc-4.4.3/libgfortran/generated/in_pack_r10.c
deleted file mode 100644
index 1f283f3d0..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_r10.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_REAL_10 *
-internal_pack_r10 (gfc_array_r10 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_REAL_10 *src;
- GFC_REAL_10 * restrict dest;
- GFC_REAL_10 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_REAL_10 *)internal_malloc_size (ssize * sizeof (GFC_REAL_10));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_r16.c b/gcc-4.4.3/libgfortran/generated/in_pack_r16.c
deleted file mode 100644
index 6c7c79e47..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_r16.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_REAL_16 *
-internal_pack_r16 (gfc_array_r16 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_REAL_16 *src;
- GFC_REAL_16 * restrict dest;
- GFC_REAL_16 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_REAL_16 *)internal_malloc_size (ssize * sizeof (GFC_REAL_16));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_r4.c b/gcc-4.4.3/libgfortran/generated/in_pack_r4.c
deleted file mode 100644
index 372f08719..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_r4.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_REAL_4 *
-internal_pack_r4 (gfc_array_r4 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_REAL_4 *src;
- GFC_REAL_4 * restrict dest;
- GFC_REAL_4 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_REAL_4 *)internal_malloc_size (ssize * sizeof (GFC_REAL_4));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_pack_r8.c b/gcc-4.4.3/libgfortran/generated/in_pack_r8.c
deleted file mode 100644
index 09a25445f..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_pack_r8.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-/* Allocates a block of memory with internal_malloc if the array needs
- repacking. */
-
-GFC_REAL_8 *
-internal_pack_r8 (gfc_array_r8 * source)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type ssize;
- const GFC_REAL_8 *src;
- GFC_REAL_8 * restrict dest;
- GFC_REAL_8 *destptr;
- int n;
- int packed;
-
- /* TODO: Investigate how we can figure out if this is a temporary
- since the stride=0 thing has been removed from the frontend. */
-
- dim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- packed = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = source->dim[n].stride;
- extent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (extent[n] <= 0)
- {
- /* Do nothing. */
- packed = 1;
- break;
- }
-
- if (ssize != stride[n])
- packed = 0;
-
- ssize *= extent[n];
- }
-
- if (packed)
- return source->data;
-
- /* Allocate storage for the destination. */
- destptr = (GFC_REAL_8 *)internal_malloc_size (ssize * sizeof (GFC_REAL_8));
- dest = destptr;
- src = source->data;
- stride0 = stride[0];
-
-
- while (src)
- {
- /* Copy the data. */
- *(dest++) = *src;
- /* Advance to the next element. */
- src += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- src = NULL;
- break;
- }
- else
- {
- count[n]++;
- src += stride[n];
- }
- }
- }
- return destptr;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_c10.c b/gcc-4.4.3/libgfortran/generated/in_unpack_c10.c
deleted file mode 100644
index 46ce8d446..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_c10.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-void
-internal_unpack_c10 (gfc_array_c10 * d, const GFC_COMPLEX_10 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_COMPLEX_10 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_COMPLEX_10));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_c16.c b/gcc-4.4.3/libgfortran/generated/in_unpack_c16.c
deleted file mode 100644
index 1b783bd72..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_c16.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-void
-internal_unpack_c16 (gfc_array_c16 * d, const GFC_COMPLEX_16 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_COMPLEX_16 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_COMPLEX_16));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_c4.c b/gcc-4.4.3/libgfortran/generated/in_unpack_c4.c
deleted file mode 100644
index fcf2abb7b..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_c4.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-void
-internal_unpack_c4 (gfc_array_c4 * d, const GFC_COMPLEX_4 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_COMPLEX_4 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_COMPLEX_4));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_c8.c b/gcc-4.4.3/libgfortran/generated/in_unpack_c8.c
deleted file mode 100644
index 994b234a8..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_c8.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-void
-internal_unpack_c8 (gfc_array_c8 * d, const GFC_COMPLEX_8 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_COMPLEX_8 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_COMPLEX_8));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_i1.c b/gcc-4.4.3/libgfortran/generated/in_unpack_i1.c
deleted file mode 100644
index 323b6847a..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_i1.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1)
-
-void
-internal_unpack_1 (gfc_array_i1 * d, const GFC_INTEGER_1 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_INTEGER_1 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_INTEGER_1));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_i16.c b/gcc-4.4.3/libgfortran/generated/in_unpack_i16.c
deleted file mode 100644
index 04b224887..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_i16.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-void
-internal_unpack_16 (gfc_array_i16 * d, const GFC_INTEGER_16 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_INTEGER_16 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_INTEGER_16));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_i2.c b/gcc-4.4.3/libgfortran/generated/in_unpack_i2.c
deleted file mode 100644
index cdcd9eaa2..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_i2.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2)
-
-void
-internal_unpack_2 (gfc_array_i2 * d, const GFC_INTEGER_2 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_INTEGER_2 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_INTEGER_2));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_i4.c b/gcc-4.4.3/libgfortran/generated/in_unpack_i4.c
deleted file mode 100644
index 837e35c14..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_i4.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-void
-internal_unpack_4 (gfc_array_i4 * d, const GFC_INTEGER_4 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_INTEGER_4 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_INTEGER_4));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_i8.c b/gcc-4.4.3/libgfortran/generated/in_unpack_i8.c
deleted file mode 100644
index 7ea8b94c7..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_i8.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-void
-internal_unpack_8 (gfc_array_i8 * d, const GFC_INTEGER_8 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_INTEGER_8 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_INTEGER_8));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_r10.c b/gcc-4.4.3/libgfortran/generated/in_unpack_r10.c
deleted file mode 100644
index 15c46b2d0..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_r10.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-void
-internal_unpack_r10 (gfc_array_r10 * d, const GFC_REAL_10 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_REAL_10 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_REAL_10));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_r16.c b/gcc-4.4.3/libgfortran/generated/in_unpack_r16.c
deleted file mode 100644
index af61dfe8e..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_r16.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-void
-internal_unpack_r16 (gfc_array_r16 * d, const GFC_REAL_16 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_REAL_16 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_REAL_16));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_r4.c b/gcc-4.4.3/libgfortran/generated/in_unpack_r4.c
deleted file mode 100644
index abf8aea69..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_r4.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-void
-internal_unpack_r4 (gfc_array_r4 * d, const GFC_REAL_4 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_REAL_4 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_REAL_4));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/in_unpack_r8.c b/gcc-4.4.3/libgfortran/generated/in_unpack_r8.c
deleted file mode 100644
index bba3fc6e8..000000000
--- a/gcc-4.4.3/libgfortran/generated/in_unpack_r8.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Helper function for repacking arrays.
- Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-void
-internal_unpack_r8 (gfc_array_r8 * d, const GFC_REAL_8 * src)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type stride[GFC_MAX_DIMENSIONS];
- index_type stride0;
- index_type dim;
- index_type dsize;
- GFC_REAL_8 * restrict dest;
- int n;
-
- dest = d->data;
- if (src == dest || !src)
- return;
-
- dim = GFC_DESCRIPTOR_RANK (d);
- dsize = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- stride[n] = d->dim[n].stride;
- extent[n] = d->dim[n].ubound + 1 - d->dim[n].lbound;
- if (extent[n] <= 0)
- return;
-
- if (dsize == stride[n])
- dsize *= extent[n];
- else
- dsize = 0;
- }
-
- if (dsize != 0)
- {
- memcpy (dest, src, dsize * sizeof (GFC_REAL_8));
- return;
- }
-
- stride0 = stride[0];
-
- while (dest)
- {
- /* Copy the data. */
- *dest = *(src++);
- /* Advance to the next element. */
- dest += stride0;
- count[0]++;
- /* Advance to the next source element. */
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= stride[n] * extent[n];
- n++;
- if (n == dim)
- {
- dest = NULL;
- break;
- }
- else
- {
- count[n]++;
- dest += stride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_c10.c b/gcc-4.4.3/libgfortran/generated/matmul_c10.c
deleted file mode 100644
index 7d4e47061..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_c10.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_COMPLEX_10 *, const GFC_COMPLEX_10 *,
- const int *, const GFC_COMPLEX_10 *, const int *,
- const GFC_COMPLEX_10 *, GFC_COMPLEX_10 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_c10 (gfc_array_c10 * const restrict retarray,
- gfc_array_c10 * const restrict a, gfc_array_c10 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_c10);
-
-void
-matmul_c10 (gfc_array_c10 * const restrict retarray,
- gfc_array_c10 * const restrict a, gfc_array_c10 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_COMPLEX_10 * restrict abase;
- const GFC_COMPLEX_10 * restrict bbase;
- GFC_COMPLEX_10 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_COMPLEX_10) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_COMPLEX_10 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_COMPLEX_10 * restrict bbase_y;
- GFC_COMPLEX_10 * restrict dest_y;
- const GFC_COMPLEX_10 * restrict abase_n;
- GFC_COMPLEX_10 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_COMPLEX_10) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_COMPLEX_10)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_COMPLEX_10 *restrict abase_x;
- const GFC_COMPLEX_10 *restrict bbase_y;
- GFC_COMPLEX_10 *restrict dest_y;
- GFC_COMPLEX_10 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_COMPLEX_10) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_COMPLEX_10 *restrict bbase_y;
- GFC_COMPLEX_10 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_COMPLEX_10) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_COMPLEX_10 *restrict bbase_y;
- GFC_COMPLEX_10 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_COMPLEX_10) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_COMPLEX_10 *restrict abase_x;
- const GFC_COMPLEX_10 *restrict bbase_y;
- GFC_COMPLEX_10 *restrict dest_y;
- GFC_COMPLEX_10 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_COMPLEX_10) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_c16.c b/gcc-4.4.3/libgfortran/generated/matmul_c16.c
deleted file mode 100644
index 4665bcc95..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_c16.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_COMPLEX_16 *, const GFC_COMPLEX_16 *,
- const int *, const GFC_COMPLEX_16 *, const int *,
- const GFC_COMPLEX_16 *, GFC_COMPLEX_16 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_c16 (gfc_array_c16 * const restrict retarray,
- gfc_array_c16 * const restrict a, gfc_array_c16 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_c16);
-
-void
-matmul_c16 (gfc_array_c16 * const restrict retarray,
- gfc_array_c16 * const restrict a, gfc_array_c16 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_COMPLEX_16 * restrict abase;
- const GFC_COMPLEX_16 * restrict bbase;
- GFC_COMPLEX_16 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_COMPLEX_16) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_COMPLEX_16 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_COMPLEX_16 * restrict bbase_y;
- GFC_COMPLEX_16 * restrict dest_y;
- const GFC_COMPLEX_16 * restrict abase_n;
- GFC_COMPLEX_16 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_COMPLEX_16) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_COMPLEX_16)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_COMPLEX_16 *restrict abase_x;
- const GFC_COMPLEX_16 *restrict bbase_y;
- GFC_COMPLEX_16 *restrict dest_y;
- GFC_COMPLEX_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_COMPLEX_16) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_COMPLEX_16 *restrict bbase_y;
- GFC_COMPLEX_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_COMPLEX_16) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_COMPLEX_16 *restrict bbase_y;
- GFC_COMPLEX_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_COMPLEX_16) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_COMPLEX_16 *restrict abase_x;
- const GFC_COMPLEX_16 *restrict bbase_y;
- GFC_COMPLEX_16 *restrict dest_y;
- GFC_COMPLEX_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_COMPLEX_16) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_c4.c b/gcc-4.4.3/libgfortran/generated/matmul_c4.c
deleted file mode 100644
index 6c7c723f7..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_c4.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_COMPLEX_4 *, const GFC_COMPLEX_4 *,
- const int *, const GFC_COMPLEX_4 *, const int *,
- const GFC_COMPLEX_4 *, GFC_COMPLEX_4 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_c4 (gfc_array_c4 * const restrict retarray,
- gfc_array_c4 * const restrict a, gfc_array_c4 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_c4);
-
-void
-matmul_c4 (gfc_array_c4 * const restrict retarray,
- gfc_array_c4 * const restrict a, gfc_array_c4 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_COMPLEX_4 * restrict abase;
- const GFC_COMPLEX_4 * restrict bbase;
- GFC_COMPLEX_4 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_COMPLEX_4) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_COMPLEX_4 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_COMPLEX_4 * restrict bbase_y;
- GFC_COMPLEX_4 * restrict dest_y;
- const GFC_COMPLEX_4 * restrict abase_n;
- GFC_COMPLEX_4 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_COMPLEX_4) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_COMPLEX_4)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_COMPLEX_4 *restrict abase_x;
- const GFC_COMPLEX_4 *restrict bbase_y;
- GFC_COMPLEX_4 *restrict dest_y;
- GFC_COMPLEX_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_COMPLEX_4) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_COMPLEX_4 *restrict bbase_y;
- GFC_COMPLEX_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_COMPLEX_4) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_COMPLEX_4 *restrict bbase_y;
- GFC_COMPLEX_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_COMPLEX_4) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_COMPLEX_4 *restrict abase_x;
- const GFC_COMPLEX_4 *restrict bbase_y;
- GFC_COMPLEX_4 *restrict dest_y;
- GFC_COMPLEX_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_COMPLEX_4) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_c8.c b/gcc-4.4.3/libgfortran/generated/matmul_c8.c
deleted file mode 100644
index cf1142ba0..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_c8.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_COMPLEX_8 *, const GFC_COMPLEX_8 *,
- const int *, const GFC_COMPLEX_8 *, const int *,
- const GFC_COMPLEX_8 *, GFC_COMPLEX_8 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_c8 (gfc_array_c8 * const restrict retarray,
- gfc_array_c8 * const restrict a, gfc_array_c8 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_c8);
-
-void
-matmul_c8 (gfc_array_c8 * const restrict retarray,
- gfc_array_c8 * const restrict a, gfc_array_c8 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_COMPLEX_8 * restrict abase;
- const GFC_COMPLEX_8 * restrict bbase;
- GFC_COMPLEX_8 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_COMPLEX_8) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_COMPLEX_8 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_COMPLEX_8 * restrict bbase_y;
- GFC_COMPLEX_8 * restrict dest_y;
- const GFC_COMPLEX_8 * restrict abase_n;
- GFC_COMPLEX_8 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_COMPLEX_8) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_COMPLEX_8)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_COMPLEX_8 *restrict abase_x;
- const GFC_COMPLEX_8 *restrict bbase_y;
- GFC_COMPLEX_8 *restrict dest_y;
- GFC_COMPLEX_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_COMPLEX_8) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_COMPLEX_8 *restrict bbase_y;
- GFC_COMPLEX_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_COMPLEX_8) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_COMPLEX_8 *restrict bbase_y;
- GFC_COMPLEX_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_COMPLEX_8) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_COMPLEX_8 *restrict abase_x;
- const GFC_COMPLEX_8 *restrict bbase_y;
- GFC_COMPLEX_8 *restrict dest_y;
- GFC_COMPLEX_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_COMPLEX_8) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_i1.c b/gcc-4.4.3/libgfortran/generated/matmul_i1.c
deleted file mode 100644
index 502676a42..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_i1.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_INTEGER_1 *, const GFC_INTEGER_1 *,
- const int *, const GFC_INTEGER_1 *, const int *,
- const GFC_INTEGER_1 *, GFC_INTEGER_1 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict a, gfc_array_i1 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_i1);
-
-void
-matmul_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict a, gfc_array_i1 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_INTEGER_1 * restrict abase;
- const GFC_INTEGER_1 * restrict bbase;
- GFC_INTEGER_1 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_INTEGER_1) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_INTEGER_1 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_INTEGER_1 * restrict bbase_y;
- GFC_INTEGER_1 * restrict dest_y;
- const GFC_INTEGER_1 * restrict abase_n;
- GFC_INTEGER_1 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_INTEGER_1) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_INTEGER_1)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_INTEGER_1 *restrict abase_x;
- const GFC_INTEGER_1 *restrict bbase_y;
- GFC_INTEGER_1 *restrict dest_y;
- GFC_INTEGER_1 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_1) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_INTEGER_1 *restrict bbase_y;
- GFC_INTEGER_1 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_1) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_INTEGER_1 *restrict bbase_y;
- GFC_INTEGER_1 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_1) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_INTEGER_1 *restrict abase_x;
- const GFC_INTEGER_1 *restrict bbase_y;
- GFC_INTEGER_1 *restrict dest_y;
- GFC_INTEGER_1 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_1) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_i16.c b/gcc-4.4.3/libgfortran/generated/matmul_i16.c
deleted file mode 100644
index 5b2b05a79..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_i16.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_INTEGER_16 *, const GFC_INTEGER_16 *,
- const int *, const GFC_INTEGER_16 *, const int *,
- const GFC_INTEGER_16 *, GFC_INTEGER_16 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict a, gfc_array_i16 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_i16);
-
-void
-matmul_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict a, gfc_array_i16 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_INTEGER_16 * restrict abase;
- const GFC_INTEGER_16 * restrict bbase;
- GFC_INTEGER_16 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_INTEGER_16) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_INTEGER_16 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_INTEGER_16 * restrict bbase_y;
- GFC_INTEGER_16 * restrict dest_y;
- const GFC_INTEGER_16 * restrict abase_n;
- GFC_INTEGER_16 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_INTEGER_16) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_INTEGER_16)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_INTEGER_16 *restrict abase_x;
- const GFC_INTEGER_16 *restrict bbase_y;
- GFC_INTEGER_16 *restrict dest_y;
- GFC_INTEGER_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_16) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_INTEGER_16 *restrict bbase_y;
- GFC_INTEGER_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_16) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_INTEGER_16 *restrict bbase_y;
- GFC_INTEGER_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_16) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_INTEGER_16 *restrict abase_x;
- const GFC_INTEGER_16 *restrict bbase_y;
- GFC_INTEGER_16 *restrict dest_y;
- GFC_INTEGER_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_16) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_i2.c b/gcc-4.4.3/libgfortran/generated/matmul_i2.c
deleted file mode 100644
index bf04fce96..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_i2.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_INTEGER_2 *, const GFC_INTEGER_2 *,
- const int *, const GFC_INTEGER_2 *, const int *,
- const GFC_INTEGER_2 *, GFC_INTEGER_2 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict a, gfc_array_i2 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_i2);
-
-void
-matmul_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict a, gfc_array_i2 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_INTEGER_2 * restrict abase;
- const GFC_INTEGER_2 * restrict bbase;
- GFC_INTEGER_2 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_INTEGER_2) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_INTEGER_2 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_INTEGER_2 * restrict bbase_y;
- GFC_INTEGER_2 * restrict dest_y;
- const GFC_INTEGER_2 * restrict abase_n;
- GFC_INTEGER_2 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_INTEGER_2) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_INTEGER_2)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_INTEGER_2 *restrict abase_x;
- const GFC_INTEGER_2 *restrict bbase_y;
- GFC_INTEGER_2 *restrict dest_y;
- GFC_INTEGER_2 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_2) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_INTEGER_2 *restrict bbase_y;
- GFC_INTEGER_2 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_2) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_INTEGER_2 *restrict bbase_y;
- GFC_INTEGER_2 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_2) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_INTEGER_2 *restrict abase_x;
- const GFC_INTEGER_2 *restrict bbase_y;
- GFC_INTEGER_2 *restrict dest_y;
- GFC_INTEGER_2 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_2) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_i4.c b/gcc-4.4.3/libgfortran/generated/matmul_i4.c
deleted file mode 100644
index 7b3ba6871..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_i4.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_INTEGER_4 *, const GFC_INTEGER_4 *,
- const int *, const GFC_INTEGER_4 *, const int *,
- const GFC_INTEGER_4 *, GFC_INTEGER_4 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict a, gfc_array_i4 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_i4);
-
-void
-matmul_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict a, gfc_array_i4 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_INTEGER_4 * restrict abase;
- const GFC_INTEGER_4 * restrict bbase;
- GFC_INTEGER_4 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_INTEGER_4) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_INTEGER_4 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_INTEGER_4 * restrict bbase_y;
- GFC_INTEGER_4 * restrict dest_y;
- const GFC_INTEGER_4 * restrict abase_n;
- GFC_INTEGER_4 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_INTEGER_4) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_INTEGER_4)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_INTEGER_4 *restrict abase_x;
- const GFC_INTEGER_4 *restrict bbase_y;
- GFC_INTEGER_4 *restrict dest_y;
- GFC_INTEGER_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_4) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_INTEGER_4 *restrict bbase_y;
- GFC_INTEGER_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_4) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_INTEGER_4 *restrict bbase_y;
- GFC_INTEGER_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_4) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_INTEGER_4 *restrict abase_x;
- const GFC_INTEGER_4 *restrict bbase_y;
- GFC_INTEGER_4 *restrict dest_y;
- GFC_INTEGER_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_4) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_i8.c b/gcc-4.4.3/libgfortran/generated/matmul_i8.c
deleted file mode 100644
index 45b99c3a3..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_i8.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_INTEGER_8 *, const GFC_INTEGER_8 *,
- const int *, const GFC_INTEGER_8 *, const int *,
- const GFC_INTEGER_8 *, GFC_INTEGER_8 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict a, gfc_array_i8 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_i8);
-
-void
-matmul_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict a, gfc_array_i8 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_INTEGER_8 * restrict abase;
- const GFC_INTEGER_8 * restrict bbase;
- GFC_INTEGER_8 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_INTEGER_8) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_INTEGER_8 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_INTEGER_8 * restrict bbase_y;
- GFC_INTEGER_8 * restrict dest_y;
- const GFC_INTEGER_8 * restrict abase_n;
- GFC_INTEGER_8 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_INTEGER_8) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_INTEGER_8)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_INTEGER_8 *restrict abase_x;
- const GFC_INTEGER_8 *restrict bbase_y;
- GFC_INTEGER_8 *restrict dest_y;
- GFC_INTEGER_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_8) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_INTEGER_8 *restrict bbase_y;
- GFC_INTEGER_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_8) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_INTEGER_8 *restrict bbase_y;
- GFC_INTEGER_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_INTEGER_8) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_INTEGER_8 *restrict abase_x;
- const GFC_INTEGER_8 *restrict bbase_y;
- GFC_INTEGER_8 *restrict dest_y;
- GFC_INTEGER_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_INTEGER_8) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_l16.c b/gcc-4.4.3/libgfortran/generated/matmul_l16.c
deleted file mode 100644
index fc8e54834..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_l16.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_16)
-
-/* Dimensions: retarray(x,y) a(x, count) b(count,y).
- Either a or b can be rank 1. In this case x or y is 1. */
-
-extern void matmul_l16 (gfc_array_l16 * const restrict,
- gfc_array_l1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(matmul_l16);
-
-void
-matmul_l16 (gfc_array_l16 * const restrict retarray,
- gfc_array_l1 * const restrict a, gfc_array_l1 * const restrict b)
-{
- const GFC_LOGICAL_1 * restrict abase;
- const GFC_LOGICAL_1 * restrict bbase;
- GFC_LOGICAL_16 * restrict dest;
- index_type rxstride;
- index_type rystride;
- index_type xcount;
- index_type ycount;
- index_type xstride;
- index_type ystride;
- index_type x;
- index_type y;
- int a_kind;
- int b_kind;
-
- const GFC_LOGICAL_1 * restrict pa;
- const GFC_LOGICAL_1 * restrict pb;
- index_type astride;
- index_type bstride;
- index_type count;
- index_type n;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_LOGICAL_16) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
- abase = a->data;
- a_kind = GFC_DESCRIPTOR_SIZE (a);
-
- if (a_kind == 1 || a_kind == 2 || a_kind == 4 || a_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || a_kind == 16
-#endif
- )
- abase = GFOR_POINTER_TO_L1 (abase, a_kind);
- else
- internal_error (NULL, "Funny sized logical array");
-
- bbase = b->data;
- b_kind = GFC_DESCRIPTOR_SIZE (b);
-
- if (b_kind == 1 || b_kind == 2 || b_kind == 4 || b_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || b_kind == 16
-#endif
- )
- bbase = GFOR_POINTER_TO_L1 (bbase, b_kind);
- else
- internal_error (NULL, "Funny sized logical array");
-
- dest = retarray->data;
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- rxstride = retarray->dim[0].stride;
- rystride = rxstride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
- /* If we have rank 1 parameters, zero the absent stride, and set the size to
- one. */
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- astride = a->dim[0].stride * a_kind;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- xstride = 0;
- rxstride = 0;
- xcount = 1;
- }
- else
- {
- astride = a->dim[1].stride * a_kind;
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xstride = a->dim[0].stride * a_kind;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- bstride = b->dim[0].stride * b_kind;
- assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
- ystride = 0;
- rystride = 0;
- ycount = 1;
- }
- else
- {
- bstride = b->dim[0].stride * b_kind;
- assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
- ystride = b->dim[1].stride * b_kind;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- for (y = 0; y < ycount; y++)
- {
- for (x = 0; x < xcount; x++)
- {
- /* Do the summation for this element. For real and integer types
- this is the same as DOT_PRODUCT. For complex types we use do
- a*b, not conjg(a)*b. */
- pa = abase;
- pb = bbase;
- *dest = 0;
-
- for (n = 0; n < count; n++)
- {
- if (*pa && *pb)
- {
- *dest = 1;
- break;
- }
- pa += astride;
- pb += bstride;
- }
-
- dest += rxstride;
- abase += xstride;
- }
- abase -= xstride * xcount;
- bbase += ystride;
- dest += rystride - (rxstride * xcount);
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_l4.c b/gcc-4.4.3/libgfortran/generated/matmul_l4.c
deleted file mode 100644
index c7bb58449..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_l4.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_4)
-
-/* Dimensions: retarray(x,y) a(x, count) b(count,y).
- Either a or b can be rank 1. In this case x or y is 1. */
-
-extern void matmul_l4 (gfc_array_l4 * const restrict,
- gfc_array_l1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(matmul_l4);
-
-void
-matmul_l4 (gfc_array_l4 * const restrict retarray,
- gfc_array_l1 * const restrict a, gfc_array_l1 * const restrict b)
-{
- const GFC_LOGICAL_1 * restrict abase;
- const GFC_LOGICAL_1 * restrict bbase;
- GFC_LOGICAL_4 * restrict dest;
- index_type rxstride;
- index_type rystride;
- index_type xcount;
- index_type ycount;
- index_type xstride;
- index_type ystride;
- index_type x;
- index_type y;
- int a_kind;
- int b_kind;
-
- const GFC_LOGICAL_1 * restrict pa;
- const GFC_LOGICAL_1 * restrict pb;
- index_type astride;
- index_type bstride;
- index_type count;
- index_type n;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_LOGICAL_4) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
- abase = a->data;
- a_kind = GFC_DESCRIPTOR_SIZE (a);
-
- if (a_kind == 1 || a_kind == 2 || a_kind == 4 || a_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || a_kind == 16
-#endif
- )
- abase = GFOR_POINTER_TO_L1 (abase, a_kind);
- else
- internal_error (NULL, "Funny sized logical array");
-
- bbase = b->data;
- b_kind = GFC_DESCRIPTOR_SIZE (b);
-
- if (b_kind == 1 || b_kind == 2 || b_kind == 4 || b_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || b_kind == 16
-#endif
- )
- bbase = GFOR_POINTER_TO_L1 (bbase, b_kind);
- else
- internal_error (NULL, "Funny sized logical array");
-
- dest = retarray->data;
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- rxstride = retarray->dim[0].stride;
- rystride = rxstride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
- /* If we have rank 1 parameters, zero the absent stride, and set the size to
- one. */
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- astride = a->dim[0].stride * a_kind;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- xstride = 0;
- rxstride = 0;
- xcount = 1;
- }
- else
- {
- astride = a->dim[1].stride * a_kind;
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xstride = a->dim[0].stride * a_kind;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- bstride = b->dim[0].stride * b_kind;
- assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
- ystride = 0;
- rystride = 0;
- ycount = 1;
- }
- else
- {
- bstride = b->dim[0].stride * b_kind;
- assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
- ystride = b->dim[1].stride * b_kind;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- for (y = 0; y < ycount; y++)
- {
- for (x = 0; x < xcount; x++)
- {
- /* Do the summation for this element. For real and integer types
- this is the same as DOT_PRODUCT. For complex types we use do
- a*b, not conjg(a)*b. */
- pa = abase;
- pb = bbase;
- *dest = 0;
-
- for (n = 0; n < count; n++)
- {
- if (*pa && *pb)
- {
- *dest = 1;
- break;
- }
- pa += astride;
- pb += bstride;
- }
-
- dest += rxstride;
- abase += xstride;
- }
- abase -= xstride * xcount;
- bbase += ystride;
- dest += rystride - (rxstride * xcount);
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_l8.c b/gcc-4.4.3/libgfortran/generated/matmul_l8.c
deleted file mode 100644
index 1d1541033..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_l8.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_LOGICAL_8)
-
-/* Dimensions: retarray(x,y) a(x, count) b(count,y).
- Either a or b can be rank 1. In this case x or y is 1. */
-
-extern void matmul_l8 (gfc_array_l8 * const restrict,
- gfc_array_l1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(matmul_l8);
-
-void
-matmul_l8 (gfc_array_l8 * const restrict retarray,
- gfc_array_l1 * const restrict a, gfc_array_l1 * const restrict b)
-{
- const GFC_LOGICAL_1 * restrict abase;
- const GFC_LOGICAL_1 * restrict bbase;
- GFC_LOGICAL_8 * restrict dest;
- index_type rxstride;
- index_type rystride;
- index_type xcount;
- index_type ycount;
- index_type xstride;
- index_type ystride;
- index_type x;
- index_type y;
- int a_kind;
- int b_kind;
-
- const GFC_LOGICAL_1 * restrict pa;
- const GFC_LOGICAL_1 * restrict pb;
- index_type astride;
- index_type bstride;
- index_type count;
- index_type n;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_LOGICAL_8) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
- abase = a->data;
- a_kind = GFC_DESCRIPTOR_SIZE (a);
-
- if (a_kind == 1 || a_kind == 2 || a_kind == 4 || a_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || a_kind == 16
-#endif
- )
- abase = GFOR_POINTER_TO_L1 (abase, a_kind);
- else
- internal_error (NULL, "Funny sized logical array");
-
- bbase = b->data;
- b_kind = GFC_DESCRIPTOR_SIZE (b);
-
- if (b_kind == 1 || b_kind == 2 || b_kind == 4 || b_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || b_kind == 16
-#endif
- )
- bbase = GFOR_POINTER_TO_L1 (bbase, b_kind);
- else
- internal_error (NULL, "Funny sized logical array");
-
- dest = retarray->data;
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- rxstride = retarray->dim[0].stride;
- rystride = rxstride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
- /* If we have rank 1 parameters, zero the absent stride, and set the size to
- one. */
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- astride = a->dim[0].stride * a_kind;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- xstride = 0;
- rxstride = 0;
- xcount = 1;
- }
- else
- {
- astride = a->dim[1].stride * a_kind;
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xstride = a->dim[0].stride * a_kind;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- bstride = b->dim[0].stride * b_kind;
- assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
- ystride = 0;
- rystride = 0;
- ycount = 1;
- }
- else
- {
- bstride = b->dim[0].stride * b_kind;
- assert(count == b->dim[0].ubound + 1 - b->dim[0].lbound);
- ystride = b->dim[1].stride * b_kind;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- for (y = 0; y < ycount; y++)
- {
- for (x = 0; x < xcount; x++)
- {
- /* Do the summation for this element. For real and integer types
- this is the same as DOT_PRODUCT. For complex types we use do
- a*b, not conjg(a)*b. */
- pa = abase;
- pb = bbase;
- *dest = 0;
-
- for (n = 0; n < count; n++)
- {
- if (*pa && *pb)
- {
- *dest = 1;
- break;
- }
- pa += astride;
- pb += bstride;
- }
-
- dest += rxstride;
- abase += xstride;
- }
- abase -= xstride * xcount;
- bbase += ystride;
- dest += rystride - (rxstride * xcount);
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_r10.c b/gcc-4.4.3/libgfortran/generated/matmul_r10.c
deleted file mode 100644
index 90338ac28..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_r10.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_REAL_10 *, const GFC_REAL_10 *,
- const int *, const GFC_REAL_10 *, const int *,
- const GFC_REAL_10 *, GFC_REAL_10 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict a, gfc_array_r10 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_r10);
-
-void
-matmul_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict a, gfc_array_r10 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_REAL_10 * restrict abase;
- const GFC_REAL_10 * restrict bbase;
- GFC_REAL_10 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_REAL_10) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_REAL_10 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_REAL_10 * restrict bbase_y;
- GFC_REAL_10 * restrict dest_y;
- const GFC_REAL_10 * restrict abase_n;
- GFC_REAL_10 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_REAL_10) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_REAL_10)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_REAL_10 *restrict abase_x;
- const GFC_REAL_10 *restrict bbase_y;
- GFC_REAL_10 *restrict dest_y;
- GFC_REAL_10 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_REAL_10) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_REAL_10 *restrict bbase_y;
- GFC_REAL_10 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_REAL_10) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_REAL_10 *restrict bbase_y;
- GFC_REAL_10 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_REAL_10) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_REAL_10 *restrict abase_x;
- const GFC_REAL_10 *restrict bbase_y;
- GFC_REAL_10 *restrict dest_y;
- GFC_REAL_10 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_REAL_10) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_r16.c b/gcc-4.4.3/libgfortran/generated/matmul_r16.c
deleted file mode 100644
index a8422b37a..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_r16.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_REAL_16 *, const GFC_REAL_16 *,
- const int *, const GFC_REAL_16 *, const int *,
- const GFC_REAL_16 *, GFC_REAL_16 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict a, gfc_array_r16 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_r16);
-
-void
-matmul_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict a, gfc_array_r16 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_REAL_16 * restrict abase;
- const GFC_REAL_16 * restrict bbase;
- GFC_REAL_16 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_REAL_16) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_REAL_16 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_REAL_16 * restrict bbase_y;
- GFC_REAL_16 * restrict dest_y;
- const GFC_REAL_16 * restrict abase_n;
- GFC_REAL_16 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_REAL_16) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_REAL_16)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_REAL_16 *restrict abase_x;
- const GFC_REAL_16 *restrict bbase_y;
- GFC_REAL_16 *restrict dest_y;
- GFC_REAL_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_REAL_16) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_REAL_16 *restrict bbase_y;
- GFC_REAL_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_REAL_16) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_REAL_16 *restrict bbase_y;
- GFC_REAL_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_REAL_16) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_REAL_16 *restrict abase_x;
- const GFC_REAL_16 *restrict bbase_y;
- GFC_REAL_16 *restrict dest_y;
- GFC_REAL_16 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_REAL_16) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_r4.c b/gcc-4.4.3/libgfortran/generated/matmul_r4.c
deleted file mode 100644
index 0bb503509..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_r4.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_REAL_4 *, const GFC_REAL_4 *,
- const int *, const GFC_REAL_4 *, const int *,
- const GFC_REAL_4 *, GFC_REAL_4 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict a, gfc_array_r4 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_r4);
-
-void
-matmul_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict a, gfc_array_r4 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_REAL_4 * restrict abase;
- const GFC_REAL_4 * restrict bbase;
- GFC_REAL_4 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_REAL_4) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_REAL_4 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_REAL_4 * restrict bbase_y;
- GFC_REAL_4 * restrict dest_y;
- const GFC_REAL_4 * restrict abase_n;
- GFC_REAL_4 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_REAL_4) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_REAL_4)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_REAL_4 *restrict abase_x;
- const GFC_REAL_4 *restrict bbase_y;
- GFC_REAL_4 *restrict dest_y;
- GFC_REAL_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_REAL_4) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_REAL_4 *restrict bbase_y;
- GFC_REAL_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_REAL_4) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_REAL_4 *restrict bbase_y;
- GFC_REAL_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_REAL_4) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_REAL_4 *restrict abase_x;
- const GFC_REAL_4 *restrict bbase_y;
- GFC_REAL_4 *restrict dest_y;
- GFC_REAL_4 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_REAL_4) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/matmul_r8.c b/gcc-4.4.3/libgfortran/generated/matmul_r8.c
deleted file mode 100644
index 0a07243d9..000000000
--- a/gcc-4.4.3/libgfortran/generated/matmul_r8.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Implementation of the MATMUL intrinsic
- Copyright 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-/* Prototype for the BLAS ?gemm subroutine, a pointer to which can be
- passed to us by the front-end, in which case we'll call it for large
- matrices. */
-
-typedef void (*blas_call)(const char *, const char *, const int *, const int *,
- const int *, const GFC_REAL_8 *, const GFC_REAL_8 *,
- const int *, const GFC_REAL_8 *, const int *,
- const GFC_REAL_8 *, GFC_REAL_8 *, const int *,
- int, int);
-
-/* The order of loops is different in the case of plain matrix
- multiplication C=MATMUL(A,B), and in the frequent special case where
- the argument A is the temporary result of a TRANSPOSE intrinsic:
- C=MATMUL(TRANSPOSE(A),B). Transposed temporaries are detected by
- looking at their strides.
-
- The equivalent Fortran pseudo-code is:
-
- DIMENSION A(M,COUNT), B(COUNT,N), C(M,N)
- IF (.NOT.IS_TRANSPOSED(A)) THEN
- C = 0
- DO J=1,N
- DO K=1,COUNT
- DO I=1,M
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- ELSE
- DO J=1,N
- DO I=1,M
- S = 0
- DO K=1,COUNT
- S = S+A(I,K)*B(K,J)
- C(I,J) = S
- ENDIF
-*/
-
-/* If try_blas is set to a nonzero value, then the matmul function will
- see if there is a way to perform the matrix multiplication by a call
- to the BLAS gemm function. */
-
-extern void matmul_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict a, gfc_array_r8 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm);
-export_proto(matmul_r8);
-
-void
-matmul_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict a, gfc_array_r8 * const restrict b, int try_blas,
- int blas_limit, blas_call gemm)
-{
- const GFC_REAL_8 * restrict abase;
- const GFC_REAL_8 * restrict bbase;
- GFC_REAL_8 * restrict dest;
-
- index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
- index_type x, y, n, count, xcount, ycount;
-
- assert (GFC_DESCRIPTOR_RANK (a) == 2
- || GFC_DESCRIPTOR_RANK (b) == 2);
-
-/* C[xcount,ycount] = A[xcount, count] * B[count,ycount]
-
- Either A or B (but not both) can be rank 1:
-
- o One-dimensional argument A is implicitly treated as a row matrix
- dimensioned [1,count], so xcount=1.
-
- o One-dimensional argument B is implicitly treated as a column matrix
- dimensioned [count, 1], so ycount=1.
- */
-
- if (retarray->data == NULL)
- {
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[0].stride = 1;
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
- }
- else
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = a->dim[0].ubound - a->dim[0].lbound;
- retarray->dim[0].stride = 1;
-
- retarray->dim[1].lbound = 0;
- retarray->dim[1].ubound = b->dim[1].ubound - b->dim[1].lbound;
- retarray->dim[1].stride = retarray->dim[0].ubound+1;
- }
-
- retarray->data
- = internal_malloc_size (sizeof (GFC_REAL_8) * size0 ((array_t *) retarray));
- retarray->offset = 0;
- }
- else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, arg_extent;
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic: is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- else
- {
- arg_extent = a->dim[0].ubound + 1 - a->dim[0].lbound;
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 1:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
-
- arg_extent = b->dim[1].ubound + 1 - b->dim[1].lbound;
- ret_extent = retarray->dim[1].ubound + 1 - retarray->dim[1].lbound;
- if (arg_extent != ret_extent)
- runtime_error ("Incorrect extent in return array in"
- " MATMUL intrinsic for dimension 2:"
- " is %ld, should be %ld",
- (long int) ret_extent, (long int) arg_extent);
- }
- }
-
-
- if (GFC_DESCRIPTOR_RANK (retarray) == 1)
- {
- /* One-dimensional result may be addressed in the code below
- either as a row or a column matrix. We want both cases to
- work. */
- rxstride = rystride = retarray->dim[0].stride;
- }
- else
- {
- rxstride = retarray->dim[0].stride;
- rystride = retarray->dim[1].stride;
- }
-
-
- if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- /* Treat it as a a row matrix A[1,count]. */
- axstride = a->dim[0].stride;
- aystride = 1;
-
- xcount = 1;
- count = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
- else
- {
- axstride = a->dim[0].stride;
- aystride = a->dim[1].stride;
-
- count = a->dim[1].ubound + 1 - a->dim[1].lbound;
- xcount = a->dim[0].ubound + 1 - a->dim[0].lbound;
- }
-
- if (count != b->dim[0].ubound + 1 - b->dim[0].lbound)
- {
- if (count > 0 || b->dim[0].ubound + 1 - b->dim[0].lbound > 0)
- runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
- }
-
- if (GFC_DESCRIPTOR_RANK (b) == 1)
- {
- /* Treat it as a column matrix B[count,1] */
- bxstride = b->dim[0].stride;
-
- /* bystride should never be used for 1-dimensional b.
- in case it is we want it to cause a segfault, rather than
- an incorrect result. */
- bystride = 0xDEADBEEF;
- ycount = 1;
- }
- else
- {
- bxstride = b->dim[0].stride;
- bystride = b->dim[1].stride;
- ycount = b->dim[1].ubound + 1 - b->dim[1].lbound;
- }
-
- abase = a->data;
- bbase = b->data;
- dest = retarray->data;
-
-
- /* Now that everything is set up, we're performing the multiplication
- itself. */
-
-#define POW3(x) (((float) (x)) * ((float) (x)) * ((float) (x)))
-
- if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
- && (bxstride == 1 || bystride == 1)
- && (((float) xcount) * ((float) ycount) * ((float) count)
- > POW3(blas_limit)))
- {
- const int m = xcount, n = ycount, k = count, ldc = rystride;
- const GFC_REAL_8 one = 1, zero = 0;
- const int lda = (axstride == 1) ? aystride : axstride,
- ldb = (bxstride == 1) ? bystride : bxstride;
-
- if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
- {
- assert (gemm != NULL);
- gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
- &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
- return;
- }
- }
-
- if (rxstride == 1 && axstride == 1 && bxstride == 1)
- {
- const GFC_REAL_8 * restrict bbase_y;
- GFC_REAL_8 * restrict dest_y;
- const GFC_REAL_8 * restrict abase_n;
- GFC_REAL_8 bbase_yn;
-
- if (rystride == xcount)
- memset (dest, 0, (sizeof (GFC_REAL_8) * xcount * ycount));
- else
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x + y*rystride] = (GFC_REAL_8)0;
- }
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = bbase + y*bystride;
- dest_y = dest + y*rystride;
- for (n = 0; n < count; n++)
- {
- abase_n = abase + n*aystride;
- bbase_yn = bbase_y[n];
- for (x = 0; x < xcount; x++)
- {
- dest_y[x] += abase_n[x] * bbase_yn;
- }
- }
- }
- }
- else if (rxstride == 1 && aystride == 1 && bxstride == 1)
- {
- if (GFC_DESCRIPTOR_RANK (a) != 1)
- {
- const GFC_REAL_8 *restrict abase_x;
- const GFC_REAL_8 *restrict bbase_y;
- GFC_REAL_8 *restrict dest_y;
- GFC_REAL_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_REAL_8) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
- }
- }
- }
- else
- {
- const GFC_REAL_8 *restrict bbase_y;
- GFC_REAL_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_REAL_8) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n];
- dest[y*rystride] = s;
- }
- }
- }
- else if (axstride < aystride)
- {
- for (y = 0; y < ycount; y++)
- for (x = 0; x < xcount; x++)
- dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
-
- for (y = 0; y < ycount; y++)
- for (n = 0; n < count; n++)
- for (x = 0; x < xcount; x++)
- /* dest[x,y] += a[x,n] * b[n,y] */
- dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
- }
- else if (GFC_DESCRIPTOR_RANK (a) == 1)
- {
- const GFC_REAL_8 *restrict bbase_y;
- GFC_REAL_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- s = (GFC_REAL_8) 0;
- for (n = 0; n < count; n++)
- s += abase[n*axstride] * bbase_y[n*bxstride];
- dest[y*rxstride] = s;
- }
- }
- else
- {
- const GFC_REAL_8 *restrict abase_x;
- const GFC_REAL_8 *restrict bbase_y;
- GFC_REAL_8 *restrict dest_y;
- GFC_REAL_8 s;
-
- for (y = 0; y < ycount; y++)
- {
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
- {
- abase_x = &abase[x*axstride];
- s = (GFC_REAL_8) 0;
- for (n = 0; n < count; n++)
- s += abase_x[n*aystride] * bbase_y[n*bxstride];
- dest_y[x*rxstride] = s;
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i1.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_i1.c
deleted file mode 100644
index b5efcedef..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i1.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array);
-export_proto(maxloc0_16_i1);
-
-void
-maxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_1 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 maxval;
-
- maxval = (-GFC_INTEGER_1_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_i1);
-
-void
-mmaxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_1 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 maxval;
-
- maxval = (-GFC_INTEGER_1_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_i1);
-
-void
-smaxloc0_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_i1 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i16.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_i16.c
deleted file mode 100644
index 617813253..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array);
-export_proto(maxloc0_16_i16);
-
-void
-maxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_16 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 maxval;
-
- maxval = (-GFC_INTEGER_16_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_i16);
-
-void
-mmaxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 maxval;
-
- maxval = (-GFC_INTEGER_16_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_i16);
-
-void
-smaxloc0_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_i16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i2.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_i2.c
deleted file mode 100644
index c7489a05b..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i2.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array);
-export_proto(maxloc0_16_i2);
-
-void
-maxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_2 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 maxval;
-
- maxval = (-GFC_INTEGER_2_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_i2);
-
-void
-mmaxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_2 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 maxval;
-
- maxval = (-GFC_INTEGER_2_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_i2);
-
-void
-smaxloc0_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_i2 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i4.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_i4.c
deleted file mode 100644
index 17e93bdb0..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array);
-export_proto(maxloc0_16_i4);
-
-void
-maxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_4 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 maxval;
-
- maxval = (-GFC_INTEGER_4_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_i4);
-
-void
-mmaxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 maxval;
-
- maxval = (-GFC_INTEGER_4_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_i4);
-
-void
-smaxloc0_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_i4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i8.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_i8.c
deleted file mode 100644
index 6863d6f5c..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_i8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array);
-export_proto(maxloc0_16_i8);
-
-void
-maxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_8 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 maxval;
-
- maxval = (-GFC_INTEGER_8_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_i8);
-
-void
-mmaxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 maxval;
-
- maxval = (-GFC_INTEGER_8_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_i8);
-
-void
-smaxloc0_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_i8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_r10.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_r10.c
deleted file mode 100644
index 153fc2b18..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_r10.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array);
-export_proto(maxloc0_16_r10);
-
-void
-maxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_10 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 maxval;
-
- maxval = -GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_r10);
-
-void
-mmaxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_REAL_10 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 maxval;
-
- maxval = -GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_r10);
-
-void
-smaxloc0_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_r10 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_r16.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_r16.c
deleted file mode 100644
index 1596cdc61..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_r16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array);
-export_proto(maxloc0_16_r16);
-
-void
-maxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_16 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 maxval;
-
- maxval = -GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_r16);
-
-void
-mmaxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_REAL_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 maxval;
-
- maxval = -GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_r16);
-
-void
-smaxloc0_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_r16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_r4.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_r4.c
deleted file mode 100644
index a5e33aaff..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_r4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array);
-export_proto(maxloc0_16_r4);
-
-void
-maxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_4 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 maxval;
-
- maxval = -GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_r4);
-
-void
-mmaxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_REAL_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 maxval;
-
- maxval = -GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_r4);
-
-void
-smaxloc0_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_r4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_16_r8.c b/gcc-4.4.3/libgfortran/generated/maxloc0_16_r8.c
deleted file mode 100644
index 6d645d0dc..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_16_r8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array);
-export_proto(maxloc0_16_r8);
-
-void
-maxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_8 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 maxval;
-
- maxval = -GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_16_r8);
-
-void
-mmaxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_REAL_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 maxval;
-
- maxval = -GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_16_r8);
-
-void
-smaxloc0_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- maxloc0_16_r8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i1.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_i1.c
deleted file mode 100644
index e219c9ff1..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i1.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array);
-export_proto(maxloc0_4_i1);
-
-void
-maxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_1 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 maxval;
-
- maxval = (-GFC_INTEGER_1_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_i1);
-
-void
-mmaxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_1 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 maxval;
-
- maxval = (-GFC_INTEGER_1_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_i1);
-
-void
-smaxloc0_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_i1 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i16.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_i16.c
deleted file mode 100644
index da1f6eabf..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array);
-export_proto(maxloc0_4_i16);
-
-void
-maxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_16 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 maxval;
-
- maxval = (-GFC_INTEGER_16_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_i16);
-
-void
-mmaxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 maxval;
-
- maxval = (-GFC_INTEGER_16_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_i16);
-
-void
-smaxloc0_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_i16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i2.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_i2.c
deleted file mode 100644
index c20b306f7..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i2.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array);
-export_proto(maxloc0_4_i2);
-
-void
-maxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_2 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 maxval;
-
- maxval = (-GFC_INTEGER_2_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_i2);
-
-void
-mmaxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_2 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 maxval;
-
- maxval = (-GFC_INTEGER_2_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_i2);
-
-void
-smaxloc0_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_i2 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i4.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_i4.c
deleted file mode 100644
index 2c08c7d5c..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array);
-export_proto(maxloc0_4_i4);
-
-void
-maxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_4 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 maxval;
-
- maxval = (-GFC_INTEGER_4_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_i4);
-
-void
-mmaxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 maxval;
-
- maxval = (-GFC_INTEGER_4_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_i4);
-
-void
-smaxloc0_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_i4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i8.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_i8.c
deleted file mode 100644
index 1a43838ba..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_i8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array);
-export_proto(maxloc0_4_i8);
-
-void
-maxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_8 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 maxval;
-
- maxval = (-GFC_INTEGER_8_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_i8);
-
-void
-mmaxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 maxval;
-
- maxval = (-GFC_INTEGER_8_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_i8);
-
-void
-smaxloc0_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_i8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_r10.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_r10.c
deleted file mode 100644
index ca041d6dc..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_r10.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array);
-export_proto(maxloc0_4_r10);
-
-void
-maxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_10 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 maxval;
-
- maxval = -GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_r10);
-
-void
-mmaxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_REAL_10 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 maxval;
-
- maxval = -GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_r10);
-
-void
-smaxloc0_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_r10 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_r16.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_r16.c
deleted file mode 100644
index dba5031e9..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_r16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array);
-export_proto(maxloc0_4_r16);
-
-void
-maxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_16 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 maxval;
-
- maxval = -GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_r16);
-
-void
-mmaxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_REAL_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 maxval;
-
- maxval = -GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_r16);
-
-void
-smaxloc0_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_r16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_r4.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_r4.c
deleted file mode 100644
index fe4b14080..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_r4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array);
-export_proto(maxloc0_4_r4);
-
-void
-maxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_4 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 maxval;
-
- maxval = -GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_r4);
-
-void
-mmaxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_REAL_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 maxval;
-
- maxval = -GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_r4);
-
-void
-smaxloc0_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_r4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_4_r8.c b/gcc-4.4.3/libgfortran/generated/maxloc0_4_r8.c
deleted file mode 100644
index 5360b2f7c..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_4_r8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array);
-export_proto(maxloc0_4_r8);
-
-void
-maxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_8 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 maxval;
-
- maxval = -GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_4_r8);
-
-void
-mmaxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_REAL_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 maxval;
-
- maxval = -GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_4_r8);
-
-void
-smaxloc0_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- maxloc0_4_r8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i1.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_i1.c
deleted file mode 100644
index 061a8a63a..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i1.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array);
-export_proto(maxloc0_8_i1);
-
-void
-maxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_1 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 maxval;
-
- maxval = (-GFC_INTEGER_1_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_i1);
-
-void
-mmaxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_1 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 maxval;
-
- maxval = (-GFC_INTEGER_1_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_i1);
-
-void
-smaxloc0_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_i1 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i16.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_i16.c
deleted file mode 100644
index 6ef795d03..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array);
-export_proto(maxloc0_8_i16);
-
-void
-maxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_16 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 maxval;
-
- maxval = (-GFC_INTEGER_16_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_i16);
-
-void
-mmaxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 maxval;
-
- maxval = (-GFC_INTEGER_16_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_i16);
-
-void
-smaxloc0_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_i16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i2.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_i2.c
deleted file mode 100644
index 2c8a376e6..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i2.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array);
-export_proto(maxloc0_8_i2);
-
-void
-maxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_2 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 maxval;
-
- maxval = (-GFC_INTEGER_2_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_i2);
-
-void
-mmaxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_2 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 maxval;
-
- maxval = (-GFC_INTEGER_2_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_i2);
-
-void
-smaxloc0_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_i2 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i4.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_i4.c
deleted file mode 100644
index d602bb490..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array);
-export_proto(maxloc0_8_i4);
-
-void
-maxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_4 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 maxval;
-
- maxval = (-GFC_INTEGER_4_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_i4);
-
-void
-mmaxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 maxval;
-
- maxval = (-GFC_INTEGER_4_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_i4);
-
-void
-smaxloc0_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_i4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i8.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_i8.c
deleted file mode 100644
index a4d250c56..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_i8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array);
-export_proto(maxloc0_8_i8);
-
-void
-maxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_8 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 maxval;
-
- maxval = (-GFC_INTEGER_8_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_i8);
-
-void
-mmaxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 maxval;
-
- maxval = (-GFC_INTEGER_8_HUGE-1);
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_i8);
-
-void
-smaxloc0_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_i8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_r10.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_r10.c
deleted file mode 100644
index 01ffc9d31..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_r10.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array);
-export_proto(maxloc0_8_r10);
-
-void
-maxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_10 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 maxval;
-
- maxval = -GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_r10);
-
-void
-mmaxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_REAL_10 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 maxval;
-
- maxval = -GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_r10);
-
-void
-smaxloc0_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_r10 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_r16.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_r16.c
deleted file mode 100644
index 448cd30e7..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_r16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array);
-export_proto(maxloc0_8_r16);
-
-void
-maxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_16 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 maxval;
-
- maxval = -GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_r16);
-
-void
-mmaxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_REAL_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 maxval;
-
- maxval = -GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_r16);
-
-void
-smaxloc0_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_r16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_r4.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_r4.c
deleted file mode 100644
index 971e278ab..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_r4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array);
-export_proto(maxloc0_8_r4);
-
-void
-maxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_4 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 maxval;
-
- maxval = -GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_r4);
-
-void
-mmaxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_REAL_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 maxval;
-
- maxval = -GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_r4);
-
-void
-smaxloc0_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_r4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc0_8_r8.c b/gcc-4.4.3/libgfortran/generated/maxloc0_8_r8.c
deleted file mode 100644
index 160f774f3..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc0_8_r8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array);
-export_proto(maxloc0_8_r8);
-
-void
-maxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_8 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 maxval;
-
- maxval = -GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base > maxval || !dest[0])
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mmaxloc0_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mmaxloc0_8_r8);
-
-void
-mmaxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_REAL_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MAXLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 maxval;
-
- maxval = -GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base > maxval || !dest[0]))
- {
- maxval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void smaxloc0_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(smaxloc0_8_r8);
-
-void
-smaxloc0_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- maxloc0_8_r8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MAXLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i1.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_i1.c
deleted file mode 100644
index 9e1c268e7..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i1.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_i1);
-
-void
-maxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_1 maxval;
- maxval = (-GFC_INTEGER_1_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_i1);
-
-void
-mmaxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_1 maxval;
- maxval = (-GFC_INTEGER_1_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_i1);
-
-void
-smaxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i16.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_i16.c
deleted file mode 100644
index 3a0a343c3..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_i16);
-
-void
-maxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_16 maxval;
- maxval = (-GFC_INTEGER_16_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_i16);
-
-void
-mmaxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_16 maxval;
- maxval = (-GFC_INTEGER_16_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_i16);
-
-void
-smaxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i2.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_i2.c
deleted file mode 100644
index 4d87d8e14..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i2.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_i2);
-
-void
-maxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_2 maxval;
- maxval = (-GFC_INTEGER_2_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_i2);
-
-void
-mmaxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_2 maxval;
- maxval = (-GFC_INTEGER_2_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_i2);
-
-void
-smaxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i4.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_i4.c
deleted file mode 100644
index d1ae2f0ca..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_i4);
-
-void
-maxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_4 maxval;
- maxval = (-GFC_INTEGER_4_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_i4);
-
-void
-mmaxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_4 maxval;
- maxval = (-GFC_INTEGER_4_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_i4);
-
-void
-smaxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i8.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_i8.c
deleted file mode 100644
index 1d60d10db..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_i8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_i8);
-
-void
-maxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_8 maxval;
- maxval = (-GFC_INTEGER_8_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_i8);
-
-void
-mmaxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_8 maxval;
- maxval = (-GFC_INTEGER_8_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_i8);
-
-void
-smaxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_r10.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_r10.c
deleted file mode 100644
index e0599714c..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_r10.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_r10);
-
-void
-maxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_REAL_10 maxval;
- maxval = -GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_r10);
-
-void
-mmaxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_10 maxval;
- maxval = -GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_r10);
-
-void
-smaxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_r16.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_r16.c
deleted file mode 100644
index 338156055..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_r16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_r16);
-
-void
-maxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_REAL_16 maxval;
- maxval = -GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_r16);
-
-void
-mmaxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_16 maxval;
- maxval = -GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_r16);
-
-void
-smaxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_r4.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_r4.c
deleted file mode 100644
index 2defdd1f7..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_r4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_r4);
-
-void
-maxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_REAL_4 maxval;
- maxval = -GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_r4);
-
-void
-mmaxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_4 maxval;
- maxval = -GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_r4);
-
-void
-smaxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_16_r8.c b/gcc-4.4.3/libgfortran/generated/maxloc1_16_r8.c
deleted file mode 100644
index a3293163d..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_16_r8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxloc1_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_16_r8);
-
-void
-maxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_REAL_8 maxval;
- maxval = -GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_16_r8);
-
-void
-mmaxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_8 maxval;
- maxval = -GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_16_r8);
-
-void
-smaxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_16_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i1.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_i1.c
deleted file mode 100644
index 4281921b2..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i1.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_i1);
-
-void
-maxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_1 maxval;
- maxval = (-GFC_INTEGER_1_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_i1);
-
-void
-mmaxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_1 maxval;
- maxval = (-GFC_INTEGER_1_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_i1);
-
-void
-smaxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i16.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_i16.c
deleted file mode 100644
index 34fcb565d..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_i16);
-
-void
-maxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_16 maxval;
- maxval = (-GFC_INTEGER_16_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_i16);
-
-void
-mmaxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_16 maxval;
- maxval = (-GFC_INTEGER_16_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_i16);
-
-void
-smaxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i2.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_i2.c
deleted file mode 100644
index dbd7d2f56..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i2.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_i2);
-
-void
-maxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_2 maxval;
- maxval = (-GFC_INTEGER_2_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_i2);
-
-void
-mmaxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_2 maxval;
- maxval = (-GFC_INTEGER_2_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_i2);
-
-void
-smaxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i4.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_i4.c
deleted file mode 100644
index 29d04de8e..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_i4);
-
-void
-maxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_4 maxval;
- maxval = (-GFC_INTEGER_4_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_i4);
-
-void
-mmaxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_4 maxval;
- maxval = (-GFC_INTEGER_4_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_i4);
-
-void
-smaxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i8.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_i8.c
deleted file mode 100644
index 823af365f..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_i8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_i8);
-
-void
-maxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_8 maxval;
- maxval = (-GFC_INTEGER_8_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_i8);
-
-void
-mmaxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_8 maxval;
- maxval = (-GFC_INTEGER_8_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_i8);
-
-void
-smaxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_r10.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_r10.c
deleted file mode 100644
index a212e59b5..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_r10.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_r10);
-
-void
-maxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_REAL_10 maxval;
- maxval = -GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_r10);
-
-void
-mmaxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_10 maxval;
- maxval = -GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_r10);
-
-void
-smaxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_r16.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_r16.c
deleted file mode 100644
index db3301c2a..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_r16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_r16);
-
-void
-maxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_REAL_16 maxval;
- maxval = -GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_r16);
-
-void
-mmaxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_16 maxval;
- maxval = -GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_r16);
-
-void
-smaxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_r4.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_r4.c
deleted file mode 100644
index a0099f695..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_r4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_r4);
-
-void
-maxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_REAL_4 maxval;
- maxval = -GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_r4);
-
-void
-mmaxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_4 maxval;
- maxval = -GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_r4);
-
-void
-smaxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_4_r8.c b/gcc-4.4.3/libgfortran/generated/maxloc1_4_r8.c
deleted file mode 100644
index bb7876f22..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_4_r8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxloc1_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_4_r8);
-
-void
-maxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_REAL_8 maxval;
- maxval = -GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_4_r8);
-
-void
-mmaxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_8 maxval;
- maxval = -GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_4_r8);
-
-void
-smaxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_4_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i1.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_i1.c
deleted file mode 100644
index 899b4688c..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i1.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_i1);
-
-void
-maxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_1 maxval;
- maxval = (-GFC_INTEGER_1_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_i1);
-
-void
-mmaxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_1 maxval;
- maxval = (-GFC_INTEGER_1_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_i1);
-
-void
-smaxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i16.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_i16.c
deleted file mode 100644
index c5f7272a0..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_i16);
-
-void
-maxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_16 maxval;
- maxval = (-GFC_INTEGER_16_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_i16);
-
-void
-mmaxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_16 maxval;
- maxval = (-GFC_INTEGER_16_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_i16);
-
-void
-smaxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i2.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_i2.c
deleted file mode 100644
index f20435aec..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i2.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_i2);
-
-void
-maxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_2 maxval;
- maxval = (-GFC_INTEGER_2_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_i2);
-
-void
-mmaxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_2 maxval;
- maxval = (-GFC_INTEGER_2_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_i2);
-
-void
-smaxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i4.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_i4.c
deleted file mode 100644
index ab17f22d9..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_i4);
-
-void
-maxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_4 maxval;
- maxval = (-GFC_INTEGER_4_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_i4);
-
-void
-mmaxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_4 maxval;
- maxval = (-GFC_INTEGER_4_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_i4);
-
-void
-smaxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i8.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_i8.c
deleted file mode 100644
index eb72ab685..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_i8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_i8);
-
-void
-maxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_8 maxval;
- maxval = (-GFC_INTEGER_8_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_i8);
-
-void
-mmaxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_8 maxval;
- maxval = (-GFC_INTEGER_8_HUGE-1);
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_i8);
-
-void
-smaxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_r10.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_r10.c
deleted file mode 100644
index 8758d3129..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_r10.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_r10);
-
-void
-maxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_REAL_10 maxval;
- maxval = -GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_r10);
-
-void
-mmaxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_10 maxval;
- maxval = -GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_r10);
-
-void
-smaxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_r16.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_r16.c
deleted file mode 100644
index 290929c95..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_r16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_r16);
-
-void
-maxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_REAL_16 maxval;
- maxval = -GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_r16);
-
-void
-mmaxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_16 maxval;
- maxval = -GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_r16);
-
-void
-smaxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_r4.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_r4.c
deleted file mode 100644
index a59051ecd..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_r4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_r4);
-
-void
-maxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_REAL_4 maxval;
- maxval = -GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_r4);
-
-void
-mmaxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_4 maxval;
- maxval = -GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_r4);
-
-void
-smaxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxloc1_8_r8.c b/gcc-4.4.3/libgfortran/generated/maxloc1_8_r8.c
deleted file mode 100644
index 88410eae6..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxloc1_8_r8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MAXLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxloc1_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(maxloc1_8_r8);
-
-void
-maxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_REAL_8 maxval;
- maxval = -GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > maxval || !result)
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxloc1_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxloc1_8_r8);
-
-void
-mmaxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_8 maxval;
- maxval = -GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src > maxval || !result))
- {
- maxval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxloc1_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxloc1_8_r8);
-
-void
-smaxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxloc1_8_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_i1.c b/gcc-4.4.3/libgfortran/generated/maxval_i1.c
deleted file mode 100644
index c190e067b..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_i1.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_1)
-
-
-extern void maxval_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(maxval_i1);
-
-void
-maxval_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_1 result;
- src = base;
- {
-
- result = (-GFC_INTEGER_1_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_1_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_i1);
-
-void
-mmaxval_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_1 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_1 result;
- src = base;
- msrc = mbase;
- {
-
- result = (-GFC_INTEGER_1_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_1_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_i1);
-
-void
-smaxval_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = (-GFC_INTEGER_1_HUGE-1);
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_i16.c b/gcc-4.4.3/libgfortran/generated/maxval_i16.c
deleted file mode 100644
index 6b872f98c..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_i16.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void maxval_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(maxval_i16);
-
-void
-maxval_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- result = (-GFC_INTEGER_16_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_16_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_i16);
-
-void
-mmaxval_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = (-GFC_INTEGER_16_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_16_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_i16);
-
-void
-smaxval_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = (-GFC_INTEGER_16_HUGE-1);
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_i2.c b/gcc-4.4.3/libgfortran/generated/maxval_i2.c
deleted file mode 100644
index 67b8994cd..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_i2.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_2)
-
-
-extern void maxval_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(maxval_i2);
-
-void
-maxval_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_2 result;
- src = base;
- {
-
- result = (-GFC_INTEGER_2_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_2_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_i2);
-
-void
-mmaxval_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_2 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_2 result;
- src = base;
- msrc = mbase;
- {
-
- result = (-GFC_INTEGER_2_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_2_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_i2);
-
-void
-smaxval_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = (-GFC_INTEGER_2_HUGE-1);
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_i4.c b/gcc-4.4.3/libgfortran/generated/maxval_i4.c
deleted file mode 100644
index e7fb5bc5a..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_i4.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void maxval_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(maxval_i4);
-
-void
-maxval_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- result = (-GFC_INTEGER_4_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_4_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_i4);
-
-void
-mmaxval_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = (-GFC_INTEGER_4_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_4_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_i4);
-
-void
-smaxval_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = (-GFC_INTEGER_4_HUGE-1);
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_i8.c b/gcc-4.4.3/libgfortran/generated/maxval_i8.c
deleted file mode 100644
index b90e1105e..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_i8.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void maxval_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(maxval_i8);
-
-void
-maxval_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- result = (-GFC_INTEGER_8_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_8_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_i8);
-
-void
-mmaxval_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = (-GFC_INTEGER_8_HUGE-1);
- if (len <= 0)
- *dest = (-GFC_INTEGER_8_HUGE-1);
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_i8);
-
-void
-smaxval_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = (-GFC_INTEGER_8_HUGE-1);
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_r10.c b/gcc-4.4.3/libgfortran/generated/maxval_r10.c
deleted file mode 100644
index 85851904f..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_r10.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_REAL_10)
-
-
-extern void maxval_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(maxval_r10);
-
-void
-maxval_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_REAL_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_REAL_10 result;
- src = base;
- {
-
- result = -GFC_REAL_10_HUGE;
- if (len <= 0)
- *dest = -GFC_REAL_10_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_r10);
-
-void
-mmaxval_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_10 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_10 result;
- src = base;
- msrc = mbase;
- {
-
- result = -GFC_REAL_10_HUGE;
- if (len <= 0)
- *dest = -GFC_REAL_10_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_r10);
-
-void
-smaxval_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = -GFC_REAL_10_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_r16.c b/gcc-4.4.3/libgfortran/generated/maxval_r16.c
deleted file mode 100644
index d9c456646..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_r16.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_REAL_16)
-
-
-extern void maxval_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(maxval_r16);
-
-void
-maxval_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_REAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_REAL_16 result;
- src = base;
- {
-
- result = -GFC_REAL_16_HUGE;
- if (len <= 0)
- *dest = -GFC_REAL_16_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_r16);
-
-void
-mmaxval_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_16 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = -GFC_REAL_16_HUGE;
- if (len <= 0)
- *dest = -GFC_REAL_16_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_r16);
-
-void
-smaxval_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = -GFC_REAL_16_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_r4.c b/gcc-4.4.3/libgfortran/generated/maxval_r4.c
deleted file mode 100644
index 1102d4c7a..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_r4.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_REAL_4)
-
-
-extern void maxval_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(maxval_r4);
-
-void
-maxval_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_REAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_REAL_4 result;
- src = base;
- {
-
- result = -GFC_REAL_4_HUGE;
- if (len <= 0)
- *dest = -GFC_REAL_4_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_r4);
-
-void
-mmaxval_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_4 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = -GFC_REAL_4_HUGE;
- if (len <= 0)
- *dest = -GFC_REAL_4_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_r4);
-
-void
-smaxval_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = -GFC_REAL_4_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/maxval_r8.c b/gcc-4.4.3/libgfortran/generated/maxval_r8.c
deleted file mode 100644
index ee23df75d..000000000
--- a/gcc-4.4.3/libgfortran/generated/maxval_r8.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MAXVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_REAL_8)
-
-
-extern void maxval_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(maxval_r8);
-
-void
-maxval_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_REAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_REAL_8 result;
- src = base;
- {
-
- result = -GFC_REAL_8_HUGE;
- if (len <= 0)
- *dest = -GFC_REAL_8_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mmaxval_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mmaxval_r8);
-
-void
-mmaxval_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_8 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MAXVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = -GFC_REAL_8_HUGE;
- if (len <= 0)
- *dest = -GFC_REAL_8_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src > result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void smaxval_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(smaxval_r8);
-
-void
-smaxval_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- maxval_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MAXVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MAXVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = -GFC_REAL_8_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_i1.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_i1.c
deleted file mode 100644
index e0c6345b1..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_i1.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array);
-export_proto(minloc0_16_i1);
-
-void
-minloc0_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_1 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 minval;
-
- minval = GFC_INTEGER_1_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_i1);
-
-void
-mminloc0_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_1 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 minval;
-
- minval = GFC_INTEGER_1_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_i1);
-
-void
-sminloc0_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_i1 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_i16.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_i16.c
deleted file mode 100644
index 1c1685425..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_i16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array);
-export_proto(minloc0_16_i16);
-
-void
-minloc0_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_16 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 minval;
-
- minval = GFC_INTEGER_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_i16);
-
-void
-mminloc0_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 minval;
-
- minval = GFC_INTEGER_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_i16);
-
-void
-sminloc0_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_i16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_i2.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_i2.c
deleted file mode 100644
index d289cfcbf..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_i2.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array);
-export_proto(minloc0_16_i2);
-
-void
-minloc0_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_2 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 minval;
-
- minval = GFC_INTEGER_2_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_i2);
-
-void
-mminloc0_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_2 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 minval;
-
- minval = GFC_INTEGER_2_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_i2);
-
-void
-sminloc0_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_i2 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_i4.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_i4.c
deleted file mode 100644
index 88a078e6a..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_i4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array);
-export_proto(minloc0_16_i4);
-
-void
-minloc0_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_4 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 minval;
-
- minval = GFC_INTEGER_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_i4);
-
-void
-mminloc0_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 minval;
-
- minval = GFC_INTEGER_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_i4);
-
-void
-sminloc0_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_i4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_i8.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_i8.c
deleted file mode 100644
index b41b5913d..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_i8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array);
-export_proto(minloc0_16_i8);
-
-void
-minloc0_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_8 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 minval;
-
- minval = GFC_INTEGER_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_i8);
-
-void
-mminloc0_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_INTEGER_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 minval;
-
- minval = GFC_INTEGER_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_i8);
-
-void
-sminloc0_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_i8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_r10.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_r10.c
deleted file mode 100644
index c79f256bc..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_r10.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array);
-export_proto(minloc0_16_r10);
-
-void
-minloc0_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_10 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 minval;
-
- minval = GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_r10);
-
-void
-mminloc0_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_REAL_10 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 minval;
-
- minval = GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_r10);
-
-void
-sminloc0_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_r10 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_r16.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_r16.c
deleted file mode 100644
index 75a9df5fa..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_r16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array);
-export_proto(minloc0_16_r16);
-
-void
-minloc0_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_16 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 minval;
-
- minval = GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_r16);
-
-void
-mminloc0_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_REAL_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 minval;
-
- minval = GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_r16);
-
-void
-sminloc0_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_r16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_r4.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_r4.c
deleted file mode 100644
index 0fb2966ad..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_r4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array);
-export_proto(minloc0_16_r4);
-
-void
-minloc0_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_4 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 minval;
-
- minval = GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_r4);
-
-void
-mminloc0_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_REAL_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 minval;
-
- minval = GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_r4);
-
-void
-sminloc0_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_r4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_16_r8.c b/gcc-4.4.3/libgfortran/generated/minloc0_16_r8.c
deleted file mode 100644
index 317e8be3b..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_16_r8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc0_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array);
-export_proto(minloc0_16_r8);
-
-void
-minloc0_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_8 *base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 minval;
-
- minval = GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_16_r8);
-
-void
-mminloc0_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_16 *dest;
- const GFC_REAL_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 minval;
-
- minval = GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_16_r8);
-
-void
-sminloc0_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_16 *dest;
-
- if (*mask)
- {
- minloc0_16_r8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_i1.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_i1.c
deleted file mode 100644
index 363d4a4ae..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_i1.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array);
-export_proto(minloc0_4_i1);
-
-void
-minloc0_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_1 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 minval;
-
- minval = GFC_INTEGER_1_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_i1);
-
-void
-mminloc0_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_1 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 minval;
-
- minval = GFC_INTEGER_1_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_i1);
-
-void
-sminloc0_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_i1 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_i16.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_i16.c
deleted file mode 100644
index cca045ab5..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_i16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array);
-export_proto(minloc0_4_i16);
-
-void
-minloc0_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_16 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 minval;
-
- minval = GFC_INTEGER_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_i16);
-
-void
-mminloc0_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 minval;
-
- minval = GFC_INTEGER_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_i16);
-
-void
-sminloc0_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_i16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_i2.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_i2.c
deleted file mode 100644
index 60e2350b6..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_i2.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array);
-export_proto(minloc0_4_i2);
-
-void
-minloc0_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_2 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 minval;
-
- minval = GFC_INTEGER_2_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_i2);
-
-void
-mminloc0_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_2 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 minval;
-
- minval = GFC_INTEGER_2_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_i2);
-
-void
-sminloc0_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_i2 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_i4.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_i4.c
deleted file mode 100644
index 94a15e026..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_i4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array);
-export_proto(minloc0_4_i4);
-
-void
-minloc0_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_4 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 minval;
-
- minval = GFC_INTEGER_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_i4);
-
-void
-mminloc0_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 minval;
-
- minval = GFC_INTEGER_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_i4);
-
-void
-sminloc0_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_i4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_i8.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_i8.c
deleted file mode 100644
index c556702f1..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_i8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array);
-export_proto(minloc0_4_i8);
-
-void
-minloc0_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_8 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 minval;
-
- minval = GFC_INTEGER_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_i8);
-
-void
-mminloc0_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_INTEGER_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 minval;
-
- minval = GFC_INTEGER_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_i8);
-
-void
-sminloc0_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_i8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_r10.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_r10.c
deleted file mode 100644
index 62efe8358..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_r10.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array);
-export_proto(minloc0_4_r10);
-
-void
-minloc0_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_10 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 minval;
-
- minval = GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_r10);
-
-void
-mminloc0_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_REAL_10 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 minval;
-
- minval = GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_r10);
-
-void
-sminloc0_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_r10 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_r16.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_r16.c
deleted file mode 100644
index 9146890c3..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_r16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array);
-export_proto(minloc0_4_r16);
-
-void
-minloc0_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_16 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 minval;
-
- minval = GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_r16);
-
-void
-mminloc0_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_REAL_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 minval;
-
- minval = GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_r16);
-
-void
-sminloc0_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_r16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_r4.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_r4.c
deleted file mode 100644
index 40d3c58ff..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_r4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array);
-export_proto(minloc0_4_r4);
-
-void
-minloc0_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_4 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 minval;
-
- minval = GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_r4);
-
-void
-mminloc0_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_REAL_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 minval;
-
- minval = GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_r4);
-
-void
-sminloc0_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_r4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_4_r8.c b/gcc-4.4.3/libgfortran/generated/minloc0_4_r8.c
deleted file mode 100644
index 904811b25..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_4_r8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc0_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array);
-export_proto(minloc0_4_r8);
-
-void
-minloc0_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_8 *base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 minval;
-
- minval = GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_4_r8);
-
-void
-mminloc0_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_4 *dest;
- const GFC_REAL_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 minval;
-
- minval = GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_4_r8);
-
-void
-sminloc0_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_4 *dest;
-
- if (*mask)
- {
- minloc0_4_r8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_i1.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_i1.c
deleted file mode 100644
index 9e00f076a..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_i1.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array);
-export_proto(minloc0_8_i1);
-
-void
-minloc0_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_1 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 minval;
-
- minval = GFC_INTEGER_1_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_i1);
-
-void
-mminloc0_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_1 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_1 minval;
-
- minval = GFC_INTEGER_1_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_i1);
-
-void
-sminloc0_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_i1 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_i16.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_i16.c
deleted file mode 100644
index bec8fa0c3..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_i16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array);
-export_proto(minloc0_8_i16);
-
-void
-minloc0_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_16 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 minval;
-
- minval = GFC_INTEGER_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_i16);
-
-void
-mminloc0_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_16 minval;
-
- minval = GFC_INTEGER_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_i16);
-
-void
-sminloc0_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_i16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_i2.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_i2.c
deleted file mode 100644
index cc46e3f27..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_i2.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array);
-export_proto(minloc0_8_i2);
-
-void
-minloc0_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_2 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 minval;
-
- minval = GFC_INTEGER_2_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_i2);
-
-void
-mminloc0_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_2 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_2 minval;
-
- minval = GFC_INTEGER_2_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_i2);
-
-void
-sminloc0_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_i2 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_i4.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_i4.c
deleted file mode 100644
index 9d9a3ba77..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_i4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array);
-export_proto(minloc0_8_i4);
-
-void
-minloc0_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_4 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 minval;
-
- minval = GFC_INTEGER_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_i4);
-
-void
-mminloc0_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_4 minval;
-
- minval = GFC_INTEGER_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_i4);
-
-void
-sminloc0_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_i4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_i8.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_i8.c
deleted file mode 100644
index 4a57114c4..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_i8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array);
-export_proto(minloc0_8_i8);
-
-void
-minloc0_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_INTEGER_8 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 minval;
-
- minval = GFC_INTEGER_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_i8);
-
-void
-mminloc0_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_INTEGER_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_INTEGER_8 minval;
-
- minval = GFC_INTEGER_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_i8);
-
-void
-sminloc0_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_i8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_r10.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_r10.c
deleted file mode 100644
index 6d74ee453..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_r10.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array);
-export_proto(minloc0_8_r10);
-
-void
-minloc0_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_10 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 minval;
-
- minval = GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_r10);
-
-void
-mminloc0_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_REAL_10 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_10 minval;
-
- minval = GFC_REAL_10_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_r10);
-
-void
-sminloc0_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_r10 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_r16.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_r16.c
deleted file mode 100644
index 8a112f94a..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_r16.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array);
-export_proto(minloc0_8_r16);
-
-void
-minloc0_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_16 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 minval;
-
- minval = GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_r16);
-
-void
-mminloc0_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_REAL_16 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_16 minval;
-
- minval = GFC_REAL_16_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_r16);
-
-void
-sminloc0_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_r16 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_r4.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_r4.c
deleted file mode 100644
index 2f81720b6..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_r4.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array);
-export_proto(minloc0_8_r4);
-
-void
-minloc0_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_4 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 minval;
-
- minval = GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_r4);
-
-void
-mminloc0_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_REAL_4 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_4 minval;
-
- minval = GFC_REAL_4_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_r4);
-
-void
-sminloc0_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_r4 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc0_8_r8.c b/gcc-4.4.3/libgfortran/generated/minloc0_8_r8.c
deleted file mode 100644
index 0e1df4728..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc0_8_r8.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc0_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array);
-export_proto(minloc0_8_r8);
-
-void
-minloc0_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- const GFC_REAL_8 *base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 minval;
-
- minval = GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*base < minval || !dest[0])
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- }
- }
- }
- }
-}
-
-
-extern void mminloc0_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, gfc_array_l1 * const restrict);
-export_proto(mminloc0_8_r8);
-
-void
-mminloc0_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type dstride;
- GFC_INTEGER_8 *dest;
- const GFC_REAL_8 *base;
- GFC_LOGICAL_1 *mbase;
- int rank;
- index_type n;
- int mask_kind;
-
- rank = GFC_DESCRIPTOR_RANK (array);
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank, mask_rank;
- index_type ret_extent;
- int n;
- index_type array_extent, mask_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrnisic: is %ld, should be %ld",
- (long int) ret_extent, (long int) rank);
-
- mask_rank = GFC_DESCRIPTOR_RANK (mask);
- if (rank != mask_rank)
- runtime_error ("rank of MASK argument in MINLOC intrnisic"
- "should be %ld, is %ld", (long int) rank,
- (long int) mask_rank);
-
- for (n=0; n<rank; n++)
- {
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- mbase = mask->data;
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n < rank; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- count[n] = 0;
- if (extent[n] <= 0)
- {
- /* Set the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- return;
- }
- }
-
- base = array->data;
-
- /* Initialize the return value. */
- for (n = 0; n < rank; n++)
- dest[n * dstride] = 0;
- {
-
- GFC_REAL_8 minval;
-
- minval = GFC_REAL_8_HUGE;
-
- while (base)
- {
- {
- /* Implementation start. */
-
- if (*mbase && (*base < minval || !dest[0]))
- {
- minval = *base;
- for (n = 0; n < rank; n++)
- dest[n * dstride] = count[n] + 1;
- }
- /* Implementation end. */
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the loop. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- }
- }
- }
- }
-}
-
-
-extern void sminloc0_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, GFC_LOGICAL_4 *);
-export_proto(sminloc0_8_r8);
-
-void
-sminloc0_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- GFC_LOGICAL_4 * mask)
-{
- index_type rank;
- index_type dstride;
- index_type n;
- GFC_INTEGER_8 *dest;
-
- if (*mask)
- {
- minloc0_8_r8 (retarray, array);
- return;
- }
-
- rank = GFC_DESCRIPTOR_RANK (array);
-
- if (rank <= 0)
- runtime_error ("Rank of array needs to be > 0");
-
- if (retarray->data == NULL)
- {
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = rank-1;
- retarray->dim[0].stride = 1;
- retarray->dtype = (retarray->dtype & ~GFC_DTYPE_RANK_MASK) | 1;
- retarray->offset = 0;
- retarray->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
- }
- else
- {
- if (unlikely (compile_options.bounds_check))
- {
- int ret_rank;
- index_type ret_extent;
-
- ret_rank = GFC_DESCRIPTOR_RANK (retarray);
- if (ret_rank != 1)
- runtime_error ("rank of return array in MINLOC intrinsic"
- " should be 1, is %ld", (long int) ret_rank);
-
- ret_extent = retarray->dim[0].ubound + 1 - retarray->dim[0].lbound;
- if (ret_extent != rank)
- runtime_error ("dimension of return array incorrect");
- }
- }
-
- dstride = retarray->dim[0].stride;
- dest = retarray->data;
- for (n = 0; n<rank; n++)
- dest[n * dstride] = 0 ;
-}
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_i1.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_i1.c
deleted file mode 100644
index 06127ce9e..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_i1.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_i1);
-
-void
-minloc1_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_1 minval;
- minval = GFC_INTEGER_1_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_i1);
-
-void
-mminloc1_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_1 minval;
- minval = GFC_INTEGER_1_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_i1 (gfc_array_i16 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_i1);
-
-void
-sminloc1_16_i1 (gfc_array_i16 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_i16.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_i16.c
deleted file mode 100644
index fb0d027b4..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_i16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_i16);
-
-void
-minloc1_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_16 minval;
- minval = GFC_INTEGER_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_i16);
-
-void
-mminloc1_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_16 minval;
- minval = GFC_INTEGER_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_i16);
-
-void
-sminloc1_16_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_i2.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_i2.c
deleted file mode 100644
index 4a58cc1d3..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_i2.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_i2);
-
-void
-minloc1_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_2 minval;
- minval = GFC_INTEGER_2_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_i2);
-
-void
-mminloc1_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_2 minval;
- minval = GFC_INTEGER_2_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_i2 (gfc_array_i16 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_i2);
-
-void
-sminloc1_16_i2 (gfc_array_i16 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_i4.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_i4.c
deleted file mode 100644
index 549fd2503..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_i4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_i4);
-
-void
-minloc1_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_4 minval;
- minval = GFC_INTEGER_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_i4);
-
-void
-mminloc1_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_4 minval;
- minval = GFC_INTEGER_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_i4 (gfc_array_i16 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_i4);
-
-void
-sminloc1_16_i4 (gfc_array_i16 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_i8.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_i8.c
deleted file mode 100644
index ea4e85436..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_i8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_i8);
-
-void
-minloc1_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_INTEGER_8 minval;
- minval = GFC_INTEGER_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_i8);
-
-void
-mminloc1_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_8 minval;
- minval = GFC_INTEGER_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_i8 (gfc_array_i16 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_i8);
-
-void
-sminloc1_16_i8 (gfc_array_i16 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_r10.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_r10.c
deleted file mode 100644
index 7696c16f1..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_r10.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_r10);
-
-void
-minloc1_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_REAL_10 minval;
- minval = GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_r10);
-
-void
-mminloc1_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_10 minval;
- minval = GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_r10 (gfc_array_i16 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_r10);
-
-void
-sminloc1_16_r10 (gfc_array_i16 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_r16.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_r16.c
deleted file mode 100644
index 21cee9085..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_r16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_r16);
-
-void
-minloc1_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_REAL_16 minval;
- minval = GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_r16);
-
-void
-mminloc1_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_16 minval;
- minval = GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_r16 (gfc_array_i16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_r16);
-
-void
-sminloc1_16_r16 (gfc_array_i16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_r4.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_r4.c
deleted file mode 100644
index b17faefcb..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_r4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_r4);
-
-void
-minloc1_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_REAL_4 minval;
- minval = GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_r4);
-
-void
-mminloc1_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_4 minval;
- minval = GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_r4 (gfc_array_i16 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_r4);
-
-void
-sminloc1_16_r4 (gfc_array_i16 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_16_r8.c b/gcc-4.4.3/libgfortran/generated/minloc1_16_r8.c
deleted file mode 100644
index bdf917c65..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_16_r8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minloc1_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(minloc1_16_r8);
-
-void
-minloc1_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- GFC_REAL_8 minval;
- minval = GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_16_r8);
-
-void
-mminloc1_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_8 minval;
- minval = GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_16)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_16_r8 (gfc_array_i16 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_16_r8);
-
-void
-sminloc1_16_r8 (gfc_array_i16 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_16_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_i1.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_i1.c
deleted file mode 100644
index 2a8692292..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_i1.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_i1);
-
-void
-minloc1_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_1 minval;
- minval = GFC_INTEGER_1_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_i1);
-
-void
-mminloc1_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_1 minval;
- minval = GFC_INTEGER_1_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_i1 (gfc_array_i4 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_i1);
-
-void
-sminloc1_4_i1 (gfc_array_i4 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_i16.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_i16.c
deleted file mode 100644
index 93f7ca2ab..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_i16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_i16);
-
-void
-minloc1_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_16 minval;
- minval = GFC_INTEGER_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_i16);
-
-void
-mminloc1_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_16 minval;
- minval = GFC_INTEGER_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_i16 (gfc_array_i4 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_i16);
-
-void
-sminloc1_4_i16 (gfc_array_i4 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_i2.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_i2.c
deleted file mode 100644
index 6bc8f5706..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_i2.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_i2);
-
-void
-minloc1_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_2 minval;
- minval = GFC_INTEGER_2_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_i2);
-
-void
-mminloc1_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_2 minval;
- minval = GFC_INTEGER_2_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_i2 (gfc_array_i4 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_i2);
-
-void
-sminloc1_4_i2 (gfc_array_i4 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_i4.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_i4.c
deleted file mode 100644
index 685d242e5..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_i4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_i4);
-
-void
-minloc1_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_4 minval;
- minval = GFC_INTEGER_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_i4);
-
-void
-mminloc1_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_4 minval;
- minval = GFC_INTEGER_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_i4);
-
-void
-sminloc1_4_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_i8.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_i8.c
deleted file mode 100644
index b3f506a23..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_i8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_i8);
-
-void
-minloc1_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_INTEGER_8 minval;
- minval = GFC_INTEGER_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_i8);
-
-void
-mminloc1_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_8 minval;
- minval = GFC_INTEGER_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_i8 (gfc_array_i4 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_i8);
-
-void
-sminloc1_4_i8 (gfc_array_i4 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_r10.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_r10.c
deleted file mode 100644
index 8d93866a0..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_r10.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_r10);
-
-void
-minloc1_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_REAL_10 minval;
- minval = GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_r10);
-
-void
-mminloc1_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_10 minval;
- minval = GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_r10 (gfc_array_i4 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_r10);
-
-void
-sminloc1_4_r10 (gfc_array_i4 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_r16.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_r16.c
deleted file mode 100644
index b2909ab97..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_r16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_r16);
-
-void
-minloc1_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_REAL_16 minval;
- minval = GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_r16);
-
-void
-mminloc1_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_16 minval;
- minval = GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_r16 (gfc_array_i4 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_r16);
-
-void
-sminloc1_4_r16 (gfc_array_i4 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_r4.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_r4.c
deleted file mode 100644
index 9741c2bdb..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_r4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_r4);
-
-void
-minloc1_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_REAL_4 minval;
- minval = GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_r4);
-
-void
-mminloc1_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_4 minval;
- minval = GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_r4 (gfc_array_i4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_r4);
-
-void
-sminloc1_4_r4 (gfc_array_i4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_4_r8.c b/gcc-4.4.3/libgfortran/generated/minloc1_4_r8.c
deleted file mode 100644
index 4b26710aa..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_4_r8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minloc1_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(minloc1_4_r8);
-
-void
-minloc1_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- GFC_REAL_8 minval;
- minval = GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_4_r8);
-
-void
-mminloc1_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_8 minval;
- minval = GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_4)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_4_r8 (gfc_array_i4 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_4_r8);
-
-void
-sminloc1_4_r8 (gfc_array_i4 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_4_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_i1.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_i1.c
deleted file mode 100644
index b92faa764..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_i1.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_i1);
-
-void
-minloc1_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_1 minval;
- minval = GFC_INTEGER_1_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_i1);
-
-void
-mminloc1_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_1 minval;
- minval = GFC_INTEGER_1_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_i1 (gfc_array_i8 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_i1);
-
-void
-sminloc1_8_i1 (gfc_array_i8 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_i16.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_i16.c
deleted file mode 100644
index d9283953c..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_i16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_i16);
-
-void
-minloc1_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_16 minval;
- minval = GFC_INTEGER_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_i16);
-
-void
-mminloc1_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_16 minval;
- minval = GFC_INTEGER_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_i16 (gfc_array_i8 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_i16);
-
-void
-sminloc1_8_i16 (gfc_array_i8 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_i2.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_i2.c
deleted file mode 100644
index b012f96b2..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_i2.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_i2);
-
-void
-minloc1_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_2 minval;
- minval = GFC_INTEGER_2_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_i2);
-
-void
-mminloc1_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_2 minval;
- minval = GFC_INTEGER_2_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_i2 (gfc_array_i8 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_i2);
-
-void
-sminloc1_8_i2 (gfc_array_i8 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_i4.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_i4.c
deleted file mode 100644
index 107bf8f6e..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_i4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_i4);
-
-void
-minloc1_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_4 minval;
- minval = GFC_INTEGER_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_i4);
-
-void
-mminloc1_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_4 minval;
- minval = GFC_INTEGER_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_i4 (gfc_array_i8 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_i4);
-
-void
-sminloc1_8_i4 (gfc_array_i8 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_i8.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_i8.c
deleted file mode 100644
index 16073feb3..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_i8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_i8);
-
-void
-minloc1_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_INTEGER_8 minval;
- minval = GFC_INTEGER_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_i8);
-
-void
-mminloc1_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_INTEGER_8 minval;
- minval = GFC_INTEGER_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_i8);
-
-void
-sminloc1_8_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_r10.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_r10.c
deleted file mode 100644
index 3acd9c3a8..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_r10.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_r10);
-
-void
-minloc1_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_REAL_10 minval;
- minval = GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_r10);
-
-void
-mminloc1_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_10 minval;
- minval = GFC_REAL_10_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_r10 (gfc_array_i8 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_r10);
-
-void
-sminloc1_8_r10 (gfc_array_i8 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_r16.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_r16.c
deleted file mode 100644
index e194986d5..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_r16.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_r16);
-
-void
-minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_REAL_16 minval;
- minval = GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_r16);
-
-void
-mminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_16 minval;
- minval = GFC_REAL_16_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_r16 (gfc_array_i8 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_r16);
-
-void
-sminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_r4.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_r4.c
deleted file mode 100644
index 1e32884c5..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_r4.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_r4);
-
-void
-minloc1_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_REAL_4 minval;
- minval = GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_r4);
-
-void
-mminloc1_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_4 minval;
- minval = GFC_REAL_4_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_r4 (gfc_array_i8 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_r4);
-
-void
-sminloc1_8_r4 (gfc_array_i8 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minloc1_8_r8.c b/gcc-4.4.3/libgfortran/generated/minloc1_8_r8.c
deleted file mode 100644
index 85ad5b733..000000000
--- a/gcc-4.4.3/libgfortran/generated/minloc1_8_r8.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/* Implementation of the MINLOC intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minloc1_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(minloc1_8_r8);
-
-void
-minloc1_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- GFC_REAL_8 minval;
- minval = GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < minval || !result)
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminloc1_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminloc1_8_r8);
-
-void
-mminloc1_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINLOC intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- GFC_REAL_8 minval;
- minval = GFC_REAL_8_HUGE;
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && (*src < minval || !result))
- {
- minval = *src;
- result = (GFC_INTEGER_8)n + 1;
- }
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminloc1_8_r8 (gfc_array_i8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminloc1_8_r8);
-
-void
-sminloc1_8_r8 (gfc_array_i8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minloc1_8_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINLOC intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINLOC intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_i1.c b/gcc-4.4.3/libgfortran/generated/minval_i1.c
deleted file mode 100644
index f761faa8a..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_i1.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_1)
-
-
-extern void minval_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(minval_i1);
-
-void
-minval_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_1 result;
- src = base;
- {
-
- result = GFC_INTEGER_1_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_1_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_i1);
-
-void
-mminval_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_1 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_1 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_INTEGER_1_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_1_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_i1);
-
-void
-sminval_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_INTEGER_1_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_i16.c b/gcc-4.4.3/libgfortran/generated/minval_i16.c
deleted file mode 100644
index e0bd73323..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_i16.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void minval_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(minval_i16);
-
-void
-minval_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- result = GFC_INTEGER_16_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_16_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_i16);
-
-void
-mminval_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_INTEGER_16_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_16_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_i16);
-
-void
-sminval_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_INTEGER_16_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_i2.c b/gcc-4.4.3/libgfortran/generated/minval_i2.c
deleted file mode 100644
index bfa14b224..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_i2.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_2)
-
-
-extern void minval_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(minval_i2);
-
-void
-minval_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_2 result;
- src = base;
- {
-
- result = GFC_INTEGER_2_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_2_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_i2);
-
-void
-mminval_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_2 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_2 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_INTEGER_2_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_2_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_i2);
-
-void
-sminval_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_INTEGER_2_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_i4.c b/gcc-4.4.3/libgfortran/generated/minval_i4.c
deleted file mode 100644
index ba1e592fa..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_i4.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void minval_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(minval_i4);
-
-void
-minval_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- result = GFC_INTEGER_4_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_4_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_i4);
-
-void
-mminval_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_INTEGER_4_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_4_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_i4);
-
-void
-sminval_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_INTEGER_4_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_i8.c b/gcc-4.4.3/libgfortran/generated/minval_i8.c
deleted file mode 100644
index 0287e054a..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_i8.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void minval_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(minval_i8);
-
-void
-minval_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- result = GFC_INTEGER_8_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_8_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_i8);
-
-void
-mminval_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_INTEGER_8_HUGE;
- if (len <= 0)
- *dest = GFC_INTEGER_8_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_i8);
-
-void
-sminval_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_INTEGER_8_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_r10.c b/gcc-4.4.3/libgfortran/generated/minval_r10.c
deleted file mode 100644
index 202ae7fd3..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_r10.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_REAL_10)
-
-
-extern void minval_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(minval_r10);
-
-void
-minval_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_REAL_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_REAL_10 result;
- src = base;
- {
-
- result = GFC_REAL_10_HUGE;
- if (len <= 0)
- *dest = GFC_REAL_10_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_r10);
-
-void
-mminval_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_10 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_10 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_REAL_10_HUGE;
- if (len <= 0)
- *dest = GFC_REAL_10_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_r10);
-
-void
-sminval_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_REAL_10_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_r16.c b/gcc-4.4.3/libgfortran/generated/minval_r16.c
deleted file mode 100644
index fe4210fb7..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_r16.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_REAL_16)
-
-
-extern void minval_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(minval_r16);
-
-void
-minval_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_REAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_REAL_16 result;
- src = base;
- {
-
- result = GFC_REAL_16_HUGE;
- if (len <= 0)
- *dest = GFC_REAL_16_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_r16);
-
-void
-mminval_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_16 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_REAL_16_HUGE;
- if (len <= 0)
- *dest = GFC_REAL_16_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_r16);
-
-void
-sminval_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_REAL_16_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_r4.c b/gcc-4.4.3/libgfortran/generated/minval_r4.c
deleted file mode 100644
index 7dcd5677d..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_r4.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_REAL_4)
-
-
-extern void minval_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(minval_r4);
-
-void
-minval_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_REAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_REAL_4 result;
- src = base;
- {
-
- result = GFC_REAL_4_HUGE;
- if (len <= 0)
- *dest = GFC_REAL_4_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_r4);
-
-void
-mminval_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_4 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_REAL_4_HUGE;
- if (len <= 0)
- *dest = GFC_REAL_4_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_r4);
-
-void
-sminval_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_REAL_4_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/minval_r8.c b/gcc-4.4.3/libgfortran/generated/minval_r8.c
deleted file mode 100644
index e92842f3a..000000000
--- a/gcc-4.4.3/libgfortran/generated/minval_r8.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Implementation of the MINVAL intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_REAL_8)
-
-
-extern void minval_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(minval_r8);
-
-void
-minval_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_REAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_REAL_8 result;
- src = base;
- {
-
- result = GFC_REAL_8_HUGE;
- if (len <= 0)
- *dest = GFC_REAL_8_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- if (*src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mminval_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mminval_r8);
-
-void
-mminval_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_8 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in MINVAL intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = GFC_REAL_8_HUGE;
- if (len <= 0)
- *dest = GFC_REAL_8_HUGE;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc && *src < result)
- result = *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sminval_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sminval_r8);
-
-void
-sminval_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- minval_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " MINVAL intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " MINVAL intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = GFC_REAL_8_HUGE;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/misc_specifics.F90 b/gcc-4.4.3/libgfortran/generated/misc_specifics.F90
deleted file mode 100644
index 2df9a23b4..000000000
--- a/gcc-4.4.3/libgfortran/generated/misc_specifics.F90
+++ /dev/null
@@ -1,206 +0,0 @@
-! Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
-! Contributed by Paul Brook <paul@nowt.org>
-!
-!This file is part of the GNU Fortran 95 runtime library (libgfortran).
-!
-!GNU libgfortran is free software; you can redistribute it and/or
-!modify it under the terms of the GNU General Public
-!License as published by the Free Software Foundation; either
-!version 3 of the License, or (at your option) any later version.
-!
-!GNU libgfortran is distributed in the hope that it will be useful,
-!but WITHOUT ANY WARRANTY; without even the implied warranty of
-!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-!GNU General Public License for more details.
-!
-!Under Section 7 of GPL version 3, you are granted additional
-!permissions described in the GCC Runtime Library Exception, version
-!3.1, as published by the Free Software Foundation.
-!
-!You should have received a copy of the GNU General Public License and
-!a copy of the GCC Runtime Library Exception along with this program;
-!see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-!<http://www.gnu.org/licenses/>.
-!
-!This file is machine generated.
-
-#include "config.h"
-#include "kinds.inc"
-
-
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_4)
-elemental function _gfortran_specific__nint_4_4 (parm)
- real (kind=4) , intent (in) :: parm
- integer (kind=4) :: _gfortran_specific__nint_4_4
- _gfortran_specific__nint_4_4 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_4)
-elemental function _gfortran_specific__nint_4_8 (parm)
- real (kind=8) , intent (in) :: parm
- integer (kind=4) :: _gfortran_specific__nint_4_8
- _gfortran_specific__nint_4_8 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_4)
-elemental function _gfortran_specific__nint_4_10 (parm)
- real (kind=10) , intent (in) :: parm
- integer (kind=4) :: _gfortran_specific__nint_4_10
- _gfortran_specific__nint_4_10 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_4)
-elemental function _gfortran_specific__nint_4_16 (parm)
- real (kind=16) , intent (in) :: parm
- integer (kind=4) :: _gfortran_specific__nint_4_16
- _gfortran_specific__nint_4_16 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
-elemental function _gfortran_specific__nint_8_4 (parm)
- real (kind=4) , intent (in) :: parm
- integer (kind=8) :: _gfortran_specific__nint_8_4
- _gfortran_specific__nint_8_4 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
-elemental function _gfortran_specific__nint_8_8 (parm)
- real (kind=8) , intent (in) :: parm
- integer (kind=8) :: _gfortran_specific__nint_8_8
- _gfortran_specific__nint_8_8 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
-elemental function _gfortran_specific__nint_8_10 (parm)
- real (kind=10) , intent (in) :: parm
- integer (kind=8) :: _gfortran_specific__nint_8_10
- _gfortran_specific__nint_8_10 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
-elemental function _gfortran_specific__nint_8_16 (parm)
- real (kind=16) , intent (in) :: parm
- integer (kind=8) :: _gfortran_specific__nint_8_16
- _gfortran_specific__nint_8_16 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
-elemental function _gfortran_specific__nint_16_4 (parm)
- real (kind=4) , intent (in) :: parm
- integer (kind=16) :: _gfortran_specific__nint_16_4
- _gfortran_specific__nint_16_4 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
-elemental function _gfortran_specific__nint_16_8 (parm)
- real (kind=8) , intent (in) :: parm
- integer (kind=16) :: _gfortran_specific__nint_16_8
- _gfortran_specific__nint_16_8 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
-elemental function _gfortran_specific__nint_16_10 (parm)
- real (kind=10) , intent (in) :: parm
- integer (kind=16) :: _gfortran_specific__nint_16_10
- _gfortran_specific__nint_16_10 = nint (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
-elemental function _gfortran_specific__nint_16_16 (parm)
- real (kind=16) , intent (in) :: parm
- integer (kind=16) :: _gfortran_specific__nint_16_16
- _gfortran_specific__nint_16_16 = nint (parm)
-end function
-#endif
-
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-elemental function _gfortran_specific__char_1_i4 (parm)
- integer (kind=4) , intent (in) :: parm
- character (kind=1,len=1) :: _gfortran_specific__char_1_i4
- _gfortran_specific__char_1_i4 = char (parm, kind=1)
-end function
-#endif
-
-#if defined (HAVE_GFC_INTEGER_8)
-elemental function _gfortran_specific__char_1_i8 (parm)
- integer (kind=8) , intent (in) :: parm
- character (kind=1,len=1) :: _gfortran_specific__char_1_i8
- _gfortran_specific__char_1_i8 = char (parm, kind=1)
-end function
-#endif
-
-#if defined (HAVE_GFC_INTEGER_16)
-elemental function _gfortran_specific__char_1_i16 (parm)
- integer (kind=16) , intent (in) :: parm
- character (kind=1,len=1) :: _gfortran_specific__char_1_i16
- _gfortran_specific__char_1_i16 = char (parm, kind=1)
-end function
-#endif
-
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-elemental function _gfortran_specific__len_1_i4 (parm)
- character (kind=1,len=*) , intent (in) :: parm
- integer (kind=4) :: _gfortran_specific__len_1_i4
- _gfortran_specific__len_1_i4 = len (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_INTEGER_8)
-elemental function _gfortran_specific__len_1_i8 (parm)
- character (kind=1,len=*) , intent (in) :: parm
- integer (kind=8) :: _gfortran_specific__len_1_i8
- _gfortran_specific__len_1_i8 = len (parm)
-end function
-#endif
-
-#if defined (HAVE_GFC_INTEGER_16)
-elemental function _gfortran_specific__len_1_i16 (parm)
- character (kind=1,len=*) , intent (in) :: parm
- integer (kind=16) :: _gfortran_specific__len_1_i16
- _gfortran_specific__len_1_i16 = len (parm)
-end function
-#endif
-
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-elemental function _gfortran_specific__index_1_i4 (parm1, parm2)
- character (kind=1,len=*) , intent (in) :: parm1, parm2
- integer (kind=4) :: _gfortran_specific__index_1_i4
- _gfortran_specific__index_1_i4 = index (parm1, parm2)
-end function
-#endif
-
-#if defined (HAVE_GFC_INTEGER_8)
-elemental function _gfortran_specific__index_1_i8 (parm1, parm2)
- character (kind=1,len=*) , intent (in) :: parm1, parm2
- integer (kind=8) :: _gfortran_specific__index_1_i8
- _gfortran_specific__index_1_i8 = index (parm1, parm2)
-end function
-#endif
-
-#if defined (HAVE_GFC_INTEGER_16)
-elemental function _gfortran_specific__index_1_i16 (parm1, parm2)
- character (kind=1,len=*) , intent (in) :: parm1, parm2
- integer (kind=16) :: _gfortran_specific__index_1_i16
- _gfortran_specific__index_1_i16 = index (parm1, parm2)
-end function
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/nearest_r10.c b/gcc-4.4.3/libgfortran/generated/nearest_r10.c
deleted file mode 100644
index 9601e3233..000000000
--- a/gcc-4.4.3/libgfortran/generated/nearest_r10.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Implementation of the NEAREST intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_COPYSIGNL) && defined (HAVE_NEXTAFTERL)
-
-extern GFC_REAL_10 nearest_r10 (GFC_REAL_10 s, GFC_REAL_10 dir);
-export_proto(nearest_r10);
-
-GFC_REAL_10
-nearest_r10 (GFC_REAL_10 s, GFC_REAL_10 dir)
-{
- dir = copysignl (__builtin_infl (), dir);
- if (FLT_EVAL_METHOD != 0)
- {
- /* ??? Work around glibc bug on x86. */
- volatile GFC_REAL_10 r = nextafterl (s, dir);
- return r;
- }
- else
- return nextafterl (s, dir);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/nearest_r16.c b/gcc-4.4.3/libgfortran/generated/nearest_r16.c
deleted file mode 100644
index 85499cbad..000000000
--- a/gcc-4.4.3/libgfortran/generated/nearest_r16.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Implementation of the NEAREST intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_COPYSIGNL) && defined (HAVE_NEXTAFTERL)
-
-extern GFC_REAL_16 nearest_r16 (GFC_REAL_16 s, GFC_REAL_16 dir);
-export_proto(nearest_r16);
-
-GFC_REAL_16
-nearest_r16 (GFC_REAL_16 s, GFC_REAL_16 dir)
-{
- dir = copysignl (__builtin_infl (), dir);
- if (FLT_EVAL_METHOD != 0)
- {
- /* ??? Work around glibc bug on x86. */
- volatile GFC_REAL_16 r = nextafterl (s, dir);
- return r;
- }
- else
- return nextafterl (s, dir);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/nearest_r4.c b/gcc-4.4.3/libgfortran/generated/nearest_r4.c
deleted file mode 100644
index 8ef4f3164..000000000
--- a/gcc-4.4.3/libgfortran/generated/nearest_r4.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Implementation of the NEAREST intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_COPYSIGNF) && defined (HAVE_NEXTAFTERF)
-
-extern GFC_REAL_4 nearest_r4 (GFC_REAL_4 s, GFC_REAL_4 dir);
-export_proto(nearest_r4);
-
-GFC_REAL_4
-nearest_r4 (GFC_REAL_4 s, GFC_REAL_4 dir)
-{
- dir = copysignf (__builtin_inff (), dir);
- if (FLT_EVAL_METHOD != 0)
- {
- /* ??? Work around glibc bug on x86. */
- volatile GFC_REAL_4 r = nextafterf (s, dir);
- return r;
- }
- else
- return nextafterf (s, dir);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/nearest_r8.c b/gcc-4.4.3/libgfortran/generated/nearest_r8.c
deleted file mode 100644
index 40e659025..000000000
--- a/gcc-4.4.3/libgfortran/generated/nearest_r8.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Implementation of the NEAREST intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_COPYSIGN) && defined (HAVE_NEXTAFTER)
-
-extern GFC_REAL_8 nearest_r8 (GFC_REAL_8 s, GFC_REAL_8 dir);
-export_proto(nearest_r8);
-
-GFC_REAL_8
-nearest_r8 (GFC_REAL_8 s, GFC_REAL_8 dir)
-{
- dir = copysign (__builtin_inf (), dir);
- if (FLT_EVAL_METHOD != 0)
- {
- /* ??? Work around glibc bug on x86. */
- volatile GFC_REAL_8 r = nextafter (s, dir);
- return r;
- }
- else
- return nextafter (s, dir);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pack_c10.c b/gcc-4.4.3/libgfortran/generated/pack_c10.c
deleted file mode 100644
index 29b1c5bae..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_c10.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_c10 (gfc_array_c10 *ret, const gfc_array_c10 *array,
- const gfc_array_l1 *mask, const gfc_array_c10 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_COMPLEX_10 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_COMPLEX_10 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_COMPLEX_10) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_c16.c b/gcc-4.4.3/libgfortran/generated/pack_c16.c
deleted file mode 100644
index d8589413e..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_c16.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_c16 (gfc_array_c16 *ret, const gfc_array_c16 *array,
- const gfc_array_l1 *mask, const gfc_array_c16 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_COMPLEX_16 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_COMPLEX_16 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_COMPLEX_16) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_c4.c b/gcc-4.4.3/libgfortran/generated/pack_c4.c
deleted file mode 100644
index 5b69c98c8..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_c4.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_c4 (gfc_array_c4 *ret, const gfc_array_c4 *array,
- const gfc_array_l1 *mask, const gfc_array_c4 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_COMPLEX_4 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_COMPLEX_4 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_COMPLEX_4) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_c8.c b/gcc-4.4.3/libgfortran/generated/pack_c8.c
deleted file mode 100644
index 2d61cb19a..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_c8.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_c8 (gfc_array_c8 *ret, const gfc_array_c8 *array,
- const gfc_array_l1 *mask, const gfc_array_c8 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_COMPLEX_8 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_COMPLEX_8 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_COMPLEX_8) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_i1.c b/gcc-4.4.3/libgfortran/generated/pack_i1.c
deleted file mode 100644
index 32b04c232..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_i1.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_i1 (gfc_array_i1 *ret, const gfc_array_i1 *array,
- const gfc_array_l1 *mask, const gfc_array_i1 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_INTEGER_1 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_INTEGER_1 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_INTEGER_1) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_i16.c b/gcc-4.4.3/libgfortran/generated/pack_i16.c
deleted file mode 100644
index 36c925253..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_i16.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_i16 (gfc_array_i16 *ret, const gfc_array_i16 *array,
- const gfc_array_l1 *mask, const gfc_array_i16 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_INTEGER_16 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_INTEGER_16 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_i2.c b/gcc-4.4.3/libgfortran/generated/pack_i2.c
deleted file mode 100644
index b510231de..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_i2.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_i2 (gfc_array_i2 *ret, const gfc_array_i2 *array,
- const gfc_array_l1 *mask, const gfc_array_i2 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_INTEGER_2 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_INTEGER_2 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_INTEGER_2) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_i4.c b/gcc-4.4.3/libgfortran/generated/pack_i4.c
deleted file mode 100644
index b350b895c..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_i4.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_i4 (gfc_array_i4 *ret, const gfc_array_i4 *array,
- const gfc_array_l1 *mask, const gfc_array_i4 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_INTEGER_4 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_INTEGER_4 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_i8.c b/gcc-4.4.3/libgfortran/generated/pack_i8.c
deleted file mode 100644
index 25f088353..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_i8.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_i8 (gfc_array_i8 *ret, const gfc_array_i8 *array,
- const gfc_array_l1 *mask, const gfc_array_i8 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_INTEGER_8 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_INTEGER_8 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_r10.c b/gcc-4.4.3/libgfortran/generated/pack_r10.c
deleted file mode 100644
index e1f3041d7..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_r10.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_r10 (gfc_array_r10 *ret, const gfc_array_r10 *array,
- const gfc_array_l1 *mask, const gfc_array_r10 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_REAL_10 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_REAL_10 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_REAL_10) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_r16.c b/gcc-4.4.3/libgfortran/generated/pack_r16.c
deleted file mode 100644
index 834ef55b8..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_r16.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_r16 (gfc_array_r16 *ret, const gfc_array_r16 *array,
- const gfc_array_l1 *mask, const gfc_array_r16 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_REAL_16 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_REAL_16 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_REAL_16) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_r4.c b/gcc-4.4.3/libgfortran/generated/pack_r4.c
deleted file mode 100644
index 859e216f5..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_r4.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_r4 (gfc_array_r4 *ret, const gfc_array_r4 *array,
- const gfc_array_l1 *mask, const gfc_array_r4 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_REAL_4 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_REAL_4 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_REAL_4) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pack_r8.c b/gcc-4.4.3/libgfortran/generated/pack_r8.c
deleted file mode 100644
index ba2e60d75..000000000
--- a/gcc-4.4.3/libgfortran/generated/pack_r8.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Specific implementation of the PACK intrinsic
- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-/* PACK is specified as follows:
-
- 13.14.80 PACK (ARRAY, MASK, [VECTOR])
-
- Description: Pack an array into an array of rank one under the
- control of a mask.
-
- Class: Transformational function.
-
- Arguments:
- ARRAY may be of any type. It shall not be scalar.
- MASK shall be of type LOGICAL. It shall be conformable with ARRAY.
- VECTOR (optional) shall be of the same type and type parameters
- as ARRAY. VECTOR shall have at least as many elements as
- there are true elements in MASK. If MASK is a scalar
- with the value true, VECTOR shall have at least as many
- elements as there are in ARRAY.
-
- Result Characteristics: The result is an array of rank one with the
- same type and type parameters as ARRAY. If VECTOR is present, the
- result size is that of VECTOR; otherwise, the result size is the
- number /t/ of true elements in MASK unless MASK is scalar with the
- value true, in which case the result size is the size of ARRAY.
-
- Result Value: Element /i/ of the result is the element of ARRAY
- that corresponds to the /i/th true element of MASK, taking elements
- in array element order, for /i/ = 1, 2, ..., /t/. If VECTOR is
- present and has size /n/ > /t/, element /i/ of the result has the
- value VECTOR(/i/), for /i/ = /t/ + 1, ..., /n/.
-
- Examples: The nonzero elements of an array M with the value
- | 0 0 0 |
- | 9 0 0 | may be "gathered" by the function PACK. The result of
- | 0 0 7 |
- PACK (M, MASK = M.NE.0) is [9,7] and the result of PACK (M, M.NE.0,
- VECTOR = (/ 2,4,6,8,10,12 /)) is [9,7,6,8,10,12].
-
-There are two variants of the PACK intrinsic: one, where MASK is
-array valued, and the other one where MASK is scalar. */
-
-void
-pack_r8 (gfc_array_r8 *ret, const gfc_array_r8 *array,
- const gfc_array_l1 *mask, const gfc_array_r8 *vector)
-{
- /* r.* indicates the return array. */
- index_type rstride0;
- GFC_REAL_8 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- const GFC_REAL_8 *sptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- int zero_sized;
- index_type n;
- index_type dim;
- index_type nelem;
- index_type total;
- int mask_kind;
-
- dim = GFC_DESCRIPTOR_RANK (array);
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- zero_sized = 0;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
- if (extent[n] <= 0)
- zero_sized = 1;
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (sstride[0] == 0)
- sstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = mask_kind;
-
- if (zero_sized)
- sptr = NULL;
- else
- sptr = array->data;
-
- if (ret->data == NULL || compile_options.bounds_check)
- {
- /* Count the elements, either for allocating memory or
- for bounds checking. */
-
- if (vector != NULL)
- {
- /* The return array will have as many
- elements as there are in VECTOR. */
- total = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- if (total < 0)
- {
- total = 0;
- vector = NULL;
- }
- }
- else
- {
- /* We have to count the true elements in MASK. */
-
- /* TODO: We could speed up pack easily in the case of only
- few .TRUE. entries in MASK, by keeping track of where we
- would be in the source array during the initial traversal
- of MASK, and caching the pointers to those elements. Then,
- supposed the number of elements is small enough, we would
- only have to traverse the list, and copy those elements
- into the result array. In the case of datatypes which fit
- in one of the integer types we could also cache the
- value instead of a pointer to it.
- This approach might be bad from the point of view of
- cache behavior in the case where our cache is not big
- enough to hold all elements that have to be copied. */
-
- const GFC_LOGICAL_1 *m = mptr;
-
- total = 0;
- if (zero_sized)
- m = NULL;
-
- while (m)
- {
- /* Test this element. */
- if (*m)
- total++;
-
- /* Advance to the next element. */
- m += mstride[0];
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it
- and increment the next dimension. */
- count[n] = 0;
- /* We could precalculate this product, but this is a
- less frequently used path so probably not worth
- it. */
- m -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- m = NULL;
- break;
- }
- else
- {
- count[n]++;
- m += mstride[n];
- }
- }
- }
- }
-
- if (ret->data == NULL)
- {
- /* Setup the array descriptor. */
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = total - 1;
- ret->dim[0].stride = 1;
-
- ret->offset = 0;
- if (total == 0)
- {
- /* In this case, nothing remains to be done. */
- ret->data = internal_malloc_size (1);
- return;
- }
- else
- ret->data = internal_malloc_size (sizeof (GFC_REAL_8) * total);
- }
- else
- {
- /* We come here because of range checking. */
- index_type ret_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- if (total != ret_extent)
- runtime_error ("Incorrect extent in return value of PACK intrinsic;"
- " is %ld, should be %ld", (long int) total,
- (long int) ret_extent);
- }
- }
-
- rstride0 = ret->dim[0].stride;
- if (rstride0 == 0)
- rstride0 = 1;
- sstride0 = sstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
-
- while (sptr && mptr)
- {
- /* Test this element. */
- if (*mptr)
- {
- /* Add it. */
- *rptr = *sptr;
- rptr += rstride0;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- mptr += mstride[n];
- }
- }
- }
-
- /* Add any remaining elements from VECTOR. */
- if (vector)
- {
- n = vector->dim[0].ubound + 1 - vector->dim[0].lbound;
- nelem = ((rptr - ret->data) / rstride0);
- if (n > nelem)
- {
- sstride0 = vector->dim[0].stride;
- if (sstride0 == 0)
- sstride0 = 1;
-
- sptr = vector->data + sstride0 * nelem;
- n -= nelem;
- while (n--)
- {
- *rptr = *sptr;
- rptr += rstride0;
- sptr += sstride0;
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c10_i16.c b/gcc-4.4.3/libgfortran/generated/pow_c10_i16.c
deleted file mode 100644
index 48b2fd8fa..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c10_i16.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_10) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_COMPLEX_10 pow_c10_i16 (GFC_COMPLEX_10 a, GFC_INTEGER_16 b);
-export_proto(pow_c10_i16);
-
-GFC_COMPLEX_10
-pow_c10_i16 (GFC_COMPLEX_10 a, GFC_INTEGER_16 b)
-{
- GFC_COMPLEX_10 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c10_i4.c b/gcc-4.4.3/libgfortran/generated/pow_c10_i4.c
deleted file mode 100644
index 2869f1d2d..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c10_i4.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_10) && defined (HAVE_GFC_INTEGER_4)
-
-GFC_COMPLEX_10 pow_c10_i4 (GFC_COMPLEX_10 a, GFC_INTEGER_4 b);
-export_proto(pow_c10_i4);
-
-GFC_COMPLEX_10
-pow_c10_i4 (GFC_COMPLEX_10 a, GFC_INTEGER_4 b)
-{
- GFC_COMPLEX_10 pow, x;
- GFC_INTEGER_4 n;
- GFC_UINTEGER_4 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c10_i8.c b/gcc-4.4.3/libgfortran/generated/pow_c10_i8.c
deleted file mode 100644
index 32ff9d454..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c10_i8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_10) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_COMPLEX_10 pow_c10_i8 (GFC_COMPLEX_10 a, GFC_INTEGER_8 b);
-export_proto(pow_c10_i8);
-
-GFC_COMPLEX_10
-pow_c10_i8 (GFC_COMPLEX_10 a, GFC_INTEGER_8 b)
-{
- GFC_COMPLEX_10 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c16_i16.c b/gcc-4.4.3/libgfortran/generated/pow_c16_i16.c
deleted file mode 100644
index 668f85eda..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c16_i16.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_16) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_COMPLEX_16 pow_c16_i16 (GFC_COMPLEX_16 a, GFC_INTEGER_16 b);
-export_proto(pow_c16_i16);
-
-GFC_COMPLEX_16
-pow_c16_i16 (GFC_COMPLEX_16 a, GFC_INTEGER_16 b)
-{
- GFC_COMPLEX_16 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c16_i4.c b/gcc-4.4.3/libgfortran/generated/pow_c16_i4.c
deleted file mode 100644
index 2d5be146c..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c16_i4.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_16) && defined (HAVE_GFC_INTEGER_4)
-
-GFC_COMPLEX_16 pow_c16_i4 (GFC_COMPLEX_16 a, GFC_INTEGER_4 b);
-export_proto(pow_c16_i4);
-
-GFC_COMPLEX_16
-pow_c16_i4 (GFC_COMPLEX_16 a, GFC_INTEGER_4 b)
-{
- GFC_COMPLEX_16 pow, x;
- GFC_INTEGER_4 n;
- GFC_UINTEGER_4 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c16_i8.c b/gcc-4.4.3/libgfortran/generated/pow_c16_i8.c
deleted file mode 100644
index e599cf08b..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c16_i8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_16) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_COMPLEX_16 pow_c16_i8 (GFC_COMPLEX_16 a, GFC_INTEGER_8 b);
-export_proto(pow_c16_i8);
-
-GFC_COMPLEX_16
-pow_c16_i8 (GFC_COMPLEX_16 a, GFC_INTEGER_8 b)
-{
- GFC_COMPLEX_16 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c4_i16.c b/gcc-4.4.3/libgfortran/generated/pow_c4_i16.c
deleted file mode 100644
index 3f6ff8d87..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c4_i16.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_4) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_COMPLEX_4 pow_c4_i16 (GFC_COMPLEX_4 a, GFC_INTEGER_16 b);
-export_proto(pow_c4_i16);
-
-GFC_COMPLEX_4
-pow_c4_i16 (GFC_COMPLEX_4 a, GFC_INTEGER_16 b)
-{
- GFC_COMPLEX_4 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c4_i4.c b/gcc-4.4.3/libgfortran/generated/pow_c4_i4.c
deleted file mode 100644
index b5cc430c6..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c4_i4.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_4) && defined (HAVE_GFC_INTEGER_4)
-
-GFC_COMPLEX_4 pow_c4_i4 (GFC_COMPLEX_4 a, GFC_INTEGER_4 b);
-export_proto(pow_c4_i4);
-
-GFC_COMPLEX_4
-pow_c4_i4 (GFC_COMPLEX_4 a, GFC_INTEGER_4 b)
-{
- GFC_COMPLEX_4 pow, x;
- GFC_INTEGER_4 n;
- GFC_UINTEGER_4 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c4_i8.c b/gcc-4.4.3/libgfortran/generated/pow_c4_i8.c
deleted file mode 100644
index 0bd0da7ce..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c4_i8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_4) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_COMPLEX_4 pow_c4_i8 (GFC_COMPLEX_4 a, GFC_INTEGER_8 b);
-export_proto(pow_c4_i8);
-
-GFC_COMPLEX_4
-pow_c4_i8 (GFC_COMPLEX_4 a, GFC_INTEGER_8 b)
-{
- GFC_COMPLEX_4 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c8_i16.c b/gcc-4.4.3/libgfortran/generated/pow_c8_i16.c
deleted file mode 100644
index 8ac146548..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c8_i16.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_8) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_COMPLEX_8 pow_c8_i16 (GFC_COMPLEX_8 a, GFC_INTEGER_16 b);
-export_proto(pow_c8_i16);
-
-GFC_COMPLEX_8
-pow_c8_i16 (GFC_COMPLEX_8 a, GFC_INTEGER_16 b)
-{
- GFC_COMPLEX_8 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c8_i4.c b/gcc-4.4.3/libgfortran/generated/pow_c8_i4.c
deleted file mode 100644
index d788c1bd6..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c8_i4.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_8) && defined (HAVE_GFC_INTEGER_4)
-
-GFC_COMPLEX_8 pow_c8_i4 (GFC_COMPLEX_8 a, GFC_INTEGER_4 b);
-export_proto(pow_c8_i4);
-
-GFC_COMPLEX_8
-pow_c8_i4 (GFC_COMPLEX_8 a, GFC_INTEGER_4 b)
-{
- GFC_COMPLEX_8 pow, x;
- GFC_INTEGER_4 n;
- GFC_UINTEGER_4 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_c8_i8.c b/gcc-4.4.3/libgfortran/generated/pow_c8_i8.c
deleted file mode 100644
index 805146765..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_c8_i8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_COMPLEX_8) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_COMPLEX_8 pow_c8_i8 (GFC_COMPLEX_8 a, GFC_INTEGER_8 b);
-export_proto(pow_c8_i8);
-
-GFC_COMPLEX_8
-pow_c8_i8 (GFC_COMPLEX_8 a, GFC_INTEGER_8 b)
-{
- GFC_COMPLEX_8 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i16_i16.c b/gcc-4.4.3/libgfortran/generated/pow_i16_i16.c
deleted file mode 100644
index 62a88b11b..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i16_i16.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_INTEGER_16 pow_i16_i16 (GFC_INTEGER_16 a, GFC_INTEGER_16 b);
-export_proto(pow_i16_i16);
-
-GFC_INTEGER_16
-pow_i16_i16 (GFC_INTEGER_16 a, GFC_INTEGER_16 b)
-{
- GFC_INTEGER_16 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i16_i4.c b/gcc-4.4.3/libgfortran/generated/pow_i16_i4.c
deleted file mode 100644
index 2d4c87ca7..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i16_i4.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_4)
-
-GFC_INTEGER_16 pow_i16_i4 (GFC_INTEGER_16 a, GFC_INTEGER_4 b);
-export_proto(pow_i16_i4);
-
-GFC_INTEGER_16
-pow_i16_i4 (GFC_INTEGER_16 a, GFC_INTEGER_4 b)
-{
- GFC_INTEGER_16 pow, x;
- GFC_INTEGER_4 n;
- GFC_UINTEGER_4 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i16_i8.c b/gcc-4.4.3/libgfortran/generated/pow_i16_i8.c
deleted file mode 100644
index 3c8401c6f..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i16_i8.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_INTEGER_16 pow_i16_i8 (GFC_INTEGER_16 a, GFC_INTEGER_8 b);
-export_proto(pow_i16_i8);
-
-GFC_INTEGER_16
-pow_i16_i8 (GFC_INTEGER_16 a, GFC_INTEGER_8 b)
-{
- GFC_INTEGER_16 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i4_i16.c b/gcc-4.4.3/libgfortran/generated/pow_i4_i16.c
deleted file mode 100644
index c6a92f0a4..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i4_i16.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_INTEGER_4 pow_i4_i16 (GFC_INTEGER_4 a, GFC_INTEGER_16 b);
-export_proto(pow_i4_i16);
-
-GFC_INTEGER_4
-pow_i4_i16 (GFC_INTEGER_4 a, GFC_INTEGER_16 b)
-{
- GFC_INTEGER_4 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i4_i4.c b/gcc-4.4.3/libgfortran/generated/pow_i4_i4.c
deleted file mode 100644
index b8ffd7255..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i4_i4.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-GFC_INTEGER_4 pow_i4_i4 (GFC_INTEGER_4 a, GFC_INTEGER_4 b);
-export_proto(pow_i4_i4);
-
-GFC_INTEGER_4
-pow_i4_i4 (GFC_INTEGER_4 a, GFC_INTEGER_4 b)
-{
- GFC_INTEGER_4 pow, x;
- GFC_INTEGER_4 n;
- GFC_UINTEGER_4 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i4_i8.c b/gcc-4.4.3/libgfortran/generated/pow_i4_i8.c
deleted file mode 100644
index 76ac564ec..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i4_i8.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_INTEGER_4 pow_i4_i8 (GFC_INTEGER_4 a, GFC_INTEGER_8 b);
-export_proto(pow_i4_i8);
-
-GFC_INTEGER_4
-pow_i4_i8 (GFC_INTEGER_4 a, GFC_INTEGER_8 b)
-{
- GFC_INTEGER_4 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i8_i16.c b/gcc-4.4.3/libgfortran/generated/pow_i8_i16.c
deleted file mode 100644
index 66a50b631..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i8_i16.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_INTEGER_8 pow_i8_i16 (GFC_INTEGER_8 a, GFC_INTEGER_16 b);
-export_proto(pow_i8_i16);
-
-GFC_INTEGER_8
-pow_i8_i16 (GFC_INTEGER_8 a, GFC_INTEGER_16 b)
-{
- GFC_INTEGER_8 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i8_i4.c b/gcc-4.4.3/libgfortran/generated/pow_i8_i4.c
deleted file mode 100644
index 8b8594653..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i8_i4.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_4)
-
-GFC_INTEGER_8 pow_i8_i4 (GFC_INTEGER_8 a, GFC_INTEGER_4 b);
-export_proto(pow_i8_i4);
-
-GFC_INTEGER_8
-pow_i8_i4 (GFC_INTEGER_8 a, GFC_INTEGER_4 b)
-{
- GFC_INTEGER_8 pow, x;
- GFC_INTEGER_4 n;
- GFC_UINTEGER_4 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_i8_i8.c b/gcc-4.4.3/libgfortran/generated/pow_i8_i8.c
deleted file mode 100644
index bc5aa0dd8..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_i8_i8.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_INTEGER_8 pow_i8_i8 (GFC_INTEGER_8 a, GFC_INTEGER_8 b);
-export_proto(pow_i8_i8);
-
-GFC_INTEGER_8
-pow_i8_i8 (GFC_INTEGER_8 a, GFC_INTEGER_8 b)
-{
- GFC_INTEGER_8 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
- if (x == 1)
- return 1;
- if (x == -1)
- return (n & 1) ? -1 : 1;
- return (x == 0) ? 1 / x : 0;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_r10_i16.c b/gcc-4.4.3/libgfortran/generated/pow_r10_i16.c
deleted file mode 100644
index d587c4767..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_r10_i16.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_REAL_10 pow_r10_i16 (GFC_REAL_10 a, GFC_INTEGER_16 b);
-export_proto(pow_r10_i16);
-
-GFC_REAL_10
-pow_r10_i16 (GFC_REAL_10 a, GFC_INTEGER_16 b)
-{
- GFC_REAL_10 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_r10_i8.c b/gcc-4.4.3/libgfortran/generated/pow_r10_i8.c
deleted file mode 100644
index d2f66e019..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_r10_i8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_REAL_10 pow_r10_i8 (GFC_REAL_10 a, GFC_INTEGER_8 b);
-export_proto(pow_r10_i8);
-
-GFC_REAL_10
-pow_r10_i8 (GFC_REAL_10 a, GFC_INTEGER_8 b)
-{
- GFC_REAL_10 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_r16_i16.c b/gcc-4.4.3/libgfortran/generated/pow_r16_i16.c
deleted file mode 100644
index 0e80dd787..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_r16_i16.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_REAL_16 pow_r16_i16 (GFC_REAL_16 a, GFC_INTEGER_16 b);
-export_proto(pow_r16_i16);
-
-GFC_REAL_16
-pow_r16_i16 (GFC_REAL_16 a, GFC_INTEGER_16 b)
-{
- GFC_REAL_16 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_r16_i8.c b/gcc-4.4.3/libgfortran/generated/pow_r16_i8.c
deleted file mode 100644
index 16ea271e8..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_r16_i8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_REAL_16 pow_r16_i8 (GFC_REAL_16 a, GFC_INTEGER_8 b);
-export_proto(pow_r16_i8);
-
-GFC_REAL_16
-pow_r16_i8 (GFC_REAL_16 a, GFC_INTEGER_8 b)
-{
- GFC_REAL_16 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_r4_i16.c b/gcc-4.4.3/libgfortran/generated/pow_r4_i16.c
deleted file mode 100644
index 3ba8d3e30..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_r4_i16.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_REAL_4 pow_r4_i16 (GFC_REAL_4 a, GFC_INTEGER_16 b);
-export_proto(pow_r4_i16);
-
-GFC_REAL_4
-pow_r4_i16 (GFC_REAL_4 a, GFC_INTEGER_16 b)
-{
- GFC_REAL_4 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_r4_i8.c b/gcc-4.4.3/libgfortran/generated/pow_r4_i8.c
deleted file mode 100644
index 799adbaa8..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_r4_i8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_REAL_4 pow_r4_i8 (GFC_REAL_4 a, GFC_INTEGER_8 b);
-export_proto(pow_r4_i8);
-
-GFC_REAL_4
-pow_r4_i8 (GFC_REAL_4 a, GFC_INTEGER_8 b)
-{
- GFC_REAL_4 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_r8_i16.c b/gcc-4.4.3/libgfortran/generated/pow_r8_i16.c
deleted file mode 100644
index 4c7dcb7f0..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_r8_i16.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_16)
-
-GFC_REAL_8 pow_r8_i16 (GFC_REAL_8 a, GFC_INTEGER_16 b);
-export_proto(pow_r8_i16);
-
-GFC_REAL_8
-pow_r8_i16 (GFC_REAL_8 a, GFC_INTEGER_16 b)
-{
- GFC_REAL_8 pow, x;
- GFC_INTEGER_16 n;
- GFC_UINTEGER_16 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/pow_r8_i8.c b/gcc-4.4.3/libgfortran/generated/pow_r8_i8.c
deleted file mode 100644
index 1a6a7460e..000000000
--- a/gcc-4.4.3/libgfortran/generated/pow_r8_i8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Support routines for the intrinsic power (**) operator.
- Copyright 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-/* Use Binary Method to calculate the powi. This is not an optimal but
- a simple and reasonable arithmetic. See section 4.6.3, "Evaluation of
- Powers" of Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art
- of Computer Programming", 3rd Edition, 1998. */
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_INTEGER_8)
-
-GFC_REAL_8 pow_r8_i8 (GFC_REAL_8 a, GFC_INTEGER_8 b);
-export_proto(pow_r8_i8);
-
-GFC_REAL_8
-pow_r8_i8 (GFC_REAL_8 a, GFC_INTEGER_8 b)
-{
- GFC_REAL_8 pow, x;
- GFC_INTEGER_8 n;
- GFC_UINTEGER_8 u;
-
- n = b;
- x = a;
- pow = 1;
- if (n != 0)
- {
- if (n < 0)
- {
-
- u = -n;
- x = pow / x;
- }
- else
- {
- u = n;
- }
- for (;;)
- {
- if (u & 1)
- pow *= x;
- u >>= 1;
- if (u)
- x *= x;
- else
- break;
- }
- }
- return pow;
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_c10.c b/gcc-4.4.3/libgfortran/generated/product_c10.c
deleted file mode 100644
index 5fcba7993..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_c10.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10) && defined (HAVE_GFC_COMPLEX_10)
-
-
-extern void product_c10 (gfc_array_c10 * const restrict,
- gfc_array_c10 * const restrict, const index_type * const restrict);
-export_proto(product_c10);
-
-void
-product_c10 (gfc_array_c10 * const restrict retarray,
- gfc_array_c10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_COMPLEX_10 * restrict base;
- GFC_COMPLEX_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_COMPLEX_10 * restrict src;
- GFC_COMPLEX_10 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_c10 (gfc_array_c10 * const restrict,
- gfc_array_c10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_c10);
-
-void
-mproduct_c10 (gfc_array_c10 * const restrict retarray,
- gfc_array_c10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_10 * restrict dest;
- const GFC_COMPLEX_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_COMPLEX_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_COMPLEX_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_COMPLEX_10 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_c10 (gfc_array_c10 * const restrict,
- gfc_array_c10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_c10);
-
-void
-sproduct_c10 (gfc_array_c10 * const restrict retarray,
- gfc_array_c10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_c10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_c16.c b/gcc-4.4.3/libgfortran/generated/product_c16.c
deleted file mode 100644
index ffa583651..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_c16.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16) && defined (HAVE_GFC_COMPLEX_16)
-
-
-extern void product_c16 (gfc_array_c16 * const restrict,
- gfc_array_c16 * const restrict, const index_type * const restrict);
-export_proto(product_c16);
-
-void
-product_c16 (gfc_array_c16 * const restrict retarray,
- gfc_array_c16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_COMPLEX_16 * restrict base;
- GFC_COMPLEX_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_COMPLEX_16 * restrict src;
- GFC_COMPLEX_16 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_c16 (gfc_array_c16 * const restrict,
- gfc_array_c16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_c16);
-
-void
-mproduct_c16 (gfc_array_c16 * const restrict retarray,
- gfc_array_c16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_16 * restrict dest;
- const GFC_COMPLEX_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_COMPLEX_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_COMPLEX_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_COMPLEX_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_c16 (gfc_array_c16 * const restrict,
- gfc_array_c16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_c16);
-
-void
-sproduct_c16 (gfc_array_c16 * const restrict retarray,
- gfc_array_c16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_c16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_c4.c b/gcc-4.4.3/libgfortran/generated/product_c4.c
deleted file mode 100644
index c2301d6f4..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_c4.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4) && defined (HAVE_GFC_COMPLEX_4)
-
-
-extern void product_c4 (gfc_array_c4 * const restrict,
- gfc_array_c4 * const restrict, const index_type * const restrict);
-export_proto(product_c4);
-
-void
-product_c4 (gfc_array_c4 * const restrict retarray,
- gfc_array_c4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_COMPLEX_4 * restrict base;
- GFC_COMPLEX_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_COMPLEX_4 * restrict src;
- GFC_COMPLEX_4 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_c4 (gfc_array_c4 * const restrict,
- gfc_array_c4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_c4);
-
-void
-mproduct_c4 (gfc_array_c4 * const restrict retarray,
- gfc_array_c4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_4 * restrict dest;
- const GFC_COMPLEX_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_COMPLEX_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_COMPLEX_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_COMPLEX_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_c4 (gfc_array_c4 * const restrict,
- gfc_array_c4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_c4);
-
-void
-sproduct_c4 (gfc_array_c4 * const restrict retarray,
- gfc_array_c4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_c4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_c8.c b/gcc-4.4.3/libgfortran/generated/product_c8.c
deleted file mode 100644
index 3c3657028..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_c8.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8) && defined (HAVE_GFC_COMPLEX_8)
-
-
-extern void product_c8 (gfc_array_c8 * const restrict,
- gfc_array_c8 * const restrict, const index_type * const restrict);
-export_proto(product_c8);
-
-void
-product_c8 (gfc_array_c8 * const restrict retarray,
- gfc_array_c8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_COMPLEX_8 * restrict base;
- GFC_COMPLEX_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_COMPLEX_8 * restrict src;
- GFC_COMPLEX_8 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_c8 (gfc_array_c8 * const restrict,
- gfc_array_c8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_c8);
-
-void
-mproduct_c8 (gfc_array_c8 * const restrict retarray,
- gfc_array_c8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_8 * restrict dest;
- const GFC_COMPLEX_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_COMPLEX_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_COMPLEX_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_COMPLEX_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_c8 (gfc_array_c8 * const restrict,
- gfc_array_c8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_c8);
-
-void
-sproduct_c8 (gfc_array_c8 * const restrict retarray,
- gfc_array_c8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_c8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_i1.c b/gcc-4.4.3/libgfortran/generated/product_i1.c
deleted file mode 100644
index ab177fae6..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_i1.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_1)
-
-
-extern void product_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(product_i1);
-
-void
-product_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_1 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_i1);
-
-void
-mproduct_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_1 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_1 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_i1);
-
-void
-sproduct_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_i16.c b/gcc-4.4.3/libgfortran/generated/product_i16.c
deleted file mode 100644
index 12b0fa4ee..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_i16.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void product_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(product_i16);
-
-void
-product_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_i16);
-
-void
-mproduct_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_i16);
-
-void
-sproduct_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_i2.c b/gcc-4.4.3/libgfortran/generated/product_i2.c
deleted file mode 100644
index b43e871c3..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_i2.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_2)
-
-
-extern void product_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(product_i2);
-
-void
-product_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_2 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_i2);
-
-void
-mproduct_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_2 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_2 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_i2);
-
-void
-sproduct_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_i4.c b/gcc-4.4.3/libgfortran/generated/product_i4.c
deleted file mode 100644
index 907fce89d..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_i4.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void product_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(product_i4);
-
-void
-product_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_i4);
-
-void
-mproduct_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_i4);
-
-void
-sproduct_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_i8.c b/gcc-4.4.3/libgfortran/generated/product_i8.c
deleted file mode 100644
index 3d8869841..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_i8.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void product_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(product_i8);
-
-void
-product_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_i8);
-
-void
-mproduct_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_i8);
-
-void
-sproduct_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_r10.c b/gcc-4.4.3/libgfortran/generated/product_r10.c
deleted file mode 100644
index 9da472288..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_r10.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_REAL_10)
-
-
-extern void product_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(product_r10);
-
-void
-product_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_REAL_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_REAL_10 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_r10);
-
-void
-mproduct_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_10 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_10 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_r10);
-
-void
-sproduct_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_r16.c b/gcc-4.4.3/libgfortran/generated/product_r16.c
deleted file mode 100644
index 55c2303fa..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_r16.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_REAL_16)
-
-
-extern void product_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(product_r16);
-
-void
-product_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_REAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_REAL_16 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_r16);
-
-void
-mproduct_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_16 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_r16);
-
-void
-sproduct_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_r4.c b/gcc-4.4.3/libgfortran/generated/product_r4.c
deleted file mode 100644
index 7a66bdc2f..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_r4.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_REAL_4)
-
-
-extern void product_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(product_r4);
-
-void
-product_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_REAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_REAL_4 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_r4);
-
-void
-mproduct_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_4 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_r4);
-
-void
-sproduct_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/product_r8.c b/gcc-4.4.3/libgfortran/generated/product_r8.c
deleted file mode 100644
index d120369f7..000000000
--- a/gcc-4.4.3/libgfortran/generated/product_r8.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the PRODUCT intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_REAL_8)
-
-
-extern void product_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(product_r8);
-
-void
-product_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_REAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_REAL_8 result;
- src = base;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void mproduct_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(mproduct_r8);
-
-void
-mproduct_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_8 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in PRODUCT intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = 1;
- if (len <= 0)
- *dest = 1;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result *= *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void sproduct_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(sproduct_r8);
-
-void
-sproduct_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- product_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " PRODUCT intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " PRODUCT intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 1;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_c10.c b/gcc-4.4.3/libgfortran/generated/reshape_c10.c
deleted file mode 100644
index 4a4094cc7..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_c10.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_c10 (gfc_array_c10 * const restrict,
- gfc_array_c10 * const restrict,
- shape_type * const restrict,
- gfc_array_c10 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_c10);
-
-void
-reshape_c10 (gfc_array_c10 * const restrict ret,
- gfc_array_c10 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_c10 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_COMPLEX_10 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_COMPLEX_10 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_COMPLEX_10 *pptr;
-
- const GFC_COMPLEX_10 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_COMPLEX_10));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_COMPLEX_10);
- ssize *= sizeof (GFC_COMPLEX_10);
- psize *= sizeof (GFC_COMPLEX_10);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_c16.c b/gcc-4.4.3/libgfortran/generated/reshape_c16.c
deleted file mode 100644
index a2cec54d5..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_c16.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_c16 (gfc_array_c16 * const restrict,
- gfc_array_c16 * const restrict,
- shape_type * const restrict,
- gfc_array_c16 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_c16);
-
-void
-reshape_c16 (gfc_array_c16 * const restrict ret,
- gfc_array_c16 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_c16 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_COMPLEX_16 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_COMPLEX_16 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_COMPLEX_16 *pptr;
-
- const GFC_COMPLEX_16 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_COMPLEX_16));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_COMPLEX_16);
- ssize *= sizeof (GFC_COMPLEX_16);
- psize *= sizeof (GFC_COMPLEX_16);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_c4.c b/gcc-4.4.3/libgfortran/generated/reshape_c4.c
deleted file mode 100644
index 95fbb791f..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_c4.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_c4 (gfc_array_c4 * const restrict,
- gfc_array_c4 * const restrict,
- shape_type * const restrict,
- gfc_array_c4 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_c4);
-
-void
-reshape_c4 (gfc_array_c4 * const restrict ret,
- gfc_array_c4 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_c4 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_COMPLEX_4 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_COMPLEX_4 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_COMPLEX_4 *pptr;
-
- const GFC_COMPLEX_4 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_COMPLEX_4));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_COMPLEX_4);
- ssize *= sizeof (GFC_COMPLEX_4);
- psize *= sizeof (GFC_COMPLEX_4);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_c8.c b/gcc-4.4.3/libgfortran/generated/reshape_c8.c
deleted file mode 100644
index a34127c8f..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_c8.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_c8 (gfc_array_c8 * const restrict,
- gfc_array_c8 * const restrict,
- shape_type * const restrict,
- gfc_array_c8 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_c8);
-
-void
-reshape_c8 (gfc_array_c8 * const restrict ret,
- gfc_array_c8 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_c8 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_COMPLEX_8 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_COMPLEX_8 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_COMPLEX_8 *pptr;
-
- const GFC_COMPLEX_8 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_COMPLEX_8));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_COMPLEX_8);
- ssize *= sizeof (GFC_COMPLEX_8);
- psize *= sizeof (GFC_COMPLEX_8);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_i16.c b/gcc-4.4.3/libgfortran/generated/reshape_i16.c
deleted file mode 100644
index e40be6079..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_i16.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict,
- shape_type * const restrict,
- gfc_array_i16 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_16);
-
-void
-reshape_16 (gfc_array_i16 * const restrict ret,
- gfc_array_i16 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_i16 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_INTEGER_16 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_INTEGER_16 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_INTEGER_16 *pptr;
-
- const GFC_INTEGER_16 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_INTEGER_16));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_INTEGER_16);
- ssize *= sizeof (GFC_INTEGER_16);
- psize *= sizeof (GFC_INTEGER_16);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_i4.c b/gcc-4.4.3/libgfortran/generated/reshape_i4.c
deleted file mode 100644
index 4b76fdb30..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_i4.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict,
- shape_type * const restrict,
- gfc_array_i4 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_4);
-
-void
-reshape_4 (gfc_array_i4 * const restrict ret,
- gfc_array_i4 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_i4 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_INTEGER_4 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_INTEGER_4 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_INTEGER_4 *pptr;
-
- const GFC_INTEGER_4 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_INTEGER_4));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_INTEGER_4);
- ssize *= sizeof (GFC_INTEGER_4);
- psize *= sizeof (GFC_INTEGER_4);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_i8.c b/gcc-4.4.3/libgfortran/generated/reshape_i8.c
deleted file mode 100644
index 8856e8158..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_i8.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict,
- shape_type * const restrict,
- gfc_array_i8 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_8);
-
-void
-reshape_8 (gfc_array_i8 * const restrict ret,
- gfc_array_i8 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_i8 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_INTEGER_8 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_INTEGER_8 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_INTEGER_8 *pptr;
-
- const GFC_INTEGER_8 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_INTEGER_8));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_INTEGER_8);
- ssize *= sizeof (GFC_INTEGER_8);
- psize *= sizeof (GFC_INTEGER_8);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_r10.c b/gcc-4.4.3/libgfortran/generated/reshape_r10.c
deleted file mode 100644
index 3e08b7c64..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_r10.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict,
- shape_type * const restrict,
- gfc_array_r10 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_r10);
-
-void
-reshape_r10 (gfc_array_r10 * const restrict ret,
- gfc_array_r10 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_r10 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_REAL_10 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_REAL_10 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_REAL_10 *pptr;
-
- const GFC_REAL_10 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_REAL_10));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_REAL_10);
- ssize *= sizeof (GFC_REAL_10);
- psize *= sizeof (GFC_REAL_10);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_r16.c b/gcc-4.4.3/libgfortran/generated/reshape_r16.c
deleted file mode 100644
index d78df1251..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_r16.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict,
- shape_type * const restrict,
- gfc_array_r16 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_r16);
-
-void
-reshape_r16 (gfc_array_r16 * const restrict ret,
- gfc_array_r16 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_r16 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_REAL_16 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_REAL_16 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_REAL_16 *pptr;
-
- const GFC_REAL_16 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_REAL_16));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_REAL_16);
- ssize *= sizeof (GFC_REAL_16);
- psize *= sizeof (GFC_REAL_16);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_r4.c b/gcc-4.4.3/libgfortran/generated/reshape_r4.c
deleted file mode 100644
index 157705830..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_r4.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict,
- shape_type * const restrict,
- gfc_array_r4 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_r4);
-
-void
-reshape_r4 (gfc_array_r4 * const restrict ret,
- gfc_array_r4 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_r4 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_REAL_4 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_REAL_4 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_REAL_4 *pptr;
-
- const GFC_REAL_4 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_REAL_4));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_REAL_4);
- ssize *= sizeof (GFC_REAL_4);
- psize *= sizeof (GFC_REAL_4);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/reshape_r8.c b/gcc-4.4.3/libgfortran/generated/reshape_r8.c
deleted file mode 100644
index dcbedb82d..000000000
--- a/gcc-4.4.3/libgfortran/generated/reshape_r8.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/* Implementation of the RESHAPE
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-typedef GFC_ARRAY_DESCRIPTOR(1, index_type) shape_type;
-
-
-extern void reshape_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict,
- shape_type * const restrict,
- gfc_array_r8 * const restrict,
- shape_type * const restrict);
-export_proto(reshape_r8);
-
-void
-reshape_r8 (gfc_array_r8 * const restrict ret,
- gfc_array_r8 * const restrict source,
- shape_type * const restrict shape,
- gfc_array_r8 * const restrict pad,
- shape_type * const restrict order)
-{
- /* r.* indicates the return array. */
- index_type rcount[GFC_MAX_DIMENSIONS];
- index_type rextent[GFC_MAX_DIMENSIONS];
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdim;
- index_type rsize;
- index_type rs;
- index_type rex;
- GFC_REAL_8 *rptr;
- /* s.* indicates the source array. */
- index_type scount[GFC_MAX_DIMENSIONS];
- index_type sextent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type sdim;
- index_type ssize;
- const GFC_REAL_8 *sptr;
- /* p.* indicates the pad array. */
- index_type pcount[GFC_MAX_DIMENSIONS];
- index_type pextent[GFC_MAX_DIMENSIONS];
- index_type pstride[GFC_MAX_DIMENSIONS];
- index_type pdim;
- index_type psize;
- const GFC_REAL_8 *pptr;
-
- const GFC_REAL_8 *src;
- int n;
- int dim;
- int sempty, pempty, shape_empty;
- index_type shape_data[GFC_MAX_DIMENSIONS];
-
- rdim = shape->dim[0].ubound - shape->dim[0].lbound + 1;
- if (rdim != GFC_DESCRIPTOR_RANK(ret))
- runtime_error("rank of return array incorrect in RESHAPE intrinsic");
-
- shape_empty = 0;
-
- for (n = 0; n < rdim; n++)
- {
- shape_data[n] = shape->data[n * shape->dim[0].stride];
- if (shape_data[n] <= 0)
- {
- shape_data[n] = 0;
- shape_empty = 1;
- }
- }
-
- if (ret->data == NULL)
- {
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- ret->dim[n].lbound = 0;
- rex = shape_data[n];
- ret->dim[n].ubound = rex - 1;
- ret->dim[n].stride = rs;
- rs *= rex;
- }
- ret->offset = 0;
- ret->data = internal_malloc_size ( rs * sizeof (GFC_REAL_8));
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rdim;
- }
-
- if (shape_empty)
- return;
-
- if (pad)
- {
- pdim = GFC_DESCRIPTOR_RANK (pad);
- psize = 1;
- pempty = 0;
- for (n = 0; n < pdim; n++)
- {
- pcount[n] = 0;
- pstride[n] = pad->dim[n].stride;
- pextent[n] = pad->dim[n].ubound + 1 - pad->dim[n].lbound;
- if (pextent[n] <= 0)
- {
- pempty = 1;
- pextent[n] = 0;
- }
-
- if (psize == pstride[n])
- psize *= pextent[n];
- else
- psize = 0;
- }
- pptr = pad->data;
- }
- else
- {
- pdim = 0;
- psize = 1;
- pempty = 1;
- pptr = NULL;
- }
-
- if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, source_extent;
-
- rs = 1;
- for (n = 0; n < rdim; n++)
- {
- rs *= shape_data[n];
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (ret_extent != shape_data[n])
- runtime_error("Incorrect extent in return value of RESHAPE"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) shape_data[n]);
- }
-
- source_extent = 1;
- sdim = GFC_DESCRIPTOR_RANK (source);
- for (n = 0; n < sdim; n++)
- {
- index_type se;
- se = source->dim[n].ubound + 1 - source->dim[0].lbound;
- source_extent *= se > 0 ? se : 0;
- }
-
- if (rs > source_extent && (!pad || pempty))
- runtime_error("Incorrect size in SOURCE argument to RESHAPE"
- " intrinsic: is %ld, should be %ld",
- (long int) source_extent, (long int) rs);
-
- if (order)
- {
- int seen[GFC_MAX_DIMENSIONS];
- index_type v;
-
- for (n = 0; n < rdim; n++)
- seen[n] = 0;
-
- for (n = 0; n < rdim; n++)
- {
- v = order->data[n * order->dim[0].stride] - 1;
-
- if (v < 0 || v >= rdim)
- runtime_error("Value %ld out of range in ORDER argument"
- " to RESHAPE intrinsic", (long int) v + 1);
-
- if (seen[v] != 0)
- runtime_error("Duplicate value %ld in ORDER argument to"
- " RESHAPE intrinsic", (long int) v + 1);
-
- seen[v] = 1;
- }
- }
- }
-
- rsize = 1;
- for (n = 0; n < rdim; n++)
- {
- if (order)
- dim = order->data[n * order->dim[0].stride] - 1;
- else
- dim = n;
-
- rcount[n] = 0;
- rstride[n] = ret->dim[dim].stride;
- rextent[n] = ret->dim[dim].ubound + 1 - ret->dim[dim].lbound;
- if (rextent[n] < 0)
- rextent[n] = 0;
-
- if (rextent[n] != shape_data[dim])
- runtime_error ("shape and target do not conform");
-
- if (rsize == rstride[n])
- rsize *= rextent[n];
- else
- rsize = 0;
- if (rextent[n] <= 0)
- return;
- }
-
- sdim = GFC_DESCRIPTOR_RANK (source);
- ssize = 1;
- sempty = 0;
- for (n = 0; n < sdim; n++)
- {
- scount[n] = 0;
- sstride[n] = source->dim[n].stride;
- sextent[n] = source->dim[n].ubound + 1 - source->dim[n].lbound;
- if (sextent[n] <= 0)
- {
- sempty = 1;
- sextent[n] = 0;
- }
-
- if (ssize == sstride[n])
- ssize *= sextent[n];
- else
- ssize = 0;
- }
-
- if (rsize != 0 && ssize != 0 && psize != 0)
- {
- rsize *= sizeof (GFC_REAL_8);
- ssize *= sizeof (GFC_REAL_8);
- psize *= sizeof (GFC_REAL_8);
- reshape_packed ((char *)ret->data, rsize, (char *)source->data,
- ssize, pad ? (char *)pad->data : NULL, psize);
- return;
- }
- rptr = ret->data;
- src = sptr = source->data;
- rstride0 = rstride[0];
- sstride0 = sstride[0];
-
- if (sempty && pempty)
- abort ();
-
- if (sempty)
- {
- /* Pretend we are using the pad array the first time around, too. */
- src = pptr;
- sptr = pptr;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = pstride[0];
- }
- }
-
- while (rptr)
- {
- /* Select between the source and pad arrays. */
- *rptr = *src;
- /* Advance to the next element. */
- rptr += rstride0;
- src += sstride0;
- rcount[0]++;
- scount[0]++;
-
- /* Advance to the next destination element. */
- n = 0;
- while (rcount[n] == rextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- rcount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * rextent[n];
- n++;
- if (n == rdim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- rcount[n]++;
- rptr += rstride[n];
- }
- }
- /* Advance to the next source element. */
- n = 0;
- while (scount[n] == sextent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- scount[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- src -= sstride[n] * sextent[n];
- n++;
- if (n == sdim)
- {
- if (sptr && pad)
- {
- /* Switch to the pad array. */
- sptr = NULL;
- sdim = pdim;
- for (dim = 0; dim < pdim; dim++)
- {
- scount[dim] = pcount[dim];
- sextent[dim] = pextent[dim];
- sstride[dim] = pstride[dim];
- sstride0 = sstride[0];
- }
- }
- /* We now start again from the beginning of the pad array. */
- src = pptr;
- break;
- }
- else
- {
- scount[n]++;
- src += sstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/rrspacing_r10.c b/gcc-4.4.3/libgfortran/generated/rrspacing_r10.c
deleted file mode 100644
index 1889d0ffc..000000000
--- a/gcc-4.4.3/libgfortran/generated/rrspacing_r10.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Implementation of the RRSPACING intrinsic
- Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_FABSL) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_10 rrspacing_r10 (GFC_REAL_10 s, int p);
-export_proto(rrspacing_r10);
-
-GFC_REAL_10
-rrspacing_r10 (GFC_REAL_10 s, int p)
-{
- int e;
- GFC_REAL_10 x;
- x = fabsl (s);
- if (x == 0.)
- return 0.;
- frexpl (s, &e);
-#if defined (HAVE_LDEXPL)
- return ldexpl (x, p - e);
-#else
- return scalbnl (x, p - e);
-#endif
-
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/rrspacing_r16.c b/gcc-4.4.3/libgfortran/generated/rrspacing_r16.c
deleted file mode 100644
index 10de2448e..000000000
--- a/gcc-4.4.3/libgfortran/generated/rrspacing_r16.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Implementation of the RRSPACING intrinsic
- Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_FABSL) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_16 rrspacing_r16 (GFC_REAL_16 s, int p);
-export_proto(rrspacing_r16);
-
-GFC_REAL_16
-rrspacing_r16 (GFC_REAL_16 s, int p)
-{
- int e;
- GFC_REAL_16 x;
- x = fabsl (s);
- if (x == 0.)
- return 0.;
- frexpl (s, &e);
-#if defined (HAVE_LDEXPL)
- return ldexpl (x, p - e);
-#else
- return scalbnl (x, p - e);
-#endif
-
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/rrspacing_r4.c b/gcc-4.4.3/libgfortran/generated/rrspacing_r4.c
deleted file mode 100644
index 48683db34..000000000
--- a/gcc-4.4.3/libgfortran/generated/rrspacing_r4.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Implementation of the RRSPACING intrinsic
- Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_FABSF) && defined (HAVE_FREXPF)
-
-extern GFC_REAL_4 rrspacing_r4 (GFC_REAL_4 s, int p);
-export_proto(rrspacing_r4);
-
-GFC_REAL_4
-rrspacing_r4 (GFC_REAL_4 s, int p)
-{
- int e;
- GFC_REAL_4 x;
- x = fabsf (s);
- if (x == 0.)
- return 0.;
- frexpf (s, &e);
-#if defined (HAVE_LDEXPF)
- return ldexpf (x, p - e);
-#else
- return scalbnf (x, p - e);
-#endif
-
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/rrspacing_r8.c b/gcc-4.4.3/libgfortran/generated/rrspacing_r8.c
deleted file mode 100644
index 75f224455..000000000
--- a/gcc-4.4.3/libgfortran/generated/rrspacing_r8.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Implementation of the RRSPACING intrinsic
- Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_FABS) && defined (HAVE_FREXP)
-
-extern GFC_REAL_8 rrspacing_r8 (GFC_REAL_8 s, int p);
-export_proto(rrspacing_r8);
-
-GFC_REAL_8
-rrspacing_r8 (GFC_REAL_8 s, int p)
-{
- int e;
- GFC_REAL_8 x;
- x = fabs (s);
- if (x == 0.)
- return 0.;
- frexp (s, &e);
-#if defined (HAVE_LDEXP)
- return ldexp (x, p - e);
-#else
- return scalbn (x, p - e);
-#endif
-
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/set_exponent_r10.c b/gcc-4.4.3/libgfortran/generated/set_exponent_r10.c
deleted file mode 100644
index 3f5238ded..000000000
--- a/gcc-4.4.3/libgfortran/generated/set_exponent_r10.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Implementation of the SET_EXPONENT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_SCALBNL) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_10 set_exponent_r10 (GFC_REAL_10 s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r10);
-
-GFC_REAL_10
-set_exponent_r10 (GFC_REAL_10 s, GFC_INTEGER_4 i)
-{
- int dummy_exp;
- return scalbnl (frexpl (s, &dummy_exp), i);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/set_exponent_r16.c b/gcc-4.4.3/libgfortran/generated/set_exponent_r16.c
deleted file mode 100644
index 4cd1ed5a4..000000000
--- a/gcc-4.4.3/libgfortran/generated/set_exponent_r16.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Implementation of the SET_EXPONENT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_SCALBNL) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_16 set_exponent_r16 (GFC_REAL_16 s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r16);
-
-GFC_REAL_16
-set_exponent_r16 (GFC_REAL_16 s, GFC_INTEGER_4 i)
-{
- int dummy_exp;
- return scalbnl (frexpl (s, &dummy_exp), i);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/set_exponent_r4.c b/gcc-4.4.3/libgfortran/generated/set_exponent_r4.c
deleted file mode 100644
index 4d765c2f0..000000000
--- a/gcc-4.4.3/libgfortran/generated/set_exponent_r4.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Implementation of the SET_EXPONENT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_SCALBNF) && defined (HAVE_FREXPF)
-
-extern GFC_REAL_4 set_exponent_r4 (GFC_REAL_4 s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r4);
-
-GFC_REAL_4
-set_exponent_r4 (GFC_REAL_4 s, GFC_INTEGER_4 i)
-{
- int dummy_exp;
- return scalbnf (frexpf (s, &dummy_exp), i);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/set_exponent_r8.c b/gcc-4.4.3/libgfortran/generated/set_exponent_r8.c
deleted file mode 100644
index ad8c3af5e..000000000
--- a/gcc-4.4.3/libgfortran/generated/set_exponent_r8.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Implementation of the SET_EXPONENT intrinsic
- Copyright 2003, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@redhat.com>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_SCALBN) && defined (HAVE_FREXP)
-
-extern GFC_REAL_8 set_exponent_r8 (GFC_REAL_8 s, GFC_INTEGER_4 i);
-export_proto(set_exponent_r8);
-
-GFC_REAL_8
-set_exponent_r8 (GFC_REAL_8 s, GFC_INTEGER_4 i)
-{
- int dummy_exp;
- return scalbn (frexp (s, &dummy_exp), i);
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/shape_i16.c b/gcc-4.4.3/libgfortran/generated/shape_i16.c
deleted file mode 100644
index 249793d7d..000000000
--- a/gcc-4.4.3/libgfortran/generated/shape_i16.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Implementation of the SHAPE intrinsic
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-extern void shape_16 (gfc_array_i16 * const restrict ret,
- const gfc_array_i16 * const restrict array);
-export_proto(shape_16);
-
-void
-shape_16 (gfc_array_i16 * const restrict ret,
- const gfc_array_i16 * const restrict array)
-{
- int n;
- index_type stride;
- index_type extent;
-
- stride = ret->dim[0].stride;
-
- if (ret->dim[0].ubound < ret->dim[0].lbound)
- return;
-
- for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++)
- {
- extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- ret->data[n * stride] = extent > 0 ? extent : 0 ;
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/shape_i4.c b/gcc-4.4.3/libgfortran/generated/shape_i4.c
deleted file mode 100644
index 386b84e16..000000000
--- a/gcc-4.4.3/libgfortran/generated/shape_i4.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Implementation of the SHAPE intrinsic
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-extern void shape_4 (gfc_array_i4 * const restrict ret,
- const gfc_array_i4 * const restrict array);
-export_proto(shape_4);
-
-void
-shape_4 (gfc_array_i4 * const restrict ret,
- const gfc_array_i4 * const restrict array)
-{
- int n;
- index_type stride;
- index_type extent;
-
- stride = ret->dim[0].stride;
-
- if (ret->dim[0].ubound < ret->dim[0].lbound)
- return;
-
- for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++)
- {
- extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- ret->data[n * stride] = extent > 0 ? extent : 0 ;
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/shape_i8.c b/gcc-4.4.3/libgfortran/generated/shape_i8.c
deleted file mode 100644
index f0498bc6d..000000000
--- a/gcc-4.4.3/libgfortran/generated/shape_i8.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Implementation of the SHAPE intrinsic
- Copyright 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-extern void shape_8 (gfc_array_i8 * const restrict ret,
- const gfc_array_i8 * const restrict array);
-export_proto(shape_8);
-
-void
-shape_8 (gfc_array_i8 * const restrict ret,
- const gfc_array_i8 * const restrict array)
-{
- int n;
- index_type stride;
- index_type extent;
-
- stride = ret->dim[0].stride;
-
- if (ret->dim[0].ubound < ret->dim[0].lbound)
- return;
-
- for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++)
- {
- extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- ret->data[n * stride] = extent > 0 ? extent : 0 ;
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/spacing_r10.c b/gcc-4.4.3/libgfortran/generated/spacing_r10.c
deleted file mode 100644
index 10a907345..000000000
--- a/gcc-4.4.3/libgfortran/generated/spacing_r10.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Implementation of the SPACING intrinsic
- Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_10 spacing_r10 (GFC_REAL_10 s, int p, int emin, GFC_REAL_10 tiny);
-export_proto(spacing_r10);
-
-GFC_REAL_10
-spacing_r10 (GFC_REAL_10 s, int p, int emin, GFC_REAL_10 tiny)
-{
- int e;
- if (s == 0.)
- return tiny;
- frexpl (s, &e);
- e = e - p;
- e = e > emin ? e : emin;
-#if defined (HAVE_LDEXPL)
- return ldexpl (1., e);
-#else
- return scalbnl (1., e);
-#endif
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/spacing_r16.c b/gcc-4.4.3/libgfortran/generated/spacing_r16.c
deleted file mode 100644
index 82ef8353d..000000000
--- a/gcc-4.4.3/libgfortran/generated/spacing_r16.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Implementation of the SPACING intrinsic
- Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_FREXPL)
-
-extern GFC_REAL_16 spacing_r16 (GFC_REAL_16 s, int p, int emin, GFC_REAL_16 tiny);
-export_proto(spacing_r16);
-
-GFC_REAL_16
-spacing_r16 (GFC_REAL_16 s, int p, int emin, GFC_REAL_16 tiny)
-{
- int e;
- if (s == 0.)
- return tiny;
- frexpl (s, &e);
- e = e - p;
- e = e > emin ? e : emin;
-#if defined (HAVE_LDEXPL)
- return ldexpl (1., e);
-#else
- return scalbnl (1., e);
-#endif
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/spacing_r4.c b/gcc-4.4.3/libgfortran/generated/spacing_r4.c
deleted file mode 100644
index 7936ba982..000000000
--- a/gcc-4.4.3/libgfortran/generated/spacing_r4.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Implementation of the SPACING intrinsic
- Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_FREXPF)
-
-extern GFC_REAL_4 spacing_r4 (GFC_REAL_4 s, int p, int emin, GFC_REAL_4 tiny);
-export_proto(spacing_r4);
-
-GFC_REAL_4
-spacing_r4 (GFC_REAL_4 s, int p, int emin, GFC_REAL_4 tiny)
-{
- int e;
- if (s == 0.)
- return tiny;
- frexpf (s, &e);
- e = e - p;
- e = e > emin ? e : emin;
-#if defined (HAVE_LDEXPF)
- return ldexpf (1., e);
-#else
- return scalbnf (1., e);
-#endif
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/spacing_r8.c b/gcc-4.4.3/libgfortran/generated/spacing_r8.c
deleted file mode 100644
index 3debe4924..000000000
--- a/gcc-4.4.3/libgfortran/generated/spacing_r8.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Implementation of the SPACING intrinsic
- Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_FREXP)
-
-extern GFC_REAL_8 spacing_r8 (GFC_REAL_8 s, int p, int emin, GFC_REAL_8 tiny);
-export_proto(spacing_r8);
-
-GFC_REAL_8
-spacing_r8 (GFC_REAL_8 s, int p, int emin, GFC_REAL_8 tiny)
-{
- int e;
- if (s == 0.)
- return tiny;
- frexp (s, &e);
- e = e - p;
- e = e > emin ? e : emin;
-#if defined (HAVE_LDEXP)
- return ldexp (1., e);
-#else
- return scalbn (1., e);
-#endif
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/spread_c10.c b/gcc-4.4.3/libgfortran/generated/spread_c10.c
deleted file mode 100644
index d7e1ee11a..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_c10.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-void
-spread_c10 (gfc_array_c10 *ret, const gfc_array_c10 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_COMPLEX_10 *rptr;
- GFC_COMPLEX_10 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_COMPLEX_10 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_COMPLEX_10));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_c10 (gfc_array_c10 *ret, const GFC_COMPLEX_10 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_COMPLEX_10 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_COMPLEX_10));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_c16.c b/gcc-4.4.3/libgfortran/generated/spread_c16.c
deleted file mode 100644
index d57cdd901..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_c16.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-void
-spread_c16 (gfc_array_c16 *ret, const gfc_array_c16 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_COMPLEX_16 *rptr;
- GFC_COMPLEX_16 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_COMPLEX_16 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_COMPLEX_16));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_c16 (gfc_array_c16 *ret, const GFC_COMPLEX_16 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_COMPLEX_16 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_COMPLEX_16));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_c4.c b/gcc-4.4.3/libgfortran/generated/spread_c4.c
deleted file mode 100644
index ddd6305c1..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_c4.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-void
-spread_c4 (gfc_array_c4 *ret, const gfc_array_c4 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_COMPLEX_4 *rptr;
- GFC_COMPLEX_4 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_COMPLEX_4 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_COMPLEX_4));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_c4 (gfc_array_c4 *ret, const GFC_COMPLEX_4 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_COMPLEX_4 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_COMPLEX_4));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_c8.c b/gcc-4.4.3/libgfortran/generated/spread_c8.c
deleted file mode 100644
index 8a32ee4c9..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_c8.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-void
-spread_c8 (gfc_array_c8 *ret, const gfc_array_c8 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_COMPLEX_8 *rptr;
- GFC_COMPLEX_8 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_COMPLEX_8 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_COMPLEX_8));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_c8 (gfc_array_c8 *ret, const GFC_COMPLEX_8 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_COMPLEX_8 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_COMPLEX_8));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_i1.c b/gcc-4.4.3/libgfortran/generated/spread_i1.c
deleted file mode 100644
index e5a2c34f8..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_i1.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1)
-
-void
-spread_i1 (gfc_array_i1 *ret, const gfc_array_i1 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_INTEGER_1 *rptr;
- GFC_INTEGER_1 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_INTEGER_1 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_INTEGER_1));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_i1 (gfc_array_i1 *ret, const GFC_INTEGER_1 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_INTEGER_1 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_INTEGER_1));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_i16.c b/gcc-4.4.3/libgfortran/generated/spread_i16.c
deleted file mode 100644
index a45455764..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_i16.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-void
-spread_i16 (gfc_array_i16 *ret, const gfc_array_i16 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_INTEGER_16 *rptr;
- GFC_INTEGER_16 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_INTEGER_16 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_INTEGER_16));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_i16 (gfc_array_i16 *ret, const GFC_INTEGER_16 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_INTEGER_16 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_INTEGER_16));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_i2.c b/gcc-4.4.3/libgfortran/generated/spread_i2.c
deleted file mode 100644
index 3bcccb190..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_i2.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2)
-
-void
-spread_i2 (gfc_array_i2 *ret, const gfc_array_i2 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_INTEGER_2 *rptr;
- GFC_INTEGER_2 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_INTEGER_2 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_INTEGER_2));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_i2 (gfc_array_i2 *ret, const GFC_INTEGER_2 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_INTEGER_2 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_INTEGER_2));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_i4.c b/gcc-4.4.3/libgfortran/generated/spread_i4.c
deleted file mode 100644
index 336ca7c95..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_i4.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-void
-spread_i4 (gfc_array_i4 *ret, const gfc_array_i4 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_INTEGER_4 *rptr;
- GFC_INTEGER_4 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_INTEGER_4 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_INTEGER_4));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_i4 (gfc_array_i4 *ret, const GFC_INTEGER_4 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_INTEGER_4 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_INTEGER_4));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_i8.c b/gcc-4.4.3/libgfortran/generated/spread_i8.c
deleted file mode 100644
index 6b10a8141..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_i8.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-void
-spread_i8 (gfc_array_i8 *ret, const gfc_array_i8 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_INTEGER_8 *rptr;
- GFC_INTEGER_8 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_INTEGER_8 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_INTEGER_8));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_i8 (gfc_array_i8 *ret, const GFC_INTEGER_8 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_INTEGER_8 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_INTEGER_8));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_r10.c b/gcc-4.4.3/libgfortran/generated/spread_r10.c
deleted file mode 100644
index 9a3a35697..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_r10.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-void
-spread_r10 (gfc_array_r10 *ret, const gfc_array_r10 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_REAL_10 *rptr;
- GFC_REAL_10 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_REAL_10 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_REAL_10));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_r10 (gfc_array_r10 *ret, const GFC_REAL_10 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_REAL_10 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_REAL_10));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_r16.c b/gcc-4.4.3/libgfortran/generated/spread_r16.c
deleted file mode 100644
index 69ab4c650..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_r16.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-void
-spread_r16 (gfc_array_r16 *ret, const gfc_array_r16 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_REAL_16 *rptr;
- GFC_REAL_16 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_REAL_16 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_REAL_16));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_r16 (gfc_array_r16 *ret, const GFC_REAL_16 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_REAL_16 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_REAL_16));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_r4.c b/gcc-4.4.3/libgfortran/generated/spread_r4.c
deleted file mode 100644
index 6f018de8f..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_r4.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-void
-spread_r4 (gfc_array_r4 *ret, const gfc_array_r4 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_REAL_4 *rptr;
- GFC_REAL_4 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_REAL_4 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_REAL_4));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_r4 (gfc_array_r4 *ret, const GFC_REAL_4 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_REAL_4 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_REAL_4));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/spread_r8.c b/gcc-4.4.3/libgfortran/generated/spread_r8.c
deleted file mode 100644
index d05e31a92..000000000
--- a/gcc-4.4.3/libgfortran/generated/spread_r8.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Special implementation of the SPREAD intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- spread_generic.c written by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-void
-spread_r8 (gfc_array_r8 *ret, const gfc_array_r8 *source,
- const index_type along, const index_type pncopies)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rdelta = 0;
- index_type rrank;
- index_type rs;
- GFC_REAL_8 *rptr;
- GFC_REAL_8 * restrict dest;
- /* s.* indicates the source array. */
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type sstride0;
- index_type srank;
- const GFC_REAL_8 *sptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
- index_type ncopies;
-
- srank = GFC_DESCRIPTOR_RANK(source);
-
- rrank = srank + 1;
- if (rrank > GFC_MAX_DIMENSIONS)
- runtime_error ("return rank too large in spread()");
-
- if (along > rrank)
- runtime_error ("dim outside of rank in spread()");
-
- ncopies = pncopies;
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- ret->dtype = (source->dtype & ~GFC_DTYPE_RANK_MASK) | rrank;
- dim = 0;
- rs = 1;
- for (n = 0; n < rrank; n++)
- {
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- if (n == along - 1)
- {
- ret->dim[n].ubound = ncopies - 1;
- rdelta = rs;
- rs *= ncopies;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = rs;
-
- ret->dim[n].ubound = extent[dim]-1;
- rs *= extent[dim];
- dim++;
- }
- }
- ret->offset = 0;
- if (rs > 0)
- ret->data = internal_malloc_size (rs * sizeof(GFC_REAL_8));
- else
- {
- ret->data = internal_malloc_size (1);
- return;
- }
- }
- else
- {
- int zero_sized;
-
- zero_sized = 0;
-
- dim = 0;
- if (GFC_DESCRIPTOR_RANK(ret) != rrank)
- runtime_error ("rank mismatch in spread()");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n = 0; n < rrank; n++)
- {
- index_type ret_extent;
-
- ret_extent = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
-
- if (ret_extent != ncopies)
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent, (long int) ncopies);
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (ret_extent != extent[dim])
- runtime_error("Incorrect extent in return value of SPREAD"
- " intrinsic in dimension %ld: is %ld,"
- " should be %ld", (long int) n+1,
- (long int) ret_extent,
- (long int) extent[dim]);
-
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
- else
- {
- for (n = 0; n < rrank; n++)
- {
- if (n == along - 1)
- {
- rdelta = ret->dim[n].stride;
- }
- else
- {
- count[dim] = 0;
- extent[dim] = source->dim[dim].ubound + 1
- - source->dim[dim].lbound;
- if (extent[dim] <= 0)
- zero_sized = 1;
- sstride[dim] = source->dim[dim].stride;
- rstride[dim] = ret->dim[n].stride;
- dim++;
- }
- }
- }
-
- if (zero_sized)
- return;
-
- if (sstride[0] == 0)
- sstride[0] = 1;
- }
- sstride0 = sstride[0];
- rstride0 = rstride[0];
- rptr = ret->data;
- sptr = source->data;
-
- while (sptr)
- {
- /* Spread this element. */
- dest = rptr;
- for (n = 0; n < ncopies; n++)
- {
- *dest = *sptr;
- dest += rdelta;
- }
- /* Advance to the next element. */
- sptr += sstride0;
- rptr += rstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- sptr -= sstride[n] * extent[n];
- rptr -= rstride[n] * extent[n];
- n++;
- if (n >= srank)
- {
- /* Break out of the loop. */
- sptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- sptr += sstride[n];
- rptr += rstride[n];
- }
- }
- }
-}
-
-/* This version of spread_internal treats the special case of a scalar
- source. This is much simpler than the more general case above. */
-
-void
-spread_scalar_r8 (gfc_array_r8 *ret, const GFC_REAL_8 *source,
- const index_type along, const index_type pncopies)
-{
- int n;
- int ncopies = pncopies;
- GFC_REAL_8 * restrict dest;
- index_type stride;
-
- if (GFC_DESCRIPTOR_RANK (ret) != 1)
- runtime_error ("incorrect destination rank in spread()");
-
- if (along > 1)
- runtime_error ("dim outside of rank in spread()");
-
- if (ret->data == NULL)
- {
- ret->data = internal_malloc_size (ncopies * sizeof (GFC_REAL_8));
- ret->offset = 0;
- ret->dim[0].stride = 1;
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = ncopies - 1;
- }
- else
- {
- if (ncopies - 1 > (ret->dim[0].ubound - ret->dim[0].lbound)
- / ret->dim[0].stride)
- runtime_error ("dim too large in spread()");
- }
-
- dest = ret->data;
- stride = ret->dim[0].stride;
-
- for (n = 0; n < ncopies; n++)
- {
- *dest = *source;
- dest += stride;
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/sum_c10.c b/gcc-4.4.3/libgfortran/generated/sum_c10.c
deleted file mode 100644
index a1f658ed4..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_c10.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10) && defined (HAVE_GFC_COMPLEX_10)
-
-
-extern void sum_c10 (gfc_array_c10 * const restrict,
- gfc_array_c10 * const restrict, const index_type * const restrict);
-export_proto(sum_c10);
-
-void
-sum_c10 (gfc_array_c10 * const restrict retarray,
- gfc_array_c10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_COMPLEX_10 * restrict base;
- GFC_COMPLEX_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_COMPLEX_10 * restrict src;
- GFC_COMPLEX_10 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_c10 (gfc_array_c10 * const restrict,
- gfc_array_c10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_c10);
-
-void
-msum_c10 (gfc_array_c10 * const restrict retarray,
- gfc_array_c10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_10 * restrict dest;
- const GFC_COMPLEX_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_COMPLEX_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_COMPLEX_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_COMPLEX_10 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_c10 (gfc_array_c10 * const restrict,
- gfc_array_c10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_c10);
-
-void
-ssum_c10 (gfc_array_c10 * const restrict retarray,
- gfc_array_c10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_c10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_c16.c b/gcc-4.4.3/libgfortran/generated/sum_c16.c
deleted file mode 100644
index 8ec03a20f..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_c16.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16) && defined (HAVE_GFC_COMPLEX_16)
-
-
-extern void sum_c16 (gfc_array_c16 * const restrict,
- gfc_array_c16 * const restrict, const index_type * const restrict);
-export_proto(sum_c16);
-
-void
-sum_c16 (gfc_array_c16 * const restrict retarray,
- gfc_array_c16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_COMPLEX_16 * restrict base;
- GFC_COMPLEX_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_COMPLEX_16 * restrict src;
- GFC_COMPLEX_16 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_c16 (gfc_array_c16 * const restrict,
- gfc_array_c16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_c16);
-
-void
-msum_c16 (gfc_array_c16 * const restrict retarray,
- gfc_array_c16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_16 * restrict dest;
- const GFC_COMPLEX_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_COMPLEX_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_COMPLEX_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_COMPLEX_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_c16 (gfc_array_c16 * const restrict,
- gfc_array_c16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_c16);
-
-void
-ssum_c16 (gfc_array_c16 * const restrict retarray,
- gfc_array_c16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_c16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_c4.c b/gcc-4.4.3/libgfortran/generated/sum_c4.c
deleted file mode 100644
index 158e3020f..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_c4.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4) && defined (HAVE_GFC_COMPLEX_4)
-
-
-extern void sum_c4 (gfc_array_c4 * const restrict,
- gfc_array_c4 * const restrict, const index_type * const restrict);
-export_proto(sum_c4);
-
-void
-sum_c4 (gfc_array_c4 * const restrict retarray,
- gfc_array_c4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_COMPLEX_4 * restrict base;
- GFC_COMPLEX_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_COMPLEX_4 * restrict src;
- GFC_COMPLEX_4 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_c4 (gfc_array_c4 * const restrict,
- gfc_array_c4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_c4);
-
-void
-msum_c4 (gfc_array_c4 * const restrict retarray,
- gfc_array_c4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_4 * restrict dest;
- const GFC_COMPLEX_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_COMPLEX_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_COMPLEX_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_COMPLEX_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_c4 (gfc_array_c4 * const restrict,
- gfc_array_c4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_c4);
-
-void
-ssum_c4 (gfc_array_c4 * const restrict retarray,
- gfc_array_c4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_c4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_c8.c b/gcc-4.4.3/libgfortran/generated/sum_c8.c
deleted file mode 100644
index bc9dc493d..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_c8.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8) && defined (HAVE_GFC_COMPLEX_8)
-
-
-extern void sum_c8 (gfc_array_c8 * const restrict,
- gfc_array_c8 * const restrict, const index_type * const restrict);
-export_proto(sum_c8);
-
-void
-sum_c8 (gfc_array_c8 * const restrict retarray,
- gfc_array_c8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_COMPLEX_8 * restrict base;
- GFC_COMPLEX_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_COMPLEX_8 * restrict src;
- GFC_COMPLEX_8 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_c8 (gfc_array_c8 * const restrict,
- gfc_array_c8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_c8);
-
-void
-msum_c8 (gfc_array_c8 * const restrict retarray,
- gfc_array_c8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_8 * restrict dest;
- const GFC_COMPLEX_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_COMPLEX_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_COMPLEX_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_COMPLEX_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_c8 (gfc_array_c8 * const restrict,
- gfc_array_c8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_c8);
-
-void
-ssum_c8 (gfc_array_c8 * const restrict retarray,
- gfc_array_c8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_COMPLEX_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_c8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_COMPLEX_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_i1.c b/gcc-4.4.3/libgfortran/generated/sum_i1.c
deleted file mode 100644
index 34bbde299..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_i1.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1) && defined (HAVE_GFC_INTEGER_1)
-
-
-extern void sum_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict);
-export_proto(sum_i1);
-
-void
-sum_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_1 * restrict base;
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_1 * restrict src;
- GFC_INTEGER_1 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_i1);
-
-void
-msum_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_1 * restrict dest;
- const GFC_INTEGER_1 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_1 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_1 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_i1 (gfc_array_i1 * const restrict,
- gfc_array_i1 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_i1);
-
-void
-ssum_i1 (gfc_array_i1 * const restrict retarray,
- gfc_array_i1 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_1 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_i1 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_1) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_i16.c b/gcc-4.4.3/libgfortran/generated/sum_i16.c
deleted file mode 100644
index 1c7d6d945..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_i16.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16) && defined (HAVE_GFC_INTEGER_16)
-
-
-extern void sum_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict);
-export_proto(sum_i16);
-
-void
-sum_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_16 * restrict base;
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_16 * restrict src;
- GFC_INTEGER_16 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_i16);
-
-void
-msum_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- const GFC_INTEGER_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_i16 (gfc_array_i16 * const restrict,
- gfc_array_i16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_i16);
-
-void
-ssum_i16 (gfc_array_i16 * const restrict retarray,
- gfc_array_i16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_i16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_i2.c b/gcc-4.4.3/libgfortran/generated/sum_i2.c
deleted file mode 100644
index ffa9846b1..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_i2.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2) && defined (HAVE_GFC_INTEGER_2)
-
-
-extern void sum_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict);
-export_proto(sum_i2);
-
-void
-sum_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_2 * restrict base;
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_2 * restrict src;
- GFC_INTEGER_2 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_i2);
-
-void
-msum_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_2 * restrict dest;
- const GFC_INTEGER_2 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_2 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_2 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_i2 (gfc_array_i2 * const restrict,
- gfc_array_i2 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_i2);
-
-void
-ssum_i2 (gfc_array_i2 * const restrict retarray,
- gfc_array_i2 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_2 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_i2 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_2) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_i4.c b/gcc-4.4.3/libgfortran/generated/sum_i4.c
deleted file mode 100644
index c91cad0c6..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_i4.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4) && defined (HAVE_GFC_INTEGER_4)
-
-
-extern void sum_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict);
-export_proto(sum_i4);
-
-void
-sum_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_4 * restrict base;
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_4 * restrict src;
- GFC_INTEGER_4 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_i4);
-
-void
-msum_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- const GFC_INTEGER_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_i4 (gfc_array_i4 * const restrict,
- gfc_array_i4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_i4);
-
-void
-ssum_i4 (gfc_array_i4 * const restrict retarray,
- gfc_array_i4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_i4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_i8.c b/gcc-4.4.3/libgfortran/generated/sum_i8.c
deleted file mode 100644
index de800b266..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_i8.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8) && defined (HAVE_GFC_INTEGER_8)
-
-
-extern void sum_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict);
-export_proto(sum_i8);
-
-void
-sum_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_INTEGER_8 * restrict base;
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_INTEGER_8 * restrict src;
- GFC_INTEGER_8 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_i8);
-
-void
-msum_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- const GFC_INTEGER_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_INTEGER_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_INTEGER_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_i8 (gfc_array_i8 * const restrict,
- gfc_array_i8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_i8);
-
-void
-ssum_i8 (gfc_array_i8 * const restrict retarray,
- gfc_array_i8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_INTEGER_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_i8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_r10.c b/gcc-4.4.3/libgfortran/generated/sum_r10.c
deleted file mode 100644
index 5039e62a9..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_r10.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10) && defined (HAVE_GFC_REAL_10)
-
-
-extern void sum_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict);
-export_proto(sum_r10);
-
-void
-sum_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_10 * restrict base;
- GFC_REAL_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_10 * restrict src;
- GFC_REAL_10 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_r10);
-
-void
-msum_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_10 * restrict dest;
- const GFC_REAL_10 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_10 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_10 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_r10 (gfc_array_r10 * const restrict,
- gfc_array_r10 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_r10);
-
-void
-ssum_r10 (gfc_array_r10 * const restrict retarray,
- gfc_array_r10 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_10 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_r10 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_10) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_r16.c b/gcc-4.4.3/libgfortran/generated/sum_r16.c
deleted file mode 100644
index 070e0958a..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_r16.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16) && defined (HAVE_GFC_REAL_16)
-
-
-extern void sum_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict);
-export_proto(sum_r16);
-
-void
-sum_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_16 * restrict base;
- GFC_REAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_16 * restrict src;
- GFC_REAL_16 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_r16);
-
-void
-msum_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_16 * restrict dest;
- const GFC_REAL_16 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_16 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_16 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_r16 (gfc_array_r16 * const restrict,
- gfc_array_r16 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_r16);
-
-void
-ssum_r16 (gfc_array_r16 * const restrict retarray,
- gfc_array_r16 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_16 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_r16 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_16) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_r4.c b/gcc-4.4.3/libgfortran/generated/sum_r4.c
deleted file mode 100644
index 24e427a26..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_r4.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_REAL_4)
-
-
-extern void sum_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict);
-export_proto(sum_r4);
-
-void
-sum_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_4 * restrict base;
- GFC_REAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_4 * restrict src;
- GFC_REAL_4 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_r4);
-
-void
-msum_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_4 * restrict dest;
- const GFC_REAL_4 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_4 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_4 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_r4 (gfc_array_r4 * const restrict,
- gfc_array_r4 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_r4);
-
-void
-ssum_r4 (gfc_array_r4 * const restrict retarray,
- gfc_array_r4 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_4 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_r4 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_4) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/sum_r8.c b/gcc-4.4.3/libgfortran/generated/sum_r8.c
deleted file mode 100644
index cb86155fb..000000000
--- a/gcc-4.4.3/libgfortran/generated/sum_r8.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Implementation of the SUM intrinsic
- Copyright 2002, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Paul Brook <paul@nowt.org>
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8) && defined (HAVE_GFC_REAL_8)
-
-
-extern void sum_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict);
-export_proto(sum_r8);
-
-void
-sum_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- const GFC_REAL_8 * restrict base;
- GFC_REAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type len;
- index_type delta;
- index_type dim;
- int continue_loop;
-
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len < 0)
- len = 0;
- delta = array->dim[dim].stride;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- len = 0;
- }
-
- base = array->data;
- dest = retarray->data;
-
- continue_loop = 1;
- while (continue_loop)
- {
- const GFC_REAL_8 * restrict src;
- GFC_REAL_8 result;
- src = base;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta)
- {
-
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- continue_loop = 0;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void msum_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- gfc_array_l1 * const restrict);
-export_proto(msum_r8);
-
-void
-msum_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- gfc_array_l1 * const restrict mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- index_type mstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_8 * restrict dest;
- const GFC_REAL_8 * restrict base;
- const GFC_LOGICAL_1 * restrict mbase;
- int rank;
- int dim;
- index_type n;
- index_type len;
- index_type delta;
- index_type mdelta;
- int mask_kind;
-
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- if (len <= 0)
- return;
-
- mbase = mask->data;
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- mbase = GFOR_POINTER_TO_L1 (mbase, mask_kind);
- else
- runtime_error ("Funny sized logical array");
-
- delta = array->dim[dim].stride;
- mdelta = mask->dim[dim].stride * mask_kind;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
-
- }
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- mstride[n] = mask->dim[n + 1].stride * mask_kind;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] < 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
-
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in SUM intrinsic");
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- for (n=0; n<= rank; n++)
- {
- index_type mask_extent, array_extent;
-
- array_extent = array->dim[n].ubound + 1 - array->dim[n].lbound;
- mask_extent = mask->dim[n].ubound + 1 - mask->dim[n].lbound;
- if (array_extent != mask_extent)
- runtime_error ("Incorrect extent in MASK argument of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) mask_extent, (long int) array_extent);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- if (extent[n] <= 0)
- return;
- }
-
- dest = retarray->data;
- base = array->data;
-
- while (base)
- {
- const GFC_REAL_8 * restrict src;
- const GFC_LOGICAL_1 * restrict msrc;
- GFC_REAL_8 result;
- src = base;
- msrc = mbase;
- {
-
- result = 0;
- if (len <= 0)
- *dest = 0;
- else
- {
- for (n = 0; n < len; n++, src += delta, msrc += mdelta)
- {
-
- if (*msrc)
- result += *src;
- }
- *dest = result;
- }
- }
- /* Advance to the next element. */
- count[0]++;
- base += sstride[0];
- mbase += mstride[0];
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- base -= sstride[n] * extent[n];
- mbase -= mstride[n] * extent[n];
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- {
- /* Break out of the look. */
- base = NULL;
- break;
- }
- else
- {
- count[n]++;
- base += sstride[n];
- mbase += mstride[n];
- dest += dstride[n];
- }
- }
- }
-}
-
-
-extern void ssum_r8 (gfc_array_r8 * const restrict,
- gfc_array_r8 * const restrict, const index_type * const restrict,
- GFC_LOGICAL_4 *);
-export_proto(ssum_r8);
-
-void
-ssum_r8 (gfc_array_r8 * const restrict retarray,
- gfc_array_r8 * const restrict array,
- const index_type * const restrict pdim,
- GFC_LOGICAL_4 * mask)
-{
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type sstride[GFC_MAX_DIMENSIONS];
- index_type dstride[GFC_MAX_DIMENSIONS];
- GFC_REAL_8 * restrict dest;
- index_type rank;
- index_type n;
- index_type dim;
-
-
- if (*mask)
- {
- sum_r8 (retarray, array, pdim);
- return;
- }
- /* Make dim zero based to avoid confusion. */
- dim = (*pdim) - 1;
- rank = GFC_DESCRIPTOR_RANK (array) - 1;
-
- for (n = 0; n < dim; n++)
- {
- sstride[n] = array->dim[n].stride;
- extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- for (n = dim; n < rank; n++)
- {
- sstride[n] = array->dim[n + 1].stride;
- extent[n] =
- array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
-
- if (extent[n] <= 0)
- extent[n] = 0;
- }
-
- if (retarray->data == NULL)
- {
- size_t alloc_size;
-
- for (n = 0; n < rank; n++)
- {
- retarray->dim[n].lbound = 0;
- retarray->dim[n].ubound = extent[n]-1;
- if (n == 0)
- retarray->dim[n].stride = 1;
- else
- retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
- }
-
- retarray->offset = 0;
- retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
-
- alloc_size = sizeof (GFC_REAL_8) * retarray->dim[rank-1].stride
- * extent[rank-1];
-
- if (alloc_size == 0)
- {
- /* Make sure we have a zero-sized array. */
- retarray->dim[0].lbound = 0;
- retarray->dim[0].ubound = -1;
- return;
- }
- else
- retarray->data = internal_malloc_size (alloc_size);
- }
- else
- {
- if (rank != GFC_DESCRIPTOR_RANK (retarray))
- runtime_error ("rank of return array incorrect in"
- " SUM intrinsic: is %ld, should be %ld",
- (long int) (GFC_DESCRIPTOR_RANK (retarray)),
- (long int) rank);
-
- if (unlikely (compile_options.bounds_check))
- {
- for (n=0; n < rank; n++)
- {
- index_type ret_extent;
-
- ret_extent = retarray->dim[n].ubound + 1
- - retarray->dim[n].lbound;
- if (extent[n] != ret_extent)
- runtime_error ("Incorrect extent in return value of"
- " SUM intrinsic in dimension %ld:"
- " is %ld, should be %ld", (long int) n + 1,
- (long int) ret_extent, (long int) extent[n]);
- }
- }
- }
-
- for (n = 0; n < rank; n++)
- {
- count[n] = 0;
- dstride[n] = retarray->dim[n].stride;
- }
-
- dest = retarray->data;
-
- while(1)
- {
- *dest = 0;
- count[0]++;
- dest += dstride[0];
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- dest -= dstride[n] * extent[n];
- n++;
- if (n == rank)
- return;
- else
- {
- count[n]++;
- dest += dstride[n];
- }
- }
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_c10.c b/gcc-4.4.3/libgfortran/generated/transpose_c10.c
deleted file mode 100644
index 338998b3c..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_c10.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-extern void transpose_c10 (gfc_array_c10 * const restrict ret,
- gfc_array_c10 * const restrict source);
-export_proto(transpose_c10);
-
-void
-transpose_c10 (gfc_array_c10 * const restrict ret,
- gfc_array_c10 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_COMPLEX_10 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_COMPLEX_10 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_COMPLEX_10) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_c16.c b/gcc-4.4.3/libgfortran/generated/transpose_c16.c
deleted file mode 100644
index 2ce91c75d..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_c16.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-extern void transpose_c16 (gfc_array_c16 * const restrict ret,
- gfc_array_c16 * const restrict source);
-export_proto(transpose_c16);
-
-void
-transpose_c16 (gfc_array_c16 * const restrict ret,
- gfc_array_c16 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_COMPLEX_16 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_COMPLEX_16 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_COMPLEX_16) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_c4.c b/gcc-4.4.3/libgfortran/generated/transpose_c4.c
deleted file mode 100644
index 1aa980325..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_c4.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-extern void transpose_c4 (gfc_array_c4 * const restrict ret,
- gfc_array_c4 * const restrict source);
-export_proto(transpose_c4);
-
-void
-transpose_c4 (gfc_array_c4 * const restrict ret,
- gfc_array_c4 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_COMPLEX_4 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_COMPLEX_4 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_COMPLEX_4) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_c8.c b/gcc-4.4.3/libgfortran/generated/transpose_c8.c
deleted file mode 100644
index e901fcb24..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_c8.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-extern void transpose_c8 (gfc_array_c8 * const restrict ret,
- gfc_array_c8 * const restrict source);
-export_proto(transpose_c8);
-
-void
-transpose_c8 (gfc_array_c8 * const restrict ret,
- gfc_array_c8 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_COMPLEX_8 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_COMPLEX_8 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_COMPLEX_8) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_i16.c b/gcc-4.4.3/libgfortran/generated/transpose_i16.c
deleted file mode 100644
index d61155dde..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_i16.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-extern void transpose_i16 (gfc_array_i16 * const restrict ret,
- gfc_array_i16 * const restrict source);
-export_proto(transpose_i16);
-
-void
-transpose_i16 (gfc_array_i16 * const restrict ret,
- gfc_array_i16 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_INTEGER_16 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_INTEGER_16 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_i4.c b/gcc-4.4.3/libgfortran/generated/transpose_i4.c
deleted file mode 100644
index f835a39aa..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_i4.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-extern void transpose_i4 (gfc_array_i4 * const restrict ret,
- gfc_array_i4 * const restrict source);
-export_proto(transpose_i4);
-
-void
-transpose_i4 (gfc_array_i4 * const restrict ret,
- gfc_array_i4 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_INTEGER_4 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_INTEGER_4 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_i8.c b/gcc-4.4.3/libgfortran/generated/transpose_i8.c
deleted file mode 100644
index a6b6333da..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_i8.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-extern void transpose_i8 (gfc_array_i8 * const restrict ret,
- gfc_array_i8 * const restrict source);
-export_proto(transpose_i8);
-
-void
-transpose_i8 (gfc_array_i8 * const restrict ret,
- gfc_array_i8 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_INTEGER_8 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_INTEGER_8 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_r10.c b/gcc-4.4.3/libgfortran/generated/transpose_r10.c
deleted file mode 100644
index c58ffa20d..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_r10.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-extern void transpose_r10 (gfc_array_r10 * const restrict ret,
- gfc_array_r10 * const restrict source);
-export_proto(transpose_r10);
-
-void
-transpose_r10 (gfc_array_r10 * const restrict ret,
- gfc_array_r10 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_REAL_10 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_REAL_10 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_REAL_10) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_r16.c b/gcc-4.4.3/libgfortran/generated/transpose_r16.c
deleted file mode 100644
index 5b5915e97..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_r16.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-extern void transpose_r16 (gfc_array_r16 * const restrict ret,
- gfc_array_r16 * const restrict source);
-export_proto(transpose_r16);
-
-void
-transpose_r16 (gfc_array_r16 * const restrict ret,
- gfc_array_r16 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_REAL_16 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_REAL_16 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_REAL_16) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_r4.c b/gcc-4.4.3/libgfortran/generated/transpose_r4.c
deleted file mode 100644
index 6cff00979..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_r4.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-extern void transpose_r4 (gfc_array_r4 * const restrict ret,
- gfc_array_r4 * const restrict source);
-export_proto(transpose_r4);
-
-void
-transpose_r4 (gfc_array_r4 * const restrict ret,
- gfc_array_r4 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_REAL_4 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_REAL_4 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_REAL_4) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/transpose_r8.c b/gcc-4.4.3/libgfortran/generated/transpose_r8.c
deleted file mode 100644
index e66a32c73..000000000
--- a/gcc-4.4.3/libgfortran/generated/transpose_r8.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Implementation of the TRANSPOSE intrinsic
- Copyright 2003, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
- Contributed by Tobias Schlüter
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Libgfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <assert.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-extern void transpose_r8 (gfc_array_r8 * const restrict ret,
- gfc_array_r8 * const restrict source);
-export_proto(transpose_r8);
-
-void
-transpose_r8 (gfc_array_r8 * const restrict ret,
- gfc_array_r8 * const restrict source)
-{
- /* r.* indicates the return array. */
- index_type rxstride, rystride;
- GFC_REAL_8 * restrict rptr;
- /* s.* indicates the source array. */
- index_type sxstride, systride;
- const GFC_REAL_8 *sptr;
-
- index_type xcount, ycount;
- index_type x, y;
-
- assert (GFC_DESCRIPTOR_RANK (source) == 2);
-
- if (ret->data == NULL)
- {
- assert (GFC_DESCRIPTOR_RANK (ret) == 2);
- assert (ret->dtype == source->dtype);
-
- ret->dim[0].lbound = 0;
- ret->dim[0].ubound = source->dim[1].ubound - source->dim[1].lbound;
- ret->dim[0].stride = 1;
-
- ret->dim[1].lbound = 0;
- ret->dim[1].ubound = source->dim[0].ubound - source->dim[0].lbound;
- ret->dim[1].stride = ret->dim[0].ubound+1;
-
- ret->data = internal_malloc_size (sizeof (GFC_REAL_8) * size0 ((array_t *) ret));
- ret->offset = 0;
- } else if (unlikely (compile_options.bounds_check))
- {
- index_type ret_extent, src_extent;
-
- ret_extent = ret->dim[0].ubound + 1 - ret->dim[0].lbound;
- src_extent = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 1: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- ret_extent = ret->dim[1].ubound + 1 - ret->dim[1].lbound;
- src_extent = source->dim[0].ubound + 1 - source->dim[0].lbound;
-
- if (src_extent != ret_extent)
- runtime_error ("Incorrect extent in return value of TRANSPOSE"
- " intrinsic in dimension 2: is %ld,"
- " should be %ld", (long int) src_extent,
- (long int) ret_extent);
-
- }
-
- sxstride = source->dim[0].stride;
- systride = source->dim[1].stride;
- xcount = source->dim[0].ubound + 1 - source->dim[0].lbound;
- ycount = source->dim[1].ubound + 1 - source->dim[1].lbound;
-
- rxstride = ret->dim[0].stride;
- rystride = ret->dim[1].stride;
-
- rptr = ret->data;
- sptr = source->data;
-
- for (y=0; y < ycount; y++)
- {
- for (x=0; x < xcount; x++)
- {
- *rptr = *sptr;
-
- sptr += sxstride;
- rptr += rystride;
- }
- sptr += systride - (sxstride * xcount);
- rptr += rxstride - (rystride * xcount);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_c10.c b/gcc-4.4.3/libgfortran/generated/unpack_c10.c
deleted file mode 100644
index 91ba77269..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_c10.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_10)
-
-void
-unpack0_c10 (gfc_array_c10 *ret, const gfc_array_c10 *vector,
- const gfc_array_l1 *mask, const GFC_COMPLEX_10 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_COMPLEX_10 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_COMPLEX_10 *vptr;
- /* Value for field, this is constant. */
- const GFC_COMPLEX_10 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_COMPLEX_10));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_c10 (gfc_array_c10 *ret, const gfc_array_c10 *vector,
- const gfc_array_l1 *mask, const gfc_array_c10 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_COMPLEX_10 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_COMPLEX_10 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_COMPLEX_10 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_COMPLEX_10));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_c16.c b/gcc-4.4.3/libgfortran/generated/unpack_c16.c
deleted file mode 100644
index 0df76e41b..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_c16.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_16)
-
-void
-unpack0_c16 (gfc_array_c16 *ret, const gfc_array_c16 *vector,
- const gfc_array_l1 *mask, const GFC_COMPLEX_16 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_COMPLEX_16 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_COMPLEX_16 *vptr;
- /* Value for field, this is constant. */
- const GFC_COMPLEX_16 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_COMPLEX_16));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_c16 (gfc_array_c16 *ret, const gfc_array_c16 *vector,
- const gfc_array_l1 *mask, const gfc_array_c16 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_COMPLEX_16 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_COMPLEX_16 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_COMPLEX_16 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_COMPLEX_16));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_c4.c b/gcc-4.4.3/libgfortran/generated/unpack_c4.c
deleted file mode 100644
index f11238832..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_c4.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_4)
-
-void
-unpack0_c4 (gfc_array_c4 *ret, const gfc_array_c4 *vector,
- const gfc_array_l1 *mask, const GFC_COMPLEX_4 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_COMPLEX_4 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_COMPLEX_4 *vptr;
- /* Value for field, this is constant. */
- const GFC_COMPLEX_4 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_COMPLEX_4));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_c4 (gfc_array_c4 *ret, const gfc_array_c4 *vector,
- const gfc_array_l1 *mask, const gfc_array_c4 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_COMPLEX_4 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_COMPLEX_4 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_COMPLEX_4 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_COMPLEX_4));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_c8.c b/gcc-4.4.3/libgfortran/generated/unpack_c8.c
deleted file mode 100644
index 118f2b6a1..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_c8.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_COMPLEX_8)
-
-void
-unpack0_c8 (gfc_array_c8 *ret, const gfc_array_c8 *vector,
- const gfc_array_l1 *mask, const GFC_COMPLEX_8 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_COMPLEX_8 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_COMPLEX_8 *vptr;
- /* Value for field, this is constant. */
- const GFC_COMPLEX_8 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_COMPLEX_8));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_c8 (gfc_array_c8 *ret, const gfc_array_c8 *vector,
- const gfc_array_l1 *mask, const gfc_array_c8 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_COMPLEX_8 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_COMPLEX_8 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_COMPLEX_8 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_COMPLEX_8));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_i1.c b/gcc-4.4.3/libgfortran/generated/unpack_i1.c
deleted file mode 100644
index 974fc3197..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_i1.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_1)
-
-void
-unpack0_i1 (gfc_array_i1 *ret, const gfc_array_i1 *vector,
- const gfc_array_l1 *mask, const GFC_INTEGER_1 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_1 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_1 *vptr;
- /* Value for field, this is constant. */
- const GFC_INTEGER_1 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_1));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_i1 (gfc_array_i1 *ret, const gfc_array_i1 *vector,
- const gfc_array_l1 *mask, const gfc_array_i1 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_1 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_1 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_INTEGER_1 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_1));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_i16.c b/gcc-4.4.3/libgfortran/generated/unpack_i16.c
deleted file mode 100644
index fb1ee8f04..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_i16.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_16)
-
-void
-unpack0_i16 (gfc_array_i16 *ret, const gfc_array_i16 *vector,
- const gfc_array_l1 *mask, const GFC_INTEGER_16 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_16 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_16 *vptr;
- /* Value for field, this is constant. */
- const GFC_INTEGER_16 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_16));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_i16 (gfc_array_i16 *ret, const gfc_array_i16 *vector,
- const gfc_array_l1 *mask, const gfc_array_i16 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_16 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_16 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_INTEGER_16 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_16));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_i2.c b/gcc-4.4.3/libgfortran/generated/unpack_i2.c
deleted file mode 100644
index ecb467244..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_i2.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_2)
-
-void
-unpack0_i2 (gfc_array_i2 *ret, const gfc_array_i2 *vector,
- const gfc_array_l1 *mask, const GFC_INTEGER_2 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_2 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_2 *vptr;
- /* Value for field, this is constant. */
- const GFC_INTEGER_2 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_2));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_i2 (gfc_array_i2 *ret, const gfc_array_i2 *vector,
- const gfc_array_l1 *mask, const gfc_array_i2 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_2 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_2 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_INTEGER_2 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_2));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_i4.c b/gcc-4.4.3/libgfortran/generated/unpack_i4.c
deleted file mode 100644
index cd16e579f..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_i4.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_4)
-
-void
-unpack0_i4 (gfc_array_i4 *ret, const gfc_array_i4 *vector,
- const gfc_array_l1 *mask, const GFC_INTEGER_4 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_4 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_4 *vptr;
- /* Value for field, this is constant. */
- const GFC_INTEGER_4 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_4));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_i4 (gfc_array_i4 *ret, const gfc_array_i4 *vector,
- const gfc_array_l1 *mask, const gfc_array_i4 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_4 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_4 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_INTEGER_4 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_4));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_i8.c b/gcc-4.4.3/libgfortran/generated/unpack_i8.c
deleted file mode 100644
index 422a11c14..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_i8.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_INTEGER_8)
-
-void
-unpack0_i8 (gfc_array_i8 *ret, const gfc_array_i8 *vector,
- const gfc_array_l1 *mask, const GFC_INTEGER_8 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_8 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_8 *vptr;
- /* Value for field, this is constant. */
- const GFC_INTEGER_8 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_8));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_i8 (gfc_array_i8 *ret, const gfc_array_i8 *vector,
- const gfc_array_l1 *mask, const gfc_array_i8 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_INTEGER_8 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_INTEGER_8 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_INTEGER_8 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_INTEGER_8));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_r10.c b/gcc-4.4.3/libgfortran/generated/unpack_r10.c
deleted file mode 100644
index 7903a3c94..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_r10.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_10)
-
-void
-unpack0_r10 (gfc_array_r10 *ret, const gfc_array_r10 *vector,
- const gfc_array_l1 *mask, const GFC_REAL_10 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_REAL_10 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_REAL_10 *vptr;
- /* Value for field, this is constant. */
- const GFC_REAL_10 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_REAL_10));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_r10 (gfc_array_r10 *ret, const gfc_array_r10 *vector,
- const gfc_array_l1 *mask, const gfc_array_r10 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_REAL_10 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_REAL_10 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_REAL_10 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_REAL_10));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_r16.c b/gcc-4.4.3/libgfortran/generated/unpack_r16.c
deleted file mode 100644
index d84ccca7a..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_r16.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_16)
-
-void
-unpack0_r16 (gfc_array_r16 *ret, const gfc_array_r16 *vector,
- const gfc_array_l1 *mask, const GFC_REAL_16 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_REAL_16 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_REAL_16 *vptr;
- /* Value for field, this is constant. */
- const GFC_REAL_16 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_REAL_16));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_r16 (gfc_array_r16 *ret, const gfc_array_r16 *vector,
- const gfc_array_l1 *mask, const gfc_array_r16 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_REAL_16 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_REAL_16 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_REAL_16 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_REAL_16));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_r4.c b/gcc-4.4.3/libgfortran/generated/unpack_r4.c
deleted file mode 100644
index 130acbf53..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_r4.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_4)
-
-void
-unpack0_r4 (gfc_array_r4 *ret, const gfc_array_r4 *vector,
- const gfc_array_l1 *mask, const GFC_REAL_4 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_REAL_4 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_REAL_4 *vptr;
- /* Value for field, this is constant. */
- const GFC_REAL_4 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_REAL_4));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_r4 (gfc_array_r4 *ret, const gfc_array_r4 *vector,
- const gfc_array_l1 *mask, const gfc_array_r4 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_REAL_4 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_REAL_4 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_REAL_4 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_REAL_4));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libgfortran/generated/unpack_r8.c b/gcc-4.4.3/libgfortran/generated/unpack_r8.c
deleted file mode 100644
index fa809555b..000000000
--- a/gcc-4.4.3/libgfortran/generated/unpack_r8.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Specific implementation of the UNPACK intrinsic
- Copyright 2008, 2009 Free Software Foundation, Inc.
- Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>, based on
- unpack_generic.c by Paul Brook <paul@nowt.org>.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 3 of the License, or (at your option) any later version.
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "libgfortran.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-
-#if defined (HAVE_GFC_REAL_8)
-
-void
-unpack0_r8 (gfc_array_r8 *ret, const gfc_array_r8 *vector,
- const gfc_array_l1 *mask, const GFC_REAL_8 *fptr)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_REAL_8 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_REAL_8 *vptr;
- /* Value for field, this is constant. */
- const GFC_REAL_8 fval = *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_REAL_8));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = fval;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-void
-unpack1_r8 (gfc_array_r8 *ret, const gfc_array_r8 *vector,
- const gfc_array_l1 *mask, const gfc_array_r8 *field)
-{
- /* r.* indicates the return array. */
- index_type rstride[GFC_MAX_DIMENSIONS];
- index_type rstride0;
- index_type rs;
- GFC_REAL_8 * restrict rptr;
- /* v.* indicates the vector array. */
- index_type vstride0;
- GFC_REAL_8 *vptr;
- /* f.* indicates the field array. */
- index_type fstride[GFC_MAX_DIMENSIONS];
- index_type fstride0;
- const GFC_REAL_8 *fptr;
- /* m.* indicates the mask array. */
- index_type mstride[GFC_MAX_DIMENSIONS];
- index_type mstride0;
- const GFC_LOGICAL_1 *mptr;
-
- index_type count[GFC_MAX_DIMENSIONS];
- index_type extent[GFC_MAX_DIMENSIONS];
- index_type n;
- index_type dim;
-
- int empty;
- int mask_kind;
-
- empty = 0;
-
- mptr = mask->data;
-
- /* Use the same loop for all logical types, by using GFC_LOGICAL_1
- and using shifting to address size and endian issues. */
-
- mask_kind = GFC_DESCRIPTOR_SIZE (mask);
-
- if (mask_kind == 1 || mask_kind == 2 || mask_kind == 4 || mask_kind == 8
-#ifdef HAVE_GFC_LOGICAL_16
- || mask_kind == 16
-#endif
- )
- {
- /* Do not convert a NULL pointer as we use test for NULL below. */
- if (mptr)
- mptr = GFOR_POINTER_TO_L1 (mptr, mask_kind);
- }
- else
- runtime_error ("Funny sized logical array");
-
- if (ret->data == NULL)
- {
- /* The front end has signalled that we need to populate the
- return array descriptor. */
- dim = GFC_DESCRIPTOR_RANK (mask);
- rs = 1;
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- ret->dim[n].stride = rs;
- ret->dim[n].lbound = 0;
- ret->dim[n].ubound = mask->dim[n].ubound - mask->dim[n].lbound;
- extent[n] = ret->dim[n].ubound + 1;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- rs *= extent[n];
- }
- ret->offset = 0;
- ret->data = internal_malloc_size (rs * sizeof (GFC_REAL_8));
- }
- else
- {
- dim = GFC_DESCRIPTOR_RANK (ret);
- for (n = 0; n < dim; n++)
- {
- count[n] = 0;
- extent[n] = ret->dim[n].ubound + 1 - ret->dim[n].lbound;
- empty = empty || extent[n] <= 0;
- rstride[n] = ret->dim[n].stride;
- fstride[n] = field->dim[n].stride;
- mstride[n] = mask->dim[n].stride * mask_kind;
- }
- if (rstride[0] == 0)
- rstride[0] = 1;
- }
-
- if (empty)
- return;
-
- if (fstride[0] == 0)
- fstride[0] = 1;
- if (mstride[0] == 0)
- mstride[0] = 1;
-
- vstride0 = vector->dim[0].stride;
- if (vstride0 == 0)
- vstride0 = 1;
- rstride0 = rstride[0];
- fstride0 = fstride[0];
- mstride0 = mstride[0];
- rptr = ret->data;
- fptr = field->data;
- vptr = vector->data;
-
- while (rptr)
- {
- if (*mptr)
- {
- /* From vector. */
- *rptr = *vptr;
- vptr += vstride0;
- }
- else
- {
- /* From field. */
- *rptr = *fptr;
- }
- /* Advance to the next element. */
- rptr += rstride0;
- fptr += fstride0;
- mptr += mstride0;
- count[0]++;
- n = 0;
- while (count[n] == extent[n])
- {
- /* When we get to the end of a dimension, reset it and increment
- the next dimension. */
- count[n] = 0;
- /* We could precalculate these products, but this is a less
- frequently used path so probably not worth it. */
- rptr -= rstride[n] * extent[n];
- fptr -= fstride[n] * extent[n];
- mptr -= mstride[n] * extent[n];
- n++;
- if (n >= dim)
- {
- /* Break out of the loop. */
- rptr = NULL;
- break;
- }
- else
- {
- count[n]++;
- rptr += rstride[n];
- fptr += fstride[n];
- mptr += mstride[n];
- }
- }
- }
-}
-
-#endif
-