aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Gretton-Dann <matthew.gretton-dann@linaro.org>2013-03-11 14:32:10 +0000
committerMatthew Gretton-Dann <matthew.gretton-dann@linaro.org>2013-03-11 14:32:10 +0000
commitc8709b4ebbe88d5e637d1087fbe068913e09fa2a (patch)
tree4b8f706a7bcccd5f853a091f0e174ab5ad8c4653
parent1cc341b8987092b7bc9ae48993b8a432ca04b960 (diff)
parente545850651346c3da1f0dc326e2763c383fd76ad (diff)
Merge from FSF arm/aarch64-4.7-branch r196014..r196225.
-rw-r--r--ChangeLog.linaro29
-rw-r--r--gcc/ChangeLog.aarch6419
-rw-r--r--gcc/common/config/aarch64/aarch64-common.c11
-rw-r--r--gcc/config/aarch64/aarch64-elf.h9
-rw-r--r--gcc/config/aarch64/aarch64-simd-builtins.def19
-rw-r--r--gcc/config/aarch64/aarch64.c11
-rw-r--r--gcc/config/aarch64/t-aarch643
-rw-r--r--gcc/testsuite/ChangeLog.aarch647
-rw-r--r--gcc/testsuite/g++.dg/abi/aarch64_guard1.C2
9 files changed, 108 insertions, 2 deletions
diff --git a/ChangeLog.linaro b/ChangeLog.linaro
index baeb600bfa4..a5091bae872 100644
--- a/ChangeLog.linaro
+++ b/ChangeLog.linaro
@@ -1,5 +1,34 @@
2013-02-26 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org>
+ Merge from FSF arm/aarch64-4.7-branch r196014..r196225.
+
+ Backport /work/sources/gcc-bzr/arm-aarch64-4.7 r196014:
+ [AArch64-4.7] Backport: Implement section anchors
+
+ gcc/
+ * common/config/aarch64/aarch64-common.c
+ (aarch_option_optimization_table): New.
+ (TARGET_OPTION_OPTIMIZATION_TABLE): Define.
+ * gcc/config/aarch64/aarch64-elf.h (ASM_OUTPUT_DEF): New definition.
+ * gcc/config/aarch64/aarch64.c (TARGET_MIN_ANCHOR_OFFSET): Define.
+ (TARGET_MAX_ANCHOR_OFFSET): Likewise.
+
+ Backport /work/sources/gcc-bzr/arm-aarch64-4.7 r196015:
+ [AArch64-4.7] Backport: Fix g++.dg/abi/aarch64_guard1.C
+
+ gcc/testsuite/
+ * g++.dg/abi/aarch64_guard1.C: Add -fno-section-anchors.
+
+ Backport /work/sources/gcc-bzr/arm-aarch64-4.7 r196225:
+ Subject: [AArch64] Add missing copyright and build dependency for aarch64-simd-builtins.def
+
+ gcc/
+ * config/aarch64/aarch64-simd-builtins.def: Add copyright header.
+ * config/aarch64/t-aarch64
+ (aarch64-builtins.o): Depend on aarch64-simd-builtins.def.
+
+2013-02-26 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org>
+
Merge from FSF GCC 4.7.3 (svn branches/gcc-4_7-branch 196272).
2013-02-18 Yvan Roux <yvan.roux@linaro.org>
diff --git a/gcc/ChangeLog.aarch64 b/gcc/ChangeLog.aarch64
index be507d633b1..f2b93b156bd 100644
--- a/gcc/ChangeLog.aarch64
+++ b/gcc/ChangeLog.aarch64
@@ -1,3 +1,22 @@
+2013-02-22 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/aarch64/aarch64-simd-builtins.def: Add copyright header.
+ * config/aarch64/t-aarch64
+ (aarch64-builtins.o): Depend on aarch64-simd-builtins.def.
+
+2013-02-13 James Greenhalgh <james.greenhalgh@arm.com>
+
+ Backport from aarch64-branch.
+ 2012-09-06 James Greenhalgh <james.greenhalgh@arm.com>
+ Richard Earnshaw <rearnsha@arm.com>
+
+ * common/config/aarch64/aarch64-common.c
+ (aarch_option_optimization_table): New.
+ (TARGET_OPTION_OPTIMIZATION_TABLE): Define.
+ * gcc/config/aarch64/aarch64-elf.h (ASM_OUTPUT_DEF): New definition.
+ * gcc/config/aarch64/aarch64.c (TARGET_MIN_ANCHOR_OFFSET): Define.
+ (TARGET_MAX_ANCHOR_OFFSET): Likewise.
+
2013-02-04 James Greenhalgh <james.greenhalgh@arm.com>
Backport from mainline.
diff --git a/gcc/common/config/aarch64/aarch64-common.c b/gcc/common/config/aarch64/aarch64-common.c
index df724063d27..bd249e126ee 100644
--- a/gcc/common/config/aarch64/aarch64-common.c
+++ b/gcc/common/config/aarch64/aarch64-common.c
@@ -36,6 +36,17 @@
#undef TARGET_HANDLE_OPTION
#define TARGET_HANDLE_OPTION aarch64_handle_option
+#undef TARGET_OPTION_OPTIMIZATION_TABLE
+#define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
+
+/* Set default optimization options. */
+static const struct default_options aarch_option_optimization_table[] =
+ {
+ /* Enable section anchors by default at -O1 or higher. */
+ { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 },
+ { OPT_LEVELS_NONE, 0, NULL, 0 }
+ };
+
/* Implement TARGET_HANDLE_OPTION.
This function handles the target specific options for CPU/target selection.
diff --git a/gcc/config/aarch64/aarch64-elf.h b/gcc/config/aarch64/aarch64-elf.h
index 6d8b933729a..1c021d0ec05 100644
--- a/gcc/config/aarch64/aarch64-elf.h
+++ b/gcc/config/aarch64/aarch64-elf.h
@@ -25,6 +25,15 @@
#define ASM_OUTPUT_LABELREF(FILE, NAME) \
aarch64_asm_output_labelref (FILE, NAME)
+#define ASM_OUTPUT_DEF(FILE, NAME1, NAME2) \
+ do \
+ { \
+ assemble_name (FILE, NAME1); \
+ fputs (" = ", FILE); \
+ assemble_name (FILE, NAME2); \
+ fputc ('\n', FILE); \
+ } while (0)
+
#define TEXT_SECTION_ASM_OP "\t.text"
#define DATA_SECTION_ASM_OP "\t.data"
#define BSS_SECTION_ASM_OP "\t.bss"
diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def
index af27079958a..a6a5e12c7a5 100644
--- a/gcc/config/aarch64/aarch64-simd-builtins.def
+++ b/gcc/config/aarch64/aarch64-simd-builtins.def
@@ -1,3 +1,22 @@
+/* Machine description for AArch64 architecture.
+ Copyright (C) 2012-2013 Free Software Foundation, Inc.
+ Contributed by ARM Ltd.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
/* In the list below, the BUILTIN_<ITERATOR> macros should
correspond to the iterator used to construct the instruction's
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 1e546ccd37b..ed5b6bbf270 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -7950,6 +7950,17 @@ aarch64_vectorize_vec_perm_const_ok (enum machine_mode vmode,
#define TARGET_VECTORIZE_VEC_PERM_CONST_OK \
aarch64_vectorize_vec_perm_const_ok
+/* Section anchor support. */
+
+#undef TARGET_MIN_ANCHOR_OFFSET
+#define TARGET_MIN_ANCHOR_OFFSET -256
+
+/* Limit the maximum anchor offset to 4k-1, since that's the limit for a
+ byte offset; we can do much more for larger data types, but have no way
+ to determine the size of the access. We assume accesses are aligned. */
+#undef TARGET_MAX_ANCHOR_OFFSET
+#define TARGET_MAX_ANCHOR_OFFSET 4095
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-aarch64.h"
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
index 715ad1da2c0..59e21386801 100644
--- a/gcc/config/aarch64/t-aarch64
+++ b/gcc/config/aarch64/t-aarch64
@@ -27,6 +27,7 @@ $(srcdir)/config/aarch64/aarch64-tune.md: $(srcdir)/config/aarch64/gentune.sh \
aarch64-builtins.o: $(srcdir)/config/aarch64/aarch64-builtins.c $(CONFIG_H) \
$(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) expr.h $(TM_P_H) $(RECOG_H) langhooks.h \
- $(DIAGNOSTIC_CORE_H) $(OPTABS_H)
+ $(DIAGNOSTIC_CORE_H) $(OPTABS_H) \
+ $(srcdir)/config/aarch64/aarch64-simd-builtins.def
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/aarch64/aarch64-builtins.c
diff --git a/gcc/testsuite/ChangeLog.aarch64 b/gcc/testsuite/ChangeLog.aarch64
index 63cb8af9c85..65358e15e28 100644
--- a/gcc/testsuite/ChangeLog.aarch64
+++ b/gcc/testsuite/ChangeLog.aarch64
@@ -1,3 +1,10 @@
+2013-02-13 James Greenhalgh <james.greenhalgh@arm.com>
+
+ Backport from mainline.
+ 2012-11-06 Andrew Pinski <apinski@cavium.com>
+
+ * g++.dg/abi/aarch64_guard1.C: Add -fno-section-anchors.
+
2013-01-18 James Greenhalgh <james.greenhalgh@arm.com>
Backport from mainline.
diff --git a/gcc/testsuite/g++.dg/abi/aarch64_guard1.C b/gcc/testsuite/g++.dg/abi/aarch64_guard1.C
index af82ad2ec36..ca1778b8730 100644
--- a/gcc/testsuite/g++.dg/abi/aarch64_guard1.C
+++ b/gcc/testsuite/g++.dg/abi/aarch64_guard1.C
@@ -2,7 +2,7 @@
// 8-byte doubleword and that only the least significant bit is used
// for initialization guard variables.
// { dg-do compile { target aarch64*-*-* } }
-// { dg-options "-O -fdump-tree-original" }
+// { dg-options "-O -fdump-tree-original -fno-section-anchors" }
int bar();