[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377 --- Comment #17 from Richard Earnshaw --- last patch was for pr37577.
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #16 from tkoenig at gcc dot gnu dot org 2009-04-11 19:48 --- Subject: Bug 37377 Author: tkoenig Date: Sat Apr 11 19:48:19 2009 New Revision: 145965 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=145965 Log: 2009-04-11 Thomas Koenig tkoe...@gcc.gnu.org PR fortran/37377 * libgfortran.h: Introduce new macros GFC_DIMENSION_LBOUND, GFC_DIMENSION_UBOUND,GFC_DIMENSION_STRIDE, GFC_DIMENSION_EXTENT, GFC_DIMENSION_SET, GFC_DESCRIPTOR_LBOUND, GFC_DESCRIPTOR_UBOUND, GFC_DESCRIPTOR_EXTENT, GFC_DESCRIPTOR_EXTENT_BYTES, GFC_DESCRIPTOR_STRIDE, GFC_DESCRIPTOR_STRIDE_BYTES * runtime/in_pack_generic.c (internal_pack): Use new macros for array descriptor access. * runtime/in_unpack_generic.c (internal_unpack): Likewise. * intrinsics/dtime.c (dtime_sub): Likewise. * intrinsics/cshift0 (cshift0): Remove argument size, calculate directly from the array descriptor. Use new macros for array descriptor access. * cshift0_##N: Remove shift argument in call to cshift0. * cshift0_##N_char: Mark array_length as unused. Remove array_length in call to cshift0. * cshift0_##N_char4: Likewise. * intrisics/etime.c: Use new macros for array descriptor access. * intrinsics/stat.c (stat_i4_sub_0): Likewise. (stat_i8_sub_0): Likewise. (fstat_i4_sub): Likewise. (fstat_i8_sub): Likewise. * intrinsics/date_and_time.c (date_and_time): Likewise. (secnds): Likewise. (itime_i4): Likewise. (itime_i8): Likewise. (idate_i4): Likewise. (idate_i8): Likewise. (gmtime_i4): Likewise. (gmtime_i8): Likewise. (ltime_i4): Likewise. (litme_i8): Likewise. * intrinsics/associated.c (associated): Likewise. * intrinsics/eoshift0.c (eoshift0): Likewise. * intriniscs/size.c (size0): Likewise. * intrinsics/random.c (arandom_r4): Likewise. (arandom_r8): Likewise. (arandom_r10): Likewise. (arandom_r16): Likewise. (random_seed_i4): Likewise. (random_seed_i8): Likewise. * io/list_read.c (nml_parse_qualifier): Likewise. (nml_touch_nodes): Likewise. (nml_read_obj): Likewise. (get_name): Likewise. * io/transfer.c (transfer_array): Likewise. (init_loop_spec): Likewise. (st_set_nml_var_dim): Likewise. * io/write.c (nml_write_obj): Likewise. (obj_loop): Likewise. Modified: branches/fortran-dev/libgfortran/ChangeLog.dev branches/fortran-dev/libgfortran/intrinsics/associated.c branches/fortran-dev/libgfortran/intrinsics/cshift0.c branches/fortran-dev/libgfortran/intrinsics/date_and_time.c branches/fortran-dev/libgfortran/intrinsics/dtime.c branches/fortran-dev/libgfortran/intrinsics/eoshift0.c branches/fortran-dev/libgfortran/intrinsics/etime.c branches/fortran-dev/libgfortran/intrinsics/random.c branches/fortran-dev/libgfortran/intrinsics/size.c branches/fortran-dev/libgfortran/intrinsics/stat.c branches/fortran-dev/libgfortran/io/list_read.c branches/fortran-dev/libgfortran/io/transfer.c branches/fortran-dev/libgfortran/io/write.c branches/fortran-dev/libgfortran/libgfortran.h branches/fortran-dev/libgfortran/runtime/in_pack_generic.c branches/fortran-dev/libgfortran/runtime/in_unpack_generic.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|--- |4.4.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #15 from ebotcazou at gcc dot gnu dot org 2008-09-13 08:51 --- This works fine now. -- ebotcazou at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #14 from vmakarov at gcc dot gnu dot org 2008-09-12 22:56 --- Subject: Bug 37377 Author: vmakarov Date: Fri Sep 12 22:55:23 2008 New Revision: 140325 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=140325 Log: 2008-09-12 Vladimir Makarov [EMAIL PROTECTED] PR rtl-opt/37377 * ira-build.c (common_loop_tree_node_dominator): Remove. (copy_live_ranges_to_removed_store_destinations): New function. (regno_top_level_allocno_map): Move to top level from ... (ira_flattening): ... here. Use copy_live_ranges_to_removed_store_destinations. * ira-emit.c (generate_edge_moves): Fix a comment. Modified: trunk/gcc/ChangeLog trunk/gcc/ira-build.c trunk/gcc/ira-emit.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #11 from vmakarov at redhat dot com 2008-09-08 14:11 --- Eric, thanks a lot for your analysis. It was very helpful. I've reproduced the bug. IRA uses live ranges to find conflicts for spill slots during reload. Live ranges for r376 were wrong after IR flattening. We have the following loop structure for the case l8-l7-l0 ^ l24-l22-| and we remove mem-reg coping allocno values from l8 to l0 because allocnos corresponding to r376 are not modified in the loops. Allocno for r376 in l0 got live ranges only from l8 and l7 but not from l22 ... Therefore IRA does not find conflicts with another allocno (r90) in l22 and l24. I'll send a patch to solve the problem today. Just removing the optimization (removing unnecessary mem-reg) is not wise because it has significant impact on the generated code performance. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #12 from ebotcazou at gcc dot gnu dot org 2008-09-08 15:25 --- Eric, thanks a lot for your analysis. It was very helpful. You're welcome! IRA uses live ranges to find conflicts for spill slots during reload. Live ranges for r376 were wrong after IR flattening. We have the following loop structure for the case l8-l7-l0 ^ l24-l22-| and we remove mem-reg coping allocno values from l8 to l0 because allocnos corresponding to r376 are not modified in the loops. Allocno for r376 in l0 got live ranges only from l8 and l7 but not from l22 ... Therefore IRA does not find conflicts with another allocno (r90) in l22 and l24. Yes, my understanding was that the flattening code currently assumes that the moves are always generated at the borders. I'll send a patch to solve the problem today. Just removing the optimization (removing unnecessary mem-reg) is not wise because it has significant impact on the generated code performance. OK, thanks for the explanation. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #13 from hjl at gcc dot gnu dot org 2008-09-09 00:03 --- Subject: Bug 37377 Author: hjl Date: Tue Sep 9 00:01:40 2008 New Revision: 140131 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=140131 Log: 2008-09-08 Vladimir Makarov [EMAIL PROTECTED] PR rtl-opt/37377 * ira-build.c (common_loop_tree_node_dominator): Remove. (copy_live_ranges_to_removed_store_destinations): New function. (regno_top_level_allocno_map): Move to top level from ... (ira_flattening): ... here. Use copy_live_ranges_to_removed_store_destinations. * ira-emit.c (generate_edge_moves): Fix a comment. Modified: branches/ira-merge/gcc/ChangeLog.ira branches/ira-merge/gcc/ira-build.c branches/ira-merge/gcc/ira-emit.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #8 from ebotcazou at gcc dot gnu dot org 2008-09-07 13:58 --- See http://gcc.gnu.org/ml/gcc-testresults/2008-09/msg00384.html Mainline can bootstrap with i586-linux. But there are some additional testsuite failures. Thanks for trying to reproduce, this is very helpful. I'm sorry, I forgot something: you must configure with RTL checking (--enable-checking=yes,rtl) in order to have the miscompilation. I'm going to attach a simplified testcase (which can be compiled by any x86 compiler) and the analysis. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #9 from ebotcazou at gcc dot gnu dot org 2008-09-07 15:45 --- Created an attachment (id=16247) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16247action=view) Simplified testcase. It is still big, but only 2 functions eventually reach IRA. Compile with -O2 -fomit-frame-pointer -mtune=pentium. -- ebotcazou at gcc dot gnu dot org changed: What|Removed |Added Attachment #16225|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #10 from ebotcazou at gcc dot gnu dot org 2008-09-07 16:01 --- The problem is the 4th line in Remove r222:a590-a10(mem) Remove r69:a566-a389(mem) Remove r69:a549-a389(mem) Remove r376:a432-a12(mem) Remove r220:a148-a9(mem) (r373 is now r376 on mainline) generated by generate_edge_moves: /* Actually it is not a optimization we need this code because the memory (remember about equivalent memory) might be ROM (or placed in read only section). */ if (ALLOCNO_HARD_REGNO (dest_allocno) 0 ALLOCNO_HARD_REGNO (src_allocno) = 0 not_modified_p (src_allocno, dest_allocno)) { ALLOCNO_MEM_OPTIMIZED_DEST (src_allocno) = dest_allocno; ALLOCNO_MEM_OPTIMIZED_DEST_P (dest_allocno) = true; if (internal_flag_ira_verbose 3 ira_dump_file != NULL) fprintf (ira_dump_file, Remove r%d:a%d-a%d(mem)\n, regno, ALLOCNO_NUM (src_allocno), ALLOCNO_NUM (dest_allocno)); continue; } Here's the list of allocnos for r376: 579:r376 l205 562:r376 l215 545:r376 l235 526:r376 l245 507:r376 l255 460:r376 l225 446:r376 l195 432:r376 l8 5 398:r376 l7 5 386:r376 l9 mem 366:r376 l13 mem 343:r376 l14 mem 320:r376 l16 mem 295:r376 l17 mem 270:r376 l18 mem 227:r376 l15 mem 213:r376 l12 mem 199:r376 l11 mem 167:r376 l10 mem 12:r376 l0 mem The move putting back r376 to its memory location is not generated on a border of the 5 domain. This domain contains the 2nd and 3rd insns of comment #4. Moreover, the live range of a460 is not added to that of a12 during flattening so r376 is not detected as conflicting with r90 (formerly r85) and r92 (f r87). In the end, the memory location of r376 is reused within the 5 domain without being reset at the border. If I comment out the code quoted above, the compiler bootstraps fine. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #6 from ebotcazou at gcc dot gnu dot org 2008-09-05 06:24 --- I tried revision 140023 on RHEL4U6. I can bootstrap with --enable-languages=c i586-linux. Which branch? I still get the failure on mainline at revision 140025. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #7 from hjl dot tools at gmail dot com 2008-09-05 13:46 --- (In reply to comment #6) I tried revision 140023 on RHEL4U6. I can bootstrap with --enable-languages=c i586-linux. Which branch? I still get the failure on mainline at revision 140025. See http://gcc.gnu.org/ml/gcc-testresults/2008-09/msg00384.html Mainline can bootstrap with i586-linux. But there are some additional testsuite failures. -- hjl dot tools at gmail dot com changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2008-09-05 13:46:52 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #1 from ebotcazou at gcc dot gnu dot org 2008-09-04 20:30 --- It's a miscompilation of df-scan.c:df_reorganize_refs_by_reg by regalloc/reload. -- ebotcazou at gcc dot gnu dot org changed: What|Removed |Added CC||vmakarov at redhat dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #2 from ebotcazou at gcc dot gnu dot org 2008-09-04 20:32 --- Created an attachment (id=16225) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16225action=view) Preprocessed source Sorry, I don't have time to reduce it. Compile with -O2 -fomit-frame-pointer -mtune=pentium. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #3 from ebotcazou at gcc dot gnu dot org 2008-09-04 20:36 --- In the assembly file: .L871: movl%ebx, %eax movl%edx, 20(%ebx) callT.911 movldf, %esi movl60(%esi), %eax movl%esi, 36(%esp) -- save df movl(%eax), %eax movl%eax, 44(%esp) testl %eax, %eax je .L1052 [...] L895: movl4(%ecx), %esi cmpb$0, 22(%esp) je .L896 movl144(%edi), %eax movl(%eax,%esi,4), %eax movl4(%eax), %edx movl(%edx), %eax testl %eax, %eax je .L896 movl16(%esp), %ebp movl8(%ebp), %ebp movl%ebp, 36(%esp) -- overwrite df .p2align 4,,7 .p2align 3 .L897: movl28(%eax), %eax addl$4, %edx incl(%ebp,%eax,4) movl(%edx), %eax testl %eax, %eax jne .L897 .L896: cmpb$0, 23(%esp) je .L898 movl144(%edi), %eax movl(%eax,%esi,4), %eax movl8(%eax), %edx movl(%edx), %eax testl %eax, %eax je .L898 movl16(%esp), %ebp movl8(%ebp), %ebp movl%ebp, 36(%esp) -- overwrite df [...] .L995: movl36(%esp), %ecx -- load df movl60(%ecx), %eax movl(%eax), %eax-- segv (eax == 0) movl%eax, 60(%esp) testl %eax, %eax je .L1059 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #4 from ebotcazou at gcc dot gnu dot org 2008-09-04 20:46 --- Excerpt from 168r.asmcons: (insn:HI 108 107 109 14 /home/eric/svn/gcc/gcc/df-scan.c:1479 (set (reg/f:SI 373 [ df.3419 ]) (mem/f/c/i:SI (symbol_ref:SI (df) [flags 0x40] var_decl 0xf759baa8 df) [166 df+0 S4 A32])) 41 {*movsi_1} (nil)) [...] (insn:HI 301 300 309 49 /home/eric/svn/gcc/gcc/df-scan.c:1508 (set (reg/f:SI 87 [ temp.3399 ]) (mem/s/f:SI (plus:SI (reg/v/f:SI 214 [ ref_info ]) (const_int 8 [0x8])) [160 variable.count+0 S4 A32])) 41 {*movsi_1} (nil)) [...] (insn:HI 324 323 332 53 /home/eric/svn/gcc/gcc/df-scan.c:1514 (set (reg/f:SI 85 [ temp.3405 ]) (mem/s/f:SI (plus:SI (reg/v/f:SI 214 [ ref_info ]) (const_int 8 [0x8])) [160 variable.count+0 S4 A32])) 41 {*movsi_1} (nil)) Excerpt from 174r.ira: changing reg in insn 324 changing reg in insn 1590 Assigning 85(freq=162) slot 14 of 373 Register 85 now on stack. changing reg in insn 301 changing reg in insn 1579 Assigning 87(freq=162) slot 14 of 85 373 Register 87 now on stack. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
--- Comment #5 from hjl dot tools at gmail dot com 2008-09-05 04:47 --- I tried revision 140023 on RHEL4U6. I can bootstrap with --enable-languages=c i586-linux. -- hjl dot tools at gmail dot com changed: What|Removed |Added CC||hjl dot tools at gmail dot ||com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377