| /* { dg-do compile } */ |
| /* { dg-options "-O -w" } */ |
| |
| /* This code snippet from glibc 2.3.5 was causing an ICE during |
| optimization because we were failing to update the SSA form for |
| stale name tags. These are tags that are associated with SSA pointers |
| that have been removed from the IL. This was causing the SSA |
| verifier to fail before we had a chance to run the cleanup pass that |
| finally removes all the remaining PHI nodes for the stale name tag. */ |
| struct _IO_wide_data |
| { |
| }; |
| struct _IO_FILE { |
| }; |
| typedef struct _IO_FILE _IO_FILE; |
| struct _IO_jump_t |
| { |
| }; |
| struct _IO_FILE_plus |
| { |
| _IO_FILE file; |
| }; |
| extern const struct _IO_jump_t _IO_file_jumps_maybe_mmap ; |
| extern const struct _IO_jump_t _IO_wfile_jumps; |
| extern const struct _IO_jump_t _IO_wfile_jumps_maybe_mmap ; |
| |
| _IO_new_fdopen (fd, mode) |
| const char *mode; |
| { |
| int read_write; |
| int posix_mode = 0; |
| struct locked_FILE |
| { |
| struct _IO_FILE_plus fp; |
| struct _IO_wide_data wd; |
| } *new_f; |
| int fd_flags; |
| int use_mmap = 0; |
| { |
| } |
| { |
| switch (*++mode) |
| { |
| case '\0': |
| use_mmap = 1; |
| } |
| } |
| if (((fd_flags & 0003) == 00 && !(read_write & 8)) |
| || ((fd_flags & 0003) == 01 && !(read_write & 4))) |
| { |
| } |
| if ((posix_mode & 02000) && !(fd_flags & 02000)) |
| return ((void *)0); |
| _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, |
| (use_mmap && (read_write & 8)) |
| ? &_IO_wfile_jumps_maybe_mmap : |
| &_IO_wfile_jumps); |
| (use_mmap && (read_write & 8)) ? &_IO_file_jumps_maybe_mmap : |
| _IO_file_init (&new_f->fp); |
| } |