From e7ced4a125c9bf50a303556a6c4985744e6285d0 Mon Sep 17 00:00:00 2001 From: segher Date: Thu, 2 Oct 2014 13:40:53 +0000 Subject: [PATCH] Add file I forgot to add before. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215802 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/gcc.dg/combine-clobber.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/combine-clobber.c diff --git a/gcc/testsuite/gcc.dg/combine-clobber.c b/gcc/testsuite/gcc.dg/combine-clobber.c new file mode 100644 index 00000000000..bf0d88cc756 --- /dev/null +++ b/gcc/testsuite/gcc.dg/combine-clobber.c @@ -0,0 +1,22 @@ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -fdump-rtl-combine-all" } */ + +/* This testcase checks if combine tries to combine sequences where the last + insn has a clobber of a reg, and a previous insn sets that reg. + + In this case, we have three insns + + (set flags (compare a b)) + (set tmp (eq flags 0)) + (parallel [(set dst (neg tmp)) + (clobber flags)]) + + Previously, combine would not try the three-insn combination because of + the set and clobber of flags. Now it does. Test that. */ + + +int f(int a, int b) { return -(a == b); } + +/* This regexp works for reg parameters as well as mem parameters. */ +/* { dg-final { scan-rtl-dump {neg:SI[^:]*eq:SI[^:]*:SI} "combine" } } */ +/* { dg-final { cleanup-rtl-dump "combine" } } */ -- 2.11.4.GIT