------- Comment #23 from dir at lanl dot gov 2006-05-26 19:36 ------- Here is the good and the bad -
[dranta:~/tests/gfortran-D] dir% gfortran -O1 -save-temps -o write_logical2 write_logical2.f90 [dranta:~/tests/gfortran-D] dir% write_logical2 At line 9 of file write_logical2.f90 Fortran runtime error: Missing initial left parenthesis in format [dranta:~/tests/gfortran-D] dir% cat write_logical2.f90 ! PR 14334, L edit descriptor does not work ! ! this test uses L1 and L4 to print TRUE and FALSE logical true,false character*10 b true = .TRUE. false = .FALSE. b = '' write (b, '(L1)') true if (b(1:1) .ne. 'T') call abort end [dranta:~/tests/gfortran-D] dir% cat write_logical2.s .machine ppc .text .align 2 .globl _MAIN__ _MAIN__: mflr r0 stmw r28,-16(r1) stw r0,8(r1) stwu r1,-384(r1) bcl 20,31,"L00000000001$pb" "L00000000001$pb": mflr r31 li r3,70 li r4,127 li r5,0 bl L__gfortran_set_std$stub li r0,1 stw r0,56(r1) addi r28,r1,60 addis r29,r31,ha16(LANCHOR0-"L00000000001$pb") la r29,lo16(LANCHOR0-"L00000000001$pb")(r29) li r3,10 mr r4,r28 li r5,0 mr r6,r29 bl L__gfortran_copy_string$stub addis r2,r31,ha16(LC1-"L00000000001$pb") la r2,lo16(LC1-"L00000000001$pb")(r2) stw r2,80(r1) li r0,9 stw r0,84(r1) stw r28,132(r1) li r0,10 stw r0,136(r1) li r0,0 stw r0,112(r1) stw r0,76(r1) stw r29,116(r1) li r0,4 stw r0,120(r1) li r0,20480 stw r0,72(r1) addi r29,r1,72 mr r3,r29 bl L__gfortran_st_write$stub mr r3,r29 addi r4,r1,56 li r5,4 bl L__gfortran_transfer_logical$stub mr r3,r29 bl L__gfortran_st_write_done$stub lbz r0,60(r1) cmpwi cr7,r0,84 beq+ cr7,L4 bl L__gfortran_abort$stub L4: addi r1,r1,384 lwz r0,8(r1) mtlr r0 lmw r28,-16(r1) blr .const .align 2 .set LANCHOR0, . + 0 LC0: .space 1 LC2: .ascii "(L1)" .cstring .align 2 LC1: .ascii "write_logical2.f90\0" .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_transfer_logical$stub: .indirect_symbol __gfortran_transfer_logical mflr r0 bcl 20,31,"L00000000001$spb" "L00000000001$spb": mflr r11 addis r11,r11,ha16(L__gfortran_transfer_logical$lazy_ptr-"L00000000001$spb") mtlr r0 lwzu r12,lo16(L__gfortran_transfer_logical$lazy_ptr-"L00000000001$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_transfer_logical$lazy_ptr: .indirect_symbol __gfortran_transfer_logical .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_st_write_done$stub: .indirect_symbol __gfortran_st_write_done mflr r0 bcl 20,31,"L00000000002$spb" "L00000000002$spb": mflr r11 addis r11,r11,ha16(L__gfortran_st_write_done$lazy_ptr-"L00000000002$spb") mtlr r0 lwzu r12,lo16(L__gfortran_st_write_done$lazy_ptr-"L00000000002$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_st_write_done$lazy_ptr: .indirect_symbol __gfortran_st_write_done .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_abort$stub: .indirect_symbol __gfortran_abort mflr r0 bcl 20,31,"L00000000003$spb" "L00000000003$spb": mflr r11 addis r11,r11,ha16(L__gfortran_abort$lazy_ptr-"L00000000003$spb") mtlr r0 lwzu r12,lo16(L__gfortran_abort$lazy_ptr-"L00000000003$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_abort$lazy_ptr: .indirect_symbol __gfortran_abort .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_set_std$stub: .indirect_symbol __gfortran_set_std mflr r0 bcl 20,31,"L00000000004$spb" "L00000000004$spb": mflr r11 addis r11,r11,ha16(L__gfortran_set_std$lazy_ptr-"L00000000004$spb") mtlr r0 lwzu r12,lo16(L__gfortran_set_std$lazy_ptr-"L00000000004$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_set_std$lazy_ptr: .indirect_symbol __gfortran_set_std .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_copy_string$stub: .indirect_symbol __gfortran_copy_string mflr r0 bcl 20,31,"L00000000005$spb" "L00000000005$spb": mflr r11 addis r11,r11,ha16(L__gfortran_copy_string$lazy_ptr-"L00000000005$spb") mtlr r0 lwzu r12,lo16(L__gfortran_copy_string$lazy_ptr-"L00000000005$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_copy_string$lazy_ptr: .indirect_symbol __gfortran_copy_string .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_st_write$stub: .indirect_symbol __gfortran_st_write mflr r0 bcl 20,31,"L00000000006$spb" "L00000000006$spb": mflr r11 addis r11,r11,ha16(L__gfortran_st_write$lazy_ptr-"L00000000006$spb") mtlr r0 lwzu r12,lo16(L__gfortran_st_write$lazy_ptr-"L00000000006$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_st_write$lazy_ptr: .indirect_symbol __gfortran_st_write .long dyld_stub_binding_helper .subsections_via_symbols [dranta:~/tests/gfortran-D] dir% cat write_logical2.s.good .machine ppc .const .align 2 LC0: .space 1 .cstring .align 2 LC1: .ascii "write_logical2.f90\0" .const .align 2 LC2: .ascii "(L1)" .text .align 2 .globl _MAIN__ _MAIN__: mflr r0 stmw r29,-12(r1) stw r0,8(r1) stwu r1,-384(r1) bcl 20,31,"L00000000001$pb" "L00000000001$pb": mflr r31 li r3,70 li r4,127 li r5,0 bl L__gfortran_set_std$stub li r0,1 stw r0,56(r1) addi r29,r1,60 li r3,10 mr r4,r29 li r5,0 addis r6,r31,ha16(LC0-"L00000000001$pb") la r6,lo16(LC0-"L00000000001$pb")(r6) bl L__gfortran_copy_string$stub addis r2,r31,ha16(LC1-"L00000000001$pb") la r2,lo16(LC1-"L00000000001$pb")(r2) stw r2,80(r1) li r0,9 stw r0,84(r1) stw r29,132(r1) li r0,10 stw r0,136(r1) li r0,0 stw r0,112(r1) stw r0,76(r1) addis r2,r31,ha16(LC2-"L00000000001$pb") la r2,lo16(LC2-"L00000000001$pb")(r2) stw r2,116(r1) li r0,4 stw r0,120(r1) li r0,20480 stw r0,72(r1) addi r29,r1,72 mr r3,r29 bl L__gfortran_st_write$stub mr r3,r29 addi r4,r1,56 li r5,4 bl L__gfortran_transfer_logical$stub mr r3,r29 bl L__gfortran_st_write_done$stub lbz r0,60(r1) cmpwi cr7,r0,84 beq+ cr7,L4 bl L__gfortran_abort$stub L4: addi r1,r1,384 lwz r0,8(r1) mtlr r0 lmw r29,-12(r1) blr .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_transfer_logical$stub: .indirect_symbol __gfortran_transfer_logical mflr r0 bcl 20,31,"L00000000001$spb" "L00000000001$spb": mflr r11 addis r11,r11,ha16(L__gfortran_transfer_logical$lazy_ptr-"L00000000001$spb") mtlr r0 lwzu r12,lo16(L__gfortran_transfer_logical$lazy_ptr-"L00000000001$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_transfer_logical$lazy_ptr: .indirect_symbol __gfortran_transfer_logical .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_st_write_done$stub: .indirect_symbol __gfortran_st_write_done mflr r0 bcl 20,31,"L00000000002$spb" "L00000000002$spb": mflr r11 addis r11,r11,ha16(L__gfortran_st_write_done$lazy_ptr-"L00000000002$spb") mtlr r0 lwzu r12,lo16(L__gfortran_st_write_done$lazy_ptr-"L00000000002$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_st_write_done$lazy_ptr: .indirect_symbol __gfortran_st_write_done .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_abort$stub: .indirect_symbol __gfortran_abort mflr r0 bcl 20,31,"L00000000003$spb" "L00000000003$spb": mflr r11 addis r11,r11,ha16(L__gfortran_abort$lazy_ptr-"L00000000003$spb") mtlr r0 lwzu r12,lo16(L__gfortran_abort$lazy_ptr-"L00000000003$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_abort$lazy_ptr: .indirect_symbol __gfortran_abort .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_set_std$stub: .indirect_symbol __gfortran_set_std mflr r0 bcl 20,31,"L00000000004$spb" "L00000000004$spb": mflr r11 addis r11,r11,ha16(L__gfortran_set_std$lazy_ptr-"L00000000004$spb") mtlr r0 lwzu r12,lo16(L__gfortran_set_std$lazy_ptr-"L00000000004$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_set_std$lazy_ptr: .indirect_symbol __gfortran_set_std .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_copy_string$stub: .indirect_symbol __gfortran_copy_string mflr r0 bcl 20,31,"L00000000005$spb" "L00000000005$spb": mflr r11 addis r11,r11,ha16(L__gfortran_copy_string$lazy_ptr-"L00000000005$spb") mtlr r0 lwzu r12,lo16(L__gfortran_copy_string$lazy_ptr-"L00000000005$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_copy_string$lazy_ptr: .indirect_symbol __gfortran_copy_string .long dyld_stub_binding_helper .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L__gfortran_st_write$stub: .indirect_symbol __gfortran_st_write mflr r0 bcl 20,31,"L00000000006$spb" "L00000000006$spb": mflr r11 addis r11,r11,ha16(L__gfortran_st_write$lazy_ptr-"L00000000006$spb") mtlr r0 lwzu r12,lo16(L__gfortran_st_write$lazy_ptr-"L00000000006$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L__gfortran_st_write$lazy_ptr: .indirect_symbol __gfortran_st_write .long dyld_stub_binding_helper .subsections_via_symbols [dranta:~/tests/gfortran-D] dir% diff -w write_logical2.s.good write_logical2.s 2,13d1 < .const < .align 2 < LC0: < .space 1 < .cstring < .align 2 < LC1: < .ascii "write_logical2.f90\0" < .const < .align 2 < LC2: < .ascii "(L1)" 19c7 < stmw r29,-12(r1) --- > stmw r28,-16(r1) 31c19,21 < addi r29,r1,60 --- > addi r28,r1,60 > addis r29,r31,ha16(LANCHOR0-"L00000000001$pb") > la r29,lo16(LANCHOR0-"L00000000001$pb")(r29) 33c23 < mr r4,r29 --- > mr r4,r28 35,36c25 < addis r6,r31,ha16(LC0-"L00000000001$pb") < la r6,lo16(LC0-"L00000000001$pb")(r6) --- > mr r6,r29 43c32 < stw r29,132(r1) --- > stw r28,132(r1) 49,51c38 < addis r2,r31,ha16(LC2-"L00000000001$pb") < la r2,lo16(LC2-"L00000000001$pb")(r2) < stw r2,116(r1) --- > stw r29,116(r1) 73c60 < lmw r29,-12(r1) --- > lmw r28,-16(r1) 74a62,72 > .const > .align 2 > .set LANCHOR0, . + 0 > LC0: > .space 1 > LC2: > .ascii "(L1)" > .cstring > .align 2 > LC1: > .ascii "write_logical2.f90\0" [dranta:~/tests/gfortran-D] dir% -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27683