From 336e24cffcbd49a3061e03a9040906ad9871ebf8 Mon Sep 17 00:00:00 2001 From: Wei Guozhi Date: Wed, 27 Jan 2010 09:19:36 +0000 Subject: [PATCH] re PR target/42671 (Thumb2 generate more instructions than Thumb1 to load GOT address) PR target/42671 * config/arm/arm.c (arm_load_pic_register): Use the same code sequence with Thumb2 as for Thumb1. * config/arm/arm.md (pic_add_dot_plus_four): Enable this pattern for all Thumb varieties. From-SVN: r156276 --- gcc/ChangeLog | 8 ++++++++ gcc/config/arm/arm.c | 5 ++--- gcc/config/arm/arm.md | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7c976bd7b048..16840a862d03 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-01-27 Wei Guozhi + + PR target/42671 + * config/arm/arm.c (arm_load_pic_register): Use the same code + sequence with Thumb2 as for Thumb1. + * config/arm/arm.md (pic_add_dot_plus_four): Enable this pattern + for all Thumb varieties. + 2010-01-26 Rainer Orth * config/sparc/sparc.c (sparc_elf_asm_named_section): Test for diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index ffff9ab2f87a..877e9bbb750a 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -1,6 +1,6 @@ /* Output routines for GCC for ARM. Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) and Martin Simmons (@harleqn.co.uk). @@ -5150,8 +5150,7 @@ arm_load_pic_register (unsigned long saved_regs ATTRIBUTE_UNUSED) } emit_insn (gen_pic_load_addr_thumb2 (pic_reg, pic_rtx)); - emit_insn (gen_pic_load_dot_plus_four (pic_tmp, labelno)); - emit_insn (gen_addsi3 (pic_reg, pic_reg, pic_tmp)); + emit_insn (gen_pic_add_dot_plus_four (pic_reg, pic_reg, labelno)); } else /* TARGET_THUMB1 */ { diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index cbb0a1bdf143..ae1aad2b9fba 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -1,6 +1,6 @@ ;;- Machine description for ARM for GNU compiler ;; Copyright 1991, 1993, 1994, 1995, 1996, 1996, 1997, 1998, 1999, 2000, -;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ;; Free Software Foundation, Inc. ;; Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) ;; and Martin Simmons (@harleqn.co.uk). @@ -5267,7 +5267,7 @@ (const_int 4) (match_operand 2 "" "")] UNSPEC_PIC_BASE))] - "TARGET_THUMB1" + "TARGET_THUMB" "* (*targetm.asm_out.internal_label) (asm_out_file, \"LPIC\", INTVAL (operands[2])); -- 2.43.5