arm.c (arm_v7m_tune): Set max_insns_skipped to 2.

ChangeLog:
2014-01-17  Zhenqiang Chen  <zhenqiang.chen@arm.com>

	* config/arm/arm.c (arm_v7m_tune): Set max_insns_skipped to 2.
	(thumb2_final_prescan_insn): Set max to MAX_INSN_PER_IT_BLOCK.

testsuite/ChangeLog:
2014-01-17  Zhenqiang Chen  <zhenqiang.chen@arm.com>

	* gcc.target/arm/its.c: New test.

From-SVN: r206698
This commit is contained in:
Zhenqiang Chen 2014-01-17 05:43:45 +00:00 committed by Zhenqiang Chen
parent c68b3f5291
commit 82a197a2bb
4 changed files with 35 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2014-01-17 Zhenqiang Chen <zhenqiang.chen@arm.com>
* config/arm/arm.c (arm_v7m_tune): Set max_insns_skipped to 2.
(thumb2_final_prescan_insn): Set max to MAX_INSN_PER_IT_BLOCK.
2014-01-16 Ilya Enkovich <ilya.enkovich@intel.com>
* ipa-ref.c (ipa_remove_stmt_references): Fix references

View File

@ -1696,7 +1696,7 @@ const struct tune_params arm_v7m_tune =
&v7m_extra_costs,
NULL, /* Sched adj cost. */
1, /* Constant limit. */
5, /* Max cond insns. */
2, /* Max cond insns. */
ARM_PREFETCH_NOT_BENEFICIAL,
true, /* Prefer constant pool. */
arm_cortex_m_branch_cost,
@ -22138,11 +22138,11 @@ thumb2_final_prescan_insn (rtx insn)
int mask;
int max;
/* Maximum number of conditionally executed instructions in a block
is minimum of the two max values: maximum allowed in an IT block
and maximum that is beneficial according to the cost model and tune. */
max = (max_insns_skipped < MAX_INSN_PER_IT_BLOCK) ?
max_insns_skipped : MAX_INSN_PER_IT_BLOCK;
/* max_insns_skipped in the tune was already taken into account in the
cost model of ifcvt pass when generating COND_EXEC insns. At this stage
just emit the IT blocks as we can. It does not make sense to split
the IT blocks. */
max = MAX_INSN_PER_IT_BLOCK;
/* Remove the previous insn from the count of insns to be output. */
if (arm_condexec_count)

View File

@ -1,3 +1,7 @@
2014-01-17 Zhenqiang Chen <zhenqiang.chen@arm.com>
* gcc.target/arm/its.c: New testcase.
2014-01-16 Jan Hubicka <jh@suse.cz>
PR ipa/59775

View File

@ -0,0 +1,20 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
int test (int a, int b)
{
int r;
if (a > 10)
{
r = a - b;
r += 10;
}
else
{
r = b - a;
r -= 7;
}
if (r > 0)
r -= 3;
return r;
}
/* { dg-final { scan-assembler-times "\tit" 2 { target arm_thumb2 } } } */