Message ID | 1404195925-7402-1-git-send-email-aleontiev@elvees.com |
---|---|
State | Accepted |
Headers | show |
Anton, All, On 2014-07-01 10:25 +0400, Anton Leontiev spake thusly: > Signed-off-by: Anton Leontiev <aleontiev@elvees.com> Applied, thanks! Regards, Yann E. MORIN. > --- > > Changes from v1: All necessary patches are added. > > config/cc/gcc.in | 12 +++ > .../4.7.4/000-libitm-fix-definition-of-__m64.patch | 27 ++++++ > patches/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 9c16df6..33d5675 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 0000000..ade14a7 > --- /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 <rbraun@sceen.net> > +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 <x86intrin.h> > + #else > ++# ifdef __MMX__ > ++# include <mmintrin.h> > ++# endif > + # ifdef __SSE2__ > + # include <emmintrin.h> > + # 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 0000000..11b2d5d > --- /dev/null > +++ b/patches/gcc/4.7.4/100-fix-PR-target-58595.patch > @@ -0,0 +1,102 @@ > +commit 4fa1f8926227d4e79975b674dc4292b9bec4b137 > +Author: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> > +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 > -- > 1.9.2 >
diff --git a/config/cc/gcc.in b/config/cc/gcc.in index 9c16df6..33d5675 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 0000000..ade14a7 --- /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 <rbraun@sceen.net> +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 <x86intrin.h> + #else ++# ifdef __MMX__ ++# include <mmintrin.h> ++# endif + # ifdef __SSE2__ + # include <emmintrin.h> + # 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 0000000..11b2d5d --- /dev/null +++ b/patches/gcc/4.7.4/100-fix-PR-target-58595.patch @@ -0,0 +1,102 @@ +commit 4fa1f8926227d4e79975b674dc4292b9bec4b137 +Author: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +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
Signed-off-by: Anton Leontiev <aleontiev@elvees.com> --- Changes from v1: All necessary patches are added. config/cc/gcc.in | 12 +++ .../4.7.4/000-libitm-fix-definition-of-__m64.patch | 27 ++++++ patches/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