| ! { dg-do compile } |
| ! { dg-options "-g -fdec-structure -std=legacy" } |
| ! |
| ! Test a regression where typespecs of unions containing character buffers of |
| ! different lengths where copied, resulting in a bad gimple tree state. |
| ! |
| |
| subroutine sub2 (otherbuf) |
| integer, parameter :: L_bbuf = 65536 |
| integer, parameter :: L_bbuf2 = 24 |
| |
| structure /buffer2/ |
| union |
| map |
| character(L_bbuf2) sbuf |
| end map |
| end union |
| end structure |
| structure /buffer/ |
| union |
| map |
| character(L_bbuf) sbuf |
| end map |
| end union |
| end structure |
| |
| record /buffer/ buf1 |
| record /buffer2/ buf2 |
| common /c/ buf1, buf2 |
| |
| record /buffer2/ otherbuf |
| end subroutine |
| |
| subroutine sub() |
| integer, parameter :: L_bbuf = 65536 |
| integer, parameter :: L_bbuf2 = 24 |
| |
| structure /buffer2/ |
| union |
| map |
| character(L_bbuf2) sbuf |
| end map |
| end union |
| end structure |
| structure /buffer/ |
| union |
| map |
| character(L_bbuf) sbuf |
| end map |
| end union |
| end structure |
| |
| record /buffer/ buf1 |
| record /buffer2/ buf2 |
| common /c/ buf1, buf2 |
| |
| call sub2 (buf1) ! { dg-warning "Type mismatch" } |
| return |
| end subroutine |
| |
| call sub() |
| |
| end |