From 518d1dfc6e6f11e9af04b55234b4b336cdbedc08 Mon Sep 17 00:00:00 2001 From: Anton Leontiev Date: Tue, 1 Jul 2014 10:25:25 +0400 Subject: [PATCH] cc/gcc: Add 4.7.4 and 4.8.3 Signed-off-by: Anton Leontiev --- config/cc/gcc.in | 12 +++ .../000-libitm-fix-definition-of-__m64.patch | 27 +++++ .../gcc/4.7.4/100-fix-PR-target-58595.patch | 102 ++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 patches/gcc/4.7.4/000-libitm-fix-definition-of-__m64.patch create mode 100644 patches/gcc/4.7.4/100-fix-PR-target-58595.patch diff --git a/config/cc/gcc.in b/config/cc/gcc.in index 9c16df68..33d5675f 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -47,6 +47,11 @@ config CC_V_linaro_4_8 depends on CC_GCC_SHOW_LINARO select CC_GCC_4_8 +config CC_V_4_8_3 + bool + prompt "4.8.3" + select CC_GCC_4_8 + config CC_V_4_8_2 bool prompt "4.8.2" @@ -68,6 +73,11 @@ config CC_V_linaro_4_7 depends on CC_GCC_SHOW_LINARO select CC_GCC_4_7 +config CC_V_4_7_4 + bool + prompt "4.7.4" + select CC_GCC_4_7 + config CC_V_4_7_3 bool prompt "4.7.3" @@ -473,10 +483,12 @@ config CC_VERSION # CT_INSERT_VERSION_STRING_BELOW default "4.9.0" if CC_V_4_9_0 default "linaro-4.8-2014.01" if CC_V_linaro_4_8 + default "4.8.3" if CC_V_4_8_3 default "4.8.2" if CC_V_4_8_2 default "4.8.1" if CC_V_4_8_1 default "4.8.0" if CC_V_4_8_0 default "linaro-4.7-2014.01" if CC_V_linaro_4_7 + default "4.7.4" if CC_V_4_7_4 default "4.7.3" if CC_V_4_7_3 default "4.7.2" if CC_V_4_7_2 default "4.7.1" if CC_V_4_7_1 diff --git a/patches/gcc/4.7.4/000-libitm-fix-definition-of-__m64.patch b/patches/gcc/4.7.4/000-libitm-fix-definition-of-__m64.patch new file mode 100644 index 00000000..ade14a72 --- /dev/null +++ b/patches/gcc/4.7.4/000-libitm-fix-definition-of-__m64.patch @@ -0,0 +1,27 @@ +From 3d27d47fbebdb1be3d35e398a7c042a930f64aa6 Mon Sep 17 00:00:00 2001 +From: Richard Braun +Date: Mon, 26 Nov 2012 11:36:17 +0100 +Subject: [PATCH] libitm: fix definition of __m64 + +See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52695 for details. +--- + libitm/config/x86/target.h | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/libitm/config/x86/target.h b/libitm/config/x86/target.h +index 5c7e6fb..6254d8a 100644 +--- a/libitm/config/x86/target.h ++++ b/libitm/config/x86/target.h +@@ -73,6 +73,9 @@ cpu_relax (void) + /* ??? It's broken for C++. */ + #include + #else ++# ifdef __MMX__ ++# include ++# endif + # ifdef __SSE2__ + # include + # elif defined(__SSE__) +-- +1.7.2.5 + diff --git a/patches/gcc/4.7.4/100-fix-PR-target-58595.patch b/patches/gcc/4.7.4/100-fix-PR-target-58595.patch new file mode 100644 index 00000000..11b2d5d1 --- /dev/null +++ b/patches/gcc/4.7.4/100-fix-PR-target-58595.patch @@ -0,0 +1,102 @@ +commit 4fa1f8926227d4e79975b674dc4292b9bec4b137 +Author: jakub +Date: Thu Mar 6 12:07:07 2014 +0000 + + PR target/58595 + * config/arm/arm.c (arm_tls_symbol_p): Remove. + (arm_legitimize_address): Call legitimize_tls_address for any + arm_tls_referenced_p expression, handle constant addend. Call it + before testing for !TARGET_ARM. + (thumb_legitimize_address): Don't handle arm_tls_symbol_p here. + + * gcc.dg/tls/pr58595.c: New test. + + + git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208380 138bc75d-0d04-0410-961f-82ee72b054a4 + +diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c +index ce24bfe..af5666b 100644 +--- a/gcc/config/arm/arm.c ++++ b/gcc/config/arm/arm.c +@@ -235,7 +235,6 @@ static tree arm_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *); + static void arm_option_override (void); + static unsigned HOST_WIDE_INT arm_shift_truncation_mask (enum machine_mode); + static bool arm_cannot_copy_insn_p (rtx); +-static bool arm_tls_symbol_p (rtx x); + static int arm_issue_rate (void); + static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED; + static bool arm_output_addr_const_extra (FILE *, rtx); +@@ -7336,6 +7335,32 @@ legitimize_tls_address (rtx x, rtx reg) + rtx + arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode) + { ++ if (arm_tls_referenced_p (x)) ++ { ++ rtx addend = NULL; ++ ++ if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS) ++ { ++ addend = XEXP (XEXP (x, 0), 1); ++ x = XEXP (XEXP (x, 0), 0); ++ } ++ ++ if (GET_CODE (x) != SYMBOL_REF) ++ return x; ++ ++ gcc_assert (SYMBOL_REF_TLS_MODEL (x) != 0); ++ ++ x = legitimize_tls_address (x, NULL_RTX); ++ ++ if (addend) ++ { ++ x = gen_rtx_PLUS (SImode, x, addend); ++ orig_x = x; ++ } ++ else ++ return x; ++ } ++ + if (!TARGET_ARM) + { + /* TODO: legitimize_address for Thumb2. */ +@@ -7344,9 +7369,6 @@ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode) + return thumb_legitimize_address (x, orig_x, mode); + } + +- if (arm_tls_symbol_p (x)) +- return legitimize_tls_address (x, NULL_RTX); +- + if (GET_CODE (x) == PLUS) + { + rtx xop0 = XEXP (x, 0); +@@ -7459,9 +7481,6 @@ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode) + rtx + thumb_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode) + { +- if (arm_tls_symbol_p (x)) +- return legitimize_tls_address (x, NULL_RTX); +- + if (GET_CODE (x) == PLUS + && GET_CODE (XEXP (x, 1)) == CONST_INT + && (INTVAL (XEXP (x, 1)) >= 32 * GET_MODE_SIZE (mode) +@@ -7756,20 +7775,6 @@ thumb_legitimize_reload_address (rtx *x_p, + + /* Test for various thread-local symbols. */ + +-/* Return TRUE if X is a thread-local symbol. */ +- +-static bool +-arm_tls_symbol_p (rtx x) +-{ +- if (! TARGET_HAVE_TLS) +- return false; +- +- if (GET_CODE (x) != SYMBOL_REF) +- return false; +- +- return SYMBOL_REF_TLS_MODEL (x) != 0; +-} +- + /* Helper for arm_tls_referenced_p. */ + + static int