From b49f35d1eea6e6f441538b313f8d6ccf59e829b0 Mon Sep 17 00:00:00 2001 From: pinskia Date: Fri, 4 Jan 2013 22:30:37 +0000 Subject: [PATCH] 2013-01-04 Andrew Pinski * config/aarch64/aarch64.c (aarch64_fixed_condition_code_regs): New function. (TARGET_FIXED_CONDITION_CODE_REGS): Define. 2013-01-04 Andrew Pinski * gcc.target/aarch64/cmp-1.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194920 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/aarch64/aarch64.c | 13 +++++++++++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.target/aarch64/cmp-1.c | 15 +++++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/cmp-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be15aa3b938..c972d9cb13b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-01-04 Andrew Pinski + + * config/aarch64/aarch64.c (aarch64_fixed_condition_code_regs): + New function. + (TARGET_FIXED_CONDITION_CODE_REGS): Define. + 2013-01-04 Uros Bizjak * config/i386/i386.c (ix86_legitimize_address): Call convert_to_mode diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 03b13613c6e..6bba8cc8a6d 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -3041,6 +3041,16 @@ aarch64_const_double_zero_rtx_p (rtx x) return REAL_VALUES_EQUAL (r, dconst0); } +/* Return the fixed registers used for condition codes. */ + +static bool +aarch64_fixed_condition_code_regs (unsigned int *p1, unsigned int *p2) +{ + *p1 = CC_REGNUM; + *p2 = INVALID_REGNUM; + return true; +} + enum machine_mode aarch64_select_cc_mode (RTX_CODE code, rtx x, rtx y) { @@ -7551,6 +7561,9 @@ aarch64_vectorize_vec_perm_const_ok (enum machine_mode vmode, #define TARGET_VECTORIZE_VEC_PERM_CONST_OK \ aarch64_vectorize_vec_perm_const_ok + +#define TARGET_FIXED_CONDITION_CODE_REGS aarch64_fixed_condition_code_regs + struct gcc_target targetm = TARGET_INITIALIZER; #include "gt-aarch64.h" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9835a26ab15..388d1cef143 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-01-04 Andrew Pinski + + * gcc.target/aarch64/cmp-1.c: New testcase. + 2013-01-04 Paul Thomas PR fortran/55172 diff --git a/gcc/testsuite/gcc.target/aarch64/cmp-1.c b/gcc/testsuite/gcc.target/aarch64/cmp-1.c new file mode 100644 index 00000000000..4c082b484ab --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/cmp-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int f(int a, int b) +{ + if(ab) + return -1; + return 0; +} + +/* We should optimize away the second cmp. */ +/* { dg-final { scan-assembler-times "cmp\tw" 1 } } */ + -- 2.11.4.GIT