aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2015-10-06 16:39:00 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2015-10-06 16:39:00 +0000
commitfabc9e2248253f837eeb6efdee3f82497b24ee96 (patch)
tree02cf3c219e197b007b2a20fb290309ce3f61777c /gcc
parent7c9bb341b06dba75504f91d485907a4562d11347 (diff)
downloadgcc-fabc9e2248253f837eeb6efdee3f82497b24ee96.zip
gcc-fabc9e2248253f837eeb6efdee3f82497b24ee96.tar.gz
gcc-fabc9e2248253f837eeb6efdee3f82497b24ee96.tar.bz2
arm.c (arm_emit_probe_stack_range): Adjust comment.
* config/arm/arm.c (arm_emit_probe_stack_range): Adjust comment. (output_probe_stack_range): Rotate the loop and simplify. (thumb1_expand_prologue): Tweak sorry message. * config/arm/arm.md (probe_stack): Use bare string. From-SVN: r228534
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/arm/arm.c25
-rw-r--r--gcc/config/arm/arm.md4
3 files changed, 21 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2de844f..6204617 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2015-10-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/arm/arm.c (arm_emit_probe_stack_range): Adjust comment.
+ (output_probe_stack_range): Rotate the loop and simplify.
+ (thumb1_expand_prologue): Tweak sorry message.
+ * config/arm/arm.md (probe_stack): Use bare string.
+
2015-10-06 Nick Clifton <nickc@redhat.com>
* config.gcc (lm32-elf): Add newlib-stdint.h to tm_file.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 87e55e9..0bf1164 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -21262,11 +21262,12 @@ arm_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size,
/* Step 3: the loop
- while (TEST_ADDR != LAST_ADDR)
+ do
{
TEST_ADDR = TEST_ADDR + PROBE_INTERVAL
probe at TEST_ADDR
}
+ while (TEST_ADDR != LAST_ADDR)
probes at FIRST + N * PROBE_INTERVAL for values of N from 1
until it is equal to ROUNDED_SIZE. */
@@ -21311,22 +21312,22 @@ output_probe_stack_range (rtx reg1, rtx reg2)
ASM_GENERATE_INTERNAL_LABEL (loop_lab, "LPSRL", labelno++);
+ /* Loop. */
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, loop_lab);
- /* Test if TEST_ADDR == LAST_ADDR. */
+ /* TEST_ADDR = TEST_ADDR + PROBE_INTERVAL. */
xops[0] = reg1;
- xops[1] = reg2;
- output_asm_insn ("cmp\t%0, %1", xops);
+ xops[1] = GEN_INT (PROBE_INTERVAL);
+ output_asm_insn ("sub\t%0, %0, %1", xops);
- if (TARGET_THUMB2)
- fputs ("\tittt\tne\n", asm_out_file);
+ /* Probe at TEST_ADDR. */
+ output_asm_insn ("str\tr0, [%0, #0]", xops);
- /* TEST_ADDR = TEST_ADDR + PROBE_INTERVAL. */
- xops[1] = GEN_INT (PROBE_INTERVAL);
- output_asm_insn ("subne\t%0, %0, %1", xops);
+ /* Test if TEST_ADDR == LAST_ADDR. */
+ xops[1] = reg2;
+ output_asm_insn ("cmp\t%0, %1", xops);
- /* Probe at TEST_ADDR and branch. */
- output_asm_insn ("strne\tr0, [%0, #0]", xops);
+ /* Branch. */
fputs ("\tbne\t", asm_out_file);
assemble_name_raw (asm_out_file, loop_lab);
fputc ('\n', asm_out_file);
@@ -24869,7 +24870,7 @@ thumb1_expand_prologue (void)
/* If we have a frame, then do stack checking. FIXME: not implemented. */
if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK && size)
- sorry ("-fstack-check=specific for THUMB1");
+ sorry ("-fstack-check=specific for Thumb-1");
amount = offsets->outgoing_args - offsets->saved_regs;
amount -= 4 * thumb1_extra_regs_pushed (offsets, true);
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index b4c555b..c5985bb 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -8262,9 +8262,7 @@
[(set (match_operand 0 "memory_operand" "=m")
(unspec [(const_int 0)] UNSPEC_PROBE_STACK))]
"TARGET_32BIT"
-{
- return "str%?\\tr0, %0";
-}
+ "str%?\\tr0, %0"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
)