This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/52307] Segmentation fault in Lapack with -O3 -floop-flatten -floop-strip-mine
- From: "dominiq at lps dot ens.fr" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 19 Feb 2012 13:34:13 +0000
- Subject: [Bug tree-optimization/52307] Segmentation fault in Lapack with -O3 -floop-flatten -floop-strip-mine
- Auto-submitted: auto-generated
- References: <bug-52307-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52307
--- Comment #5 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2012-02-19 13:34:13 UTC ---
In spbtrf.f I have put PRINT statements before and after the loops
DO 90 J = 1, NB
DO 80 I = J + 1, NB
WORK( I, J ) = ZERO
80 CONTINUE
90 CONTINUE
The print after the loops is never reached. The code generated between the last
print before the loops and the first one after with -O2 is
call __gfortran_st_write_done
leal 1(%r14), %edi
movl $1, %eax
movq 168(%rsp), %r8
movl $1, %ecx
L30:
leaq 34(%rax), %rsi
addl $1, %ecx
cmpl %r14d, %ecx
jg L28
leaq (%r8,%rax,4), %rax
movl %r14d, %edx
subl %ecx, %edx
addq %rsi, %rdx
leaq 572(%rsp,%rdx,4), %rdx
.align 4,0x90
L29:
movl $0x00000000, (%rax)
addq $4, %rax
cmpq %rdx, %rax
jne L29
L28:
cmpl %edi, %ecx
movq %rsi, %rax
jne L30
leaq LC14(%rip), %rcx
movl $343, 240(%rsp)
leaq 224(%rsp), %rdi
movq %rcx, 232(%rsp)
movl $128, 224(%rsp)
movl $6, 228(%rsp)
call __gfortran_st_write
When compiled with -O2 -floop-flatten, it is
call __gfortran_st_write_done
movl $2, %ecx
movl $4294967295, %esi
subq %r15, %rcx
movq %rcx, %rdx
movq %rcx, %rax
sarq $63, %rdx
idivq %rsi
testq %rdx, %rdx
je L27
movq %rcx, %rdx
xorq %rsi, %rdx
notq %rdx
shrq $63, %rdx
addq %rdx, %rax
L27:
movabsq $-8589934593, %rcx
movq %r15, %rdx
salq $32, %rdx
addq %r15, %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jge L28
movabsq $-8589934594, %r11
movl $2, %r9d
movq %rax, %r8
leaq -2(%r15), %r10
addq %rdx, %r11
subq %r15, %r9
L31:
leaq (%r9,%r8), %rax
cmpq %r10, %r8
movq %r10, %rdi
cmovle %r8, %rdi
movq %rax, %rsi
sarq $32, %rsi
testl %eax, %eax
setne %al
movzbl %al, %eax
addq %rax, %rsi
cmpq %rdi, %rsi
jg L29
leaq (%rsi,%r8), %rdx
movq %rsi, %rax
salq $5, %rax
leaq 1(%rdx,%rax), %rax
leaq 704(%rsp,%rax,4), %rdx
xorl %eax, %eax
.align 4,0x90
L30:
movl $0x00000000, (%rdx)
leaq (%rax,%rsi), %rcx
addq $132, %rdx
addq $1, %rax
cmpq %rdi, %rcx
jl L30
L29:
leaq 1(%r8), %rax
cmpq %r8, %r11
jle L28
movq %rax, %r8
jmp L31
L28:
leaq LC14(%rip), %rax
movl $343, 240(%rsp)
leaq 224(%rsp), %rdi
movq %rax, 232(%rsp)
movl $128, 224(%rsp)
movl $6, 228(%rsp)
call __gfortran_st_write