https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77879

            Bug ID: 77879
           Summary: [7 Regression] mpd gets miscompiled since r235622
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: trippels at gcc dot gnu.org
  Target Milestone: ---

Created attachment 39759
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39759&action=edit
unreduced testcase

Since r235622:

commit 73447cc5d17178b0a756be48133e55fdc7574c13
Author: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Apr 29 08:36:49 2016 +0000

    2016-04-29  Richard Biener  <rguent...@suse.de>

            PR tree-optimization/13962
            PR tree-optimization/65686
            * tree-ssa-alias.h (ptrs_compare_unequal): Declare.
            * tree-ssa-alias.c (ptrs_compare_unequal): New function
            using PTA to compare pointers.
            * match.pd: Add pattern for pointer equality compare simplification
            using ptrs_compare_unequal.


mpd (https://www.musicpd.org/) gets miscompiled and crashes on startup:

*** Error in `mpd': free(): invalid pointer: 0x00007fffffffe310 ***
...
Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
58      }
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
#1  0x00007ffff55bed1b in __GI_abort () at abort.c:89
#2  0x00007ffff56028b3 in __libc_message (do_abort=do_abort@entry=2,
fmt=fmt@entry=0x7ffff56ed130 "*** Error in `%s': %s: 0x%s ***\n") at
../sysdeps/posix/libc_fatal.c:175
#3  0x00007ffff560d141 in malloc_printerr (ar_ptr=<optimized out>,
ptr=<optimized out>, str=0x7ffff56ea76a "free(): invalid pointer",
action=<optimized out>) at malloc.c:4983
#4  _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at
malloc.c:3839
#5  0x00007ffff5612e5e in __GI___libc_free (mem=<optimized out>) at
malloc.c:2919
#6  0x000000000042b833 in parse_cmdline (argc=argc@entry=1,
argv=argv@entry=0x7fffffffe6d8, options=options@entry=0x7fffffffe530,
error=...) at src/CommandLine.cxx:342
#7  0x000000000040dde2 in mpd_main (argc=1, argv=0x7fffffffe6d8) at
src/Main.cxx:466
#8  0x00007ffff55a7271 in __libc_start_main (main=0x40d940 <main(int, char**)>,
argc=1, argv=0x7fffffffe6d8, init=<optimized out>, fini=<optimized out>,
    rtld_fini=<optimized out>, stack_end=0x7fffffffe6c8) at
../csu/libc-start.c:286
#9  0x000000000040dc0a in _start () at ../sysdeps/x86_64/start.S:120
...
(gdb) up
#6  0x000000000042b833 in parse_cmdline (argc=argc@entry=1,
argv=argv@entry=0x7fffffffe6d8, options=options@entry=0x7fffffffe530,
error=...) at src/CommandLine.cxx:342
342                     loader.TryFile(GetUserConfigDir(),
(gdb) p GetUserConfigDir()
$1 = {
  value = "\001\000\000\000\000\000\000\000\355A\000\000"
}

without r235622 it returns the correct string:

(gdb) p GetUserConfigDir()                                                      
$1 = {
  value = "/root/.config"
}

An unreduced testcase is attached.

Reply via email to