------- Comment #3 from burnus at gcc dot gnu dot org 2010-03-16 13:55 ------- Variant which also crashes on x86-64 systems:
logical :: l1(4) logical :: l2(4) l1 = (/.TRUE.,.FALSE.,.TRUE.,.FALSE./) l2 = (/.FALSE.,.TRUE.,.FALSE.,.TRUE./) if (dot_product (l1, l2)) call abort () l2 = .TRUE. if (.not.dot_product (l1, l2)) call abort () end test2.f90:8:0: error: integral result type precision does not match field size of BIT_FIELD_REF BIT_FIELD_REF <vect_var_.37_73, 32, 0> f951: note: in statement stmp_var_.36_74 = BIT_FIELD_REF <vect_var_.37_73, 32, 0>; Testing indicates with "gfortran -O3" on x86-64-linux: working 2009-07-10-r149458 failing 2009-07-17-r149734 though builds might be tainted by local patches. Thus, it looks like either a middle-end problem or at least an issue exposed by middle-end modifications. -- burnus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|fortran |middle-end GCC target triplet|spu-unknown-elf | Summary|logical_dot_product.f90: |[4.5 Regression] ICE: |error: integral result type |integral result type |precision does not match |precision does not match |field size of BIT_FIELD_REF |field size of BIT_FIELD_REF Target Milestone|--- |4.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43390