This breaks g++.dg/torture/pr64669.C with -O3 on ia64: $ gcc/xg++ -Bgcc/ ../../gcc/gcc/testsuite/g++.dg/torture/pr64669.C -nostdinc++ -Iia64-suse-linux/libstdc++-v3/include/ia64-suse-linux -Iia64-suse-linux/libstdc++-v3/include -I../libstdc++-v3/libsupc++ -I../libstdc++-v3/include/backward -I../libstdc++-v3/testsuite/util -O3 -S -o pr64669.s ../../gcc/gcc/testsuite/g++.dg/torture/pr64669.C: In member function ‘const char* Lex::advance_one_char(const char*, bool, unsigned int*, bool*)’: ../../gcc/gcc/testsuite/g++.dg/torture/pr64669.C:65:1: error: qsort comparator non-negative on sorted output: 1 } ^ during RTL pass: mach ../../gcc/gcc/testsuite/g++.dg/torture/pr64669.C:65:1: internal compiler error: qsort checking failed 0x40000000001cc80f qsort_chk_error ../../gcc/vec.c:222 0x40000000025d20cf qsort_chk(void*, unsigned long, unsigned long, int (*)(void const*, void const*)) ../../gcc/vec.c:274 0x40000000014f680f vec<_expr*, va_heap, vl_embed>::qsort(int (*)(void const*, void const*)) ../../gcc/vec.h:973 0x40000000014f680f vec<_expr*, va_heap, vl_ptr>::qsort(int (*)(void const*, void const*)) ../../gcc/vec.h:1735 0x40000000014f680f fill_vec_av_set ../../gcc/sel-sched.c:3725 0x40000000014fc59f fill_ready_list ../../gcc/sel-sched.c:4022 0x40000000014fc59f find_best_expr ../../gcc/sel-sched.c:4382 0x40000000014fc59f fill_insns ../../gcc/sel-sched.c:5539 0x40000000014fc59f schedule_on_fences ../../gcc/sel-sched.c:7356 0x40000000014fc59f sel_sched_region_2 ../../gcc/sel-sched.c:7494 0x4000000001503acf sel_sched_region_1 ../../gcc/sel-sched.c:7536 0x4000000001503acf sel_sched_region(int) ../../gcc/sel-sched.c:7637 0x4000000001504e6f run_selective_scheduling() ../../gcc/sel-sched.c:7713 0x4000000001df9bdf ia64_reorg ../../gcc/config/ia64/ia64.c:9854 0x400000000146d40f execute ../../gcc/reorg.c:3947
Andreas. -- Andreas Schwab, SUSE Labs, sch...@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."