The gcc.dg/vect/vect-cond-[123].c tests started failing on IA64 Linux and HP-UX starting with version 5150588, Bernd Schmidt's auto-increment changes. The tests in question don't actually get vectorized and the bug can be reproduced using just -O1 or -O2 optimization. (-mlp64 is also needed on HP-UX) I will attach a slightly cutdown version of vect-cond-1.c that will abort when compiled with -O1 or -O2 but not with -O0.
Created attachment 18591 [details] test case that aborts when compiled with -O1 or -O2
Created attachment 18601 [details] A patch that fixes the immediate problem This is a bug in the ia64 backend, which puts autoinc addressing modes into COND_EXECs, failing to notice that they have side effects. This part of the problem can be fixed with the patch I'm attaching, but it doesn't work: the rest of the ia64 backend expects that this kind of insn can always be split. At this point I'm leaving it for an ia64 maintainer to fix.
Subject: Bug 41365 Author: sje Date: Tue Sep 29 22:21:27 2009 New Revision: 152306 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=152306 Log: 2009-09-29 Steve Ellcey <sje@cup.hp.com> Alexander Monakov <amonakov@ispras.ru> PR target/41365 * config/ia64/predicates.md (not_postinc_destination_operand): New. (not_postinc_memory_operand): New. (not_postinc_move_operand): New. * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement. (*cmovsi_internal): Ditto. Modified: trunk/gcc/ChangeLog trunk/gcc/config/ia64/ia64.md trunk/gcc/config/ia64/predicates.md
Fixed.