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.