aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2010-08-02 09:51:39 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2010-08-02 09:51:39 +0000
commit906668bb6f8c3f1eb4046dec89e9664554481eaa (patch)
tree27d233f3de06e2d1b08481a8ff99d7a0b0370973 /gcc/final.c
parentf37e278a150cfdb1ead8b5e0662a27f4ee58ae89 (diff)
downloadgcc-906668bb6f8c3f1eb4046dec89e9664554481eaa.zip
gcc-906668bb6f8c3f1eb4046dec89e9664554481eaa.tar.gz
gcc-906668bb6f8c3f1eb4046dec89e9664554481eaa.tar.bz2
final.c (final_scan_insn): Call CC_STATUS_INIT unconditionally.
* final.c (final_scan_insn): Call CC_STATUS_INIT unconditionally. * config/arm/arm.c (thumb1_code): New variable. (arm_override_options): Set it. (thumb1_final_prescan_insn): Keep track of condition code status. (arm_adjust_cost): For Thumb, try to keep cc-setting insns next to jumps that depend on them. * config/arm/arm.h (thumb1_code): Declare variable. (struct machine_function): Guard with #ifndef GENERATOR_FILE. Add members thumb1_cc_insn, thumb1_cc_op0, thumb1_cc_op1 and thumb1_cc_mode. (CC_STATUS_INIT): New macro. * config/arm/constraints.md (Pd): New constraint. * config/arm/predicates.md (noov_comparison_operator): New predicate. * config/arm/arm.md (is_thumb1): New define_attr. (conds): Set default to "clob" when generating Thumb1 code. (thumb1_bicsi3): Renamed from bicsi3. All uses changed. Condition code are set. Use two-operand assembly syntax. (thumb1_subsi3_insn): Condition codes are set. Now a properly named pattern. (thumb1_andsi3_insn, thumb1_iorsi3_insn, thumb1_xorsi3_insn): Condition codes are set. Use two-operand assembly syntax. (zero_extendhisi splitter): Remove constraints. (thumb1_movsi_insn, thumb1_movhi_insn, thumb1_movqi_insn, thumb1_movhf, thumb1_movsf_insn): Set conds attribute as appropriate. (cbranchsi4_insn): Use condition code status from struct machine_function to determine whether the comparison can be eliminated. Discourage the alternative using high registers. (movsi_cbranchsi4, andsi3_cbranch, orrsi3_cbranch_scratch, orrsi3_cbranch, xorsi3_cbranch_scratch, xorsi3_cbranch, bicsi3_cbranch_scratch, bicsi3_cbranch, subsi3_cbranch_scratch, subsi3_cbranch): Delete. (movsi_cbranchsi4 peepholes): Rewrite to generate a sequence of one subtract and one cbranch insn. From-SVN: r162813
Diffstat (limited to 'gcc/final.c')
-rw-r--r--gcc/final.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/final.c b/gcc/final.c
index c35ed7b..f1cff34 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -99,8 +99,8 @@ along with GCC; see the file COPYING3. If not see
#include "sdbout.h"
#endif
-/* If we aren't using cc0, CC_STATUS_INIT shouldn't exist. So define a
- null default for it to save conditionalization later. */
+/* Most ports that aren't using cc0 don't need to define CC_STATUS_INIT.
+ So define a null default for it to save conditionalization later. */
#ifndef CC_STATUS_INIT
#define CC_STATUS_INIT
#endif
@@ -2039,9 +2039,7 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
#endif
}
}
-#ifdef HAVE_cc0
CC_STATUS_INIT;
-#endif
if (!DECL_IGNORED_P (current_function_decl) && LABEL_NAME (insn))
debug_hooks->label (insn);