aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gcc-4.4.3/gcc/config/arm/arm.h1
-rw-r--r--gcc-4.4.3/gcc/config/arm/arm.md2
-rw-r--r--gcc-4.6/gcc/config/arm/arm.h1
-rw-r--r--gcc-4.6/gcc/config/arm/arm.md2
-rw-r--r--gcc-4.7/gcc/config/arm/arm.h1
-rw-r--r--gcc-4.7/gcc/config/arm/arm.md2
-rw-r--r--gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc12
7 files changed, 18 insertions, 3 deletions
diff --git a/gcc-4.4.3/gcc/config/arm/arm.h b/gcc-4.4.3/gcc/config/arm/arm.h
index 1189914f6..87ab6aa5d 100644
--- a/gcc-4.4.3/gcc/config/arm/arm.h
+++ b/gcc-4.4.3/gcc/config/arm/arm.h
@@ -1272,6 +1272,7 @@ enum reg_class
(TARGET_ARM ? (CLASS) : \
((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS \
|| (CLASS) == NO_REGS || (CLASS) == STACK_REG \
+ || (CLASS) == CORE_REGS \
? LO_REGS : (CLASS)))
/* Must leave BASE_REGS reloads alone */
diff --git a/gcc-4.4.3/gcc/config/arm/arm.md b/gcc-4.4.3/gcc/config/arm/arm.md
index ea16f1c31..a488b85cd 100644
--- a/gcc-4.4.3/gcc/config/arm/arm.md
+++ b/gcc-4.4.3/gcc/config/arm/arm.md
@@ -5708,7 +5708,7 @@
(define_expand "reload_inhi"
[(parallel [(match_operand:HI 0 "s_register_operand" "=r")
(match_operand:HI 1 "arm_reload_memory_operand" "o")
- (match_operand:DI 2 "s_register_operand" "=&r")])]
+ (match_operand:DI 2 "s_register_operand" "=&l")])]
"TARGET_EITHER"
"
if (TARGET_ARM)
diff --git a/gcc-4.6/gcc/config/arm/arm.h b/gcc-4.6/gcc/config/arm/arm.h
index c4f9de0c1..6245bb5bd 100644
--- a/gcc-4.6/gcc/config/arm/arm.h
+++ b/gcc-4.6/gcc/config/arm/arm.h
@@ -1214,6 +1214,7 @@ enum reg_class
(TARGET_32BIT ? (CLASS) : \
((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS \
|| (CLASS) == NO_REGS || (CLASS) == STACK_REG \
+ || (CLASS) == CORE_REGS \
? LO_REGS : (CLASS)))
/* Must leave BASE_REGS reloads alone */
diff --git a/gcc-4.6/gcc/config/arm/arm.md b/gcc-4.6/gcc/config/arm/arm.md
index df2e63949..cc73aa2f3 100644
--- a/gcc-4.6/gcc/config/arm/arm.md
+++ b/gcc-4.6/gcc/config/arm/arm.md
@@ -5852,7 +5852,7 @@
(define_expand "reload_inhi"
[(parallel [(match_operand:HI 0 "s_register_operand" "=r")
(match_operand:HI 1 "arm_reload_memory_operand" "o")
- (match_operand:DI 2 "s_register_operand" "=&r")])]
+ (match_operand:DI 2 "s_register_operand" "=&l")])]
"TARGET_EITHER"
"
if (TARGET_ARM)
diff --git a/gcc-4.7/gcc/config/arm/arm.h b/gcc-4.7/gcc/config/arm/arm.h
index 443d2ed16..7ce48d13a 100644
--- a/gcc-4.7/gcc/config/arm/arm.h
+++ b/gcc-4.7/gcc/config/arm/arm.h
@@ -1159,6 +1159,7 @@ enum reg_class
(TARGET_32BIT ? (CLASS) : \
((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS \
|| (CLASS) == NO_REGS || (CLASS) == STACK_REG \
+ || (CLASS) == CORE_REGS \
? LO_REGS : (CLASS)))
/* Must leave BASE_REGS reloads alone */
diff --git a/gcc-4.7/gcc/config/arm/arm.md b/gcc-4.7/gcc/config/arm/arm.md
index b21d0d253..fee20175f 100644
--- a/gcc-4.7/gcc/config/arm/arm.md
+++ b/gcc-4.7/gcc/config/arm/arm.md
@@ -6233,7 +6233,7 @@
(define_expand "reload_inhi"
[(parallel [(match_operand:HI 0 "s_register_operand" "=r")
(match_operand:HI 1 "arm_reload_memory_operand" "o")
- (match_operand:DI 2 "s_register_operand" "=&r")])]
+ (match_operand:DI 2 "s_register_operand" "=&l")])]
"TARGET_EITHER"
"
if (TARGET_ARM)
diff --git a/gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc b/gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc
index 0f0b02671..a03dd13ea 100644
--- a/gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc
+++ b/gcc-4.7/libstdc++-v3/libsupc++/eh_arm.cc
@@ -29,6 +29,16 @@
using namespace __cxxabiv1;
+// The GCC command-line option "-fvisibility=hidden" apparently fails to hide
+// the visibility of the inline assembly function "__cxa_end_cleanup".
+// We need to keep the visibility of the __cxa_* functions coherent otherwise
+// linking eh_arm.o to resolve __cxa_end_cleanup (eg needed by -frtti
+// -fexceptions) will disappoint the linker by exposing __cxa_type_match and
+// __cxa_begin_cleanup (eg needed by __aeabi_idiv from libgcc.a).
+// Therefore as a simple workaround we just force the visibility to default for
+// all these __cxa functions in this module.
+
+#pragma GCC visibility push(default)
// Given the thrown type THROW_TYPE, exception object UE_HEADER and a
// type CATCH_TYPE to compare against, return whether or not there is
@@ -224,4 +234,6 @@ asm (" .pushsection .text.__cxa_end_cleanup\n"
#endif
#endif
+#pragma GCC visibility pop
+
#endif