diff options
-rw-r--r-- | gcc/ChangeLog | 39 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.md | 17 |
2 files changed, 37 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e95e513d529..7c6e79234be 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-04-11 Andreas Schwab <schwab@linux-m68k.org> + + * config/m68k/m68k.md (rotrhi3+1): Name it rotrhi_lowpart. + (bswapsi2): New expander. + 2012-04-11 H.J. Lu <hongjiu.lu@intel.com> * config/host-linux.c (TRY_EMPTY_VM_SPACE): Defined to @@ -10,7 +15,7 @@ Don't call mark_reg_pointer for incompatible pointer sign extension. - * reginfo.c (reg_scan_mark_refs): Call set_reg_attrs_from_value + * reginfo.c (reg_scan_mark_refs): Call set_reg_attrs_from_value directly. 2012-04-11 Bernd Schmidt <bernds@codesourcery.com> @@ -159,24 +164,24 @@ 2012-04-11 Manuel López-Ibáñez <manu@gcc.gnu.org> PR 24985 - * diagnostic.h (show_caret): Declare. + * diagnostic.h (show_caret): Declare. (caret_max_width): Declare. (diagnostic_show_locus): Declare. - * diagnostic.c (diagnostic_initialize): Initialize to false. - (diagnostic_show_locus): New. - (diagnostic_report_diagnostic): Call it. + * diagnostic.c (diagnostic_initialize): Initialize to false. + (diagnostic_show_locus): New. + (diagnostic_report_diagnostic): Call it. (getenv_columns): New. (adjust_line): New. (diagnostic_set_caret_max_width): New. - * input.c (read_line): New. + * input.c (read_line): New. (location_get_source_line): New. - * input.h (location_get_source_line): Declare. - * toplev.c (general_init): Initialize show_caret from options. - * dwarf2out.c (gen_producer_string): Handle fdiagnostics-show-caret. - * opts.c (common_handle_option): Likewise. + * input.h (location_get_source_line): Declare. + * toplev.c (general_init): Initialize show_caret from options. + * dwarf2out.c (gen_producer_string): Handle fdiagnostics-show-caret. + * opts.c (common_handle_option): Likewise. * pretty-print.h (pp_get_prefix): New. (pp_base_get_prefix): New. - * common.opt (fdiagnostics-show-caret): New option. + * common.opt (fdiagnostics-show-caret): New option. * doc/invoke.texi (fdiagnostics-show-caret): Document it. 2012-04-11 Richard Guenther <rguenther@suse.de> @@ -304,7 +309,7 @@ PR lto/52722 PR lto/51765 - PR lto/52634 + PR lto/52634 * lto-cgraph.c (compute_ltrans_boundary): When alias is in the boundary, add its target too. * lto.c (add_references_to_partition): Add also aliased nodes. @@ -548,14 +553,14 @@ 2012-04-03 Sandeep Kumar Singh <Sandeep.Singh2@kpitcummins.com> * h8300/h8300.c (h8300_current_function_monitor_function_p): - New function. Added to check monitor functions. - (h8300_option_override): Modified to generate error/warning - messages for invalid combinations of different command line + New function. Added to check monitor functions. + (h8300_option_override): Modified to generate error/warning + messages for invalid combinations of different command line options. * h8300/h8300.md: Generate 'rte' for monitor functions. Do not - save EXR on stack for monitor function in case of H8S target + save EXR on stack for monitor function in case of H8S target when "-mno-exr" is passed. - * h8300/h8300-protos.h + * h8300/h8300-protos.h (h8300_current_function_monitor_function_p): Add prototype. * doc/invoke.texi: Document H8S options. diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index e4b4b59afc2..8104e75492b 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -1,6 +1,6 @@ ;;- Machine description for GNU compiler, Motorola 68000 Version ;; Copyright (C) 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, -;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 ;; Free Software Foundation, Inc. ;; This file is part of GCC. @@ -5475,7 +5475,7 @@ "!TARGET_COLDFIRE" "ror%.w %2,%0") -(define_insn "" +(define_insn "rotrhi_lowpart" [(set (strict_low_part (match_operand:HI 0 "register_operand" "+d")) (rotatert:HI (match_dup 0) (match_operand:HI 1 "general_operand" "dI")))] @@ -5495,6 +5495,19 @@ (match_operand:QI 1 "general_operand" "dI")))] "!TARGET_COLDFIRE" "ror%.b %1,%0") + +(define_expand "bswapsi2" + [(set (match_operand:SI 0 "register_operand") + (bswap:SI (match_operand:SI 1 "register_operand")))] + "!TARGET_COLDFIRE" +{ + rtx x = operands[0]; + emit_move_insn (x, operands[1]); + emit_insn (gen_rotrhi_lowpart (gen_lowpart (HImode, x), GEN_INT (8))); + emit_insn (gen_rotlsi3 (x, x, GEN_INT (16))); + emit_insn (gen_rotrhi_lowpart (gen_lowpart (HImode, x), GEN_INT (8))); + DONE; +}) ;; Bit set/clear in memory byte. |