--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.armel
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.armel
@@ -0,0 +1,120 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+(ignore-blacklist)#include "libgcc1.symbols.aeabi"
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_3.5@GCC_3.5 1:4.3.0
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_4.3.0 1:4.3.0
+ _Unwind_Complete@GCC_3.5 1:4.3.0
+ _Unwind_DeleteException@GCC_3.0 1:4.3.0
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.3.0
+ _Unwind_GetCFA@GCC_3.3 1:4.3.0
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.3.0
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.3.0
+ _Unwind_GetRegionStart@GCC_3.0 1:4.3.0
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.3.0
+ _Unwind_RaiseException@GCC_3.0 1:4.3.0
+ _Unwind_Resume@GCC_3.0 1:4.3.0
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.3.0
+ _Unwind_VRS_Get@GCC_3.5 1:4.3.0
+ _Unwind_VRS_Pop@GCC_3.5 1:4.3.0
+ _Unwind_VRS_Set@GCC_3.5 1:4.3.0
+ __absvdi2@GCC_3.0 1:4.3.0
+ __absvsi2@GCC_3.0 1:4.3.0
+ __adddf3@GCC_3.0 1:4.3.0
+ __addsf3@GCC_3.0 1:4.3.0
+ __addvdi3@GCC_3.0 1:4.3.0
+ __addvsi3@GCC_3.0 1:4.3.0
+ __ashldi3@GCC_3.0 1:4.3.0
+ __ashrdi3@GCC_3.0 1:4.3.0
+ __bswapdi2@GCC_4.3.0 1:4.3.0
+ __bswapsi2@GCC_4.3.0 1:4.3.0
+ __clear_cache@GCC_3.0 1:4.3.0
+ __clzdi2@GCC_3.4 1:4.3.0
+ __clzsi2@GCC_3.4 1:4.3.0
+ __cmpdi2@GCC_3.0 1:4.3.0
+ __ctzdi2@GCC_3.4 1:4.3.0
+ __ctzsi2@GCC_3.4 1:4.3.0
+ __divdc3@GCC_4.0.0 1:4.3.0
+ __divdf3@GCC_3.0 1:4.3.0
+ __divdi3@GLIBC_2.0 1:4.3.0
+ __divsc3@GCC_4.0.0 1:4.3.0
+ __divsf3@GCC_3.0 1:4.3.0
+ __divsi3@GCC_3.0 1:4.3.0
+ __emutls_get_address@GCC_4.3.0 1:4.3.0
+ __emutls_register_common@GCC_4.3.0 1:4.3.0
+ __enable_execute_stack@GCC_3.4.2 1:4.3.0
+ __eqdf2@GCC_3.0 1:4.3.0
+ __eqsf2@GCC_3.0 1:4.3.0
+ __extendsfdf2@GCC_3.0 1:4.3.0
+ __ffsdi2@GCC_3.0 1:4.3.0
+ __ffssi2@GCC_4.3.0 1:4.3.0
+ __fixdfdi@GCC_3.0 1:4.3.0
+ __fixdfsi@GCC_3.0 1:4.3.0
+ __fixsfdi@GCC_3.0 1:4.3.0
+ __fixsfsi@GCC_3.0 1:4.3.0
+ __fixunsdfdi@GCC_3.0 1:4.3.0
+ __fixunsdfsi@GCC_3.0 1:4.3.0
+ __fixunssfdi@GCC_3.0 1:4.3.0
+ __fixunssfsi@GCC_3.0 1:4.3.0
+ __floatdidf@GCC_3.0 1:4.3.0
+ __floatdisf@GCC_3.0 1:4.3.0
+ __floatsidf@GCC_3.0 1:4.3.0
+ __floatsisf@GCC_3.0 1:4.3.0
+ __floatundidf@GCC_4.2.0 1:4.3.0
+ __floatundisf@GCC_4.2.0 1:4.3.0
+ __floatunsidf@GCC_4.2.0 1:4.3.0
+ __floatunsisf@GCC_4.2.0 1:4.3.0
+ __gcc_personality_v0@GCC_3.3.1 1:4.3.0
+ __gedf2@GCC_3.0 1:4.3.0
+ __gesf2@GCC_3.0 1:4.3.0
+ __gnu_unwind_frame@GCC_3.5 1:4.3.0
+ __gtdf2@GCC_3.0 1:4.3.0
+ __gtsf2@GCC_3.0 1:4.3.0
+ __ledf2@GCC_3.0 1:4.3.0
+ __lesf2@GCC_3.0 1:4.3.0
+ __lshrdi3@GCC_3.0 1:4.3.0
+ __ltdf2@GCC_3.0 1:4.3.0
+ __ltsf2@GCC_3.0 1:4.3.0
+ __moddi3@GLIBC_2.0 1:4.3.0
+ __modsi3@GCC_3.0 1:4.3.0
+ __muldc3@GCC_4.0.0 1:4.3.0
+ __muldf3@GCC_3.0 1:4.3.0
+ __muldi3@GCC_3.0 1:4.3.0
+ __mulsc3@GCC_4.0.0 1:4.3.0
+ __mulsf3@GCC_3.0 1:4.3.0
+ __mulvdi3@GCC_3.0 1:4.3.0
+ __mulvsi3@GCC_3.0 1:4.3.0
+ __nedf2@GCC_3.0 1:4.3.0
+ __negdf2@GCC_3.0 1:4.3.0
+ __negdi2@GCC_3.0 1:4.3.0
+ __negsf2@GCC_3.0 1:4.3.0
+ __negvdi2@GCC_3.0 1:4.3.0
+ __negvsi2@GCC_3.0 1:4.3.0
+ __nesf2@GCC_3.0 1:4.3.0
+ __paritydi2@GCC_3.4 1:4.3.0
+ __paritysi2@GCC_3.4 1:4.3.0
+ __popcountdi2@GCC_3.4 1:4.3.0
+ __popcountsi2@GCC_3.4 1:4.3.0
+ __powidf2@GCC_4.0.0 1:4.3.0
+ __powisf2@GCC_4.0.0 1:4.3.0
+ __subdf3@GCC_3.0 1:4.3.0
+ __subsf3@GCC_3.0 1:4.3.0
+ __subvdi3@GCC_3.0 1:4.3.0
+ __subvsi3@GCC_3.0 1:4.3.0
+ __truncdfsf2@GCC_3.0 1:4.3.0
+ __ucmpdi2@GCC_3.0 1:4.3.0
+ __udivdi3@GLIBC_2.0 1:4.3.0
+ __udivmoddi4@GCC_3.0 1:4.3.0
+ __udivsi3@GCC_3.0 1:4.3.0
+ __umoddi3@GLIBC_2.0 1:4.3.0
+ __umodsi3@GCC_3.0 1:4.3.0
+ __unorddf2@GCC_3.3.4 1:4.3.0
+ __unordsf2@GCC_3.3.4 1:4.3.0
--- gcc-4.6-4.6.3.orig/debian/reduce-test-diff.awk
+++ gcc-4.6-4.6.3/debian/reduce-test-diff.awk
@@ -0,0 +1,33 @@
+#! /usr/bin/gawk -f
+
+BEGIN {
+	skip=0
+	warn=0
+}
+
+/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ {
+	next
+}
+
+# only compare gcc, g++, g77 and objc results
+/=== treelang tests ===/ {
+	skip=1
+}
+
+# omit extra files appended to test-summary
+/^\+Compiler version/ {
+	skip=1
+}
+
+skip == 0 {
+	print
+	next
+}
+
+/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ {
+	warn=1
+}
+
+END {
+	exit warn
+}
--- gcc-4.6-4.6.3.orig/debian/lib64gcc1.symbols.powerpc
+++ gcc-4.6-4.6.3/debian/lib64gcc1.symbols.powerpc
@@ -0,0 +1,126 @@
+libgcc_s.so.1 lib64gcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.0.0 1:4.1.1
+ __divti3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_3.0 1:4.1.1
+ __fixtfti@GCC_3.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_3.0 1:4.1.1
+ __fixunstfti@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_3.0 1:4.1.1
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_3.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.2.0 1:4.2.1
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __gcc_qadd@GCC_3.4.4 1:4.1.1
+ __gcc_qdiv@GCC_3.4.4 1:4.1.1
+ __gcc_qmul@GCC_3.4.4 1:4.1.1
+ __gcc_qsub@GCC_3.4.4 1:4.1.1
+ __lshrti3@GCC_3.0 1:4.1.1
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.0.0 1:4.1.1
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
+ _xlqadd@GCC_3.4 1:4.1.1
+ _xlqdiv@GCC_3.4 1:4.1.1
+ _xlqmul@GCC_3.4 1:4.1.1
+ _xlqsub@GCC_3.4 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.sh4
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.sh4
@@ -0,0 +1,127 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GLIBC_2.2@GLIBC_2.2 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __adddf3@GCC_3.0 1:4.1.1
+ __addsf3@GCC_3.0 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdf3@GCC_3.0 1:4.1.1
+ __divdi3@GCC_3.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divsf3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqdf2@GCC_3.0 1:4.1.1
+ __eqsf2@GCC_3.0 1:4.1.1
+ __extendsfdf2@GCC_3.0 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixdfsi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixsfsi@GCC_3.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatsidf@GCC_3.0 1:4.1.1
+ __floatsisf@GCC_3.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunsidf@GCC_4.2.0 1:4.2.1
+ __floatunsisf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.2 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __gedf2@GCC_3.0 1:4.1.1
+ __gesf2@GCC_3.0 1:4.1.1
+ __gtdf2@GCC_3.0 1:4.1.1
+ __gtsf2@GCC_3.0 1:4.1.1
+ __ledf2@GCC_3.0 1:4.1.1
+ __lesf2@GCC_3.0 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __ltdf2@GCC_3.0 1:4.1.1
+ __ltsf2@GCC_3.0 1:4.1.1
+ __moddi3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldf3@GCC_3.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __mulsf3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __nedf2@GCC_3.0 1:4.1.1
+ __negdf2@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negsf2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __nesf2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.2 1:4.1.1
+ __register_frame_info@GLIBC_2.2 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.2 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.2 1:4.1.1
+ __subdf3@GCC_3.0 1:4.1.1
+ __subsf3@GCC_3.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __truncdfsf2@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GCC_3.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GCC_3.0 1:4.1.1
+ __unorddf2@GCC_3.3.4 1:4.1.1
+ __unordsf2@GCC_3.3.4 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.amd64
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.amd64
@@ -0,0 +1,7 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
+#include "libgfortran3.symbols.16"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.qf"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.kfreebsd-amd64
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.kfreebsd-amd64
@@ -0,0 +1,138 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addtf3@GCC_4.3.0 1:4.3
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GCC_3.0 1:4.1.1
+ __deregister_frame_info@GCC_3.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.0.0 1:4.3
+ __divtf3@GCC_4.3.0 1:4.3
+ __divti3@GCC_3.0 1:4.1.1
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.3.0 1:4.3
+ __extenddftf2@GCC_4.3.0 1:4.3
+ __extendsftf2@GCC_4.3.0 1:4.3
+ __extendxftf2@GCC_4.3.0 1:4.3
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.3.0 1:4.3
+ __fixtfsi@GCC_4.3.0 1:4.3
+ __fixtfti@GCC_4.3.0 1:4.3
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.3.0 1:4.3
+ __fixunstfsi@GCC_4.3.0 1:4.3
+ __fixunstfti@GCC_4.3.0 1:4.3
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfti@GCC_3.0 1:4.1.1
+ __fixxfti@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.3.0 1:4.3
+ __floatsitf@GCC_4.3.0 1:4.3
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_4.3.0 1:4.3
+ __floattixf@GCC_3.0 1:4.1.1
+ __floatunditf@GCC_4.3.0 1:4.3
+ __floatunsitf@GCC_4.3.0 1:4.3
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.3.0 1:4.3
+ __floatuntixf@GCC_4.2.0 1:4.2.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.3.0 1:4.3
+ __gttf2@GCC_3.0 1:4.3
+ __letf2@GCC_4.3.0 1:4.3
+ __lshrti3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_3.0 1:4.3
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.0.0 1:4.3
+ __multf3@GCC_4.3.0 1:4.3
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negtf2@GCC_4.3.0 1:4.3
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __netf2@GCC_3.0 1:4.3
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.0.0 1:4.3
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GCC_3.0 1:4.1.1
+ __register_frame_info@GCC_3.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GCC_3.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GCC_3.0 1:4.1.1
+ __subtf3@GCC_4.3.0 1:4.3
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __trunctfdf2@GCC_4.3.0 1:4.3
+ __trunctfsf2@GCC_4.3.0 1:4.3
+ __trunctfxf2@GCC_4.3.0 1:4.3
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
+ __unordtf2@GCC_4.3.0 1:4.3
--- gcc-4.6-4.6.3.orig/debian/libgnatprjBV.overrides
+++ gcc-4.6-4.6.3/debian/libgnatprjBV.overrides
@@ -0,0 +1 @@
+libgnatprj@BV@: missing-dependency-on-libc
--- gcc-4.6-4.6.3.orig/debian/NEWS.gcc
+++ gcc-4.6-4.6.3/debian/NEWS.gcc
@@ -0,0 +1,1063 @@
+GCC 4.6 Release Series -- Changes, New Features, and Fixes
+==========================================================
+
+
+Caveats
+=======
+
+- The options -b <machine> and -V <version> have been removed because
+  they were unreliable. Instead, users should directly run
+  <machine>-gcc when cross-compiling, or <machine>-gcc-<version>
+  to run a different version of gcc.
+
+- GCC now has stricter checks for invalid command-line options.  In
+  particular, when gcc was called to link object files rather than
+  compile source code, it would previously accept and ignore all options
+  starting with --, including linker options such as --as-needed and
+  --export-dynamic, although such options would result in errors if any
+  source code was compiled.  Such options, if unknown to the compiler,
+  are now rejected in all cases; if the intent was to pass them to the
+  linker, options such as -Wl,--as-needed should be used.
+
+- Versions of the GNU C library up to and including 2.11.1 included
+  an incorrect implementation of the cproj function.  GCC optimizes
+  its builtin cproj according to the behavior specified and allowed
+  by the ISO C99 standard.  If you want to avoid discrepancies
+  between the C library and GCC's builtin transformations when using
+  cproj in your code, use GLIBC 2.12 or later.  If you are using an
+  older GLIBC and actually rely on the incorrect behavior of cproj,
+  then you can disable GCC's transformations using -fno-builtin-cproj.
+
+- The C-only intermodule optimization framework (IMA, enabled by
+  -combine) has been removed in favor of the new generic link-time
+  optimization framework (LTO) introduced in GCC 4.5.0.
+
+- GCC now ships with the LGPL-licensed libquadmath library, which
+  provides quad-precision mathematical functions for targets with a
+  __float128 datatype. __float128 is available for targets on 32-bit
+  x86, x86-64 and Itanium architectures. The libquadmath library is
+  automatically built on such targets when building the Fortran
+  compiler.
+
+- New -Wunused-but-set-variable and -Wunused-but-set-parameter
+  warnings were added for C, C++, Objective-C and Objective-C++.
+  These warnings diagnose variables respective parameters which are
+  only set in the code and never otherwise used.  Usually such
+  variables are useless and often even the value assigned to them is
+  computed needlessly, sometimes expensively.  The
+  -Wunused-but-set-variable warning is enabled by default by -Wall
+  flag and -Wunused-but-set-parameter by -Wall -Wextra flags.
+
+- Support for a number of older systems and recently unmaintained or
+  untested target ports of GCC has been declared obsolete in GCC 4.6.
+  Unless there is activity to revive them, the next release of GCC
+  will have their sources permanently removed.
+
+- All GCC ports for the following processor architectures have been
+  declared obsolete:
+
+  - Argonaut ARC (arc-*)
+  - National Semiconductor CRX (crx-*)
+  - Motorola 68HC11 and 68HC12
+  - (m68hc11-*-*, m6811-*-*,
+  - m68hc12-*-*, m6812-*-*)
+  - Sunplus S+core (score-*)
+
+- The following ports for individual systems on particular
+  architectures have been obsoleted:
+
+  - Interix (i[34567]86-*-interix3*)
+  - Generic ARM PE (arm-*-pe* other
+  - than arm*-wince-pe*)
+  - MCore PE (mcore-*-pe*)
+  - SH SymbianOS (sh*-*-symbianelf*)
+  - GNU Hurd on Alpha and PowerPC
+  - (alpha*-*-gnu*, powerpc*-*-gnu*)
+  - M68K uClinux old ABI
+  - (m68k-*-uclinuxoldabi*)
+  - a.out NetBSD
+  - (arm*-*-netbsd*, i[34567]86-*-netbsd*,
+  - vax-*-netbsd*, but
+  - not *-*-netbsdelf*)
+
+- The i[34567]86-*-pe alias for Cygwin targets has also been
+  obsoleted; users should configure for i[34567]86-*-cygwin* instead.
+
+- Certain configure options to control the set of libraries built with
+  GCC on some targets have been obsoleted.  On ARM targets, the
+  options --disable-fpu, --disable-26bit, --disable-underscore,
+  --disable-interwork, --disable-biendian and --disable-nofmult have
+  been obsoleted.  On MIPS targets, the options
+  --disable-single-float, --disable-biendian and --disable-softfloat
+  have been obsoleted.
+
+- Support has been removed for all the configurations obsoleted in
+  GCC 4.5.
+
+
+General Optimizer Improvements
+==============================
+
+- A new general optimization level, -Ofast, has been introduced.  It
+  combines the existing optimization level -O3 with options that can
+  affect standards compliance but result in better optimized code.
+  For example, -Ofast enables -ffast-math.
+
+- Link-time optimization improvements:
+
+  - The Scalable Whole Program Optimizer (WHOPR) project has
+    stabilized to the point of being usable.  It has become the
+    default mode when using the LTO optimization model.  Link time
+    optimization can now split itself into multiple parallel
+    compilations. Parallelism is controlled with -flto=n (where n
+    specifies the number of compilations to execute in parallel).  GCC
+    can also cooperate with a GNU make job server by specifying the
+    -flto=jobserver option and adding + to the beginning of the
+    Makefile rule executing the linker.
+
+  - Classical LTO mode can be enforced by -flto-partition=none. This
+    may result in small code quality improvements.
+
+  - A large number of bugs were fixed.  GCC itself, Mozilla Firefox
+    and other large applications can be built with LTO enabled.
+
+  - The linker plugin support improvements
+
+    - Linker plugin is now enabled by default when the linker is
+      detected to have plugin support.  This is the case for GNU ld
+      2.21.51 or newer (on ELF and Cygwin targets) and the Gold linker
+      on ELF targets.  Plugin support of the Apple linker on Darwin is
+      not compatible with GCC.  The linker plugin can also be
+      controlled by the -fuse-linker-plugin command line option.
+
+    - Resolution information from the linker plugin is used to drive
+      whole program assumptions. Use of the linker plugin results in
+      more aggressive optimization on binaries and on shared libraries
+      that use the hidden visibility attribute. Consequently the use
+      of -fwhole-program is not neccesary in addition to LTO.
+
+  - Hidden symbols used from non-LTO objects now have to be explicitly
+    annotated with externally_visible when the linker plugin is not
+    used.
+
+  - C++ inline functions and virtual tables are now privatized more
+    aggressively, leading to better inter-procedural optimization and
+    faster dynamic linking.
+
+  - Memory usage and intermediate language streaming performance have
+    been improved.
+
+  - Static constructors and destructors from individual units are
+    inlined into a single function.  This can significantly improve
+    startup times of large C++ applications where static constructors
+    are very common. For example, static constructors are used when
+    including the iostream header.
+
+  - Support for the Ada language has been added.
+
+- Interprocedural optimization improvements
+
+  - The interprocedural framework was re-tuned for link time
+    optimization. Several scalability issues were resolved.
+
+  - Improved auto-detection of const and pure functions.  Newly,
+    noreturn functions are auto-detected.
+
+  - The -Wsuggest-attribute=[const|pure|noreturn] flag is available
+    that informs users when adding attributes to headers might improve
+    code generation.
+
+  - A number of inlining heuristic improvements. In particular:
+
+    - Partial inlining is now supported and enabled by default at -O2
+      and greater.  The feature can be controlled via
+      -fpartial-inlining.
+    	
+    - Partial inlining splits functions with short hot path to return.
+      This allows more aggressive inlining of the hot path leading to
+      better performance and often to code size reductions (because
+      cold parts of functions are not duplicated).
+
+    - Scalability for large compilation units was improved significantly.
+
+    - Inlining of callbacks is now more aggressive.
+
+    - Virtual methods are considered for inlining when the caller is
+      inlined and devirtualization is then possible.
+
+    - Inlining when optimizing for size (either in cold regions of a
+      program or when compiling with -Os) was improved to better
+      handle C++ programs with larger abstraction penalty, leading to
+      smaller and faster code.
+
+  - The IPA reference optimization pass detecting global variables
+    used or modified by functions was strengthened and sped up.
+
+  - Functions whose address was taken are now optimized out when all
+    references to them are dead.
+
+  - A new inter-procedural static profile estimation pass detects
+    functions that are executed once or unlikely to be executed.
+    Unlikely executed functions are optimized for size.  Functions
+    executed once are optimized for size except for the inner
+    loops.
+
+  - On most targets with named section support, functions used only at
+    startup (static constructors and main), functions used only at
+    exit and functions detected to be cold are placed into separate
+    text segment subsections.  This extends the -freorder-functions
+    feature and is controlled by the same switch. The goal is to
+    improve the startup time of large C++ programs.
+
+  Proper function placement requires linker support.  GNU ld 2.21.51
+  on ELF targets was updated to place those functions together within
+  the text section leading to better code locality and faster startup
+  times of large C++ programs. The feature is also supported in the
+  Apple linker.  Support in the gold linker is planned.
+
+- A new switch -fstack-usage has been added.  It makes the compiler
+  output stack usage information for the program, on a per-function
+  basis, in an auxiliary file.
+
+- A new switch -fcombine-stack-adjustments has been added.  It can be
+  used to enable or disable the compiler's stack-slot combining pass
+  which before was enabled automatically at -O1 and above, but could
+  not be controlled on its own.
+
+- A new switch -fstrict-volatile-bitfields has been added.  Using it
+  indicates that accesses to volatile bitfields should use a single
+  access of the width of the field's type.  This option can be useful
+  for precisely defining and accessing memory-mapped peripheral
+  registers from C or C++.
+
+
+Compile time and memory usage improvements
+==========================================
+
+- Datastructures used by the dataflow framework in GCC were
+  reorganized for better memory usage and more cache locality.
+  Compile time is improved especially on units with large functions
+  (possibly resulting from a lot of inlining) not fitting into the
+  processor cache.  The compile time of the GCC C compiler binary with
+  link-time optimization went down by over 10% (benchmarked on x86-64
+  target).
+
+
+New Languages and Language specific improvements
+================================================
+
+Ada
+---
+
+- Stack checking has been improved on selected architectures (Alpha,
+  IA-32/x86-64, RS/6000 and SPARC): it now will detect stack overflows
+  in all cases on these architectures.
+
+- Initial support for Ada 2012 has been added.
+
+
+C family
+--------
+
+- A new warning, enabled by -Wdouble-promotion, has been added that
+  warns about cases where a value of type float is implicitly promoted
+  to double.  This is especially helpful for CPUs that handle the
+  former in hardware, but emulate the latter in software.
+
+- A new function attribute leaf was introduced.  This attribute allows
+  better inter-procedural optimization across calls to functions that
+  return to the current unit only via returning or exception handling.
+  This is the case for most library functions that have no callbacks.
+
+- Support for a new data type __int128 for targets having wide enough
+  machine-mode support.
+
+- The new function attribute callee_pop_aggregate allows to specify if
+  the caller or callee is responsible for popping the aggregate return
+  pointer value from the stack.
+
+- Support for selectively enabling and disabling warnings via #pragma
+  GCC diagnostic has been added.  For instance:
+
+  #pragma GCC diagnostic error "-Wuninitialized"
+    foo(a);   /* error is given for this one */
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wuninitialized"
+    foo(b);   /* no diagnostic for this one */
+  #pragma GCC diagnostic pop
+    foo(c);   /* error is given for this one */
+  #pragma GCC diagnostic pop
+    foo(d);   /* depends on command line options */
+
+- The -fmax-errors=N option is now supported.  Using this option
+  causes the compiler to exit after N errors have been issued.
+
+
+C
+-
+
+- There is now experimental support for some features from the
+  upcoming C1X revision of the ISO C standard.  This support may be
+  selected with -std=c1x, or -std=gnu1x for C1X with GNU extensions.
+  Note that this support is experimental and may change incompatibly
+  in future releases for consistency with changes to the C1X standard
+  draft.  The following features are newly supported as described in
+  the N1539 draft of C1X (with changes agreed at the March 2011 WG14
+  meeting); some other features were already supported with no
+  compiler changes being needed, or have some support but not in full
+  accord with N1539 (as amended).
+
+  - Static assertions (_Static_assert keyword)
+  - Typedef redefinition
+  - New macros in <float.h>
+  - Anonymous structures and unions
+
+- The new -fplan9-extensions option directs the compiler to support
+  some extensions for anonymous struct fields which are implemented by
+  the Plan 9 compiler.  A pointer to a struct may be automatically
+  converted to a pointer to an anonymous field when calling a
+  function, in order to make the types match.  An anonymous struct
+  field whose type is a typedef name may be referred to using the
+  typedef name.
+
+
+C++
+---
+
+- Improved experimental support for the upcoming C++0x ISO C++
+  standard, including support for constexpr (thanks to Gabriel Dos
+  Reis and Jason Merrill), nullptr (thanks to Magnus Fromreide),
+  noexcept, unrestricted unions, range-based for loops (thanks to
+  Rodrigo Rivas Costa), opaque enum declarations (thanks also to
+  Rodrigo), implicitly deleted functions and implicit move
+  constructors.
+
+- When an extern declaration within a function does not match a
+  declaration in the enclosing context, G++ now properly declares the
+  name within the namespace of the function rather than the namespace
+  which was open just before the function definition (c++/43145).
+
+- GCC now warns by default when casting integers to larger pointer
+  types.  These warnings can be disabled with the option
+  -Wno-int-to-pointer-cast, which is now also available in C++.
+
+- G++ no longer optimizes using the assumption that a value of
+  enumeration type will fall within the range specified by the
+  standard, since that assumption is easily violated with a conversion
+  from integer type (c++/43680).  The old behavior can be restored
+  with -fstrict-enums.
+
+- The new -fnothrow-opt flag changes the semantics of a throw()
+  exception specification to match the proposed semantics of the
+  noexcept specification: just call terminate if an exception tries to
+  propagate out of a function with such an exception specification.
+  This dramatically reduces or eliminates the code size overhead from
+  adding the exception specification.
+
+- The new -Wnoexcept flag will suggest adding a noexcept qualifier to
+  a function that the compiler can tell doesn't throw if it would
+  change the value of a noexcept expression.
+
+- The -Wshadow option now warns if a local variable or type
+  declaration shadows another type in C++. Note that the compiler will
+  not warn if a local variable shadows a struct/class/enum, but will
+  warn if it shadows an explicit typedef.
+
+- When an identifier is not found in the current scope, G++ now offers
+  suggestions about which identifier might have been intended.
+
+- G++ now issues clearer diagnostics for missing semicolons after
+  class, struct, and union definitions.
+
+- G++ now issues clearer diagnostics for missing semicolons after
+  class member declarations.
+
+- G++ now issues clearer diagnostics when a colon is used in a place
+  where a double-colon was intended.
+
+- G++ no longer accepts mutable on reference members (c++/33558).
+  Use -fpermissive to allow the old, non-conforming behaviour.
+
+- A few mangling fixes have been made, to attribute const/volatile on
+  function pointer types, decltype of a plain decl, and use of a
+  function parameter in the declaration of another parameter.  By
+  default the compiler still uses the old mangling, but emits aliases
+  with the new mangling on targets that support strong aliases.  Users
+  can switch over entirely to the new mangling with -fabi-version=5 or
+  -fabi-version=0.  -Wabi will now warn about code that uses the old
+  mangling.
+
+- G++ no longer allows objects of const-qualified type to be default
+  initialized unless the type has a user-declared default constructor.
+  Code that fails to compile can be fixed by providing an initializer e.g.
+
+    struct A { A(); };
+    struct B : A { };
+    const B b = B();
+
+  Use -fpermissive to allow the old, non-conforming behaviour.
+
+
+Runtime Library (libstdc++)
+---------------------------
+
+- Improved experimental support for the upcoming ISO C++ standard,
+  C++0x, including using constexpr and nullptr.
+
+- Performance improvements to the Debug Mode, thanks to François
+  Dumont.
+
+- Atomic operations used for reference-counting are annotated so that
+  they can be understood by race detectors such as Helgrind, see Data
+  Race Hunting.
+
+- Most libstdc++ standard headers have been changed to no longer
+  include the cstddef header as an implementation detail.  Code that
+  relied on that header being included as side-effect of including
+  other standard headers will need to include cstddef explicitly.
+
+
+Fortran
+-------
+
+- On systems supporting the libquadmath library, GNU Fortran now also
+  supports a quad-precision, kind=16 floating-point data type
+  (REAL(16), COMPLEX(16)). As the data type is not fully supported in
+  hardware, calculations might be one to two orders of magnitude
+  slower than with the 4, 8 or 10 bytes floating-point data
+  types. This change does not affect systems which support REAL(16) in
+  hardware nor those which do not support libquadmath.
+
+- Much improved compile time for large array constructors.
+
+- In order to reduce execution time and memory consumption, use of
+  temporary arrays in assignment expressions is avoided for many
+  cases.  The compiler now reverses loops in order to avoid generating
+  a temporary array where possible.
+
+- Improved diagnostics, especially with -fwhole-file.
+
+- The -fwhole-file flag is now enabled by default. This improves code
+  generation and diagnostics. It can be disabled using the deprecated
+  -fno-whole-file flag.
+
+- Support the generation of Makefile dependencies via the -M... flags
+  of GCC; you may need to specify the -cpp option in addition. The
+  dependencies take modules, Fortran's include, and CPP's #include
+  into account. Note: Using -M for the module path is no longer
+  supported, use -J instead.
+
+- The flag -Wconversion has been modified to only issue warnings where
+  a conversion leads to information loss.  This drastically reduces
+  the number of warnings; -Wconversion is thus now enabled with
+  -Wall. The flag -Wconversion-extra has been added and also warns
+  about other conversions; -Wconversion-extra typically issues a huge
+  number of warnings, most of which can be ignored.
+
+- A new command-line option -Wunused-dummy-argument warns about unused
+  dummy arguments and is included in -Wall.  Before, -Wunused-variable
+  also warned about unused dummy arguments.
+
+- Fortran 2003 support has been extended:
+
+  - Improved support for polymorphism between libraries and programs
+    and for complicated inheritance patterns (cf. object-oriented
+    programming).
+
+  - Experimental support of the ASSOCIATE construct.
+
+  - In pointer assignments it is now possible to specify the lower
+    bounds of the pointer and, for a rank-1 or a simply contiguous
+    data-target, to remap the bounds.
+
+  - Automatic (re)allocation: In intrinsic assignments to allocatable
+    variables the left-hand side will be automatically allocated (if
+    unallocated) or reallocated (if the shape or type parameter is
+    different). To avoid the small performance penalty, you can use
+    a(:) = ... instead of a = ...  for arrays and character strings
+    -- or disable the feature using -std=f95 or -fno-realloc-lhs.
+
+  - Deferred type parameter: For scalar allocatable and pointer
+    variables the character length can be deferred.
+
+  - Namelist variables with allocatable and pointer attribute and
+    nonconstant length type parameter are supported.
+
+- Fortran 2008 support has been extended:
+
+  - Experimental coarray support (for one image only,
+    i.e. num_images() == 1); use the -fcoarray=single flag to enable
+    it.
+
+  - The STOP and the new ERROR STOP statements now support all
+    constant expressions.
+
+  - Support for the CONTIGUOUS attribute.
+
+  - Support for ALLOCATE with MOLD.
+
+  - Support for the STORAGE_SIZE intrinsic inquiry function.
+
+  - Support of the NORM2 and PARITY intrinsic functions.
+
+  - The following bit intrinsics were added: POPCNT and POPPAR for
+    counting the number of 1 bits and returning the parity; BGE, BGT,
+    BLE, and BLT for bitwise comparisons; DSHIFTL and DSHIFTR for
+    combined left and right shifts, MASKL and MASKR for simple left
+    and right justified masks, MERGE_BITS for a bitwise merge using a
+    mask, SHIFTA, SHIFTL and SHIFTR for shift operations, and the
+    transformational bit intrinsics IALL, IANY and IPARITY.
+
+  - Support of the EXECUTE_COMMAND_LINE intrinsic subroutine.
+
+  - Support for the IMPURE attribute for procedures, which allows for
+    ELEMENTAL procedures without the restrictions of PURE.
+
+  - Null pointers (including NULL()) and not allocated variables can
+    be used as actual argument to optional non-pointer,
+    non-allocatable dummy arguments, denoting an absent argument.
+
+  - Non-pointer variables with TARGET attribute can be used as actual
+    argument to POINTER dummies with INTENT(IN)
+
+  - Pointers including procedure pointers and those in a derived type
+    (pointer components) can now be initialized by a target instead of
+    only by NULL.
+
+  - The EXIT statement (with construct-name) can now be used to leave
+    not only the DO but also the ASSOCIATE, BLOCK, IF, SELECT CASE and
+    SELECT TYPE constructs.
+
+  - Internal procedures can now be used as actual argument.
+
+  - The named constants INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS and
+    CHARACTER_KINDS of the intrinsic module ISO_FORTRAN_ENV have been
+    added; these arrays contain the supported kind values for the
+    respective types.
+
+  - The module procedures C_SIZEOF of the intrinsic module
+    ISO_C_BINDINGS and COMPILER_VERSION and COMPILER_OPTIONS of
+    ISO_FORTRAN_ENV have been implemented.
+
+  - Minor changes: obsolescence diagnostics for ENTRY was added for
+    -std=f2008; a line may start with a semicolon; for internal and
+    module procedures END can be used instead of END SUBROUTINE and
+    END FUNCTION; SELECTED_REAL_KIND now also takes a RADIX argument;
+    intrinsic types are supported for TYPE(intrinsic-type-spec);
+    multiple type-bound procedures can be declared in a single
+    PROCEDURE statement; implied-shape arrays are supported for named
+    constants (PARAMETER). The transformational, three argument
+    versions of BESSEL_JN and BESSEL_YN were added -- the
+    elemental, two-argument version had been added in GCC 4.4; note
+    that the transformational functions use a recurrence algorithm.
+
+
+Go
+--
+
+Support for the Go programming language has been added to GCC.  It is
+not enabled by default when you build GCC; use the --enable-languages
+configure option to build it.  The driver program for compiling Go
+code is gccgo.
+
+Go is currently known to work on GNU/Linux and RTEMS.  Solaris support
+is in progress.  It may or may not work on other platforms.
+
+
+Java (GCJ)
+----------
+
+
+Objective-C and Objective-C++
+-----------------------------
+
+- The -fobjc-exceptions flag is now required to enable Objective-C
+  exception and synchronization syntax (introduced by the keywords
+  @try, @catch, @finally and @synchronized).
+
+- A number of Objective-C 2.0 features and extensions are now
+  supported by GCC.  These features are enabled by default; you can
+  disable them by using the new -fobjc-std=objc1 command-line option.
+
+- The Objective-C 2.0 dot-syntax is now supported.  It is an
+  alternative syntax for using getters and setters; object.count is
+  automatically converted into [object count] or [object setCount:
+  ...]  depending on context; for example if (object.count > 0) is
+  automatically compiled into the equivalent of if ([object count] >
+  0) while object.count = 0; is automatically compiled into the
+  equivalent ot [object setCount: 0];.  The dot-syntax can be used
+  with instance and class objects and with any setters or getters, no
+  matter if they are part of a declared property or not.
+
+- Objective-C 2.0 declared properties are now supported.  They are
+  declared using the new @property keyword, and are most commonly used
+  in conjunction with the new Objective-C 2.0 dot-syntax.  The
+  nonatomic, readonly, readwrite, assign, retain, copy, setter and
+  getter attributes are all supported.  Marking declared properties
+  with __attribute__ ((deprecated)) is supported too.
+
+- The Objective-C 2.0 @synthesize and @dynamic keywords are supported.
+  @synthesize causes the compiler to automatically synthesize a
+  declared property, while @dynamic is used to disable all warnings
+  for a declared property for which no implementation is provided at
+  compile time.  Synthesizing declared properties requires runtime
+  support in most useful cases; to be able to use it with the GNU
+  runtime, appropriate helper functions have been added to the GNU
+  Objective-C runtime ABI, and are implemented by the GNU Objective-C
+  runtime library shipped with GCC.
+
+- The Objective-C 2.0 fast enumeration syntax is supported in
+  Objective-C.  This is currently not yet available in Objective-C++.
+  Fast enumeration requires support in the runtime, and such support
+  has been added to the GNU Objective-C runtime library (shipped with
+  GCC).
+
+- The Objective-C 2.0 @optional keyword is supported.  It allows you
+  to mark methods or properties in a protocol as optional as opposed
+  to required.
+
+- The Objective-C 2.0 @package keyword is supported.  It has currently
+  the same effect as the @public keyword.
+
+- Objective-C 2.0 method attributes are supported.  Currently the
+  supported attributes are deprecated, sentinel, noreturn and format.
+
+- Objective-C 2.0 method argument attributes are supported.  The most
+  widely used attribute is unused, to mark an argument as unused in
+  the implementation.
+
+- Objective-C 2.0 class and protocol attributes are supported.
+  Currently the only supported attribute is deprecated.
+
+- Objective-C 2.0 class extensions are supported.  A class extension
+  has the same syntax as a category declaration with no category name,
+  and the methods and properties declared in it are added directly to
+  the main class.  It is mostly used as an alternative to a category
+  to add methods to a class without advertising them in the public
+  headers, with the advantage that for class extensions the compiler
+  checks that all the privately declared methods are actually
+  implemented.
+
+- As a result of these enhancements, GCC can now be used to build
+  Objective-C and Objective-C++ software that uses Foundation and
+  other important system frameworks with the NeXT runtime on Darwin 9
+  and Darwin 10 (Mac OS X 10.5 and 10.6).  Currently this is for m32
+  code only.
+
+- Many bugs in the compiler have been fixed in this release; in
+  particular, LTO can now be used when compiling Objective-C and
+  Objective-C++ and the parser is much more robust in dealing with
+  invalid code.
+
+
+Runtime Library (libobjc)
+-------------------------
+
+- The GNU Objective-C runtime library now defines the macro
+  __GNU_LIBOBJC__ (with a value that is increased at every release
+  where there is any change to the API) in objc/objc.h, making it easy
+  to determine if the GNU Objective-C runtime library is being used,
+  and if so, which version.  Previous versions of the GNU Objective-C
+  runtime library (and other Objective-C runtime libraries such as the
+  Apple one) do not define this macro.
+
+- A new Objective-C 2.0 API, almost identical to the one implemented
+  by the Apple Objective-C runtime, has been implemented in the GNU
+  Objective-C runtime library.  The new API hides the internals of
+  most runtime structures but provides a more extensive set of
+  functions to operate on them.  It is much easier, for example, to
+  create or modify classes at runtime.  The new API also makes it
+  easier to port software from Apple to GNU as almost no changes
+  should be required.  The old API is still supported for backwards
+  compatibility; including the old objc/objc-api.h header file
+  automatically selects the old API, while including the new
+  objc/runtime.h header file automatically selects the new API.
+  Support for the old API is being phased out and upgrading the
+  software to use the new API is strongly recommended.  To check for
+  the availability of the new API, the __GNU_LIBOBJC__ macro can be
+  used as older versions of the GNU Objective-C runtime library, which
+  do not support the new API, do not define such a macro.
+
+- Runtime support for @synchronized has been added.
+
+- Runtime support for Objective-C 2.0 synthesized property accessors
+  has been added.
+
+- Runtime support for Objective-C 2.0 fast enumeration has been added.
+
+
+New Targets and Target Specific Improvements
+============================================
+
+ARM
+---
+
+- GCC now supports the Cortex-M4 processor implementing the v7-em
+  version of the architecture using the option -mcpu=cortex-m4.
+
+- Scheduling descriptions for the Cortex-M4, the Neon and the floating
+  point units of the Cortex-A9 and a pipeline description for the
+  Cortex-A5 have been added.
+
+- Synchronization primitives such as __sync_fetch_and_add and friends
+  are now inlined for supported architectures rather than calling into
+  a kernel helper function.
+
+- SSA loop prefetching is enabled by default for the Cortex-A9 at -O3.
+
+- Several improvements were committed to improve code generation for
+  the ARM architecture including a rewritten implementation for load
+  and store multiples.
+
+- Several enhancements were committed to improve SIMD code generation
+  for NEON by adding support for widening instructions, misaligned
+  loads and stores, vector conditionals and support for 64 bit
+  arithmetic.
+
+- Support was added for the Faraday cores fa526, fa606te, fa626te,
+  fmp626te, fmp626 and fa726te and can be used with the respective
+  names as parameters to the -mcpu= option.
+
+- Basic support was added for Cortex-A15 and is available through
+  -mcpu=cortex-a15.
+
+- GCC for AAPCS configurations now more closely adheres to the AAPCS
+  specification by enabling -fstrict-volatile-bitfields by default.
+
+
+IA-32/x86-64
+------------
+
+- The new -fsplit-stack option permits programs to use a discontiguous
+  stack.  This is useful for threaded programs, in that it is no
+  longer necessary to specify the maximum stack size when creating a
+  thread.  This feature is currently only implemented for 32-bit and
+  64-bit x86 GNU/Linux targets.
+
+- Support for emitting profiler counter calls before function
+  prologues.  This is enabled via a new command-line option -mfentry.
+
+- Optimization for the Intel Core 2 processors is now available
+  through the -march=core2 and -mtune=core2 options.
+
+- Support for Intel Core i3/i5/i7 processors is now available through
+  the -march=corei7 and -mtune=corei7 options.
+
+- Support for Intel Core i3/i5/i7 processors with AVX is now available
+  through the -march=corei7-avx and -mtune=corei7-avx options.
+
+- Support for AMD Bobcat (family 14) processors is now available
+  through the -march=btver1 and -mtune=btver1 options.
+
+- The default setting (when not optimizing for size) for 32-bit
+  GNU/Linux and Darwin x86 targets has been changed to -fomit-frame-pointer.
+  The default can be reverted to -fno-omit-frame-pointer by
+  configuring GCC with the --enable-frame-pointer configure option.
+
+- Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
+  __float128 on 32-bit and 64-bit x86 targets.
+
+- AVX floating-point arithmetic can now be enabled by default at
+  configure time with the new --with-fpmath=avx option.
+
+- The SSA loop prefetching pass is enabled when using -O3 when
+  optimizing for CPUs where prefetching is beneficial (AMD CPUs newer
+  than K6).
+
+- Support for TBM (Trailing Bit Manipulation) built-in functions and
+  code generation is available via -mtbm.
+
+- Support for AMD's BMI (Bit Manipulation) built-in functions and code
+  generation is available via -mbmi.
+
+
+MicroBlaze
+----------
+
+- Support has been added for the Xilinx MicroBlaze softcore processor
+  (microblaze-elf) embedded target.  This configurable processor is
+  supported on several Xilinx Spartan and Virtex FPGAs.
+
+
+MIPS
+----
+
+- GCC now supports the Loongson 3A processor.  Its canonical -march=
+  and -mtune= name is loongson3a.
+
+
+MN10300 / AM33
+--------------
+
+- The inline assembly register constraint "A" has been renamed "c".
+  This constraint is used to select a floating-point register that can
+  be used as the destination of a multiply-accumulate instruction.
+
+- New inline assembly register constraints "A" and "D" have been
+  added.  These constraint letters resolve to all general registers
+  when compiling for AM33, and resolve to address registers only or
+  data registers only when compiling for MN10300.
+
+- The MDR register is represented in the compiler.  One can access the
+  register via the "z" constraint in inline assembly.  It can be
+  marked as clobbered or used as a local register variable via the
+  "mdr" name.  The compiler uses the RETF instruction if the function
+  does not modify the MDR register, so it is important that inline
+  assembly properly annotate any usage of the register.
+
+
+PowerPC/PowerPC64
+-----------------
+
+- GCC now supports the Applied Micro Titan processor with -mcpu=titan.
+
+- The -mrecip option has been added, which indicates whether the
+  reciprocal and reciprocal square root instructions should be used.
+
+- The -mveclibabi=mass option can be used to enable the compiler to
+  autovectorize mathematical functions using the Mathematical
+  Acceleration Subsystem library.
+
+- The -msingle-pic-base option has been added, which instructs the
+  compiler to avoid loading the PIC base register in function
+  prologues.  The PIC base register must be initialized by the runtime
+  system.
+
+- The -mblock-move-inline-limit option has been added, which enables
+  the user to control the maximum size of inlined memcpy calls and
+  similar.
+
+- PowerPC64 GNU/Linux support for applications requiring a large TOC
+  section has been improved.  A new command-line option,
+  -mcmodel=MODEL, controls this feature; valid values for MODEL are
+  small, medium, or large.
+
+- The altivec builtin functions vec_ld and vec_st have been modified
+  to generate the Altivec memory instructions LVX and STVX, even if
+  the -mvsx option is used.  In the initial GCC 4.5 release, these
+  builtin functions were changed to generate VSX memory reference
+  instructions instead of Altivec memory instructions, but there are
+  differences between the two instructions.  If the VSX instruction
+  set is available, you can now use the new builtin functions
+  vec_vsx_ld and vec_vsx_st which always generates the VSX memory
+  instructions.
+
+- The GCC compiler on AIX now defaults to a process layout with a
+  larger data space allowing larger programs to be compiled.
+
+- The GCC long double type on AIX 6.1 and above has reverted to 64 bit
+  double precision, matching the AIX XL compiler default, because of
+  missing C99 symbols required by the GCC runtime.
+
+- The default processor scheduling model and tuning for PowerPC64
+  GNU/Linux and for AIX 6.1 and above now is POWER7.
+
+
+S/390, zSeries and System z9/z10, IBM zEnterprise z196
+------------------------------------------------------
+
+- Support for the zEnterprise z196 processor has been added.  When
+  using the -march=z196 option, the compiler will generate code making
+  use of the following instruction facilities:
+
+  - Conditional load/store
+  - Distinct-operands
+  - Floating-point-extension
+  - Interlocked-access
+  - Population-count
+
+- The -mtune=z196 option avoids the compare and branch instructions as
+  well as the load address instruction with an index register as much
+  as possible and performs instruction scheduling appropriate for the
+  new out-of-order pipeline architecture.
+
+- When using the -m31 -mzarch options the generated code still
+  conforms to the 32-bit ABI but uses the general purpose registers as
+  64-bit registers internally.  This requires a Linux kernel saving
+  the whole 64-bit registers when doing a context switch.  Kernels
+  providing that feature indicate that by the 'highgprs' string in
+  /proc/cpuinfo.
+
+- The SSA loop prefetching pass is enabled when using -O3.
+
+
+SPARC
+-----
+
+- GCC now supports the LEON series of SPARC V8 processors.  The code
+  generated by the compiler can either be tuned to it by means of the
+  --with-tune=leon configure option and -mtune=leon compilation
+  option, or the compiler can be built for the sparc-leon-{elf,linux}
+  and sparc-leon3-{elf,linux} targets directly.
+
+- GCC has stopped sign/zero-extending parameter registers in the
+  callee for functions taking parameters with sub-word size in 32-bit
+  mode, since this is redundant with the specification of the ABI.
+  GCC has never done so in 64-bit mode since this is also redundant.
+
+
+Operating Systems
+-----------------
+
+Android
+-------
+
+- GCC now supports the Bionic C library and provides a convenient way
+  of building native libraries and applications for the Android
+  platform.  Refer to the documentation of the -mandroid and -mbionic
+  options for details on building native code.  At the moment, Android
+  support is enabled only for ARM.
+
+
+Darwin/Mac OS X
+---------------
+
+- General
+
+  - Initial support for CFString types has been added. This allows GCC
+    to build projects including the system Core Foundation
+    frameworks. The GCC Objective-C family supports CFString
+    "toll-free bridged" as per the Mac OS X system tools. CFString is
+    also recognized in the context of format attributes and arguments
+    (see the documentation for format attributes for limitations).  At
+    present, 8-bit character types are supported.
+
+  - LTO-support.  Darwin has benefited from ongoing work on LTO;
+    support for this is now stable and enabled by default.
+
+  - Object file size reduction. The Darwin zeroed memory allocators
+    have been re-written to make more use of .zerofill sections.  For
+    non-debug code, this can reduce object file size significantly.
+
+- x86 Architecture
+
+  - The -mdynamic-no-pic option has been enabled.
+
+  - Code supporting -mdynamic-no-pic optimization has been added and
+    is applicable to -m32 builds. The compiler bootstrap uses the
+    option where appropriate.
+
+  - The default value for -mtune= has been changed.Since Darwin
+    systems are primarily Xeon, Core-2 or similar the default tuning
+    has been changed to -mtune=core2.
+
+- PPC Architecture
+
+  - Darwin64 ABI.
+
+  - Several significant bugs have been fixed, such that GCC now
+    produces code compatible with the Darwin64 PowerPC ABI.
+
+  - libffi and boehm-gc.The Darwin ports of the libffi and boehm-gc
+    libraries have been upgraded to include a Darwin64
+    implementation. This means that powerpc*-*-darwin9 platforms may
+    now, for example, build Java applications with -m64 enabled.
+
+  - Plug-in support has been enabled.
+
+  - The -fsection-anchors option is now available although, presently,
+    not heavily tested.
+
+
+Solaris 2
+---------
+
+- New Features
+
+  - Support symbol versioning with the Sun linker.
+  - Allow libstdc++ to leverage full ISO C99 support on Solaris 10+.
+  - Support thread-local storage (TLS) with the Sun assembler on
+    Solaris 2/x86.
+  - Support TLS on Solaris 8/9 if prerequisites are met.
+  - Support COMDAT group with the GNU assembler and recent Sun linker.
+  - Support the Sun assembler visibility syntax.
+  - Default Solaris 2/x86 to -march=pentium4 (Solaris 10+) resp.
+    -march=pentiumpro (Solaris 8/9).
+  - Don't use SSE on Solaris 8/9 x86 by default.
+  - Enable 128-bit long double (__float128) support on Solaris 2/x86.
+
+- ABI Change
+
+  - Change the ABI for returning 8-byte vectors like __m64 in MMX
+    registers on Solaris 10+/x86 to match the Sun Studio 12.1+
+    compilers.  This is an incompatible change.  If you use such
+    types, you must either recompile all your code with the new
+    compiler or use the new -mvect8-ret-in-mem option to remain
+    compatible with previous versions of GCC and Sun Studio.
+
+Windows x86/x86_64
+------------------
+
+- Initial support for decimal floating point.
+
+- Support for the __thiscall calling-convention.
+
+- Support for hot-patchable function prologues via the
+  ms_hook_prologue attribute for x86_64 in addition to 32-bit x86.
+
+- Improvements of stack-probing and stack-allocation mechanisms.
+
+- Support of push/pop-macro pragma as preprocessor command.  With
+  #pragma push_macro("macro-name") the current definition of
+  macro-name is saved and can be restored with #pragma
+  pop_macro("macro-name") to its saved definition.
+
+- Enable 128-bit long double (__float128) support on  MinGW and Cygwin.
+
+
+Documentation improvements
+==========================
+
+
+Other significant improvements
+==============================
+
+Installation changes
+--------------------
+
+- An install-strip make target is provided that installs stripped
+  executables, and may install libraries with unneeded or debugging
+  sections stripped.
+
+- On Power7 systems, there is a potential problem if you build the GCC
+  compiler with a host compiler using options that enables the VSX
+  instruction set generation.  If the host compiler has been patched
+  so that the vec_ld and vec_st builtin functions generate Altivec
+  memory instructions instead of VSX memory instructions, then you
+  should be able to build the compiler with VSX instruction
+  generation.
+
+
+Changes for GCC Developers
+--------------------------
+
+Note: these changes concern developers that develop GCC itself or
+software that integrates with GCC, such as plugins, and not the
+general GCC users.
+
+- The gengtype utility, which previously was internal to the GCC build
+  process, has been enchanced to provide GC root information for
+  plugins as necessary.
+
+- The old GC allocation interface of ggc_alloc and friends was
+  replaced with a type-safe alternative.
+
+
+
+Please send FSF & GNU inquiries & questions to gnu@gnu.org.  There are
+also other ways to contact the FSF.
+
+These pages are maintained by the GCC team.
+
+For questions related to the use of GCC, please consult these web
+pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org
+mailing list might help.  Please send comments on these web pages and
+the development of GCC to our developer list at gcc@gcc.gnu.org.  All
+of our lists have public archives.
+
+Copyright (C) Free Software Foundation, Inc.
+
+Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.
+
+Last modified 2011-03-22
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.sparc
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.sparc
@@ -0,0 +1,102 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_LDBL_3.0@GCC_LDBL_3.0 1:4.2.1
+ GCC_LDBL_4.0.0@GCC_LDBL_4.0.0 1:4.2.1
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_LDBL_4.0.0 1:4.2.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_LDBL_3.0 1:4.2.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_LDBL_3.0 1:4.2.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_LDBL_3.0 1:4.2.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_LDBL_4.0.0 1:4.2.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_LDBL_4.0.0 1:4.2.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/libgcjGCJ.overrides
+++ gcc-4.6-4.6.3/debian/libgcjGCJ.overrides
@@ -0,0 +1,9 @@
+# pick up the exact version, in case another gcj version is installed
+libgcj@GCJ@ binary: binary-or-shlib-defines-rpath
+
+# intended
+libgcj@GCJ@ binary: unused-shlib-entry-in-control-file
+libgcj@GCJ@ binary: shlibs-declares-dependency-on-other-package
+
+# keep patched ltdl copy
+libgcj@GCJ@ binary: embedded-library
--- gcc-4.6-4.6.3.orig/debian/libobjc3.symbols.armel
+++ gcc-4.6-4.6.3/debian/libobjc3.symbols.armel
@@ -0,0 +1,4 @@
+libobjc.so.3 libobjc3 #MINVER#
+#include "libobjc3.symbols.common"
+ __gnu_objc_personality_v0@Base 4.2.1
+ __objc_exception_class@Base 4.3.0
--- gcc-4.6-4.6.3.orig/debian/gcj-BV-jdk.prerm
+++ gcc-4.6-4.6.3/debian/gcj-BV-jdk.prerm
@@ -0,0 +1,15 @@
+#! /bin/sh -e
+
+if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then
+    update-alternatives --quiet --remove javac /usr/bin/gcj-wrapper-@BV@
+    update-alternatives --quiet --remove jar /usr/bin/gjar-@BV@
+    update-alternatives --quiet --remove jarsigner /usr/bin/gjarsigner-@BV@
+    update-alternatives --quiet --remove javah /usr/bin/gjavah-@BV@
+    update-alternatives --quiet --remove javadoc /usr/bin/gjdoc-@BV@
+    update-alternatives --quiet --remove native2ascii /usr/bin/gnative2ascii-@BV@
+    update-alternatives --quiet --remove rmic /usr/bin/grmic-@BV@
+    update-alternatives --quiet --remove serialver /usr/bin/gserialver-@BV@
+    update-alternatives --quiet --remove tnameserv /usr/bin/gtnameserv-@BV@
+fi
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/lib64stdc++6.symbols.powerpc
+++ gcc-4.6-4.6.3/debian/lib64stdc++6.symbols.powerpc
@@ -0,0 +1,9 @@
+libstdc++.so.6 lib64stdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/copyright.in
+++ gcc-4.6-4.6.3/debian/copyright.in
@@ -0,0 +1,567 @@
+This is the Debian GNU/Linux prepackaged version of the GNU compiler
+collection, containing Ada, C, C++, Fortran 95, Java, Objective-C,
+Objective-C++, and Treelang compilers, documentation, and support
+libraries.  In addition, Debian provides the gdc compiler, either in
+the same source package, or built from a separate same source package.
+Packaging is done by the Debian GCC Maintainers
+<debian-gcc@lists.debian.org>, with sources obtained from:
+
+  ftp://gcc.gnu.org/pub/gcc/releases/  (for full releases)
+  svn://gcc.gnu.org/svn/gcc/           (for prereleases)
+  http://bitbucket.org/goshawk/gdc     (for D)
+
+The current gcc-@BV@ source package is taken from the SVN @SVN_BRANCH@.
+
+Changes: See changelog.Debian.gz
+
+Debian splits the GNU Compiler Collection into packages for each language,
+library, and documentation as follows:
+
+Language       Compiler package  Library package    Documentation
+---------------------------------------------------------------------------
+Ada            gnat-@BV@          libgnat-@BV@        gnat-@BV@-doc
+C              gcc-@BV@                              gcc-@BV@-doc
+C++            g++-@BV@           libstdc++6         libstdc++6-@BV@-doc
+D              gdc-@BV@
+Fortran 95     gfortran-@BV@      libgfortran3       gfortran-@BV@-doc
+Go             gccgo-@BV@         libgo0
+Java           gcj-@BV@           libgcj10           libgcj-doc
+Objective C    gobjc-@BV@         libobjc2
+Objective C++  gobjc++-@BV@
+
+For some language run-time libraries, Debian provides source files,
+development files, debugging symbols and libraries containing position-
+independent code in separate packages:
+
+Language  Sources      Development   Debugging            Position-Independent
+------------------------------------------------------------------------------
+C++                                  libstdc++6-@BV@-dbg  libstdc++6-@BV@-pic
+D         libphobos-@BV@-dev
+Java      libgcj10-src libgcj10-dev  libgcj10-dbg
+
+Additional packages include:
+
+All languages:
+libgcc1, libgcc2, libgcc4       GCC intrinsics (platform-dependent)
+gcc-@BV@-base                    Base files common to all compilers
+gcc-@BV@-soft-float              Software floating point (ARM only)
+gcc-@BV@-source                  The sources with patches
+
+Ada:
+libgnatvsn-dev, libgnatvsn@BV@   GNAT version library
+libgnatprj-dev, libgnatprj@BV@   GNAT Project Manager library
+
+C:
+cpp-@BV@, cpp-@BV@-doc            GNU C Preprocessor
+libmudflap0-dev, libmudflap0    Library for instrumenting pointers
+libssp0-dev, libssp0            GCC stack smashing protection library
+libquadmath0                    Math routines for the __float128 type
+fixincludes                     Fix non-ANSI header files
+protoize                        Create/remove ANSI prototypes from C code
+
+Java:
+gij                             The Java bytecode interpreter and VM
+libgcj-common                   Common files for the Java run-time
+libgcj10-awt                    The Abstract Windowing Toolkit
+libgcj10-jar                    Java ARchive for the Java run-time
+
+C, C++ and Fortran 95:
+libgomp1-dev, libgomp1		GCC OpenMP (GOMP) support library
+
+Biarch support: On some 64-bit platforms which can also run 32-bit code,
+Debian provides additional packages containing 32-bit versions of some
+libraries.  These packages have names beginning with 'lib32' instead of
+'lib', for example lib32stdc++6.  Similarly, on some 32-bit platforms which
+can also run 64-bit code, Debian provides additional packages with names
+beginning with 'lib64' instead of 'lib'.  These packages contain 64-bit
+versions of the libraries.  (At this time, not all platforms and not all
+libraries support biarch.)  The license terms for these lib32 or lib64
+packages are identical to the ones for the lib packages.
+
+
+COPYRIGHT STATEMENTS AND LICENSING TERMS
+
+
+GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+
+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.
+
+Files that have exception clauses are licensed under the terms of the
+GNU General Public License; either version 3, or (at your option) any
+later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', version 3 of this
+license in `/usr/share/common-licenses/GPL-3'.
+
+The following runtime libraries are licensed under the terms of the
+GNU General Public License (v3 or later) with version 3.1 of the GCC
+Runtime Library Exception (included in this file):
+
+ - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*,
+   gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h,
+   gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c,
+   gcc/tsystem.h, gcc/typeclass.h).
+ - libdecnumber
+ - libgomp
+ - libssp
+ - libstdc++-v3
+ - libobjc
+ - libmudflap
+ - libgfortran
+ - The libgnat-@BV@ Ada support library and libgnatvsn library.
+ - Various config files in gcc/config/ used in runtime libraries.
+
+In contrast, libgnatprj is licensed under the terms of the pure GNU
+General Public License.
+
+The libgcj library is licensed under the terms of the GNU General
+Public License, with a special exception:
+
+    Linking this library statically or dynamically with other modules
+    is making a combined work based on this library.  Thus, the terms
+    and conditions of the GNU General Public License cover the whole
+    combination.
+
+    As a special exception, the copyright holders of this library give
+    you permission to link this library with independent modules to
+    produce an executable, regardless of the license terms of these
+    independent modules, and to copy and distribute the resulting
+    executable under terms of your choice, provided that you also
+    meet, for each linked independent module, the terms and conditions
+    of the license of that module.  An independent module is a module
+    which is not derived from or based on this library.  If you modify
+    this library, you may extend this exception to your version of the
+    library, but you are not obligated to do so.  If you do not wish
+    to do so, delete this exception statement from your version.
+
+The libffi library is licensed under the following terms:
+
+    libffi - Copyright (c) 1996-2003  Red Hat, Inc.
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    ``Software''), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be included
+    in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+    IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+    OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+    ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+    OTHER DEALINGS IN THE SOFTWARE.
+
+
+The documentation is licensed under the GNU Free Documentation License (v1.2).
+On Debian GNU/Linux systems, the complete text of this license is in
+`/usr/share/common-licenses/GFDL-1.2'.
+
+
+GCC RUNTIME LIBRARY EXCEPTION
+
+Version 3.1, 31 March 2009
+
+Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+This GCC Runtime Library Exception ("Exception") is an additional
+permission under section 7 of the GNU General Public License, version
+3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
+bears a notice placed by the copyright holder of the file stating that
+the file is governed by GPLv3 along with this Exception.
+
+When you use GCC to compile a program, GCC may combine portions of
+certain GCC header files and runtime libraries with the compiled
+program. The purpose of this Exception is to allow compilation of
+non-GPL (including proprietary) programs to use, in this way, the
+header files and runtime libraries covered by this Exception.
+
+0. Definitions.
+
+A file is an "Independent Module" if it either requires the Runtime
+Library for execution after a Compilation Process, or makes use of an
+interface provided by the Runtime Library, but is not otherwise based
+on the Runtime Library.
+
+"GCC" means a version of the GNU Compiler Collection, with or without
+modifications, governed by version 3 (or a specified later version) of
+the GNU General Public License (GPL) with the option of using any
+subsequent versions published by the FSF.
+
+"GPL-compatible Software" is software whose conditions of propagation,
+modification and use would permit combination with GCC in accord with
+the license of GCC.
+
+"Target Code" refers to output from any compiler for a real or virtual
+target processor architecture, in executable form or suitable for
+input to an assembler, loader, linker and/or execution
+phase. Notwithstanding that, Target Code does not include data in any
+format that is used as a compiler intermediate representation, or used
+for producing a compiler intermediate representation.
+
+The "Compilation Process" transforms code entirely represented in
+non-intermediate languages designed for human-written code, and/or in
+Java Virtual Machine byte code, into Target Code. Thus, for example,
+use of source code generators and preprocessors need not be considered
+part of the Compilation Process, since the Compilation Process can be
+understood as starting with the output of the generators or
+preprocessors.
+
+A Compilation Process is "Eligible" if it is done using GCC, alone or
+with other GPL-compatible software, or if it is done without using any
+work based on GCC. For example, using non-GPL-compatible Software to
+optimize any GCC intermediate representations would not qualify as an
+Eligible Compilation Process.
+
+1. Grant of Additional Permission.
+
+You have permission to propagate a work of Target Code formed by
+combining the Runtime Library with Independent Modules, even if such
+propagation would otherwise violate the terms of GPLv3, provided that
+all Target Code was generated by Eligible Compilation Processes. You
+may then convey such a combination under terms of your choice,
+consistent with the licensing of the Independent Modules.
+
+2. No Weakening of GCC Copyleft.
+
+The availability of this Exception does not imply any general
+presumption that third-party software is unaffected by the copyleft
+requirements of the license of GCC.
+
+
+libquadmath/*.[hc]:
+
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Written by Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+   Written by Tobias Burnus  <burnus@net-b.de>
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+libquadmath/gdtoa:
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998, 1999, 2000, 2001 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+libquadmath/math:
+
+atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c:
+    Copyright 2001 by Stephen L. Moshier <moshier@na-net.ornl.gov> 
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c:
+   Changes for 128-bit __float128 are
+   Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+   and are incorporated herein by permission of the author.  The author 
+   reserves the right to distribute this material elsewhere under different
+   copying permissions.  These modifications are distributed here under 
+   the following terms:
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+ldexpq.c:
+   * Conversion to long double by Ulrich Drepper,
+   * Cygnus Support, drepper@cygnus.com.
+
+cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c,
+sinq_kernel.c, truncq.c:
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+isinfq.c:
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Change for long double by Jakub Jelinek <jj@ultra.linux.cz>
+ * Public domain.
+
+llroundq.c, lroundq.c, tgammaq.c:
+   Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+                  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+log10q.c:
+   Cephes Math Library Release 2.2:  January, 1991
+   Copyright 1984, 1991 by Stephen L. Moshier
+   Adapted for glibc November, 2001
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+remaining files:
+
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+
+
+libjava/classpath/resource/gnu/java/locale/*
+
+They are copyrighted and covered by the terms of use:
+http://www.unicode.org/copyright.html
+
+EXHIBIT 1
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+ Unicode Data Files include all data files under the directories 
+http://www.unicode.org/Public/ and http://www.unicode.org/reports/. 
+Unicode Software includes any source code published in the Unicode Standard or 
+under the directories http://www.unicode.org/Public/ and 
+http://www.unicode.org/reports/.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, 
+INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), 
+AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, 
+ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, 
+DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+	    COPYRIGHT AND PERMISSION NOTICE
+
+Copyrigh (c) 1991-2011 Unicode, Inc. All rights reserved. 
+Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy 
+of the Unicode data files and any associated documentation (the "Data Files") 
+or Unicode software and any associated documentation (the "Software") to deal 
+in the Data Files or Software without restriction, including without limitation 
+the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
+ of the Data Files or Software, and to permit persons to whom the Data Files 
+or Software are furnished to do so, provided that (a) the above copyright notice(s) 
+and this permission notice appear with all copies of the Data Files or Software, 
+(b) both the above copyright notice(s) and this permission notice appear 
+in associated documentation, and (c) there is clear notice in each modified 
+Data File or in the Software as well as in the documentation associated with 
+the Data File(s) or Software that the data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. 
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE
+ FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
+WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be used
+ in advertising or otherwise to promote the sale, use or other dealings in these 
+Data Files or Software without prior written authorization of the copyright holder.
+
+Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be registered
+ in some jurisdictions. All other trademarks and registered trademarks mentioned 
+herein are the property of their respective owners.
+
+
+gcc/go/gofrontend, libgo:
+
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+D:
+gdc-@BV@                         GNU D Compiler
+libphobos-@BV@-dev               D standard runtime library
+
+The D source package is made up of the following components.
+
+The D front-end for GCC:
+ - d/*
+
+Copyright (C) 2004-2007 David Friedman
+Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010
+
+This program 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 2 of the License, or
+(at your option) any later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', version 2 of this
+license in `/usr/share/common-licenses/GPL-2'.
+
+
+The DMD Compiler implementation of the D programming language:
+ - d/dmd/*
+
+Copyright (c) 1999-2010 by Digital Mars
+All Rights Reserved
+written by Walter Bright
+http://www.digitalmars.com
+License for redistribution is by either the Artistic License or
+the GNU General Public License (v1).
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', the Artistic
+license in `/usr/share/common-licenses/Artistic'.
+
+
+The Zlib data compression library:
+ - d/phobos/etc/c/zlib/*
+
+ (C) 1995-2004 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+
+The Phobos standard runtime library:
+ - d/phobos/*
+
+Unless otherwise marked within the file, each file in the source
+is under the following licenses:
+
+Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com
+Written by Walter Bright
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, in both source and binary form, subject to the following
+restrictions:
+
+ o  The origin of this software must not be misrepresented; you must not
+    claim that you wrote the original software. If you use this software
+    in a product, an acknowledgment in the product documentation would be
+    appreciated but is not required.
+ o  Altered source versions must be plainly marked as such, and must not
+    be misrepresented as being the original software.
+ o  This notice may not be removed or altered from any source
+    distribution.
+
+By plainly marking modifications, something along the lines of adding to each
+file that has been changed a "Modified by Foo Bar" line
+underneath the "Written by" line would be adequate.
+
--- gcc-4.6-4.6.3.orig/debian/cpp-BV-CRB.preinst.in
+++ gcc-4.6-4.6.3/debian/cpp-BV-CRB.preinst.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then
+    update-alternatives --quiet --remove @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.ia64
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.ia64
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/README.snapshot
+++ gcc-4.6-4.6.3/debian/README.snapshot
@@ -0,0 +1,36 @@
+Debian gcc-snapshot package
+===========================
+
+This package contains  a recent development SNAPSHOT of all files
+contained in the GNU Compiler Collection (GCC).
+
+DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES!
+
+This package will NEVER hit the testing distribution. It's used for
+tracking gcc bugs submitted to the Debian BTS in recent development
+versions of gcc.
+
+To use this snapshot, you should set the following environment variables:
+
+	LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH
+	PATH=/usr/lib/gcc-snapshot/bin:$PATH
+
+You might also like to use a shell script to wrap up this 
+funcationality, e.g. 
+ 
+place in /usr/local/bin/gcc-snapshot and chmod +x it 
+ 
+----------- snip ----------
+#! /bin/sh
+LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH
+PATH=/usr/lib/gcc-snapshot/bin:$PATH
+gcc "$@"
+----------- snip ----------
+
+Make the same for g++, g77, gij, gcj, cpp, ...
+ 
+Don't forget the quotes around the $@ or gcc will not parse it's 
+command line correctly! 
+
+Unset these variables before building Debian packages destined for an
+upload to ftp-master.debian.org.
--- gcc-4.6-4.6.3.orig/debian/libobjc3.symbols
+++ gcc-4.6-4.6.3/debian/libobjc3.symbols
@@ -0,0 +1,3 @@
+libobjc.so.3 libobjc3 #MINVER#
+#include "libobjc3.symbols.common"
+ __gnu_objc_personality_v0@Base 4.2.1
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.glibcxxmath
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.glibcxxmath
@@ -0,0 +1,22 @@
+ acosl@GLIBCXX_3.4.3 4.1.1
+ asinl@GLIBCXX_3.4.3 4.1.1
+ atan2l@GLIBCXX_3.4 4.1.1
+ atanl@GLIBCXX_3.4.3 4.1.1
+ ceill@GLIBCXX_3.4.3 4.1.1
+ coshl@GLIBCXX_3.4 4.1.1
+ cosl@GLIBCXX_3.4 4.1.1
+ expl@GLIBCXX_3.4 4.1.1
+ floorl@GLIBCXX_3.4.3 4.1.1
+ fmodl@GLIBCXX_3.4.3 4.1.1
+ frexpl@GLIBCXX_3.4.3 4.1.1
+ hypotl@GLIBCXX_3.4 4.1.1
+ ldexpl@GLIBCXX_3.4.3 4.1.1
+ log10l@GLIBCXX_3.4 4.1.1
+ logl@GLIBCXX_3.4 4.1.1
+ modfl@GLIBCXX_3.4.3 4.1.1
+ powl@GLIBCXX_3.4 4.1.1
+ sinhl@GLIBCXX_3.4 4.1.1
+ sinl@GLIBCXX_3.4 4.1.1
+ sqrtl@GLIBCXX_3.4 4.1.1
+ tanhl@GLIBCXX_3.4 4.1.1
+ tanl@GLIBCXX_3.4 4.1.1
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.amd64
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.amd64
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/lib64gcc1.symbols.s390
+++ gcc-4.6-4.6.3/debian/lib64gcc1.symbols.s390
@@ -0,0 +1,107 @@
+libgcc_s.so.1 lib64gcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.1.0@GCC_4.1.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.2@GLIBC_2.2 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.1.0 1:4.1.1
+ __divti3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfti@GCC_4.1.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfti@GCC_4.1.0 1:4.1.1
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_4.1.0 1:4.1.1
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.2 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __lshrti3@GCC_3.0 1:4.1.1
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.1.0 1:4.1.1
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.1.0 1:4.1.1
+ __register_frame@GLIBC_2.2 1:4.1.1
+ __register_frame_info@GLIBC_2.2 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.2 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.2 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/lib64stdc++6.symbols.s390
+++ gcc-4.6-4.6.3/debian/lib64stdc++6.symbols.s390
@@ -0,0 +1,11 @@
+libstdc++.so.6 lib64stdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.kfreebsd-i386
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.kfreebsd-i386
@@ -0,0 +1,3 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.16
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.16
@@ -0,0 +1,199 @@
+ __iso_c_binding_c_f_pointer_i16@GFORTRAN_1.0 4.3
+ _gfortran_all_l16@GFORTRAN_1.0 4.3
+ _gfortran_any_l16@GFORTRAN_1.0 4.3
+ _gfortran_count_16_l@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_16@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift0_16_char4@GFORTRAN_1.4 4.6
+ _gfortran_cshift0_16_char@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift1_16@GFORTRAN_1.0 4.3
+ _gfortran_cshift1_16_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift1_16_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_16@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift0_16_char4@GFORTRAN_1.4 4.6
+ _gfortran_eoshift0_16_char@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift1_16@GFORTRAN_1.0 4.3
+ _gfortran_eoshift1_16_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift1_16_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_16@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift2_16_char4@GFORTRAN_1.4 4.6
+ _gfortran_eoshift2_16_char@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift3_16@GFORTRAN_1.0 4.3
+ _gfortran_eoshift3_16_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift3_16_char@GFORTRAN_1.0 4.3
+ _gfortran_iall_i16@GFORTRAN_1.4 4.6
+ _gfortran_iany_i16@GFORTRAN_1.4 4.6
+ _gfortran_iparity_i16@GFORTRAN_1.4 4.6
+ _gfortran_ishftc16@GFORTRAN_1.0 4.3
+ _gfortran_matmul_i16@GFORTRAN_1.0 4.3
+ _gfortran_matmul_l16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxval_i16@GFORTRAN_1.0 4.3
+ _gfortran_miall_i16@GFORTRAN_1.4 4.6
+ _gfortran_miany_i16@GFORTRAN_1.4 4.6
+ _gfortran_minloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_minval_i16@GFORTRAN_1.0 4.3
+ _gfortran_miparity_i16@GFORTRAN_1.4 4.6
+ _gfortran_mmaxloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminval_i16@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_i16@GFORTRAN_1.0 4.3
+ _gfortran_msum_i16@GFORTRAN_1.0 4.3
+ _gfortran_norm2_r10@GFORTRAN_1.4 4.6
+ _gfortran_parity_l16@GFORTRAN_1.4 4.6
+ _gfortran_pow_c10_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_c16_i16@GFORTRAN_1.0 4.6
+ _gfortran_pow_c16_i4@GFORTRAN_1.0 4.6
+ _gfortran_pow_c16_i8@GFORTRAN_1.0 4.6 
+ _gfortran_pow_c4_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_c8_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_i16_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_i16_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_i16_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_i4_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_i8_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_r10_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_r16_i16@GFORTRAN_1.0 4.6
+ _gfortran_pow_r16_i4@GFORTRAN_1.0 4.6
+ _gfortran_pow_r16_i8@GFORTRAN_1.0 4.6
+ _gfortran_pow_r4_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_r8_i16@GFORTRAN_1.0 4.3
+ _gfortran_product_i16@GFORTRAN_1.0 4.3
+ _gfortran_reshape_16@GFORTRAN_1.0 4.3
+ _gfortran_shape_16@GFORTRAN_1.0 4.3
+ _gfortran_siall_i16@GFORTRAN_1.4 4.6
+ _gfortran_siany_i16@GFORTRAN_1.4 4.6
+ _gfortran_siparity_i16@GFORTRAN_1.4 4.6
+ _gfortran_smaxloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_r10@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminval_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__char_1_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__index_1_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__len_1_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_16_10@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_16_16@GFORTRAN_1.0 4.6
+ _gfortran_specific__nint_16_4@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_16_8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_i16@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_i16@GFORTRAN_1.0 4.3
+ _gfortran_ssum_i16@GFORTRAN_1.0 4.3
+ _gfortran_sum_i16@GFORTRAN_1.0 4.3
+ _gfortran_transpose_i16@GFORTRAN_1.0 4.3
--- gcc-4.6-4.6.3.orig/debian/lib64gfortran3.overrides
+++ gcc-4.6-4.6.3/debian/lib64gfortran3.overrides
@@ -0,0 +1,2 @@
+# automake gets it wrong for the multilib build
+lib64gfortran3 binary: binary-or-shlib-defines-rpath
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.16.powerpc64
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.16.powerpc64
@@ -0,0 +1,191 @@
+ __iso_c_binding_c_f_pointer_i16@GFORTRAN_1.0 4.3
+ _gfortran_all_l16@GFORTRAN_1.0 4.3
+ _gfortran_any_l16@GFORTRAN_1.0 4.3
+ _gfortran_count_16_l@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_16@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift0_16_char4@GFORTRAN_1.4 4.6
+ _gfortran_cshift0_16_char@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift1_16@GFORTRAN_1.0 4.3
+ _gfortran_cshift1_16_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift1_16_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_16@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift0_16_char4@GFORTRAN_1.4 4.6
+ _gfortran_eoshift0_16_char@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift1_16@GFORTRAN_1.0 4.3
+ _gfortran_eoshift1_16_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift1_16_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_16@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift2_16_char4@GFORTRAN_1.4 4.6
+ _gfortran_eoshift2_16_char@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift3_16@GFORTRAN_1.0 4.3
+ _gfortran_eoshift3_16_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift3_16_char@GFORTRAN_1.0 4.3
+ _gfortran_iall_i16@GFORTRAN_1.4 4.6
+ _gfortran_iany_i16@GFORTRAN_1.4 4.6
+ _gfortran_iparity_i16@GFORTRAN_1.4 4.6
+ _gfortran_ishftc16@GFORTRAN_1.0 4.3
+ _gfortran_matmul_i16@GFORTRAN_1.0 4.3
+ _gfortran_matmul_l16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_maxval_i16@GFORTRAN_1.0 4.3
+ _gfortran_miall_i16@GFORTRAN_1.4 4.6
+ _gfortran_miany_i16@GFORTRAN_1.4 4.6
+ _gfortran_minloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_minval_i16@GFORTRAN_1.0 4.3
+ _gfortran_miparity_i16@GFORTRAN_1.4 4.6
+ _gfortran_mmaxloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_mminval_i16@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_i16@GFORTRAN_1.0 4.3
+ _gfortran_msum_i16@GFORTRAN_1.0 4.3
+ _gfortran_parity_l16@GFORTRAN_1.4 4.6
+ _gfortran_pow_c16_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_c4_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_c8_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_i16_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_i16_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_i16_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_i4_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_i8_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_r16_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_r4_i16@GFORTRAN_1.0 4.3
+ _gfortran_pow_r8_i16@GFORTRAN_1.0 4.3
+ _gfortran_product_i16@GFORTRAN_1.0 4.3
+ _gfortran_reshape_16@GFORTRAN_1.0 4.3
+ _gfortran_shape_16@GFORTRAN_1.0 4.3
+ _gfortran_siall_i16@GFORTRAN_1.4 4.6
+ _gfortran_siany_i16@GFORTRAN_1.4 4.6
+ _gfortran_siparity_i16@GFORTRAN_1.4 4.6
+ _gfortran_smaxloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_16_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_i16@GFORTRAN_1.0 4.3
+ _gfortran_sminval_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__char_1_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__index_1_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__len_1_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_i16@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_16_16@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_16_4@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_16_8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_i16@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_i16@GFORTRAN_1.0 4.3
+ _gfortran_ssum_i16@GFORTRAN_1.0 4.3
+ _gfortran_sum_i16@GFORTRAN_1.0 4.3
+ _gfortran_transpose_i16@GFORTRAN_1.0 4.3
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.64
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.64
@@ -0,0 +1,2 @@
+ _gfortran_clz128@GFORTRAN_1.2 4.4.0
+ _gfortran_ctz128@GFORTRAN_1.2 4.4.0
--- gcc-4.6-4.6.3.orig/debian/rules2
+++ gcc-4.6-4.6.3/debian/rules2
@@ -0,0 +1,2168 @@
+#! /usr/bin/make -f
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+.SUFFIXES:
+
+include debian/rules.defs
+include debian/rules.parameters
+
+# some tools
+SHELL	= /bin/bash -e		# brace expansion in rules file
+IR	= install -m 644	# Install regular file
+IP	= install -m 755	# Install program
+IS	= install -m 755	# Install script
+
+#number of jobs to run for build
+ifeq ($(USE_NJOBS),no)
+  NJOBS :=
+  USE_CPUS := 1
+else
+  ifeq ($(with_java),yes)
+    MEM_PER_CPU = 192
+  else
+    MEM_PER_CPU = 128
+  endif
+  NUM_CPUS := $(shell if echo $(USE_NJOBS) | grep -q -E '^[0-9]+$$'; \
+			then echo $(USE_NJOBS); \
+			else getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1; fi)
+  USE_CPUS := $(shell mt=`awk '/^MemTotal/ { print $$2 }' /proc/meminfo`; \
+			awk -vn=$(NUM_CPUS) -vmt=$$mt -vm=$(MEM_PER_CPU) \
+				'END { mt/=1024; n2 = int(mt/m); print n==1 ? 1 : n2<n+1 ? n2 : n+1}' < /dev/null)
+  ifneq (,$(strip $(USE_CPUS)))
+    NJOBS := -j $(USE_CPUS)
+  endif
+endif
+
+# Support parallel=<n> in DEB_BUILD_OPTIONS (see #209008)
+ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
+  NJOBS := -j $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
+endif
+
+# On kfreebsd-*, disable parallel builds due to #637236.  Note that we
+# override even DEB_BUILD_OPTIONS.
+ifneq (,$(filter $(DEB_TARGET_ARCH), kfreebsd-amd64))
+  USE_NJOBS := no
+  NJOBS :=
+  USE_CPUS := 1
+endif
+
+# kernel-specific ulimit hack
+ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux)
+  ULIMIT_M =  if [ -e /proc/meminfo ]; then \
+	    m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \
+		/proc/meminfo`; \
+	  else \
+	    m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \
+	  fi; \
+	  ulimit -m $$m; \
+	  echo "Limited memory for test runs to `ulimit -m`kB"
+else
+  ULIMIT_M = true
+endif
+
+ifeq ($(locale_data),generate)
+  SET_LOCPATH = LOCPATH=$(PWD)/locales
+endif
+
+SET_PATH = PATH=$(PWD)/bin:/usr/$(libdir)/gcc/bin:$$PATH
+ifeq ($(trunk_build),yes)
+  ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE)))
+    SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(PWD)/bin:/usr/$(libdir)/gcc/bin:$$PATH
+  endif
+  ifneq (,$(findstring ppc64-linux,$(DEB_TARGET_GNU_TYPE)))
+    SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(PWD)/bin:/usr/$(libdir)/gcc/bin:$$PATH
+  endif
+endif
+
+# the recipient for the test summaries. Send with: debian/rules mail-summary
+S_EMAIL = gcc@packages.debian.org gcc-testresults@gcc.gnu.org
+
+# build not yet prepared to take variables from the environment
+define unsetenv
+  unexport $(1)
+  $(1) =
+endef
+$(foreach v, CPPFLAGS CFLAGS CXXFLAGS FFLAGS LDFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v)))))
+
+ifeq ($(REVERSE_CROSS),yes)
+  CC	=
+else
+  CC	= $(if $(filter yes,$(with_ada)),gnatgcc,gcc)
+endif
+
+ifneq ($(distribution),Ubuntu)
+  ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel mips mipsel))
+    STAGE1_CFLAGS = -g -O2
+  endif
+endif
+
+ifeq ($(with_d),yes)
+  CFLAGS  += -std=gnu99
+  LDFLAGS += -lm
+endif
+
+ifeq ($(with_ssp_default),yes)
+  STAGE1_CFLAGS	= -g
+  BOOT_CFLAGS	= -g -O2
+  LIBCFLAGS		= -g -O2
+  LIBCXXFLAGS	= -g -O2 -fno-implicit-templates
+  # Only use -fno-stack-protector when known to the stage1 compiler.
+  cc-fno-stack-protector := $(shell if $(CC) $(CFLAGS) -fno-stack-protector \
+                             -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
+							 then echo "-fno-stack-protector"; fi;)
+  $(foreach var,STAGE1_CFLAGS BOOT_CFLAGS LIBCFLAGS LIBCXXFLAGS,$(eval \
+    $(var) += $(cc-fno-stack-protector)))
+endif
+
+ifeq ($(DEB_CROSS),yes)
+  CFLAGS	= -g -O2
+endif
+
+ifneq (,$(findstring static,$(DEB_BUILD_OPTIONS)))
+  LDFLAGS	+= -static
+endif
+
+CFLAGS_TO_PASS = \
+	$(if $(CFLAGS),CFLAGS="$(CFLAGS)") \
+	$(if $(BOOT_CFLAGS),BOOT_CFLAGS="$(BOOT_CFLAGS)") \
+	$(if $(LIBCFLAGS),LIBCFLAGS="$(LIBCFLAGS)") \
+	$(if $(LIBCXXFLAGS),LIBCXXFLAGS="$(LIBCXXFLAGS)")
+LDFLAGS_TO_PASS = \
+	$(if $(LDFLAGS),LDFLAGS="$(LDFLAGS)")
+STAGE1_CFLAGS_TO_PASS = \
+	$(if $(STAGE1_CFLAGS),STAGE1_CFLAGS="$(STAGE1_CFLAGS)")
+
+docdir		= usr/share/doc
+
+CONFARGS = -v \
+	--with-pkgversion='$(distribution)$(if $(with_linaro_branch),/Linaro)___$(DEB_VERSION)' \
+	--with-bugurl='file:///usr/share/doc/$(PKGSOURCE)/README.Bugs'
+
+CONFARGS += \
+	--enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \
+	--prefix=/$(PF)
+
+ifeq ($(versioned_packages),yes)
+  CONFARGS += --program-suffix=-$(BASE_VERSION)
+endif
+
+ifdef DEB_STAGE
+  CONFARGS += \
+	--disable-libgomp  \
+	--disable-libmudflap  \
+	--disable-libssp \
+	--disable-multiarch \
+	--disable-multilib  \
+	--disable-libquadmath \
+	--disable-threads \
+	--libexecdir=/$(libexecdir) \
+	--libdir=/$(PF)/$(configured_libdir) \
+	--with-build-sysroot=$(with_build_sysroot) \
+	--with-sysroot=$(with_sysroot)
+
+  ifeq ($(DEB_STAGE),stage1)
+    CONFARGS += \
+	--disable-shared  \
+	--with-newlib  \
+	--without-headers
+  else
+    # stage2
+    CONFARGS += \
+	--enable-shared
+  endif
+else
+  CONFARGS += \
+	--enable-shared \
+	--enable-linker-build-id \
+	--with-system-zlib \
+
+ifneq ($(single_package),yes)
+  CONFARGS += \
+        --libexecdir=/$(libexecdir) \
+        --without-included-gettext \
+        --enable-threads=posix \
+	--with-gxx-include-dir=/$(cxx_inc_dir) \
+	--libdir=/$(PF)/$(configured_libdir)
+endif
+
+ifneq ($(with_cpp),yes)
+  CONFARGS += --disable-cpp
+endif
+
+ifeq ($(with_nls),yes)
+  CONFARGS += --enable-nls
+else
+  CONFARGS += --disable-nls
+endif
+
+ifeq ($(with_bootstrap),off)
+  CONFARGS += --disable-bootstrap
+else ifneq ($(with_bootstrap),)
+  CONFARGS += --enable-bootstrap=$(with_bootstrap)
+endif
+
+ifneq ($(with_sysroot),)
+  CONFARGS += --with-sysroot=$(with_sysroot)
+endif
+ifneq ($(with_build_sysroot),)
+  CONFARGS += --with-build-sysroot=$(with_build_sysroot)
+endif
+
+ifeq ($(force_gnu_locales),yes)
+  CONFARGS += --enable-clocale=gnu
+endif
+
+ifeq ($(with_cxx)-$(with_debug),yes-yes)
+  CONFARGS += --enable-libstdcxx-debug
+endif
+CONFARGS += --enable-libstdcxx-time=yes
+
+ifeq (,$(filter $(DEB_TARGET_ARCH), hurd-i386 kfreebsd-i386 kfreebsd-amd64))
+  CONFARGS += --enable-gnu-unique-object
+endif
+
+ifneq ($(with_ssp),yes)
+  CONFARGS += --disable-libssp
+endif
+
+ifneq ($(with_mudflap),yes)
+  CONFARGS += --disable-libmudflap
+endif
+
+ifneq ($(with_gomp),yes)
+  CONFARGS += --disable-libgomp
+endif
+
+ifeq ($(with_plugins),yes)
+  CONFARGS += --enable-plugin
+endif
+
+#ifeq ($(with_gold),yes)
+#  CONFARGS += --enable-gold --enable-ld=default
+#endif
+
+#CONFARGS += --with-plugin-ld=ld.gold
+#CONFARGS += --with-plugin-ld
+
+jvm_name_short = java-1.5.0-gcj-$(BASE_VERSION)$(if $(findstring snap,$(PKGSOURCE)),-snap)
+jvm_name_long = $(jvm_name_short)-1.5.0.0
+
+ifeq ($(with_java),yes)
+  CONFARGS += --disable-browser-plugin
+  ifeq ($(with_java_maintainer_mode),yes)
+    CONFARGS += --enable-java-maintainer-mode
+  endif
+  ifeq ($(with_java_biarch_awt),yes)
+    CONFARGS += --enable-java-awt=$(subst $(SPACE),$(COMMA),$(foreach p,$(java_awt_peers),$(p)-default))
+  else
+    CONFARGS += --enable-java-awt=$(subst $(SPACE),$(COMMA),$(foreach p,$(java_awt_peers),$(p)))
+  endif
+  ifneq (,$(findstring gtk,$(java_awt_peers)))
+    CONFARGS += --enable-gtk-cairo
+  endif
+  jvm_dir = /usr/lib/jvm/$(jvm_name_short)
+  CONFARGS += --with-java-home=$(jvm_dir)/jre
+  CONFARGS += --enable-java-home \
+	--with-jvm-root-dir=$(jvm_dir) \
+	--with-jvm-jar-dir=/usr/lib/jvm-exports/$(jvm_name_short)
+  CONFARGS += --with-arch-directory=$(java_cpu)
+  ifeq (./,$(dir $(ecj_jar)))
+    CONFARGS += --with-ecj-jar=$(jvm_dir)/lib/ecj.jar
+  else
+    CONFARGS += --with-ecj-jar=$(ecj_jar)
+  endif
+endif
+
+ifeq ($(with_gcj),yes)
+  ifeq ($(DEB_HOST_GNU_CPU),m32r)
+    CONFARGS += --enable-libgcj
+  endif
+endif
+
+ifeq ($(with_objc)-$(with_objc_gc),yes-yes)
+  CONFARGS += --enable-objc-gc
+endif
+
+ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), i486-linux-gnu i586-linux-gnu i686-linux-gnu))
+    ifeq ($(biarch64),yes)
+      CONFARGS += --enable-targets=all
+    endif
+endif
+
+ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-kfreebsd-gnu s390x-linux-gnu))
+    ifneq ($(biarch32),yes)
+      CONFARGS += --disable-multilib
+    endif
+endif
+
+ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), powerpc-linux-gnu powerpc-linux-gnuspe))
+    CONFARGS += --enable-secureplt
+    ifeq ($(biarch64),yes)
+      CONFARGS += --disable-softfloat \
+	--enable-targets=powerpc-linux,powerpc64-linux --with-cpu=default32
+    else
+      CONFARGS += --disable-multilib
+    endif
+endif
+
+ifneq (,$(findstring powerpc64-linux,$(DEB_TARGET_GNU_TYPE)))
+    CONFARGS += --enable-secureplt
+    ifeq ($(biarch32),yes)
+      CONFARGS += --disable-softfloat --enable-targets=powerpc64-linux,powerpc-linux
+    else
+      CONFARGS += --disable-multilib
+    endif
+    ifeq ($(distribution),Ubuntu)
+      CONFARGS += --with-cpu-32=power7 --with-cpu-64=power7
+    endif
+endif
+
+ifeq ($(REVERSE_CROSS),yes)
+  # FIXME: requires ppl and cloog headers for the target
+  CONFARGS += --without-ppl
+  # FIXME: build currently fails build the precompiled headers
+  CONFARGS += --disable-libstdcxx-pch
+endif
+endif # !DEB_STAGE
+
+ifeq ($(findstring powerpcspe,$(DEB_TARGET_ARCH)),powerpcspe)
+  CONFARGS += --with-cpu=8548 --enable-e500_double --with-long-double-128
+endif
+
+ifneq (,$(findstring softfloat,$(DEB_TARGET_GNU_CPU)))
+  CONFARGS += --with-float=soft
+endif
+
+ifneq (,$(findstring arm-vfp,$(DEB_TARGET_GNU_CPU)))
+  CONFARGS += --with-fpu=vfp
+endif
+
+ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU)))
+  ifeq ($(multilib),yes)
+    CONFARGS += --enable-multilib
+  endif
+  CONFARGS += --disable-sjlj-exceptions
+  # FIXME: libjava is not ported for thumb, this hack only works for
+  # separate gcj builds
+  ifneq (,$(filter armhf,$(DEB_TARGET_ARCH)))
+    ifneq (,$(findstring gcj,$(PKGSOURCE)))
+      with_arm_arch = armv6
+    else
+      with_arm_arch = armv7-a
+    endif
+    with_arm_fpu = vfpv3-d16
+  else
+    # armel
+    ifeq ($(distribution),Debian)
+      with_arm_arch = armv4t
+    else ifneq (,$(filter $(distrelease),karmic))
+      with_arm_arch = armv6
+      with_arm_fpu = vfpv3-d16
+    else ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+      ifneq (,$(findstring gcj,$(PKGSOURCE)))
+        with_arm_arch = armv6
+      else
+        with_arm_arch = armv7-a
+      endif
+      with_arm_fpu = vfpv3-d16
+    else
+      with_arm_arch = armv5t  # starting with quantal
+    endif
+  endif
+  CONFARGS += --with-arch=$(with_arm_arch)
+  ifneq (,$(with_arm_fpu))
+    CONFARGS += --with-fpu=$(with_arm_fpu)
+  endif
+  CONFARGS += --with-float=$(float_abi)
+  ifeq ($(with_arm_thumb),yes)
+    CONFARGS += --with-mode=thumb
+  endif
+endif
+
+ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),m68k))
+  CONFARGS += --disable-werror
+endif
+# FIXME: correct fix-warnings.dpatch
+ifeq ($(distribution),Ubuntu)
+  CONFARGS += --disable-werror
+endif
+
+ifneq (,$(findstring sparc-linux,$(DEB_TARGET_GNU_TYPE)))
+  ifeq ($(biarch64),yes)
+    CONFARGS += --enable-targets=all
+  endif
+endif
+
+ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE)))
+    ifneq ($(biarch32),yes)
+      CONFARGS += --disable-multilib
+    endif
+endif
+
+ifneq (,$(findstring ia64-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-system-libunwind
+endif
+
+ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-multilib-list=m4,m4-nofpu --with-cpu=sh4
+endif
+
+ifneq (,$(findstring m68k-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --disable-multilib
+endif
+
+ifeq ($(DEB_TARGET_ARCH_OS),linux)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc ppc64 s390 s390x sparc sparc64))
+    qualifier := $(shell dpkg --assert-multi-arch >/dev/null 2>&1 && echo ':$(DEB_TARGET_ARCH)')
+    ifeq ($(DEB_TARGET_ARCH),alpha)
+      glibc_version := $(shell dpkg -s libc6.1$(qualifier) | awk '/^Version:/ {print $$2}')
+    else
+      glibc_version := $(shell dpkg -s libc6$(qualifier) | awk '/^Version:/ {print $$2}')
+    endif
+    with_ldbl128 := $(shell dpkg --compare-versions $(glibc_version) gt 2.3.99 && echo yes)
+    ifeq ($(with_ldbl128),yes)
+      CONFARGS += --with-long-double-128
+    endif
+  endif
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 kfreebsd-i386 kfreebsd-amd64))
+  ifneq (,$(filter $(distrelease),etch lenny dapper hardy))
+    CONFARGS += --with-arch-32=i486
+  else ifneq (,$(filter $(distrelease),squeeze wheezy sid jaunty karmic lucid))
+    CONFARGS += --with-arch-32=i586
+  else
+    CONFARGS += --with-arch-32=i686
+  endif
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-i386))
+  CONFARGS += --with-arch=i586
+endif
+
+ifeq ($(DEB_TARGET_ARCH),lpia)
+  CONFARGS += --with-arch=pentium-m --with-tune=i586
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 hurd-i386 kfreebsd-i386 kfreebsd-amd64))
+  CONFARGS += --with-tune=generic
+endif
+
+ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-32=mips2 --with-tune-32=mips32
+  ifeq ($(biarchn32)-$(biarch64),yes-yes)
+    CONFARGS += --enable-targets=all
+    CONFARGS += --with-arch-64=mips3 --with-tune-64=mips64
+  endif
+endif
+
+ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-32=mips2 --with-tune-32=mips32
+  ifeq ($(biarchn32)-$(biarch64),yes-yes)
+    CONFARGS += --enable-targets=all
+    CONFARGS += --with-arch-64=mips3 --with-tune-64=mips64
+  endif
+endif
+
+ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE)))
+  ifeq ($(biarch64),yes)
+    CONFARGS += --enable-targets=all
+  endif
+endif
+
+ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --disable-libstdcxx-pch
+endif
+
+ifneq (,$(findstring gdc, $(PKGSOURCE)))
+    CONFARGS += --disable-libquadmath
+endif
+
+ifeq ($(trunk_build),yes)
+  ifeq ($(findstring --disable-werror, $(CONFARGS)),)
+    CONFARGS += --disable-werror
+  endif
+  CONFARGS += --enable-checking=yes
+else
+  CONFARGS += --enable-checking=release
+endif
+
+CONFARGS += \
+	--build=$(DEB_BUILD_GNU_TYPE) \
+	--host=$(DEB_HOST_GNU_TYPE) \
+	--target=$(TARGET_ALIAS)
+
+ifeq ($(DEB_CROSS),yes)
+  CONFARGS += \
+	--program-prefix=$(TARGET_ALIAS)- \
+	--includedir=/$(PFL)/include
+  ifndef DEB_STAGE
+  CONFARGS += \
+	--with-headers=/$(PFL)/include \
+	--with-libs=/$(PFL)/lib
+  endif
+  # FIXME: dpkg-shlibdeps doesn't work without this
+  SET_CROSS_LIB_PATH = LD_LIBRARY_PATH=/lib:/usr/lib:$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib$${DIRNAME}
+  ifeq ($(DEB_TARGET_ARCH),armel)
+    SET_CROSS_LIB_PATH = LD_LIBRARY_PATH=/lib:/usr/lib:$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib$${DIRNAME}:/$(PF)/arm-linux-gnueabihf/lib
+  endif
+  ifeq ($(DEB_TARGET_ARCH),armhf)
+    SET_CROSS_LIB_PATH = LD_LIBRARY_PATH=/lib:/usr/lib:$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib$${DIRNAME}:/$(PF)/arm-linux-gnueabi/lib
+  endif
+endif
+
+ifeq ($(with_bootstrap),off)
+  bootstrap_target =
+else ifeq ($(with_bootstrap),)
+  bootstrap_target = bootstrap-lean
+  # no profiledbootstrap on the following architectures
+  # - m68k: we're happy that it builds at all
+  no_profiled_bs_archs := alpha arm hppa m68k
+  ifeq (,$(findstring $(DEB_TARGET_GNU_CPU),$(no_profiled_bs_archs)))
+    bootstrap_target = profiledbootstrap
+    # FIXME: fails now even on ix86
+    bootstrap_target = bootstrap-lean
+  endif
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    bootstrap_target = bootstrap-lean
+  endif
+  ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+    bootstrap_target = bootstrap-lean
+  endif
+
+  # disable profiled bootstrap on slow archs, get to testing first ...
+  ifeq ($(distribution),Debian)
+    ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel armhf mips mipsel sparc))
+      bootstrap_target = bootstrap-lean
+    endif
+  endif
+  ifeq ($(distribution),Ubuntu)
+    ifneq (,$(filter $(DEB_TARGET_ARCH), sparc))
+      bootstrap_target = bootstrap-lean
+    endif
+  endif
+endif
+
+DEJAGNU_TIMEOUT=300
+# Increase the timeout for one testrun on slow architectures
+ifeq ($(distribution),Debian)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),arm armel armhf hppa m68k sparc))
+    DEJAGNU_TIMEOUT=600
+  else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia))
+    DEJAGNU_TIMEOUT=180
+  endif
+  ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu)
+    DEJAGNU_TIMEOUT=900
+  endif
+else ifeq ($(distribution),Ubuntu)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),armel armhf hppa ia64 sparc))
+    DEJAGNU_TIMEOUT=600
+  else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia))
+    DEJAGNU_TIMEOUT=180
+  endif
+endif
+
+DEJAGNU_RUNS =
+ifneq ($(trunk_build),yes)
+ifeq ($(with_ssp),yes)
+  ifneq ($(single_package),yes)
+    DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector)
+  endif
+  # FIXME Ubuntu armel buildd hangs
+  ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU)))
+    DEJAGNU_RUNS =
+  endif
+  ifeq ($(distribution),Ubuntu)
+    # the buildds are just slow ... don't check the non-default
+    ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),ia64 powerpc sparc))
+      DEJAGNU_RUNS =
+    endif
+  endif
+endif
+endif
+
+ifeq ($(distribution),Ubuntu)
+  ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU)))
+    ifeq ($(with_arm_thumb),yes)
+      #DEJAGNU_RUNS += -marm
+    else
+      DEJAGNU_RUNS += -mthumb
+    endif
+  endif
+endif
+
+ifeq ($(with_32bit_check),yes)
+  DEJAGNU_RUNS += -m32
+endif
+ifeq ($(with_64bit_check),yes)
+  ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),mips mipsel))
+    DEJAGNU_RUNS += -mabi=64
+  else
+    DEJAGNU_RUNS += -m64
+  endif
+endif
+ifeq ($(with_n32bit_check),yes)
+  DEJAGNU_RUNS += -mabi=n32
+endif
+
+# gdc is not multilib'd
+ifneq (,$(findstring gdc, $(PKGSOURCE)))
+  DEJAGNU_RUNS =
+endif
+
+# neither is gnat
+ifneq (,$(findstring gnat, $(PKGSOURCE)))
+  DEJAGNU_RUNS =
+endif
+
+ifneq (,$(DEJAGNU_RUNS))
+  RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}"
+endif
+
+# PF is the installation prefix for the package without the leading slash.
+# It's "usr" for gcc releases.
+ifneq (,$(PF))
+  # use value set in the environment
+else ifeq ($(trunk_build),yes)
+  PF		= usr/lib/gcc-snapshot
+else ifeq ($(PKGSOURCE),gcc-linaro)
+  PF		= usr/lib/gcc-linaro
+else
+  PF		= usr
+endif
+
+# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds
+ifeq ($(DEB_CROSS),yes)
+  PFL		= $(PF)/$(DEB_TARGET_GNU_TYPE)
+else
+  PFL		= $(PF)
+endif
+
+# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds
+ifeq ($(DEB_CROSS),yes)
+  RPF		= $(PF)/$(DEB_TARGET_GNU_TYPE)
+else
+  RPF		=
+endif
+
+ifeq ($(with_multiarch_lib),yes)
+  ifeq ($(DEB_CROSS),yes)
+    libdir	= lib
+  else
+    libdir	= lib/$(DEB_TARGET_MULTIARCH)
+  endif
+else
+  libdir	= lib
+endif
+configured_libdir = lib
+
+spulibexecdir	= $(PF)/lib
+hppa64libexecdir= $(PF)/lib
+
+# /usr/libexec doesn't follow the FHS
+ifeq ($(single_package),yes)
+  libdir	= lib
+  libexecdir	= $(PF)/libexec
+  versiondir	= $(GCC_VERSION)
+else
+  libexecdir	= $(PF)/$(configured_libdir)
+  versiondir	= $(BASE_VERSION)
+endif
+buildlibdir	= $(builddir)/$(TARGET_ALIAS)
+
+gcc_lib_dir	= $(PF)/$(configured_libdir)/gcc/$(TARGET_ALIAS)/$(versiondir)
+gcc_lexec_dir	= $(libexecdir)/gcc/$(TARGET_ALIAS)/$(versiondir)
+gcc_spu_lib_dir	= $(PF)/spu/lib/gcc/spu/$(versiondir)
+gcc_spu_lexec_dir	= $(spulibexecdir)/gcc/spu/$(versiondir)
+
+lib32		= $(PF)/lib32
+lib64		= lib64
+libn32		= lib32
+
+p_l= $(1)$(cross_lib_arch)
+p_d= $(1)-dbg$(cross_lib_arch)
+d_l= debian/$(p_l)
+d_d= debian/$(p_d)
+
+ifeq ($(DEB_CROSS),yes)
+  usr_lib = $(PFL)/lib
+
+  # sh4 has multilib. base is sh4-linux-gnu. See #663028.
+  ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE)))
+    usr_lib = $(PFL)/lib/sh4-linux-gnu/
+  endif
+else
+  usr_lib = $(PFL)/$(libdir)
+endif
+usr_lib32 = $(PFL)/lib32
+usr_libn32 = $(PFL)/lib32
+usr_lib64 = $(PFL)/lib64
+# FIXME: Don't hard code
+usr_libhf = $(PFL)/lib/arm-linux-gnueabihf
+usr_libsf = $(PFL)/lib/arm-linux-gnueabi
+
+gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir)
+gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir)
+gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir)
+# FIXME: Don't hard code
+gcc_lib_dirhf = $(gcc_lib_dir)/$(biarchhfsubdir)
+gcc_lib_dirsf = $(gcc_lib_dir)/$(biarchsfsubdir)
+
+libgcc_dir = $(RPF)/$(libdir)
+# yes, really; lib32gcc_s ends up in usr
+libgcc_dir32 = $(PFL)/lib32
+libgcc_dirn32 = $(RPF)/lib32
+libgcc_dir64 = $(RPF)/lib64
+libgcc_dirhf = $(RPF)/lib/arm-linux-gnueabihf
+libgcc_dirsf = $(RPF)/lib/arm-linux-gnueabi
+
+# install_gcc_lib(lib,soname,flavour,package)
+define install_gcc_lib
+	mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/
+	rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so}
+	dh_link -p$(4) \
+	  /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so
+
+endef
+
+checkdirs = $(builddir)
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    ifneq ($(with_standalone_gcj),yes)
+      checkdirs = $(buildlibdir)/libffi $(buildlibdir)/libjava
+    endif
+  endif
+endif
+ifeq ($(with_separate_gnat),yes)
+  ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+    checkdirs = $(builddir)/gcc
+  endif
+endif
+
+ifneq ($(DEB_CROSS),yes)
+  ifneq ($(single_package),yes)
+    cxx_inc_dir	= $(PF)/include/c++/$(BASE_VERSION)
+  else
+    cxx_inc_dir	= $(PF)/include/c++/$(GCC_VERSION)
+  endif
+else
+  cxx_inc_dir	= $(PF)/$(TARGET_ALIAS)/include/c++/$(GCC_VERSION)
+endif
+
+default: build
+
+configure: $(configure_dependencies)
+
+$(configure_dummy_stamp):
+	touch $(configure_dummy_stamp)
+
+$(configure_stamp):
+	dh_testdir
+	: # give information about the build process
+	@echo "------------------------ Build process variables ------------------------"
+	@echo "Number of parallel processes used for the build: $(USE_CPUS)"
+	@echo "Package source: $(PKGSOURCE)"
+	@echo "GCC version: $(GCC_VERSION)"
+	@echo "Base Debian version: $(BASE_VERSION)"
+	@echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))"
+ifeq ($(DEB_CROSS),yes)
+	@echo "Building cross compiler for $(DEB_TARGET_ARCH)"
+endif
+	@echo "Using shell $(SHELL)"
+	@echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))"
+	@echo "CPPFLAGS: $(CPPFLAGS)"
+	@echo "CFLAGS: $(CFLAGS)"
+	@echo "LDFLAGS: $(LDFLAGS)"
+	@echo "BOOT_CFLAGS: $(BOOT_CFLAGS)"
+	@echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)"
+	@echo "Install prefix: /$(PF)"
+ifeq ($(biarchn32)-$(biarch64),yes-yes)
+	@echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)"
+else
+  ifeq ($(biarch64),yes)
+	@echo "Will build the biarch compilers (32/64, defaulting to 32bit)"
+  else
+    ifeq ($(biarch32),yes)
+	@echo "Will build the biarch compilers (64/32, defaulting to 64bit)"
+    else
+	@echo "Will not build the biarch compilers"
+    endif
+  endif
+endif
+
+ifeq ($(with_cxx),yes)
+	@echo "Will build the C++ compiler"
+else
+	@echo "Will not build the C++ compiler: $(with_cxx)"
+endif
+ifeq ($(with_objc),yes)
+	@echo "Will build the ObjC compiler."
+    ifeq ($(with_objc_gc),yes)
+	@echo "Will build the extra ObjC runtime for garbage collection."
+    else
+	@echo "Will not build the extra ObjC runtime for garbage collection."
+    endif
+else
+	@echo "Will not build the ObjC compiler: $(with_objc)"
+endif
+ifeq ($(with_objcxx),yes)
+	@echo "Will build the Obj-C++ compiler"
+else
+	@echo "Will not build the Obj-C++ compiler: $(with_objcxx)"
+endif
+ifeq ($(with_fortran),yes)
+	@echo "Will build the Fortran 95 compiler."
+else
+	@echo "Will not build the Fortran 95 compiler: $(with_fortran)"
+endif
+ifeq ($(with_java),yes)
+	@echo "Will build the Java compiler."
+else
+	@echo "Will not build the Java compiler: $(with_java)"
+endif
+ifeq ($(with_ada),yes)
+	@echo "Will build the Ada compiler."
+  ifeq ($(with_libgnat),yes)
+	@echo "Will build the shared Ada libraries."
+  else
+	@echo "Will not build the shared Ada libraries."
+  endif
+else
+	@echo "Will not build the Ada compiler: $(with_ada)"
+endif
+ifeq ($(with_go),yes)
+	@echo "Will build the Go compiler."
+else
+	@echo "Will not build the Go compiler: $(with_go)"
+endif
+ifeq ($(with_d),yes)
+	@echo "Will build the D compiler"
+  ifeq ($(with_libphobos),yes)
+	@echo "Will build the phobos D runtime library."
+  else
+	@echo "Will not build the phobos D runtime library: $(with_libphobos)"
+  endif
+else
+	@echo "Will not build the D compiler: $(with_d)"
+endif
+ifeq ($(with_ssp),yes)
+	@echo "Will build with SSP support."
+else
+	@echo "Will build without SSP support: $(with_ssp)"
+endif
+ifeq ($(with_check),yes)
+	@echo "Will run the testsuite."
+  ifeq ($(biarch64),yes)
+    ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),mips mipsel))
+	@echo 'Will run the testsuite with -mabi=64: $(with_64bit_check)'
+    else
+	@echo 'Will run the testsuite with -m64: $(with_64bit_check)'
+    endif
+  endif
+  ifeq ($(biarch32),yes)
+	@echo 'Will run the testsuite with -m32: $(with_32bit_check)'
+  endif
+  ifeq ($(biarchn32),yes)
+	@echo 'Will run the testsuite with -mabi=n32: $(with_n32bit_check)'
+  endif
+else
+	@echo "Will not run the testsuite: $(with_check)"
+endif
+ifeq ($(with_nls),yes)
+	@echo "Will enable national language support."
+else
+	@echo "Will disable national language support: $(with_nls)"
+endif
+	@echo "-----------------------------------------------------------------------------"
+	@echo ""
+ifeq ($(with_check),yes)
+	@if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \
+	  : ; \
+	else \
+	  echo "expect is failing on your system with the above error, which means the GCC"; \
+	  echo "testsuite will fail.  Please resolve the above issues and retry the build."; \
+	  echo "-----------------------------------------------------------------------------"; \
+	  exit 1; \
+	fi
+endif
+	rm -f $(configure_stamp) $(build_stamp)
+	cp $(patch_stamp) debian/README.Debian.$(DEB_TARGET_ARCH)
+
+	rm -rf $(builddir)
+	mkdir $(builddir)
+
+	: # configure
+	cd $(builddir) \
+	  && $(SET_PATH) \
+		CC="$(CC)" \
+		$(SET_SHELL) \
+	LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada/rts \
+		../src/configure $(subst ___, ,$(CONFARGS))
+
+	touch $(configure_stamp)
+
+build: $(build_dependencies)
+
+$(build_dummy_stamp):
+	touch $(build_dummy_stamp)
+
+$(build_locale_stamp):
+ifeq ($(locale_data)-$(with_cxx),generate-yes)
+	: # build locales needed by libstdc++ testsuite
+	rm -rf locales
+	mkdir locales
+	- sh debian/locale-gen
+endif
+	touch $(build_locale_stamp)
+
+
+$(build_stamp): $(configure_stamp) $(build_locale_stamp)
+	dh_testdir
+	rm -f bootstrap-protocol
+# DEB_CROSS is never set if REVERSE_CROSS is set and vice-versa.
+# DEB_CROSS build
+ifeq ($(DEB_CROSS),yes)
+	: # build cross compiler for $(TARGET_ALIAS)
+	( \
+	  set +e; \
+	  $(SET_PATH) \
+	  $(SET_LOCPATH) \
+	    $(MAKE) -C $(builddir) $(NJOBS) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		; \
+	  echo $$? > status; \
+	) 2>&1 | tee bootstrap-protocol
+	s=`cat status`; rm -f status; test $$s -eq 0
+else
+  # REVERSE_CROSS build
+  ifeq ($(REVERSE_CROSS),yes)
+	: # build cross compiler for $(TARGET_ALIAS)
+	( \
+	  set +e; \
+	  $(SET_PATH) \
+	  $(SET_LOCPATH) \
+	    $(MAKE) -C $(builddir) $(NJOBS) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		; \
+	  echo $$? > status; \
+	) 2>&1 | tee bootstrap-protocol
+	s=`cat status`; rm -f status; test $$s -eq 0
+else
+  # Native build
+  ifeq ($(with_java),yes)
+	mkdir -p bin
+	ln -sf /usr/bin/fastjar bin/jar
+    ifeq ($(with_native_ecj),yes)
+	: # prepare the standalone ecj jar
+	cp /usr/share/java/ecj.jar $(srcdir)/ecj-standalone.jar
+	zip -d $(srcdir)/ecj-standalone.jar 'org/eclipse/jdt/core/JDTCompilerAdapter*'
+    endif
+    ifeq ($(with_java_maintainer_mode),yes)
+	( \
+	  echo '#!/bin/sh'; \
+	  echo 'exec gij-4.3 -cp /usr/share/java/ecj.jar org.eclipse.jdt.internal.compiler.batch.GCCMain "$$@"'; \
+	) > bin/ecj1
+	chmod +x bin/ecj1
+	: # If we don't have gjavah in PATH, try to build it with the old gij
+	mkdir -p bin
+	if [ -x /usr/bin/gjavah-4.3 ]; then \
+	  ln -sf /usr/bin/gjavah-4.3 bin/gjavah; \
+	elif [ -x bin/gjavah ]; then \
+	  : ; \
+	else \
+	  mkdir -p $(builddir)/java_hacks; \
+	  cd $(builddir)/java_hacks; \
+	  cp -a $(srcdir)/libjava/classpath/tools/external external; \
+	  mkdir -p gnu/classpath/tools; \
+	  cp -a $(srcdir)/libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} \
+	    gnu/classpath/tools/; \
+	  cp -a $(srcdir)/libjava/classpath/resource/gnu/classpath/tools/common/Messages.properties \
+	    gnu/classpath/tools/common; \
+	  cd external/asm; \
+	  for i in `find . -name \*.java`; do gcj-4.3 --encoding ISO-8859-1 -C $$i -I.; done; \
+	  cd ../..; \
+	  for i in `find gnu -name \*.java`; do gcj-4.3 -C $$i -I. -Iexternal/asm/; done; \
+	  gcj-4.3 -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main \
+	    -I. -Iexternal/asm/ `find . -name \*.class` -o $(PWD)/bin/gjavah.real; \
+	  ( \
+	    echo '#!/bin/sh'; \
+	    echo 'export CLASSPATH='`pwd`'$${CLASSPATH:+:$$CLASSPATH}'; \
+	    echo 'exec $(PWD)/bin/gjavah.real "$$@"'; \
+	  ) > $(PWD)/bin/gjavah; \
+	  chmod +x $(PWD)/bin/gjavah; \
+	fi
+    endif
+  endif
+	: # build native compiler
+	( \
+	  set +e; \
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(SET_LOCPATH) \
+	    $(MAKE) -C $(builddir) $(NJOBS) $(bootstrap_target) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(STAGE1_CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		; \
+	  echo $$? > status; \
+	) 2>&1 | tee bootstrap-protocol
+endif
+endif
+	-chmod 755 $(srcdir)/contrib/warn_summary
+	if [ -x $(srcdir)/contrib/warn_summary ]; then \
+	  rm -f bootstrap-summary; \
+	  $(srcdir)/contrib/warn_summary bootstrap-protocol \
+	    > bootstrap-summary; \
+	fi
+
+	touch $(build_stamp)
+
+ifeq ($(versioned_packages),yes)
+  hppa64_configure_flags += --program-suffix=-$(BASE_VERSION)
+endif
+
+ifeq ($(DEB_CROSS),yes)
+  CC_for_hppa64_cross = $(CC)
+else
+  CC_for_hppa64_cross = $(builddir)/gcc/xgcc -B$(builddir)/gcc/
+endif
+
+$(configure_hppa64_stamp): $(build_stamp)
+	dh_testdir
+	rm -f $(configure_hppa64_stamp) $(build_hppa64_stamp)
+	rm -rf $(builddir_hppa64)
+	mkdir $(builddir_hppa64)
+	: # configure
+	cd $(builddir_hppa64) && \
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  CC="$(CC_for_hppa64_cross)" \
+	     ../src/configure \
+		--enable-languages=c \
+		--prefix=/$(PF) \
+		--libexecdir=/$(hppa64libexecdir) \
+		--disable-shared \
+		--disable-nls \
+		--disable-threads \
+		--disable-libgomp \
+		--disable-libmudflap \
+		--disable-libssp \
+		--disable-libquadmath \
+		--enable-plugin \
+		--with-system-zlib \
+		--with-as=/usr/bin/hppa64-linux-gnu-as \
+		--with-ld=/usr/bin/hppa64-linux-gnu-ld \
+		--includedir=/usr/hppa64-linux-gnu/include \
+		--build=$(DEB_BUILD_GNU_TYPE) \
+		--host=$(DEB_HOST_GNU_TYPE) \
+		--target=hppa64-linux-gnu
+	touch $(configure_hppa64_stamp)
+
+$(build_hppa64_stamp): $(configure_hppa64_stamp)
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(SET_LOCPATH) \
+	  LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \
+	    $(MAKE) -C $(builddir_hppa64) $(NJOBS) \
+		CC="$(CC_for_hppa64_cross)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS)
+	touch $(build_hppa64_stamp)
+
+$(configure_neon_stamp): $(build_stamp)
+	dh_testdir
+	rm -f $(configure_neon_stamp) $(build_neon_stamp)
+	rm -rf $(builddir_neon)
+	mkdir $(builddir_neon)
+	: # configure
+	cd $(builddir_neon) && \
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \
+	     ../src/configure \
+		--disable-bootstrap \
+		--enable-languages=c,c++,objc,fortran \
+		--prefix=/$(PF) \
+		--libexecdir=/$(libexecdir) \
+		--program-suffix=-$(BASE_VERSION) \
+		--disable-nls \
+		--enable-plugin \
+		--disable-libmudflap \
+		--with-arch=armv7-a --with-tune=cortex-a8 \
+		--with-float=$(float_abi) --with-fpu=neon \
+		--host=arm-linux-gnueabi \
+		--build=arm-linux-gnueabi \
+		--target=arm-linux-gnueabi
+	touch $(configure_neon_stamp)
+
+$(build_neon_stamp): $(configure_neon_stamp)
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(SET_LOCPATH) \
+	    $(MAKE) -C $(builddir_neon) $(NJOBS) \
+		CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS)
+	touch $(build_neon_stamp)
+
+spu_configure_args = \
+	--enable-languages=c,c++,fortran \
+	--prefix=/$(PF) \
+	--libexecdir=/$(spulibexecdir) \
+	--disable-shared \
+	--disable-nls \
+	--disable-threads \
+	--enable-checking=release \
+	--disable-libssp \
+	--with-system-zlib \
+	--with-newlib \
+	--enable-plugin \
+	--program-prefix=spu- \
+	--with-as=/usr/bin/spu-as \
+	--with-ar=/usr/bin/spu-ar \
+	--with-ld=/usr/bin/spu-ld
+
+# FIXME: --with-sysroot=/usr/spu breaks libgfortran build
+#ifeq ($(single_package),yes)
+#  spu_configure_args += \
+#	--with-sysroot=/usr/spu
+#else
+  spu_configure_args += \
+	--includedir=/usr/spu/include \
+	--libdir=/usr/spu/lib
+#endif
+
+spu_configure_args += \
+	--host=$(DEB_HOST_GNU_TYPE) \
+	--build=$(DEB_BUILD_GNU_TYPE) \
+	--target=spu
+
+$(configure_spu_stamp): $(src_spu_stamp) $(build_stamp)
+	dh_testdir
+	rm -f $(configure_spu_stamp) $(build_spu_stamp)
+	rm -rf $(builddir_spu)
+	mkdir $(builddir_spu)
+	: # configure
+	cd $(builddir_spu) && \
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \
+	     ../src-spu/configure $(spu_configure_args)
+	touch $(configure_spu_stamp)
+
+$(build_spu_stamp): $(configure_spu_stamp)
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(SET_LOCPATH) \
+	    $(MAKE) -C $(builddir_spu) $(NJOBS) \
+		CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS)
+	touch $(build_spu_stamp)
+
+
+MANUALS = \
+	$(srcdir)/gcc/doc/cpp.texi \
+	$(srcdir)/gcc/doc/cppinternals.texi \
+	$(srcdir)/gcc/doc/gcc.texi \
+	$(srcdir)/gcc/doc/gccint.texi
+ifeq ($(with_fortran),yes)
+  MANUALS += $(srcdir)/gcc/fortran/gfortran.texi
+endif
+ifeq ($(with_java),yes)
+  MANUALS += $(srcdir)/gcc/java/gcj.texi
+endif
+ifeq ($(with_ada),yes)
+  MANUALS += \
+	$(builddir)/gcc/doc/gnat_ugn.texi \
+	$(srcdir)/gcc/ada/gnat_rm.texi \
+	$(srcdir)/gcc/ada/gnat-style.texi
+endif
+ifeq ($(with_gomp),yes)
+  MANUALS += $(srcdir)/libgomp/libgomp.texi
+endif
+
+html-docs: $(build_html_stamp)
+#$(build_html_stamp): html-texi2html
+#$(build_html_stamp): html-makeinfo
+$(build_html_stamp): html-makeinfo-nosplit
+
+html-texi2html:
+	rm -rf html $(builddir)/gcc/html
+	mkdir $(builddir)/gcc/html
+	ln -s $(builddir)/gcc/html html
+	cd $(builddir)/gcc; \
+	for manual in $(MANUALS); do \
+	  outname=`basename $${manual} .texi`; \
+	  echo "generating $$outname ..."; \
+	  texi2html -number -split chapter \
+		-I $(srcdir)/gcc/doc/include \
+		-I $(srcdir)/gcc/p/doc \
+		-I $(srcdir)/gcc/p/doc/generated \
+		-I `dirname $${manual}` \
+		-I $(builddir)/gcc \
+		-subdir html \
+		$${manual}; \
+	done
+
+html-makeinfo:
+	rm -rf html
+	mkdir html
+	cd $(builddir)/gcc; \
+	for manual in $(MANUALS); do \
+	  manual=`find $(srcdir) -name $${file}.texi`; \
+	  outname=`basename $${manual} .texi`; \
+	  echo "generating $$outname ..."; \
+	  if [ "$${manual}" ]; then \
+	    makeinfo --html --number-sections \
+		-I $(srcdir)/gcc/doc/include -I `dirname $${manual}` \
+		-I $(srcdir)/gcc/p/doc \
+		-I $(srcdir)/gcc/p/doc/generated \
+		-I $(builddir)/gcc \
+		-o $${outname} \
+		$${manual}; \
+	  fi; \
+	done
+
+html-makeinfo-nosplit:
+	rm -rf html
+	mkdir html
+	cd $(builddir)/gcc; \
+	for manual in $(MANUALS); do \
+	  outname=`basename $${manual} .texi`.html; \
+	  echo "generating $$outname ..."; \
+	  makeinfo --html --number-sections --no-split \
+		-I $(srcdir)/gcc/doc/include -I `dirname $${manual}` \
+		-I $(srcdir)/gcc/p/doc \
+		-I $(srcdir)/gcc/p/doc/generated \
+		-I $(builddir)/gcc \
+		-o $(PWD)/html/$${outname} \
+		$${manual}; \
+	done
+
+# start the script only on architectures known to have slow autobuilders ...
+logwatch_archs := alpha arm m68k mips mipsel sparc
+ifeq ($(DEB_HOST_GNU_CPU), $(findstring $(DEB_HOST_GNU_CPU),$(logwatch_archs)))
+  start_logwatch = yes
+endif
+ifeq ($(DEB_HOST_GNU_SYSTEM),gnu)
+  start_logwatch = yes
+endif
+
+stamps/mauve-build: stamps/build
+	rm -rf mauve
+	mkdir -p mauve
+ifeq ($(with_mauve_check),yes)
+	tar xf $(wildcard /usr/src/mauve*.tar.*)
+	cd mauve \
+	    && aclocal \
+	    && automake \
+	    && autoconf2.59 \
+	    && PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE)
+	PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH $(MAKE) -C mauve
+endif
+	touch $@
+
+stamps/mauve-check: stamps/build stamps/mauve-build
+ifeq ($(with_mauve_check),yes)
+	-cd mauve && \
+	    JAVA_HOME=$(CURDIR)/$(sdkimg) \
+	    PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH \
+		xvfb-run -s "-extension GLX" java Harness \
+		    -vm $(CURDIR)/$(sdkimg)/bin/java \
+		    -file $(CURDIR)/debian/mauve_tests \
+		    -timeout 30000 2>&1 \
+		| tee mauve_output
+	@sleep 5
+else
+	echo "mauve testsuite not run for this build" > mauve/mauve_output
+endif
+	touch $@
+
+check: $(check_stamp) # $(if $(filter yes, $(with_java)),stamps/05-build-mauve-stamp) #$(check_inst_stamp)
+$(check_stamp): $(build_stamp) $(build_locale_stamp)
+	rm -f test-protocol
+
+	-chmod 755 $(srcdir)/contrib/test_summary
+ifneq ($(with_common_libs),yes)
+  ifeq ($(with_cxx),yesDISABLED)
+	: # libstdc++6 built from newer gcc-4.x source, run testsuite against the installed lib
+
+	sed 's/-L[^ ]*//g' $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags \
+	  > $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags.installed
+	-$(ULIMIT_M); \
+	    set +e; \
+	    for d in $(buildlibdir)/libstdc++-v3/testsuite; do \
+	      echo "Running testsuite in $$d ..."; \
+	      TEST_INSTALLED=1 \
+	      $(SET_SHELL) \
+	      $(SET_LOCPATH) \
+	      $(SET_PATH) \
+	      DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
+	      DEB_GCC_NO_O3=1 \
+		$(MAKE) -k -C $$d $(NJOBS) check $(RUNTESTFLAGS); \
+	    done 2>&1 | tee test-protocol2
+
+	BOOT_CFLAGS="$(BOOT_CFLAGS)" \
+	  $(srcdir)/contrib/test_summary -m "$(S_EMAIL)" > raw-test-summary
+	-( \
+	  sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary; \
+	  awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF; \
+	) > libstdc++-test-summary
+	echo 'BEGIN installed libstdc++-v3 test-summary'
+	cat libstdc++-test-summary
+	echo 'END installed libstdc++-v3 test-summary'
+	find $(buildlibdir)/libstdc++-v3/testsuite -name '*.log' -o -name '*.sum' \
+	  | xargs -r rm -f
+  endif
+endif
+
+ifeq ($(start_logwatch),yes)
+	: # start logwatch script for regular output during test runs
+	chmod +x debian/logwatch.sh
+	-debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \
+		-m '\ntestsuite still running ...\n' \
+		test-protocol \
+		$(builddir)/gcc/testsuite/gcc/gcc.log \
+		$(builddir)/gcc/testsuite/g++/g++.log \
+		$(builddir)/gcc/testsuite/gfortran/gfortran.log \
+		$(builddir)/gcc/testsuite/objc/objc.log \
+		$(builddir)/gcc/testsuite/obj-c++/obj-c++.log \
+		$(builddir)/gcc/testsuite/gnat/gnat.log \
+		$(builddir)/gcc/testsuite/ada/acats/acats.log \
+		$(builddir)/gcc/testsuite/gfortran/gfortran.log \
+		$(builddir)/gcc/p/test/test_log \
+		$(buildlibdir)/libstdc++-v3/testsuite/libstdc++-v3.log \
+		$(buildlibdir)/libjava/testsuite/libjava.log \
+		$(buildlibdir)/libmudflap/testsuite/libmudflap.log \
+		$(buildlibdir)/libgomp/testsuite/libgomp.log \
+		$(buildlibdir)/libffi/testsuite/libffi.log \
+		&
+endif
+
+ifeq ($(with_ada),yes)
+	chmod +x debian/acats-killer.sh
+	-debian/acats-killer.sh -p $(builddir)/acats-killer.pid \
+		$(builddir)/gcc/testsuite/ada/acats/acats.log \
+		$(builddir)/gcc/testsuite/g++.log \
+		&
+endif
+
+	-$(ULIMIT_M); \
+	    set +e; \
+	    for d in $(checkdirs); do \
+	      echo "Running testsuite in $$d ..."; \
+	      $(SET_SHELL) \
+	      $(SET_LOCPATH) \
+	      $(SET_PATH) \
+	      EXTRA_TEST_PFLAGS=-g0 \
+	      DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
+	      DEB_GCC_NO_O3=1 \
+		$(MAKE) -k -C $$d $(NJOBS) check $(RUNTESTFLAGS); \
+	    done 2>&1 | tee test-protocol
+
+	-ps aux | fgrep logwatch | fgrep -v fgrep
+	-if [ -f $(builddir)/logwatch.pid ]; then \
+	  kill -1 `cat $(builddir)/logwatch.pid`; \
+	  sleep 1; \
+	  kill -9 `cat $(builddir)/logwatch.pid`; \
+	  rm -f $(builddir)/logwatch.pid; \
+	fi
+	-ps aux | fgrep logwatch | fgrep -v fgrep
+
+ifeq ($(with_ada),yes)
+	-if [ -f $(builddir)/acats-killer.pid ]; then \
+	  kill -1 `cat $(builddir)/acats-killer.pid`; \
+	  sleep 1; \
+	  kill -9 `cat $(builddir)/acats-killer.pid`; \
+	  rm -f $(builddir)/acats-killer.pid; \
+	fi
+endif
+
+	: # running the libjava testsuite alone is missing this information
+	$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -v > $(builddir)/compiler_version.sum 2>&1
+
+	if [ -x $(srcdir)/contrib/test_summary ]; then \
+	  rm -f test-summary; \
+	  ( \
+	    cd $(builddir); \
+	    echo '' > ts-include; \
+	    echo '' >> ts-include; \
+	    if [ -f $(builddir)/gcc/.bad_compare ]; then \
+	      echo 'Bootstrap comparison failure:' >> ts-include; \
+	      cat $(builddir)/gcc/.bad_compare >> ts-include; \
+	      echo '' >> ts-include; \
+	      echo '' >> ts-include; \
+	    fi; \
+	    echo "Build Dependencies:" >> ts-include; \
+	    dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \
+		libgmp*-dev libmpfr-dev libmpc-dev libppl*-dev libcloog-ppl-dev \
+	        | fgrep -v '<none>' >> ts-include; \
+	    echo '' >> ts-include; \
+	    cat ../$(patch_stamp) >> ts-include; \
+	    BOOT_CFLAGS="$(BOOT_CFLAGS)" \
+	      $(srcdir)/contrib/test_summary \
+		-i ts-include -m "$(S_EMAIL)" \
+	  ) > raw-test-summary; \
+	  if [ -n "$(testsuite_tarball)" ]; then \
+	    echo "Test suite used: $(testsuite_srcdir)" > test-summary; \
+	    echo "  Do not interpret the results on its own" >> test-summary; \
+	    echo "  but compare them with the results from" >> test-summary; \
+	    echo "  the gcc-snapshot package." >> test-summary; \
+	  fi; \
+	  sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary \
+		>> test-summary; \
+	  awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF >> test-summary; \
+	  if [ -f bootstrap-summary -a "$(bootstrap_target)" != profiledbootstrap ]; then \
+	    echo '' >> test-summary; \
+	    cat bootstrap-summary >> test-summary; \
+	  fi; \
+	  echo 'BEGIN test-summary'; \
+	  cat test-summary; \
+	  echo 'END test-summary'; \
+	fi
+
+	touch $(check_stamp)
+
+$(check_inst_stamp): $(check_stamp)
+	rm -f test-inst-protocol
+
+ifeq ($(start_logwatch),yes)
+	: # start logwatch script for regular output during test runs
+	chmod +x debian/logwatch.sh
+	-debian/logwatch.sh -t 900 -p $(builddir)/logwatch-inst.pid \
+		-m '\ntestsuite (3.3) still running ...\n' \
+		test-inst-protocol \
+		check-inst/{gcc,g++,g77,objc}.log \
+		&
+endif
+
+	rm -rf check-inst
+	mkdir check-inst
+
+	echo "Running testsuite ..."
+	-$(ULIMIT_M) ; \
+	    $(SET_SHELL) \
+	    $(SET_LOCPATH) \
+	    EXTRA_TEST_PFLAGS=-g0 \
+	    DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
+	  cd check-inst && $(srcdir)/contrib/test_installed \
+	    --with-gcc=gcc-3.3 --with-g++=g++-3.3 --with-g77=g77-3.3 \
+		2>&1 | tee test-inst-protocol
+
+	-ps aux | fgrep logwatch | fgrep -v fgrep
+	if [ -f $(builddir)/logwatch-inst.pid ]; then \
+	  kill -1 `cat $(builddir)/logwatch-inst.pid`; \
+	else \
+	  true; \
+	fi
+	-ps aux | fgrep logwatch | fgrep -v fgrep
+
+	-chmod 755 $(srcdir)/contrib/test_summary
+	if [ -x $(srcdir)/contrib/test_summary ]; then \
+	  rm -f test-inst-summary; \
+	  ( \
+	    cd check-inst; \
+	    echo '' > ts-include; \
+	    echo '' >> ts-include; \
+	    echo "Build Dependencies:" >> ts-include; \
+	    dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \
+		libgmp*-dev libmpfr-dev libmpc-dev libppl*-dev libcloog-ppl-dev \
+	        | fgrep -v '<none>' >> ts-include; \
+	    echo '' >> ts-include; \
+	    echo 'Results for the installed GCC-3.3 compilers' >> ts-include; \
+	    $(srcdir)/contrib/test_summary \
+		-i ts-include -m "$(S_EMAIL)" \
+	  ) > raw-test-inst-summary; \
+	  sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-inst-summary \
+		>> test-inst-summary; \
+	  awk '/^cat/, /^EOF/' raw-test-inst-summary \
+		| grep -v EOF >> test-inst-summary; \
+	  echo 'BEGIN test-installed-summary'; \
+	  cat test-inst-summary; \
+	  echo 'END test-installed-summary'; \
+	fi
+
+	chmod 755 debian/reduce-test-diff.awk
+	if diff -u test-inst-summary test-summary \
+		| debian/reduce-test-diff.awk > diff-summary; \
+	then \
+	  mv -f diff-summary testsuite-comparision; \
+	else \
+	  ( \
+	    echo "WARNING: New failures in gcc-3.4 compared to gcc-3.3"; \
+	    echo ''; \
+	    cat diff-summary; \
+	  ) > testsuite-comparision; \
+	  rm -f diff-summary; \
+	fi
+	touch $(check_inst_stamp)
+
+clean: debian/control
+	dh_testdir
+	rm -f pxxx status
+	rm -f *-summary *-protocol testsuite-comparision summary-diff
+	if [ -f $(srcdir)/gcc/p/config-lang.in.debian ]; then \
+	  mv -f $(srcdir)/gcc/p/config-lang.in.debian $(srcdir)/gcc/p/config-lang.in; \
+	else true; fi
+	rm -f $(srcdir)/gcc/po/*.gmo
+	rm -f debian/lib{gcc,gcj,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs}
+	fs=`echo debian/*BV* debian/*GCJ* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \
+	for f in $$fs; do \
+	  [ -f $$f ] || continue; \
+	  f2=$$(echo $$f \
+		| sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LGCJ/$(PKG_LIBGCJ_EXT)/;s/GCJ/$(PKG_GCJ_EXT)/;s/LC/$(GCC_SONAME)/;s/MF/$(MUDFLAP_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \
+	  rm -f $$f2; \
+	done
+	rm -f debian/shlibs.local debian/substvars.local
+	rm -f debian/*.debhelper
+	-[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean
+	rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian.$(DEB_TARGET_ARCH)
+	rm -f debian/lib*gcj-bc.shlibs
+	rm -rf bin locales share
+	rm -rf check-inst
+	rm -rf .pc
+	dh_clean
+
+# -----------------------------------------------------------------------------
+# some abbrevations for the package names and directories;
+# p_XXX is the package name, d_XXX is the package directory
+# these macros are only used in the binary-* targets.
+
+ifeq ($(versioned_packages),yes)
+  pkg_ver := -$(BASE_VERSION)
+endif
+
+ifneq ($(DEB_CROSS),yes)
+  p_base = gcc$(pkg_ver)-base
+  p_gcc  = gcc$(pkg_ver)
+  p_cpp  = cpp$(pkg_ver)
+  p_cppd = cpp$(pkg_ver)-doc
+  p_cxx  = g++$(pkg_ver)
+  p_doc  = gcc$(pkg_ver)-doc
+  p_lgcc = libgcc$(GCC_SONAME)
+else
+  # only triggered if DEB_CROSS set
+  p_base = gcc$(pkg_ver)$(cross_bin_arch)-base
+  p_cpp  = cpp$(pkg_ver)$(cross_bin_arch)
+  p_gcc  = gcc$(pkg_ver)$(cross_bin_arch)
+  p_cxx  = g++$(pkg_ver)$(cross_bin_arch)
+endif
+p_hppa64 = gcc$(pkg_ver)-hppa64
+
+d	= debian/tmp
+d_base	= debian/$(p_base)
+d_gcc	= debian/$(p_gcc)
+d_cpp	= debian/$(p_cpp)
+d_cppd	= debian/$(p_cppd)
+d_cxx	= debian/$(p_cxx)
+d_doc	= debian/$(p_doc)
+d_lgcc	= debian/$(p_lgcc)
+d_hppa64= debian/$(p_hppa64)
+
+d_spu   = debian/tmp-spu
+d_neon   = debian/tmp-neon
+
+common_substvars = \
+	$(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local)
+
+ifeq ($(DEB_CROSS),yes)
+  lib_binaries := indep_binaries
+else
+  lib_binaries := arch_binaries
+endif
+
+# ---------------------------------------------------------------------------
+
+ifeq ($(single_package),yes)
+  include debian/rules.d/binary-snapshot.mk
+else
+
+ifneq ($(DEB_CROSS),yes)
+ifeq ($(with_source),yes)
+  include debian/rules.d/binary-source.mk
+endif
+endif
+
+ifneq ($(BACKPORT),true)
+ifeq ($(with_gccxbase),yes)
+  include debian/rules.d/binary-base.mk
+endif
+
+ifeq ($(with_gccbase),yes)
+  include debian/rules.d/binary-base.mk
+endif
+
+ifneq ($(DEB_STAGE),stage1)
+  include debian/rules.d/binary-libgcc.mk
+endif
+
+ifeq ($(with_libqmath),yes)
+  include debian/rules.d/binary-libquadmath.mk
+endif
+
+ifeq ($(with_libgmath),yes)
+  include debian/rules.d/binary-libgccmath.mk
+endif
+
+ifeq ($(with_libgomp),yes)
+  include debian/rules.d/binary-libgomp.mk
+endif
+
+ifeq ($(with_cdev),yes)
+  include debian/rules.d/binary-cpp.mk
+endif
+
+ifeq ($(with_fixincl),yes)
+  include debian/rules.d/binary-fixincl.mk
+endif
+
+ifeq ($(with_mudflap),yes)
+  include debian/rules.d/binary-libmudflap.mk
+endif
+
+ifeq ($(with_libssp),yes)
+  include debian/rules.d/binary-libssp.mk
+endif
+
+ifeq ($(with_objcxx),yes)
+  include debian/rules.d/binary-objcxx.mk
+endif
+
+ifeq ($(with_objc),yes)
+  include debian/rules.d/binary-objc.mk
+endif
+ifeq ($(with_libobjc),yes)
+  include debian/rules.d/binary-libobjc.mk
+endif
+
+ifeq ($(with_go),yes)
+  include debian/rules.d/binary-go.mk
+endif
+
+# include before cxx
+ifeq ($(with_java),yes)
+  include debian/rules.d/binary-java.mk
+endif
+
+ifeq ($(with_cxxdev),yes)
+  include debian/rules.d/binary-cxx.mk
+endif
+ifeq ($(with_cxx),yes)
+  include debian/rules.d/binary-libstdcxx.mk
+endif
+
+ifeq ($(with_f77),yes)
+  include debian/rules.d/binary-f77.mk
+endif
+
+ifeq ($(with_fortran),yes)
+  include debian/rules.d/binary-fortran.mk
+endif
+
+ifeq ($(with_ada),yes)
+  include debian/rules.d/binary-ada.mk
+endif
+
+ifeq ($(with_d),yes)
+  include debian/rules.d/binary-d.mk
+endif
+
+ifeq ($(with_libnof),yes)
+  ifeq ($(DEB_TARGET_GNU_CPU),powerpc)
+    include debian/rules.d/binary-nof.mk
+  endif
+endif
+
+ifeq ($(with_softfloat),yes)
+  include debian/rules.d/binary-softfloat.mk
+endif
+
+# gcc must be moved/built after g77 and g++
+ifeq ($(with_cdev),yes)
+  include debian/rules.d/binary-gcc.mk
+endif
+
+ifeq ($(with_hppa64),yes)
+  include debian/rules.d/binary-hppa64.mk
+endif
+
+ifeq ($(with_neon),yes)
+  include debian/rules.d/binary-neon.mk
+endif
+
+ifeq ($(with_spu),yes)
+  include debian/rules.d/binary-spu.mk
+endif
+endif
+
+endif # ($(single_package),yes)
+
+# ----------------------------------------------------------------------
+install: $(install_dependencies)
+
+$(install_dummy_stamp): $(build_dummy_stamp)
+	touch $(install_dummy_stamp)
+
+$(install_snap_stamp): $(build_dependencies)
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+
+	: # Install directories
+	rm -rf $(d)
+	mkdir -p $(d)/$(PF)
+
+ifeq ($(with_hppa64),yes)
+	: # Install hppa64
+	$(SET_PATH) \
+	    $(MAKE) -C $(builddir_hppa64) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d) \
+		    install
+
+	ls -l $(d)/$(PF)/bin
+	if [ ! -x $(d)/$(PF)/bin/hppa64-linux-gnu-gcc ]; then \
+	  mv $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-4* $(d)/$(PF)/bin/hppa64-linux-gnu-gcc; \
+	else \
+	  rm -f $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-4*; \
+	fi
+
+	: # remove files not needed from the hppa64 build
+	rm -rf $(d)/$(PF)/share/info
+	rm -rf $(d)/$(PF)/share/man
+	rm -f $(d)/$(PF)/$(libdir)/libiberty.a
+	rm -f $(d)/$(PF)/bin/*{gcov,gccbug,gcc}
+
+	rm -rf $(d)/$(PF)/hppa64-linux-gnu/include
+	rm -rf $(d)/$(PF)/hppa64-linux-gnu/lib
+	set -e; \
+	  cd $(d)/$(PF)/$(libdir)/gcc/hppa64-linux-gnu/$(versiondir)/include-fixed; \
+	  for i in *; do \
+	    case "$$i" in \
+	      README|features.h|syslimits.h|limits.h) ;; \
+	      linux|$(TARGET_ALIAS)) ;; \
+	      $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \
+	      *) echo "remove include-fixed/$$i"; rm -rf $$i; \
+	    esac; \
+	  done
+endif
+
+ifeq ($(with_spu),yes)
+	: # Install spu
+	$(SET_PATH) \
+	    $(MAKE) -C $(builddir_spu) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d) \
+		    install
+
+	ls -l $(d)/$(PF)/bin
+	if [ ! -x $(d)/$(PF)/bin/spu-gcc ]; then \
+	  mv $(d)/$(PF)/bin/spu-gcc-4* $(d)/$(PF)/bin/spu-gcc; \
+	else \
+	  rm -f $(d)/$(PF)/bin/spu-gcc-4*; \
+	fi
+	if [ ! -x $(d)/$(PF)/bin/spu-g++ ]; then \
+	  mv $(d)/$(PF)/bin/spu-g++-4* $(d)/$(PF)/bin/spu-g++; \
+	else \
+	  rm -f $(d)/$(PF)/bin/spu-g++-4*; \
+	fi
+
+ifneq (,$(findstring fortran, $(spu_configure_args)))
+	if [ ! -x $(d)/$(PF)/bin/spu-gfortran ]; then \
+	  mv $(d)/$(PF)/bin/spu-gfortran-4* $(d)/$(PF)/bin/spu-gfortran; \
+	else \
+	  rm -f $(d)/$(PF)/bin/spu-gfortran-4*; \
+	fi
+endif
+	rm -f $(d)/$(PF)/bin/spu-c++*
+
+	: # remove files not needed from the spu build
+	rm -rf $(d)/$(PF)/info $(d)/$(PF)/share/info
+	rm -rf $(d)/$(PF)/man $(d)/$(PF)/share/man
+	rm -rf $(d)/$(PF)/$(libdir)/gcc/spu/$(GCC_VERSION)/plugin
+	rm -f $(d)/$(PF)/$(libdir)/libiberty.a
+	rm -f $(d)/$(PF)/bin/*{gcov,gccbug,gcc}
+
+# FIXME
+#	rm -rf $(d)/$(PF)/spu/include
+#	rm -rf $(d)/$(PF)/spu/lib
+	-set -e; \
+	  cd $(d)/$(PF)/$(libdir)/gcc/spu/$(versiondir)/include-fixed; \
+	  for i in *; do \
+	    case "$$i" in \
+	      README|features.h|syslimits.h|limits.h) ;; \
+	      linux|$(TARGET_ALIAS)) ;; \
+	      $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \
+	      *) echo "remove include-fixed/$$i"; rm -rf $$i; \
+	    esac; \
+	  done
+endif
+
+	: # Work around PR lto/41569
+	ln -sf gcc $(builddir)/prev-gcc
+
+	: # Install everything
+	$(SET_PATH) \
+	$(SET_SHELL) \
+	  $(MAKE) -C $(builddir) \
+	    $(CFLAGS_TO_PASS) \
+	    $(LDFLAGS_TO_PASS) \
+	    DESTDIR=$(PWD)/$(d) \
+	    infodir=/$(PF)/share/info \
+	    mandir=/$(PF)/share/man \
+		install
+
+	ls -l $(d)/$(PF)/bin
+	if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \
+	  mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-4* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \
+	else \
+	  rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-4*; \
+	fi
+	set -e; \
+	  cd $(d)/$(gcc_lib_dir)/include-fixed; \
+	  for i in *; do \
+	    case "$$i" in \
+	      README|features.h|syslimits.h|limits.h) ;; \
+	      linux|$(TARGET_ALIAS)) ;; \
+	      $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \
+	      *) echo "remove include-fixed/$$i"; rm -rf $$i; \
+	    esac; \
+	  done
+
+ifneq ($(configured_libdir),$(libdir))
+	for i in debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \
+	  mv $(d)/$(PF)/$(configured_libdir)/$$i \
+		$(d)/$(PF)/$(libdir)/. || true; \
+	done
+endif
+
+# FIXME: libjava/classpath not correctly patched
+ifeq ($(with_java),yes)
+	-if [ -d $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME) ]; then \
+	  ls -l $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \
+	  mv $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME)/* \
+	    $(d)/$(PF)/lib/gcj-$(BASE_VERSION)-$(GCJ_SONAME)/; \
+	  rmdir $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \
+	fi
+
+	ln -sf libgcj.so.$(GCJ_SONAME).0.0 $(d)/$(PF)/lib/libgcj_bc.so.1.0.0
+
+	install -m 755 $(d)/$(PF)/lib/libgcj_bc.so.1 \
+		$(d)/$(gcc_lib_dir)/libgcj_bc.so
+	$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -shared -fpic -xc /dev/null \
+		-o build/libgcj.so -Wl,-soname,libgcj.so.$(GCJ_SONAME) -nostdlib
+	$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -shared -fpic \
+		$(srcdir)/libjava/libgcj_bc.c \
+		-o $(d)/$(gcc_lib_dir)/libgcj_bc.so \
+		-Wl,-soname,libgcj_bc.so.1 $(builddir)/libgcj.so -shared-libgcc
+endif
+
+	-ls -l $(d)/usr
+	if [ -d $(d)/usr/man/man1 ]; then \
+	  mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \
+	fi
+
+	chmod 755 debian/dh_*
+	touch $(install_snap_stamp)
+
+$(install_stamp): $(build_stamp)
+	dh_testdir
+	dh_testroot
+	dh_clean -k -N$(p_hppa64)
+
+	if [ -f $(binary_stamp)-hppa64 ]; then \
+	  mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \
+	fi
+	if [ -f $(binary_stamp)-spu ]; then \
+	  mv $(binary_stamp)-spu saved-stamp-spu; \
+	fi
+	rm -f $(binary_stamp)*
+	if [ -f saved-stamp-hppa64 ]; then \
+	  mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \
+	fi
+	if [ -f saved-stamp-spu ]; then \
+	  mv saved-stamp-spu $(binary_stamp)-spu; \
+	fi
+
+	: # Install directories
+	rm -rf $(d)
+	mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug
+ifeq ($(biarch32),yes)
+	mkdir -p $(d)/$(PF)/lib32/debug
+endif
+ifeq ($(biarch64),yes)
+	mkdir -p $(d)/$(PF)/lib64/debug
+endif
+ifeq ($(biarchn32),yes)
+	mkdir -p $(d)/$(PF)/$(libn32)/debug
+endif
+
+ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64 s390x powerpc64))
+	: # link lib to lib64 and $(PF)/lib to $(PF)/lib64
+	: # (this works when CONFARGS contains '--disable-multilib')
+	ln -s $(configured_libdir) $(d)/lib64
+	mkdir -p $(d)/$(PF)/$(configured_libdir)
+	ln -s $(configured_libdir) $(d)/$(PF)/lib64
+endif
+
+	: # Work around PR lto/41569
+	ln -sf gcc $(builddir)/prev-gcc
+
+	: # Install everything
+	$(SET_PATH) \
+	$(SET_SHELL) \
+	  $(MAKE) -C $(builddir) \
+	    $(CFLAGS_TO_PASS) \
+	    $(LDFLAGS_TO_PASS) \
+	    DESTDIR=$(PWD)/$(d) \
+	    infodir=/$(PF)/share/info \
+	    mandir=/$(PF)/share/man \
+		install
+
+ifneq ($(configured_libdir),$(libdir))
+	for i in debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \
+	  mv $(d)/$(PF)/$(configured_libdir)/$$i \
+		$(d)/$(PF)/$(libdir)/. || true; \
+	done
+endif
+
+ifeq ($(with_libcxxdbg),yes)
+	: # FIXME: the libstdc++ gdb.py file is installed with a wrong name
+	for i in $$(find $(d)/$(PF) -name libstdc++_pic.a-gdb.py); do \
+	  [ -f $$i ] || continue; \
+	  d=$$(dirname $$i); \
+	  b=$$(basename $$i); \
+	  t=$$(cd $$d; echo libstdc++.so.*.*.*)-gdb.py; \
+	  mv $$i $$d/$$t; \
+	done
+endif
+
+# FIXME: libjava/classpath not correctly patched
+ifeq ($(with_java),yes)
+	-if [ -d $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME) ]; then \
+	  ls -l $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \
+	  mv $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME)/* \
+	    $(d)/$(PF)/lib/gcj-$(BASE_VERSION)-$(GCJ_SONAME)/; \
+	  rmdir $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \
+	fi
+endif
+
+	: # remove rpath settings from binaries and shared libs
+	for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PF)/lib*/lib*.so.* \
+			$(if $(filter $(with_multiarch_lib),yes), \
+			  $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/lib*.so.*) \
+			$(d)/$(PF)/lib*/gcj$(pkg_ver)*/lib*.so.* \
+			2>/dev/null | awk -F: '/RPATH=/ {print $$1}'); \
+	do \
+	  case "$$i" in ecj1|*gij-*|*libjawt*|*libjvm*) continue; esac; \
+	  [ -h $$i ] && continue; \
+	  chrpath --delete $$i; \
+	  echo "removed RPATH: $$i"; \
+	done
+
+	: # remove '*.la' and '*.lai' files, not shipped in any package.
+	find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f
+
+ifneq ($(with_libgnat),yes)
+	rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so*
+endif
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	for i in gcc gcov; do \
+	  I=`echo $$i | tr a-z A-Z`; \
+	  sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \
+	    debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \
+	done
+
+  ifeq ($(with_fortran),yes)
+	for i in g77; do \
+	  I=`echo $$i | tr a-z A-Z`; \
+	  sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \
+	    debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \
+	done
+  endif
+  ifeq ($(with_java),yes)
+	for i in gcj gcjh gij jv-convert jv-scan jcf-dump grmic grmiregistry; \
+	do \
+	  I=`echo $$i | tr a-z A-Z`; \
+	  sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \
+	    debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \
+	done
+  endif
+endif
+
+#  ifeq ($(with_ada),yes)
+#	: # rename files (versioned ada binaries)
+#	for i in ; do \
+#	  mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \
+#	  mv $(d)/$(PF)/share/man/man1/$$i.1 \
+#		$(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \
+#	done
+#	for i in $(GNAT_TOOLS); do \
+#	  mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \
+#	done
+#  endif
+
+ifeq ($(DEB_CROSS),yes)
+  ifeq ($(DEB_TARGET_ARCH)-$(biarch64),s390-yes)
+	: # s390 64bit stuff happens to be in s390x-linux-gnu/lib64/
+	mkdir -p $(d)/$(PF)/s390-linux-gnu/lib64
+	cp -a $(d)/$(PF)/s390x-linux-gnu/lib64/* $(d)/$(PF)/s390-linux-gnu/lib64/
+  endif
+  ifeq ($(DEB_TARGET_ARCH)-$(biarch64),powerpc-yes)
+	: # ppc 64bit build slaps libgcc and libstdc++ to powerpc64-linux-gnu
+	cp -a $(d)/$(PF)/powerpc64-linux-gnu/lib64/* $(d)/$(PF)/powerpc-linux-gnu/lib64/
+  endif
+endif
+
+	chmod 755 debian/dh_*
+
+#	tar cf tmp.tar debian/tmp
+
+	touch $(install_stamp)
+
+$(install_hppa64_stamp): $(build_hppa64_stamp)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_hppa64)
+	mkdir -p $(d_hppa64)/$(PF)
+
+	$(SET_PATH) \
+	    $(MAKE) -C $(builddir_hppa64) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d_hppa64) \
+		    install
+
+ifeq ($(versioned_packages),yes)
+	mv $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-cpp \
+		$(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-cpp$(pkg_ver)
+endif
+
+ifneq ($(single_package),yes)
+	: # remove files not needed
+	rm -rf $(d_hppa64)/$(PF)/info $(d_hppa64)/$(PF)/share/info
+	rm -rf $(d_hppa64)/$(PF)/man $(d_hppa64)/$(PF)/share/man
+	rm -rf $(d_hppa64)/$(PF)/$(libdir)/gcc/spu/$(GCC_VERSION)/plugin
+	rm -f $(d_hppa64)/$(PF)/$(libdir)/libiberty.a
+	rm -f $(d_hppa64)/$(PF)/bin/*{gcov,gccbug,gcc}
+
+	rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu/include
+	rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu/lib
+	rm -rf $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(GCC_VERSION)/install-tools
+endif
+
+	touch $(install_hppa64_stamp)
+
+$(install_neon_stamp): $(build_neon_stamp)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_neon)
+	mkdir -p $(d_neon)/$(PF)
+
+	$(SET_PATH) \
+	    $(MAKE) -C $(builddir_neon) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d_neon) \
+		    install
+	touch $(install_neon_stamp)
+
+$(install_spu_stamp): $(build_spu_stamp)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_spu)
+	mkdir -p $(d_spu)/$(PF)
+
+	$(SET_PATH) \
+	    $(MAKE) -C $(builddir_spu) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d_spu) \
+		    install
+ifneq (,$(findstring c++, $(spu_configure_args)))
+	mv $(d_spu)/usr/spu/lib/lib{std,sup}c++.a \
+		$(d_spu)/$(gcc_spu_lib_dir)/.
+  ifeq ($(with_spumea64),yes)
+	mv $(d_spu)/usr/spu/lib/mea64/lib{std,sup}c++.a \
+		$(d_spu)/$(gcc_spu_lib_dir)/mea64/.
+  endif
+endif
+ifneq (,$(findstring fortran, $(spu_configure_args)))
+	mv $(d_spu)/usr/spu/lib/libgfortran.a \
+		$(d_spu)/$(gcc_spu_lib_dir)/.
+  ifeq ($(with_spumea64),yes)
+	mv $(d_spu)/usr/spu/lib/mea64/libgfortran.a \
+		$(d_spu)/$(gcc_spu_lib_dir)/mea64/.
+  endif
+endif
+
+ifeq ($(versioned_packages),yes)
+	mv $(d_spu)/$(PF)/bin/spu-cpp \
+		$(d_spu)/$(PF)/bin/spu-cpp$(pkg_ver)
+	mv $(d_spu)/$(PF)/bin/spu-g++ \
+		$(d_spu)/$(PF)/bin/spu-g++$(pkg_ver)
+  ifneq (,$(findstring fortran, $(spu_configure_args)))
+	mv $(d_spu)/$(PF)/bin/spu-gfortran \
+		$(d_spu)/$(PF)/bin/spu-gfortran$(pkg_ver)
+  endif
+	rm -f $(d_spu)/$(PF)/bin/spu-c++*
+
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+	for i in spu-cpp spu-gcc spu-g++ spu-gcov spu-gfortran; do \
+	  mv $(d_spu)/$(PF)/share/man/man1/$$i.1 $(d_spu)/$(PF)/share/man/man1/$$i-$(BASE_VERSION).1; \
+	done
+  endif
+endif
+
+ifneq ($(single_package),yes)
+	: # remove files not needed
+	rm -rf $(d_spu)/$(PF)/info
+#	rm -rf $(d_spu)/$(PF)/man
+	rm -f $(d_spu)/$(PF)/$(libdir)/libiberty.a
+	rm -f $(d_spu)/$(PF)/bin/*{gcov,gccbug,gcc}
+
+#	rm -rf $(d_spu)/$(PF)/spu/include
+#	rm -rf $(d_spu)/$(PF)/spu/lib
+endif
+
+	touch $(install_spu_stamp)
+
+# ----------------------------------------------------------------------
+# Build architecture-dependent files here.
+#binary-arch: build install $(foreach i,$(arch_binaries),$(binary_stamp)-$(i))
+binary-arch: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i))
+ifeq ($(with_check),yes)
+	@echo Done
+#	: # Send Email about sucessfull build.
+#	# cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)"
+endif
+
+# ----------------------------------------------------------------------
+# Build architecture-independent files here.
+#binary-indep: build install $(foreach i,$(indep_binaries),$(binary_stamp)-$(i))
+binary-indep: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i))
+
+source diff:
+	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.kfreebsd-i386
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.kfreebsd-i386
@@ -0,0 +1,6 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/jdb.sh
+++ gcc-4.6-4.6.3/debian/jdb.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Placeholder script to fake a
+# JDK compatible JAVA_HOME directory.
+
+echo >&2 "This script is only a placeholder."
+echo >&2 "Some programs need a JDK rather than only a JRE to work."
+echo >&2 "They test for this tool to detect a JDK installation, but"
+echo >&2 "don't really need its functionality to work correctly."
--- gcc-4.6-4.6.3.orig/debian/rules.source
+++ gcc-4.6-4.6.3/debian/rules.source
@@ -0,0 +1,15 @@
+SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
+patchdir = $(SOURCE_DIR)/patches
+
+include $(SOURCE_DIR)/debian/rules.defs
+include $(SOURCE_DIR)/debian/rules.patch
+include $(SOURCE_DIR)/debian/rules.unpack
+
+patch-source: $(patch_stamp)
+
+clean-source:
+	rm -rf $(stampdir)
+	rm -rf $(gcc_srcdir) $(gdc_srcdir) d
+	rm -rf bin
+	rm -rf $(srcdir)
+
--- gcc-4.6-4.6.3.orig/debian/libobjc3.symbols.common
+++ gcc-4.6-4.6.3/debian/libobjc3.symbols.common
@@ -0,0 +1,283 @@
+ __objc_accessors_init@Base 4.6
+ __objc_add_class_to_hash@Base 4.2.1
+ __objc_category_name_Object_Deprecated@Base 4.6
+ __objc_category_name_Protocol_Deprecated@Base 4.6
+ __objc_class_links_resolved@Base 4.2.1
+ __objc_class_name_NXConstantString@Base 4.2.1
+ __objc_class_name_Object@Base 4.2.1
+ __objc_class_name_Protocol@Base 4.2.1
+ __objc_dangling_categories@Base 4.2.1
+ __objc_exec_class@Base 4.2.1
+ __objc_force_linking@Base 4.2.1
+ __objc_generate_gc_type_description@Base 4.2.1
+ __objc_get_forward_imp@Base 4.2.1
+ __objc_init_class@Base 4.6
+ __objc_init_class_tables@Base 4.2.1
+ __objc_init_dispatch_tables@Base 4.2.1
+ __objc_init_selector_tables@Base 4.2.1
+ __objc_init_thread_system@Base 4.2.1
+ __objc_install_premature_dtable@Base 4.2.1
+ __objc_is_multi_threaded@Base 4.2.1
+ __objc_linking@Base 4.2.1
+ __objc_msg_forward@Base 4.2.1
+ __objc_msg_forward2@Base 4.3
+ __objc_print_dtable_stats@Base 4.2.1
+ __objc_protocols_add_protocol@Base 4.6
+ __objc_protocols_init@Base 4.6
+ __objc_read_nbyte_uint@Base 4.2.1
+ __objc_read_nbyte_ulong@Base 4.2.1
+ __objc_register_instance_methods_to_class@Base 4.2.1
+ __objc_register_selectors_from_class@Base 4.2.1
+ __objc_register_selectors_from_description_list@Base 4.6
+ __objc_register_selectors_from_list@Base 4.2.1
+ __objc_register_selectors_from_module@Base 4.6
+ __objc_resolve_class_links@Base 4.2.1
+ __objc_responds_to@Base 4.2.1
+ __objc_runtime_mutex@Base 4.2.1
+ __objc_runtime_threads_alive@Base 4.2.1
+ __objc_selector_max_index@Base 4.2.1
+ __objc_sparse2_id@Base 4.2.1
+ __objc_sync_init@Base 4.6
+ __objc_thread_exit_status@Base 4.2.1
+ __objc_uninstalled_dtable@Base 4.2.1
+ __objc_update_classes_with_methods@Base 4.6
+ __objc_update_dispatch_table_for_class@Base 4.2.1
+ __objc_write_class@Base 4.2.1
+ __objc_write_object@Base 4.2.1
+ __objc_write_selector@Base 4.2.1
+ _objc_abort@Base 4.6
+ _objc_atomic_malloc@Base 4.2.1
+ _objc_became_multi_threaded@Base 4.2.1
+ _objc_calloc@Base 4.2.1
+ _objc_free@Base 4.2.1
+ _objc_load_callback@Base 4.2.1
+ _objc_lookup_class@Base 4.6
+ _objc_malloc@Base 4.2.1
+ _objc_object_alloc@Base 4.2.1
+ _objc_object_copy@Base 4.2.1
+ _objc_object_dispose@Base 4.2.1
+ _objc_realloc@Base 4.2.1
+ _objc_unexpected_exception@Base 4.4.0
+ _objc_valloc@Base 4.2.1
+ class_addIvar@Base 4.6
+ class_addMethod@Base 4.6
+ class_addProtocol@Base 4.6
+ class_add_method_list@Base 4.2.1
+ class_conformsToProtocol@Base 4.6
+ class_copyIvarList@Base 4.6
+ class_copyMethodList@Base 4.6
+ class_copyPropertyList@Base 4.6
+ class_copyProtocolList@Base 4.6
+ class_createInstance@Base 4.6
+ class_create_instance@Base 4.2.1
+ class_getClassMethod@Base 4.6
+ class_getClassVariable@Base 4.6
+ class_getInstanceMethod@Base 4.6
+ class_getInstanceSize@Base 4.6
+ class_getInstanceVariable@Base 4.6
+ class_getIvarLayout@Base 4.6
+ class_getMethodImplementation@Base 4.6
+ class_getName@Base 4.6
+ class_getProperty@Base 4.6
+ class_getSuperclass@Base 4.6
+ class_getVersion@Base 4.6
+ class_getWeakIvarLayout@Base 4.6
+ class_get_class_method@Base 4.2.1
+ class_get_instance_method@Base 4.2.1
+ class_isMetaClass@Base 4.6
+ class_ivar_set_gcinvisible@Base 4.2.1
+ class_pose_as@Base 4.2.1
+ class_replaceMethod@Base 4.6
+ class_respondsToSelector@Base 4.6
+ class_setIvarLayout@Base 4.6
+ class_setVersion@Base 4.6
+ class_setWeakIvarLayout@Base 4.6
+ get_imp@Base 4.2.1
+ idxsize@Base 4.2.1
+ ivar_getName@Base 4.6
+ ivar_getOffset@Base 4.6
+ ivar_getTypeEncoding@Base 4.6
+ method_copyArgumentType@Base 4.6
+ method_copyReturnType@Base 4.6
+ method_exchangeImplementations@Base 4.6
+ method_getArgumentType@Base 4.6
+ method_getDescription@Base 4.6
+ method_getImplementation@Base 4.6
+ method_getName@Base 4.6
+ method_getNumberOfArguments@Base 4.6
+ method_getReturnType@Base 4.6
+ method_getTypeEncoding@Base 4.6
+ method_get_first_argument@Base 4.2.1
+ method_get_imp@Base 4.6
+ method_get_next_argument@Base 4.2.1
+ method_get_nth_argument@Base 4.2.1
+ method_get_number_of_arguments@Base 4.2.1
+ method_get_sizeof_arguments@Base 4.2.1
+ method_setImplementation@Base 4.6
+ narrays@Base 4.2.1
+ nbuckets@Base 4.2.1
+ nil_method@Base 4.2.1
+ nindices@Base 4.2.1
+ objc_aligned_size@Base 4.2.1
+ objc_alignof_type@Base 4.2.1
+ objc_allocateClassPair@Base 4.6
+ objc_atomic_malloc@Base 4.2.1
+ objc_calloc@Base 4.2.1
+ objc_close_typed_stream@Base 4.2.1
+ objc_condition_allocate@Base 4.2.1
+ objc_condition_broadcast@Base 4.2.1
+ objc_condition_deallocate@Base 4.2.1
+ objc_condition_signal@Base 4.2.1
+ objc_condition_wait@Base 4.2.1
+ objc_copyProtocolList@Base 4.6
+ objc_copyStruct@Base 4.6
+ objc_disposeClassPair@Base 4.6
+ objc_end_of_typed_stream@Base 4.2.1
+ objc_enumerationMutation@Base 4.6
+ objc_error@Base 4.2.1
+ objc_exception_throw@Base 4.2.1
+ objc_flush_typed_stream@Base 4.2.1
+ objc_free@Base 4.2.1
+ objc_getClass@Base 4.6
+ objc_getClassList@Base 4.6
+ objc_getMetaClass@Base 4.6
+ objc_getProperty@Base 4.6
+ objc_getPropertyStruct@Base 4.6
+ objc_getProtocol@Base 4.6
+ objc_getRequiredClass@Base 4.6
+ objc_get_class@Base 4.2.1
+ objc_get_meta_class@Base 4.2.1
+ objc_get_stream_class_version@Base 4.2.1
+ objc_get_type_qualifiers@Base 4.2.1
+ objc_get_uninstalled_dtable@Base 4.2.1
+ objc_hash_add@Base 4.2.1
+ objc_hash_delete@Base 4.2.1
+ objc_hash_is_key_in_hash@Base 4.2.1
+ objc_hash_new@Base 4.2.1
+ objc_hash_next@Base 4.2.1
+ objc_hash_remove@Base 4.2.1
+ objc_hash_value_for_key@Base 4.2.1
+ objc_layout_finish_structure@Base 4.2.1
+ objc_layout_structure@Base 4.2.1
+ objc_layout_structure_get_info@Base 4.2.1
+ objc_layout_structure_next_member@Base 4.2.1
+ objc_lookUpClass@Base 4.6
+ objc_lookup_class@Base 4.2.1
+ objc_malloc@Base 4.2.1
+ objc_msg_lookup@Base 4.2.1
+ objc_msg_lookup_super@Base 4.2.1
+ objc_msg_sendv@Base 4.2.1
+ objc_mutex_allocate@Base 4.2.1
+ objc_mutex_deallocate@Base 4.2.1
+ objc_mutex_lock@Base 4.2.1
+ objc_mutex_trylock@Base 4.2.1
+ objc_mutex_unlock@Base 4.2.1
+ objc_next_class@Base 4.2.1
+ objc_open_typed_stream@Base 4.2.1
+ objc_open_typed_stream_for_file@Base 4.2.1
+ objc_promoted_size@Base 4.2.1
+ objc_read_array@Base 4.2.1
+ objc_read_char@Base 4.2.1
+ objc_read_int@Base 4.2.1
+ objc_read_long@Base 4.2.1
+ objc_read_object@Base 4.2.1
+ objc_read_selector@Base 4.2.1
+ objc_read_short@Base 4.2.1
+ objc_read_string@Base 4.2.1
+ objc_read_type@Base 4.2.1
+ objc_read_types@Base 4.2.1
+ objc_read_unsigned_char@Base 4.2.1
+ objc_read_unsigned_int@Base 4.2.1
+ objc_read_unsigned_long@Base 4.2.1
+ objc_read_unsigned_short@Base 4.2.1
+ objc_realloc@Base 4.2.1
+ objc_registerClassPair@Base 4.6
+ objc_setEnumerationMutationHandler@Base 4.6
+ objc_setExceptionMatcher@Base 4.6
+ objc_setGetUnknownClassHandler@Base 4.6
+ objc_setProperty@Base 4.6
+ objc_setPropertyStruct@Base 4.6
+ objc_setUncaughtExceptionHandler@Base 4.6
+ objc_set_error_handler@Base 4.2.1
+ objc_set_thread_callback@Base 4.2.1
+ objc_sizeof_type@Base 4.2.1
+ objc_skip_argspec@Base 4.2.1
+ objc_skip_offset@Base 4.2.1
+ objc_skip_type_qualifiers@Base 4.2.1
+ objc_skip_typespec@Base 4.2.1
+ objc_sync_enter@Base 4.6
+ objc_sync_exit@Base 4.6
+ objc_thread_add@Base 4.2.1
+ objc_thread_detach@Base 4.2.1
+ objc_thread_exit@Base 4.2.1
+ objc_thread_get_data@Base 4.2.1
+ objc_thread_get_priority@Base 4.2.1
+ objc_thread_id@Base 4.2.1
+ objc_thread_remove@Base 4.2.1
+ objc_thread_set_data@Base 4.2.1
+ objc_thread_set_priority@Base 4.2.1
+ objc_thread_yield@Base 4.2.1
+ objc_valloc@Base 4.2.1
+ objc_verror@Base 4.2.1
+ objc_write_array@Base 4.2.1
+ objc_write_char@Base 4.2.1
+ objc_write_int@Base 4.2.1
+ objc_write_long@Base 4.2.1
+ objc_write_object@Base 4.2.1
+ objc_write_object_reference@Base 4.2.1
+ objc_write_root_object@Base 4.2.1
+ objc_write_selector@Base 4.2.1
+ objc_write_short@Base 4.2.1
+ objc_write_string@Base 4.2.1
+ objc_write_string_atomic@Base 4.2.1
+ objc_write_type@Base 4.2.1
+ objc_write_types@Base 4.2.1
+ objc_write_unsigned_char@Base 4.2.1
+ objc_write_unsigned_int@Base 4.2.1
+ objc_write_unsigned_long@Base 4.2.1
+ objc_write_unsigned_short@Base 4.2.1
+ object_copy@Base 4.2.1
+ object_dispose@Base 4.2.1
+ object_getClassName@Base 4.6
+ object_getIndexedIvars@Base 4.6
+ object_getInstanceVariable@Base 4.6
+ object_getIvar@Base 4.6
+ object_setClass@Base 4.6
+ object_setInstanceVariable@Base 4.6
+ object_setIvar@Base 4.6
+ property_getAttributes@Base 4.6
+ property_getName@Base 4.6
+ protocol_conformsToProtocol@Base 4.6
+ protocol_copyMethodDescriptionList@Base 4.6
+ protocol_copyPropertyList@Base 4.6
+ protocol_copyProtocolList@Base 4.6
+ protocol_getMethodDescription@Base 4.6
+ protocol_getName@Base 4.6
+ protocol_getProperty@Base 4.6
+ protocol_isEqual@Base 4.6
+ sarray_at_put@Base 4.2.1
+ sarray_at_put_safe@Base 4.2.1
+ sarray_free@Base 4.2.1
+ sarray_lazy_copy@Base 4.2.1
+ sarray_new@Base 4.2.1
+ sarray_realloc@Base 4.2.1
+ sarray_remove_garbage@Base 4.2.1
+ search_for_method_in_list@Base 4.2.1
+ sel_copyTypedSelectorList@Base 4.6
+ sel_getName@Base 4.6
+ sel_getTypeEncoding@Base 4.6
+ sel_getTypedSelector@Base 4.6
+ sel_getUid@Base 4.6 
+ sel_get_any_typed_uid@Base 4.2.1
+ sel_get_any_uid@Base 4.2.1
+ sel_get_name@Base 4.2.1
+ sel_get_type@Base 4.2.1
+ sel_get_typed_uid@Base 4.2.1
+ sel_get_uid@Base 4.2.1
+ sel_isEqual@Base 4.6
+ sel_is_mapped@Base 4.2.1
+ sel_registerName@Base 4.6
+ sel_registerTypedName@Base 4.6
+ sel_register_name@Base 4.2.1
+ sel_register_typed_name@Base 4.2.1
+ sel_types_match@Base 4.2.1
--- gcc-4.6-4.6.3.orig/debian/gcj-BV-jre-headless.prerm
+++ gcc-4.6-4.6.3/debian/gcj-BV-jre-headless.prerm
@@ -0,0 +1,13 @@
+#! /bin/sh -e
+
+if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then
+    update-alternatives --quiet --remove java /usr/bin/gij-@BV@
+    update-alternatives --quiet --remove rmiregistry /usr/bin/grmiregistry-@BV@
+    update-alternatives --quiet --remove keytool /usr/bin/gkeytool-@BV@
+    update-alternatives --quiet --remove orbd /usr/bin/gorbd-@BV@
+    update-alternatives --quiet --remove rmid /usr/bin/grmid-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.s390
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.s390
@@ -0,0 +1,549 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.common"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSsixEm@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0
+ _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5.0
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5.0
+ _ZNSs2atEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsixEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6
+ _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1
+ _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _Znam@GLIBCXX_3.4 4.1.1
+ _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ _Znwm@GLIBCXX_3.4 4.1.1
+ _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit.s390"
+ _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1
--- gcc-4.6-4.6.3.orig/debian/locale-gen
+++ gcc-4.6-4.6.3/debian/locale-gen
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+LOCPATH=`pwd`/locales
+export LOCPATH
+
+[ -d $LOCPATH ] || mkdir -p $LOCPATH
+
+umask 022
+
+echo "Generating locales..."
+while read locale charset; do
+	case $locale in \#*) continue;; esac
+	[ -n "$locale" -a -n "$charset" ] || continue
+	echo -n "  `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"
+	echo -n ".$charset"
+	echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`
+	echo -n '...'
+        if [ -f $LOCPATH/$locale ]; then
+	    input=$locale
+	else
+            input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`
+	fi
+	localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias
+	echo ' done'; \
+done <<EOF
+# This file lists locales that the libstdc++ testsuite depends on
+de_DE			ISO-8859-1
+de_DE@euro		ISO-8859-15
+en_HK			ISO-8859-1
+en_PH			ISO-8859-1
+en_US			ISO-8859-1
+en_US.ISO-8859-1	ISO-8859-1
+en_US.ISO-8859-15	ISO-8859-15
+en_US.UTF-8		UTF-8
+es_ES			ISO-8859-1
+es_MX			ISO-8859-1
+fr_FR			ISO-8859-1
+fr_FR@euro		ISO-8859-15
+is_IS			ISO-8859-1
+is_IS.UTF-8		UTF-8
+it_IT			ISO-8859-1
+ja_JP.eucjp		EUC-JP
+se_NO.UTF-8		UTF-8
+ta_IN			UTF-8
+zh_TW			BIG5
+EOF
+
+echo "Generation complete."
--- gcc-4.6-4.6.3.orig/debian/gcj-BV-jre-headless.overrides
+++ gcc-4.6-4.6.3/debian/gcj-BV-jre-headless.overrides
@@ -0,0 +1,2 @@
+# pick up the exact version, in case another gcj version is installed
+gcj-@BV@-jre-headless binary: binary-or-shlib-defines-rpath
--- gcc-4.6-4.6.3.orig/debian/libgcjLGCJ.postinst
+++ gcc-4.6-4.6.3/debian/libgcjLGCJ.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/libgcj@GCJ@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	  rm -rf /usr/share/doc/libgcj@GCJ@
+	  ln -s gcj-@BV@-base /usr/share/doc/libgcj@GCJ@
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/g++-BV-spu.overrides
+++ gcc-4.6-4.6.3/debian/g++-BV-spu.overrides
@@ -0,0 +1,2 @@
+g++-@BV@-spu: non-standard-dir-in-usr usr/spu/
+g++-@BV@-spu: file-in-unusual-dir
--- gcc-4.6-4.6.3.orig/debian/gcc-BV-doc.doc-base.gccint
+++ gcc-4.6-4.6.3/debian/gcc-BV-doc.doc-base.gccint
@@ -0,0 +1,17 @@
+Document: gccint-@BV@
+Title: Internals of the GNU C and C++ compiler
+Author: Various
+Abstract: This manual documents the internals of the GNU compilers,
+ including how to port them to new targets and some information about
+ how to write front ends for new languages.  It corresponds to GCC
+ version @BV@.x.  The use of the GNU compilers is documented in a
+ separate manual.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc-@BV@-base/gccint.html
+Files: /usr/share/doc/gcc-@BV@-base/gccint.html
+
+Format: info
+Index: /usr/share/info/gccint-@BV@.info.gz
+Files: /usr/share/info/gccint-@BV@*
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.powerpc
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.powerpc
@@ -0,0 +1,139 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.1.0@GCC_4.1.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __adddf3@GCC_3.0 1:4.1.1
+ __addsf3@GCC_3.0 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdf3@GCC_3.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divsf3@GCC_3.0 1:4.1.1
+ __divtc3@GCC_4.1.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqdf2@GCC_3.0 1:4.1.1
+ __eqsf2@GCC_3.0 1:4.1.1
+ __extendsfdf2@GCC_3.0 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixdfsi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixsfsi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.1.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.1.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.1.0 1:4.1.1
+ __floatsidf@GCC_3.0 1:4.1.1
+ __floatsisf@GCC_3.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.2.0 1:4.2.1
+ __floatunsidf@GCC_4.2.0 1:4.2.1
+ __floatunsisf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __gcc_qadd@GCC_4.1.0 1:4.1.1
+ __gcc_qdiv@GCC_4.1.0 1:4.1.1
+ __gcc_qmul@GCC_4.1.0 1:4.1.1
+ __gcc_qsub@GCC_4.1.0 1:4.1.1
+ __gedf2@GCC_3.0 1:4.1.1
+ __gesf2@GCC_3.0 1:4.1.1
+ __gtdf2@GCC_3.0 1:4.1.1
+ __gtsf2@GCC_3.0 1:4.1.1
+ __ledf2@GCC_3.0 1:4.1.1
+ __lesf2@GCC_3.0 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __ltdf2@GCC_3.0 1:4.1.1
+ __ltsf2@GCC_3.0 1:4.1.1
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldf3@GCC_3.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __mulsf3@GCC_3.0 1:4.1.1
+ __multc3@GCC_4.1.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __nedf2@GCC_3.0 1:4.1.1
+ __negdf2@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negsf2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __nesf2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.1.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subdf3@GCC_3.0 1:4.1.1
+ __subsf3@GCC_3.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __trampoline_setup@GCC_3.4.2 1:4.1.1
+ __truncdfsf2@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unorddf2@GCC_3.3.4 1:4.1.1
+ __unordsf2@GCC_3.3.4 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/rules.sonames
+++ gcc-4.6-4.6.3/debian/rules.sonames
@@ -0,0 +1,67 @@
+ifneq ($(vafilt_defined),1)
+  $(error rules.defs must be included before rules.sonames)
+endif
+
+ifeq (,$(wildcard debian/soname-cache))
+  SONAME_VARS := $(shell \
+	cache=debian/soname-cache; \
+	rm -f $$cache; \
+	v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libstdc++-v3/acinclude.m4`; \
+	echo CXX_SONAME=$$v >> $$cache; \
+	v=`awk -F= '/^VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libobjc/configure.ac`; \
+	echo OBJC_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libgfortran/libtool-version | cut -d: -f1`; \
+	echo FORTRAN_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libmudflap/libtool-version | cut -d: -f1`; \
+	echo MUDFLAP_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libssp/libtool-version | cut -d: -f1`; \
+	echo SSP_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libjava/libtool-version | cut -d: -f1`; \
+	echo GCJ_SONAME=$$v >> $$cache; \
+	if [ "$$v" -ge 70 ]; then \
+	  echo GCJ_SONAME1=`echo $$v | sed 's/.$$//'` >> $$cache; \
+	  echo GCJ_SONAME2=`echo $$v | sed 's/.*\(.\)$$/\1/'` >> $$cache; \
+	else \
+	  echo GCJ_SONAME1=$$v >> $$cache; \
+	  echo GCJ_SONAME2= >> $$cache; \
+	fi; \
+	v=`tail -1 $(srcdir)/libffi/libtool-version | cut -d: -f1`; \
+	echo FFI_SONAME=$$v >> $$cache; \
+	v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libgomp/configure.ac`; \
+	echo GOMP_SONAME=$$v >> $$cache; \
+        if [ "$(with_qmath)" = yes ]; then \
+	  v=`tail -1 $(srcdir)/libquadmath/libtool-version | cut -d: -f1`; \
+	  echo QUADMATH_SONAME=$$v >> $$cache; \
+	fi; \
+        if [ "$(with_libgmath)" = yes ]; then \
+	  v=`tail -1 $(srcdir)/libgcc-math/libtool-version | cut -d: -f1`; \
+	  echo GCCMATH_SONAME=$$v >> $$cache; \
+	fi; \
+	v=`grep '[^_]Library_Version.*:' $(srcdir)/gcc/ada/gnatvsn.ads \
+		| sed -e 's/.*"\([^"]*\)".*/\1/'`; \
+	echo GNAT_SONAME=$$v >> $$cache; \
+	echo GO_SONAME=0 >> $$cache; \
+	cat $$cache)
+else
+  SONAME_VARS := $(shell cat debian/soname-cache)
+endif
+CXX_SONAME	= $(call vafilt,$(SONAME_VARS),CXX_SONAME)
+OBJC_SONAME	= $(call vafilt,$(SONAME_VARS),OBJC_SONAME)
+FORTRAN_SONAME	= $(call vafilt,$(SONAME_VARS),FORTRAN_SONAME)
+MUDFLAP_SONAME	= $(call vafilt,$(SONAME_VARS),MUDFLAP_SONAME)
+SSP_SONAME	= $(call vafilt,$(SONAME_VARS),SSP_SONAME)
+GCJ_SONAME	= $(call vafilt,$(SONAME_VARS),GCJ_SONAME)
+GCJ_SONAME1	= $(call vafilt,$(SONAME_VARS),GCJ_SONAME1)
+GCJ_SONAME2	= $(call vafilt,$(SONAME_VARS),GCJ_SONAME2)
+FFI_SONAME	= $(call vafilt,$(SONAME_VARS),FFI_SONAME)
+GOMP_SONAME	= $(call vafilt,$(SONAME_VARS),GOMP_SONAME)
+GCCMATH_SONAME	= $(call vafilt,$(SONAME_VARS),GCCMATH_SONAME)
+QUADMATH_SONAME	= $(call vafilt,$(SONAME_VARS),QUADMATH_SONAME)
+GNAT_SONAME	= $(call vafilt,$(SONAME_VARS),GNAT_SONAME)
+GO_SONAME	= $(call vafilt,$(SONAME_VARS),GO_SONAME)
+
+# alias
+GFORTRAN_SONAME = $(FORTRAN_SONAME)
--- gcc-4.6-4.6.3.orig/debian/gcc-BV-doc.doc-base.gcc
+++ gcc-4.6-4.6.3/debian/gcc-BV-doc.doc-base.gcc
@@ -0,0 +1,14 @@
+Document: gcc-@BV@
+Title: The GNU C and C++ compiler
+Author: Various
+Abstract: This manual documents how to run, install and port the GNU compiler,
+ as well as its new features and incompatibilities, and how to report bugs.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc-@BV@-base/gcc.html
+Files: /usr/share/doc/gcc-@BV@-base/gcc.html
+
+Format: info
+Index: /usr/share/info/gcc-@BV@.info.gz
+Files: /usr/share/info/gcc-@BV@*
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.armel
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.armel
@@ -0,0 +1,2 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
--- gcc-4.6-4.6.3.orig/debian/gcc-snapshot.prerm
+++ gcc-4.6-4.6.3/debian/gcc-snapshot.prerm
@@ -0,0 +1,5 @@
+#! /bin/sh -e
+
+rm -f /usr/lib/gcc-snapshot/share/python/*.py[co]
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/libobjc3.symbols.armhf
+++ gcc-4.6-4.6.3/debian/libobjc3.symbols.armhf
@@ -0,0 +1,4 @@
+libobjc.so.3 libobjc3 #MINVER#
+#include "libobjc3.symbols.common"
+ __gnu_objc_personality_v0@Base 4.2.1
+ __objc_exception_class@Base 4.3.0
--- gcc-4.6-4.6.3.orig/debian/gnatvsn.gpr
+++ gcc-4.6-4.6.3/debian/gnatvsn.gpr
@@ -0,0 +1,31 @@
+--  Project file for use with GNAT
+--  Copyright (c) 2005, 2008 Ludovic Brenta <ludovic@ludovic-brenta.org>
+--
+--  This program 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 of the License, or
+--  (at your option) any later version.
+--
+--  This program 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.
+--
+--  This project file is designed to help build applications that use
+--  GNAT project files.  Here is an example of how to use this project file:
+--
+--  with "gnatvsn";
+--  project Example is
+--     for Object_Dir use "obj";
+--     for Exec_Dir use ".";
+--     for Main use ("example");
+--  end Example;
+
+project Gnatvsn is
+   for Library_Name use "gnatvsn";
+   for Library_Dir use "/usr/lib";
+   for Library_Kind use "dynamic";
+   for Source_Dirs use ("/usr/share/ada/adainclude/gnatvsn");
+   for Library_ALI_Dir use "/usr/lib/ada/adalib/gnatvsn";
+   for Externally_Built use "true";
+end Gnatvsn;
--- gcc-4.6-4.6.3.orig/debian/FAQ.gcj
+++ gcc-4.6-4.6.3/debian/FAQ.gcj
@@ -0,0 +1,494 @@
+The GCJ FAQ
+===========
+
+      The latest version of this document is always available at
+      http://gcc.gnu.org/java/faq.html.
+
+        General Questions
+
+            What license is used for libgcj?
+            How can I report a bug in libgcj?
+            How can I contribute to libgcj
+            Is libgcj part of GCC?
+            Will gcj and libgcj work on my machine?
+            How can I debug my Java program?
+            Can I interface byte-compiled and native java code?
+
+
+        Java Feature Support
+
+            What Java API's are supported? How complete is
+              the support?
+            Does GCJ support using straight C native methods
+              ala JNI?
+            Why does GCJ use CNI?
+            What is the state of AWT support?
+            How about support for Swing ?
+            What support is there for RMI ?
+            Can I use any code from other OpenSource projects
+              to supplement libgcj's current features ?
+            What features of the Java language are/arn't supported
+
+
+        Build Issues
+
+            I need something more recent than the last release; how
+                  should I build it?
+            Linker bug on Solaris
+            Can I configure/build in the source tree?
+            My libgcj build fails with "invalid use of undefined type
+                  struct sigcontext_struct"
+
+
+        Gcj Compile/Link Questions
+
+            Why do I get undefined reference to `main' errors?
+            Can GCJ only handle source code?
+            "gcj -C" Doesn't seem to work like javac/jikes. Whats going on?
+            Where does GCJ look for files?
+            How does gcj resolve wether to compile .class or .java files?
+            I'm getting link errors!
+            I'm getting 'undefined symbol: __dso_handle'
+
+
+        Runtime Questions
+
+            My program is dumping core! What's going on?
+            When I run the debugger I get a SEGV in the GC! What's going on?
+            I have just compiled and benchmarked my Java application
+            and it seems to be running slower than than XXX JIT JVM. Is there
+            anything I can do to make it go faster?
+            Can I profile Garbage Collection?
+            How do I increase the runtime's initial and maximum heap sizes?
+            How can I profile my application?
+            My program seems to hang and doesn't produce any output
+
+
+        Programming Issues
+
+            Are there any examples of how to use CNI?
+            Is it possible to invoke GCJ compiled Java code from a
+            C++ application?
+
+General Questions
+=================
+
+      1.1 What license is used for libgcj?
+
+          libgcj is distributed under the GPL, with the 'libgcc exception'.
+          This means that linking with libgcj does not by itself cause
+          your program to fall under the GPL.  See LIBGCJ_LICENSE in
+          the source tree for more details.
+
+      1.2 How can I report a bug in libgcj?
+
+          libgcj has a corresponding Gnats bug database which you can
+          browse. You can also submit new bug reports from the Gnats
+          page.
+
+      1.3 How can I contribute to libgcj?
+
+          You can send simple bug fixes in as patches. Please follow
+          the GCC guidelines for submitting patches. For more complex
+          changes, you must sign copyright over to the Free Software
+          Foundation. See the contribution page for details.
+
+      1.4 Is libgcj part of GCC?
+
+          Yes, libgcj is now part of GCC. It can be downloaded,
+          configured and built as one single tree.
+
+      1.5 Will gcj and libgcj work on my machine?
+
+          Gcj and libgcj are known to work more or less with IA-32 and
+          Sparc Solaris, Tru64 Unix, as well as IA-32, IA-64, Alpha,
+          and PowerPC Linux. They might work on other
+          systems. Generally speaking, porting to a new system should
+          not be hard. This would be a good way to volunteer.
+
+      1.6 How can I debug my Java program?
+
+          gdb 5.0 includes support for debugging gcj-compiled Java
+          programs. For more information please read Java Debugging
+          with gdb.
+
+      1.7 Can I interface byte-compiled and native java code
+
+          libgcj has a bytecode interpreter that allows you to mix
+          .class files with compiled code. It works pretty
+          transparently: if a compiled version of a class is not found
+          in the application binary or linked shared libraries, the
+          class loader will search for a bytecode version in your
+          classpath, much like a VM would. Be sure to build libgcj
+          with the --enable-interpreter option to enable this
+          functionality.
+
+          The program "gij" provides a front end to the interpreter
+          that behaves much like a traditional virtual machine. You
+          can even use "gij" to run a shared library which is compiled
+          from java code and contains a main method:
+
+          $ gcj -shared -o lib-HelloWorld.so HelloWorld.java
+          $ gij HelloWorld
+
+          This works because gij uses Class.forName, which knows how
+          to load shared objects.
+
+Java Feature Support
+====================
+
+      2.1 What Java API's are supported? How complete is
+        the support?
+
+          Matt Welsh writes:
+
+            Just look in the 'libjava' directory of libgcj and see
+            what classes are there. Most GUI stuff isn't there yet,
+            that's true, but many of the other classes are easy to add
+            if they don't yet exist.
+
+            I think it's important to stress that there is a big
+            difference between Java and the many libraries which Java
+            supports. Unfortunately, Sun's promise of "write once, run
+            everywhere" assumes much more than a JVM: you also need
+            the full set of JDK libraries. Considering that new Java
+            APIs come out every week, it's going to be impossible to
+            track everything.
+
+            To make things worse, you can't simply run Sun's JDK
+            classes on any old JVM -- they assume that a bunch of
+            native methods are also defined. Since this native method
+            requirement isn't defined by the JDK specs, you're
+            effectively constrained to using Sun's JVMs if you want to
+            use Sun's JDK libraries. Oh yes -- you could also
+            reimplement all of those native methods yourself, and make
+            sure they behave exactly as Sun's do. Note that they're
+            undocumented!
+
+      2.2 Does GCJ support using straight C native methods
+         ala JNI?
+
+          Yes. libgcj now has experimental support for JNI, in
+          addition to its native Compiled Native Interface (CNI). gcjh
+          will generate JNI stubs and headers using the "-jni"
+          option. However, we do prefer CNI: it is more efficient,
+          easier to write, and (at least potentially) easier to debug.
+
+      2.3 Why does GCJ use CNI?
+
+          Per Bothner explains:
+
+            We use CNI because we think it is a better solution,
+            especially for a Java implementation that is based on the
+            idea that Java is just another programming language that
+            can be implemented using standard compilation
+            techniques. Given that, and the idea that languages
+            implemented using Gcc should be compatible where it makes
+            sense, it follows that the Java calling convention should
+            be as similar as practical to that used for other
+            languages, especially C++, since we can think of Java as a
+            subset of C++. CNI is just a set of helper functions and
+            conventions built on the idea that C++ and Java have the
+            *same* calling convention and object layout; they are
+            binary compatible. (This is a simplification, but close
+            enough.)
+
+      2.4 What is the state of AWT support?
+
+          Work is in progress to implement AWT and Java2D. We intend
+          to support both GTK and xlib peers written using CNI. Some
+          components are already working atop the xlib peers.
+
+      2.5 How about support for Swing?
+
+          Once AWT support is working then Swing support can be
+          considered. There is at least one free-software partial
+          implementations of Swing that may be usable.
+
+      2.6 What support is there for RMI?
+
+         RMI code exists on the CVS trunk (aka gcc 3.1), but it has
+         not been heavily tested.  This code was donated by
+         Transvirtual Technologies.
+
+      2.7 Can I use any code from other OpenSource
+          projects to supplement libgcj's current features?
+
+           Certainly. However, in many cases, if you wanted to
+           contribute the code back into the official libgcj
+           distribution, we would require that the original author(s)
+           assign copyright to the Free Software Foundation.  As of
+           March 6, 2000, libgcj has been relicenced, and copyright
+           has been assigned to the FSF. This allows us to share and
+           merge much of the libgcj codebase with the Classpath
+           project.  Our eventual goal is for Classpath to be an
+           upstream source provider for libgcj, however it will be
+           some time before this becomes reality: libgcj and Classpath
+           have different implementations of many core java
+           classes. In order to merge them, we need to select the best
+           (most efficient, cleanest) implementation of each
+           method/class/package, resolve any conflicts created by the
+           merge, and test the final result.  Needless to say, this is
+           a lot of work. If you can help out, please let us know!
+
+      2.8 What features of the Java language are/aren't supported.
+
+          GCJ supports all Java language constructs as per the Java
+          language Specification.  Recent GCJ snapshots have added
+          support for most JDK1.1 (and beyond) language features,
+          including inner classes.
+
+Build Issues
+============
+
+      3.1 I need something more recent than the last release.
+          How should I build it?
+
+          Please read here: http://gcc.gnu.org/java/build-snapshot.html
+
+      3.2 Linker bug on Solaris
+
+          There is a known problem with the native Solaris linker when
+          using gcc/gcj. A good indication you've run into this
+          problem is if you get an error that looks like the following
+          when building libgcj:
+
+ld: warning: option -o appears more than once, first setting taken
+ld: fatal: file libfoo.so: cannot open file: No such file or directory
+ld: fatal: File processing errors. No output written to .libs/libfoo.so
+collect2: ld returned 1 exit status
+
+          A known workaround for this and other reported link problems
+          on the various releases of Solaris is to build gcc/gcj with
+          the latest GNU binutils instead of the native Solaris
+          ld. The most straightforward way to do this is to build and
+          install binutils, and then reference it in the configure for
+          gcc via --with-ld=/path_to_binutils_install/bin/ld
+          (--with-as may also be similarly specified but is not
+          believed to be required).
+
+          Please note, gcc/gcj must be built using GNU ld prior to
+          doing a clean build of libgcj!
+
+      3.3 Can I configure/build in the source tree?
+
+          No.  You cannot configure/build in the source tree.  If you
+          try, you'll see something like:
+
+              $ ./configure [...]
+              Configuring for a i686-pc-linux-gnu host.
+              *** Cannot currently configure in source tree.
+
+          Instead, you must build in another directory.  E.g.:
+
+              $ mkdir build
+              $ cd build
+              $ ../configure [...]
+
+      3.4 My libgcj build fails with "invalid use of undefined type
+          struct sigcontext_struct"
+
+          If you're using Linux, this probably means you need to
+          upgrade to a newwer, glibc (libc6) based Linux
+          distribution. libgcj does not support the older linux libc5.
+          It might be possible to get a working libgcj by changing
+          occurances of "sigcontext_struct" to "sigcontext", however
+          this has not been tested.  Even if it works, it is likely
+          that there are other issues with older libc versions that
+          would prevent libgcj from working correctly (threads bugs,
+          for example).
+
+Gcj Compile/Link Questions
+==========================
+
+      4.1 Why do I get undefined reference to `main' errors?
+
+          When using gcj to link a Java program, you must use the --main=
+          option to indicate the class that has the desired main method.
+          This is because every Java class can have a main method, thus
+          you have to tell gcj which one to use.
+
+      4.2 Can GCJ only handle source code?
+
+          GCJ will compile both source (.java) and bytecode (.class)
+          files. However, in many cases the native code produced by
+          compiling from source is better optimized than that compiled
+          from .class files.
+
+          Per Bothner explains:
+
+            The reason is that when you compile to bytecode you lose a
+            lot of information about program structure etc. That
+            information helps in generating better code. We can in
+            theory recover the information we need by analysing the
+            structure of the bytecodes, but it is sometimes difficult
+            - or sometimes it just that no-one has gotten around to
+            it.  Specific examples include loop structure (gcc
+            generates better code with explicit loops rather than with
+            the equivalent spaghetti code), array initializers, and
+            the JDK 1.1 `CLASS.class' syntax, all of which are
+            represented using more low-level constructs in bytecode.
+
+      4.3 "gcj -C" Doesn't seem to work like javac/jikes.  Whats going on?
+
+          The behavior of "gcj -C" is not at all like javac or jikes,
+          which will compile (not just scan) all .java's which are out
+          of date with regard to their .class's.
+
+      4.4 Where does GCJ look for files?
+
+          GCJ looks for classes to compile based on the CLASSPATH
+          environment variable. libgcj.jar and other files are found
+          relative to the path of the compiler itself, so it is safe
+          to move the entire compiler tree to a different path, and
+          there is no need to include libgcj.jar in your CLASSPATH.
+
+      4.5 How does gcj resolve whether to compile .class or .java files?
+
+          GCJ compiles only the files presented to it on the command
+          line. However, it also needs to scan other files in order to
+          determine the layout of other classes and check for errors
+          in your code.  For these dependencies, GCJ will favour
+          .class files if they are available because it is faster to
+          parse a class file than source code.
+
+      4.6 I'm getting link errors
+
+          If you get errors at link time that refer to 'undefined
+          reference to `java::lang::Object type_info function', verify
+          that you have compiled any CNI C++ files with the -fno-rtti
+          option. This is only required for versions of GCJ earlier
+          than 3.0.
+
+      4.7 I'm getting 'undefined symbol: __dso_handle'
+
+          Some versions of the GNU linker have broken support for the
+          '.hidden' directive, which results in problems with shared
+          libraries built with recent versions of gcc.
+
+          There are three solutions:
+
+            - downgrade to binutils that don't support .hidden at all,
+            - upgrade to a recent binutils, or
+            - undef the HAVE_GAS_HIDDEN definition in gcc's auto-host.h
+              (and rebuild gcc).
+
+Runtime Questions
+=================
+
+      5.1 My program is dumping core! What's going on?
+
+          It could be any number of things. One common mistake is
+          having your CLASSPATH environment variable pointing at a
+          third party's java.lang and friends. Either unset CLASSPATH,
+          or make sure it does not refer to core libraries other than
+          those found in libgcj.jar.Note that newwer versions of GCJ
+          will reject the core class library if it wasn't generated by
+          GCJ itself.
+
+      5.2 When I run the debugger I get a SEGV in the GC! What's going on?
+
+          This is "normal"; the Garbage Collector (GC) uses it to
+          determine stack boundaries. It is ordinarily caught and
+          handled by the GC -- you can see this in the debugger by
+          using cont to continue to the "real" segv.
+
+      5.3 I have just compiled and benchmarked my Java application
+          and it seems to be running slower than than XXX JIT JVM. Is there
+          anything I can do to make it go faster?
+
+        A few things:
+
+          - If your programs allocate many small, short lived objects,
+            the heap could be filling and triggering GC too
+            regularly. Try increasing the initial and maximum heap sizes
+            as per 5.5 How do I increase the runtime's initial and
+            maximum heap size?
+          - RE - array accesses. We have sub-optimal runtime checking
+            code, and the compiler is still not so smart about
+            automatically removing array checks. If your code is ready,
+            and it doesn't rely on them, try compiling with
+            --no-bounds-check.
+          - Try static linking.  On many platforms, dynamic (PIC)
+            function calls are more expensive than static ones. In
+            particular, the interaction with boehm-gc seems to incur
+            extra overhead when shared libraries are used.
+          - If your Java application doesn't need threads, try
+            building libgcj using --enable-threads=none. Portions of the
+            libgcj runtime are still more efficient when
+            single-threaded.
+
+       5.4 Can I profile Garbage Collection?
+
+          It is possible to turn on verbose GC output by supressing
+          the -DSILENT flag during build. One way to do this is to
+          comment out the line with #define SILENT 1 from
+          boehm-gc/configure before configuring libgcj.  The GC will
+          print collection statistics to stdout. (Rebuilding boehm-gc
+          alone without this flag doesn't seem to work.)
+
+      5.5 How do I increase the runtime's initial and maximum heap sizes?
+
+          Some programs that allocate many small, short-lived objects
+          can cause the default-sized heap to fill quickly and GC
+          often. With the 2.95.1 release there is no means to adjust
+          the heap at runtime. Recent snapshots provide the -ms and
+          -mx arguments to gij to specify the initial and maximum heap
+          sizes, respectively.
+
+      5.6 How can I profile my application?
+
+          Currently, only single threaded Java code may be used by the
+          profiler (gprof). POSIX threads seem to be incompatible with
+          the gmon stuff.  A couple of other tools that have been
+          mentioned on the GCJ mailing list are sprof and cprof.  The
+          former is part of GNU libc.
+
+      5.7 My program seems to hang and doesn't produce any output
+
+          Some versions had a bug in the iconv support. You can work
+          around it by setting LANG=en_US.UTF-8 at runtime, or give
+          the following option during compile time
+          -Dfile.encoding=UTF-8.  This problem should no longer occur
+          as of November 1, 2000.
+
+Programming Issues
+==================
+
+      6.1 Are there any examples of how to use CNI?
+
+          Glenn Chambers has created a couple of trivial examples for
+          version 2.95 and version 3.0.  As a comparison, here is the
+          same example as a JNI application using Kaffe.  The same
+          code will work with GCJ, as shown here.
+
+          Note that for version 2.95, you must compile the C++ files
+          used for CNI with the -fno-rtti option.  This constraint
+          does not apply in version 3.0 and later.
+
+          The primary source of documentation for CNI is at
+          http://gcc.gnu.org/java/papers/cni/t1.html
+
+      6.2 Is it possible to invoke GCJ compiled Java code from a
+          C++ application?
+
+          Yes, GCJ 3.1 supports a CNI-based invocation interface as
+          well as the traditional JNI invocation API.  See the GCJ
+          Manual for more details on how to use the CNI interface.
+
+Please send FSF & GNU inquiries & questions tognu@gnu.org.There are
+also other waysto contact the FSF.
+
+These pages are maintained by The GCC team.
+
+Please send comments on these web pages and GCC to our publicmailing
+list at gcc@gnu.org orgcc@gcc.gnu.org, send other questions to
+gnu@gnu.org.
+
+Copyright (C) Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA  02111,  USA.
+
+Verbatim copying and distribution of this entire article is permitted
+in any medium, provided this notice is preserved.
+
+Last modified 2003-04-30
--- gcc-4.6-4.6.3.orig/debian/README.cross
+++ gcc-4.6-4.6.3/debian/README.cross
@@ -0,0 +1,144 @@
+Building cross-compiler Debian packages
+---------------------------------------
+
+It is possible to build C and C++ cross compilers and support libraries
+from gcc-4.0 source package. This document describes how to do so.
+Cross-compiler build support is not perfect yet, please send fixes
+and improvements to debian-gcc@lists.debian.org and 
+debian-embedded@lists.debian.org
+
+Before you start, you should probably check available pre-built
+cross-toolchain debs. Available at http://www.emdebian.org
+
+Old patches could be reached at
+  http://zigzag.lvk.cs.msu.su/~nikita/debian/
+  
+If they are no longer there, you may check EmDebian web site at
+  http://www.emdebian.org/
+or ask debian-embedded@lists.debian.org for newer location.
+
+Please check http://bugs.debian.org/391445 if you are about building
+gcc-4.3 or above.
+
+Most of them has been merged with gcc debian sources.
+
+0. What's wrong with toolchain-source approach
+
+Package toolchain-source contains sources for binutils and gcc, as well as
+some support scripts to build cross-compiler packages. They seem to work.
+
+However, there is one fundamental problem with this approach.
+Gcc package is actively maintained and frequently updated. These updates
+do contain bug fixes and improvements, especially for non-x86 architectures.
+Cross-compilers built using toolchain-source will not get those fixes unless
+toolchain-source package is updated after each binutils and gcc update.
+The later is not hapenning in real life. For example, toolchain-source
+was upgraded from gcc-3.2 to gcc-3.3 half a year later than gcc-3.3 became
+Debian default compiler.
+
+Keeping toolchain-source package up-to-date requires lots of work, and seems
+to be a waste of time. It is much better to build cross-compilers directly
+from gcc source package.
+
+
+1. What is needed to build a cross-compiler from gcc-4.3 source
+
+1.1. dpkg-cross package
+
+Dpkg-cross package contains several tools to manage cross-compile environment.
+
+It can convert native debian library and lib-dev packages for the target
+architecture to binary-all packages that keep libraries and headers under
+/usr/$(TARGET)/.
+
+Also it contains helper tools for cross-compiling debian packages. Some of
+these tools are used while building libgcc1 and libstdc++ library packages.
+The resulting library packages follow the same convensions as library packages
+converted by dpkg-cross.
+
+Currently, at least version 1.18 of dpkg-cross is needed for cross-gcc
+package build. Version 1.32 of dpkg-cross is needed in order to build gcc-4.3.
+
+1.2. cross-binutils for the target
+
+You need cross-binutils for your target to build cross-compiler.
+Binutils-multiarch package will not work because it does not provide cross-
+assemblers.
+
+If you don't want to use pre-built cross-binutils packages, you may build
+your own from binutils debian source package, using patches posted to
+bug #231707. Please use the latest of patch versions available there.
+
+Alternatively, you may use toolchain-source package to build cross-binutils
+(but in this case you will probably also want to use toolchain-source
+to build cross-compiler itself). However, multilib'ed cross-compilers may
+not build or work with these binutils.
+
+1.3. libc for target
+
+You also need libc library and development packages for the target
+architecture installed.
+
+To get those, download linux-kernel-headers, libc6, and libc6-dev binary
+debs for your target, convert those using dpkg-cross -b, and install
+resulting -arch-cross debs. Consult dpkg-cross manual page for more
+information.
+
+Building with/for alternative libc's is not supported yet (but this is in
+TODO).
+
+Note that if you plan to use your cross-toolchain to develop kernel drivers
+or similar low-level things, you will probably also need kernel headers
+for the exact kernel version that your target hardware uses.
+
+
+2. Building cross-compiler packages
+
+Get gcc-4.3 source package.
+
+Unpack it using dpkg-source -x, and cd to the package directory.
+
+Set GCC_TARGET environment variable to the target architectire name. Note
+that currently you should use debian architecture name (i.e 'powerpc' or 'arm'),
+not GNU system type (i.e. 'powerpc-linux' or 'arm-linux'). Setting GCC_TARGET
+to GNU system type will cause cross-compiler build to fail.
+
+Instead of setting GCC_TARGET, target architecture name may be put into
+debian/target file. If both GCC_TARGET is defined and debian/target file
+exists, GCC_TARGET is used.
+
+Run debian/rules control. This will change debian/control file,
+adjusting build-depends.  By default, the packages will not depend on the
+system -base package. A variable DEB_CROSS_INDEPENDENT has been merged with DEB_CROSS variable.
+
+You can then build with either
+
+$ GCC_TARGET=[arch] dpkg-buildpackage -rfakeroot
+
+3. Using crosshurd
+
+Jeff Bailey <jbailey@raspberryginger.com> suggests alternate way to setup
+environment to build cross-compiler, using 'crosshurd' package. 
+Crosshurd is like debootstrap but cross-arch, and works on the Hurd,
+Linux and FreeBSD.  (The name is historical).
+
+If you setup your environment with crosshurd, you will need to fix symlinks
+in lib and usr/lib to be relative instead of absolute. For example:
+
+lrwxrwxrwx    1 root     root           20 2004-05-06 23:02 libcom_err.so -> /lib/libcom_err.so.2
+
+Needs to be changed to:
+
+lrwxrwxrwx    1 root     root           20 2004-05-06 23:02 libcom_err.so -> ../../lib/libcom_err.so.2
+
+Also, if you choose this method, set the environment variable 'with_sysroot'
+to point to the ABSOLUTE PATH where the crosshurd was done.
+
+Note however that build-depends of cross-gcc and dependencies in generated
+libgcc1 and libstdc++ packages assume that you use dpkg-cross to set up
+your environment, and may be wrong or incomplete if you use alternate methods.
+But probably you don't care.
+
+--
+Nikita V. Youshchenko <yoush@debian.org> - Jun 2004
+Hector Oron Martinez  <hector.oron@gmail.com> - Oct 2006
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.arm
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.arm
@@ -0,0 +1,6 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_sj0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
--- gcc-4.6-4.6.3.orig/debian/libmudflapMF.postinst
+++ gcc-4.6-4.6.3/debian/libmudflapMF.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in configure)
+    if [ -d /usr/share/doc/libmudflap@MF@ ] && [ ! -h /usr/share/doc/libmudflap@MF@ ]; then
+	rm -rf /usr/share/doc/libmudflap@MF@
+	ln -s gcc-@BV@-base /usr/share/doc/libmudflap@MF@
+    fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.s390
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.s390
@@ -0,0 +1,101 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.1.0@GCC_4.1.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.1.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.1.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.1.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.1.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.1.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.1.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/lib32stdc++CXX.postinst
+++ gcc-4.6-4.6.3/debian/lib32stdc++CXX.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/lib32stdc++@CXX@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc-@BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/NEWS.html
+++ gcc-4.6-4.6.3/debian/NEWS.html
@@ -0,0 +1,1182 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+  <!DOCTYPE html
+            PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ 
+
+
+ 
+
+
+
+
+
+
+
+
+
+
+
+
+
+     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  
+  
+   <head>
+ 
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <link rev="made" href="mailto:gcc@gcc.gnu.org" />
+    <link rel="shortcut icon" href="http://gcc.gnu.org/favicon.ico" />
+    <link rel="stylesheet" type="text/css" href="/gnu.css" />
+    <link rel="stylesheet" type="text/css" href="http://gcc.gnu.org/gcc.css" />
+  
+ <title>
+GCC 4.6 Release Series &mdash; Changes, New Features, and Fixes
+- GNU Project - Free Software Foundation (FSF)</title>
+   </head>
+ 
+
+<!-- GCC maintainers, please do not hesitate to update/contribute entries
+     concerning those part of GCC you maintain!  2002-03-23, Gerald.
+-->
+
+<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" vlink="#9900DD">
+
+
+
+<h1 align="center">
+GCC 4.6 Release Series<br />Changes, New Features, and Fixes
+</h1>
+
+<h2>Caveats</h2>
+  <ul>
+
+    <li>The options <code>-b &lt;<em>machine</em>&gt;</code> and
+    <code>-V &lt;<em>version</em>&gt;</code> have been removed because
+    they were unreliable. Instead, users should directly run
+    <code>&lt;<em>machine</em>&gt;-gcc</code> when cross-compiling, or
+    <code>&lt;<em>machine</em>&gt;-gcc-&lt;<em>version</em>&gt;</code>
+    to run a different version of <code>gcc</code>. </li>
+
+    <li>GCC now has stricter checks for invalid command-line options.
+    In particular, when <code>gcc</code> was called to link object
+    files rather than compile source code, it would previously accept
+    and ignore all options starting with <code>--</code>, including
+    linker options such as <code>--as-needed</code>
+    and <code>--export-dynamic</code>, although such options would
+    result in errors if any source code was compiled.  Such options,
+    if unknown to the compiler, are now rejected in all cases; if the
+    intent was to pass them to the linker, options such
+    as <code>-Wl,--as-needed</code> should be used.</li>
+
+    <li>Versions of the GNU C library up to and including 2.11.1
+    included an <a
+    href="http://sourceware.org/bugzilla/show_bug.cgi?id=10401">incorrect
+    implementation of the <code>cproj</code> function</a>.  GCC
+    optimizes its builtin <code>cproj</code> according to the behavior
+    specified and allowed by the ISO C99 standard.  If you want to
+    avoid discrepancies between the C library and GCC's builtin
+    transformations when using <code>cproj</code> in your code, use
+    GLIBC 2.12 or later.  If you are using an older GLIBC and actually
+    rely on the incorrect behavior of cproj, then you can disable
+    GCC's transformations using <code>-fno-builtin-cproj</code>. </li>
+
+    <li>The C-only intermodule optimization framework (IMA, enabled by
+    <code>-combine</code>) has been removed in favor of the new
+    generic link-time optimization framework (LTO) introduced
+    in <a href="../gcc-4.5/changes.html">GCC 4.5.0</a>.</li>
+
+    <li id="libquadmath">GCC now ships with the LGPL-licensed
+    <code>libquadmath</code> library, which provides quad-precision
+    mathematical functions for targets with a <code>__float128</code>
+    datatype. <code>__float128</code> is available for targets on
+    32-bit x86, x86-64 and Itanium architectures. The
+    <code>libquadmath</code> library is automatically built on
+    such targets when building the Fortran compiler.</li>
+
+    <li>New <code>-Wunused-but-set-variable</code> and
+    <code>-Wunused-but-set-parameter</code> warnings were added
+    for C, C++, Objective-C and Objective-C++.
+    These warnings diagnose variables respective parameters which
+    are only set in the code and never otherwise used.
+    Usually such variables are useless and often even the value
+    assigned to them is computed needlessly, sometimes expensively.
+    The <code>-Wunused-but-set-variable</code> warning is enabled by
+    default by <code>-Wall</code> flag and <code>-Wunused-but-set-parameter</code>
+    by <code>-Wall -Wextra</code> flags.</li>
+
+    <li><p>Support for a number of older systems and recently
+    unmaintained or untested target ports of GCC has been declared
+    obsolete in GCC 4.6.  Unless there is activity to revive them, the
+    next release of GCC will have their sources permanently
+    <strong>removed</strong>.</p>
+
+    <p id="obsoleted">All GCC ports for the following processor
+    architectures have been declared obsolete:</p>
+
+    <ul>
+      <li>Argonaut ARC (<code>arc-*</code>)</li>
+      <li>National Semiconductor CRX (<code>crx-*</code>)</li>
+      <li>Motorola 68HC11 and 68HC12
+      (<code>m68hc11-*-*</code>, <code>m6811-*-*</code>,
+      <code>m68hc12-*-*</code>, <code>m6812-*-*</code>)</li>
+      <li>Sunplus S+core (<code>score-*</code>)</li>
+    </ul>
+
+    <p>The following ports for individual systems on
+    particular architectures have been obsoleted:</p>
+
+    <ul>
+      <li>Interix (<code>i[34567]86-*-interix3*</code>)</li>
+      <li>Generic ARM PE (<code>arm-*-pe*</code> other
+      than <code>arm*-wince-pe*</code>)</li>
+      <li>MCore PE (<code>mcore-*-pe*</code>)</li>
+      <li>SH SymbianOS (<code>sh*-*-symbianelf*</code>)</li>
+      <li>GNU Hurd on Alpha and PowerPC
+      (<code>alpha*-*-gnu*</code>, <code>powerpc*-*-gnu*</code>)</li>
+      <li>M68K uClinux old ABI
+      (<code>m68k-*-uclinuxoldabi*</code>)</li>
+      <li>a.out NetBSD
+      (<code>arm*-*-netbsd*</code>, <code>i[34567]86-*-netbsd*</code>,
+      <code>vax-*-netbsd*</code>, but
+      not <code>*-*-netbsdelf*</code>)</li>
+    </ul>
+
+    <p>The <code>i[34567]86-*-pe</code> alias for Cygwin targets has
+    also been obsoleted; users should configure
+    for <code>i[34567]86-*-cygwin*</code> instead.</p>
+
+    <p>Certain configure options to control the set of libraries built
+    with GCC on some targets have been obsoleted.  On ARM targets, the
+    options <code>--disable-fpu</code>, <code>--disable-26bit</code>,
+    <code>--disable-underscore</code>, <code>--disable-interwork</code>,
+    <code>--disable-biendian</code> and <code>--disable-nofmult</code>
+    have been obsoleted.  On MIPS targets, the options
+    <code>--disable-single-float</code>, <code>--disable-biendian</code>
+    and <code>--disable-softfloat</code> have been obsoleted.</p>
+
+    </li>
+
+    <li>Support has been removed for all the 
+    <a href="../gcc-4.5/changes.html#obsoleted">configurations obsoleted
+    in GCC 4.5</a>.</li>
+
+</ul>
+
+<h2>General Optimizer Improvements</h2>
+
+  <ul>
+    <li>A new general optimization level, <code>-Ofast</code>, has been
+      introduced.  It combines the existing optimization level <code>-O3</code>
+      with options that can affect standards compliance but result in
+      better optimized code.  For example, <code>-Ofast</code> enables
+      <code>-ffast-math</code>.</li>
+      <li>Link-time optimization improvements:
+      <ul>
+        <li>The <a href="../projects/lto/whopr.pdf">Scalable Whole
+           Program Optimizer (WHOPR)</a> project has stabilized to the
+           point of being usable.  It has become the default mode when
+           using the LTO optimization model.  Link time optimization can
+           now split itself into multiple parallel compilations. Parallelism
+           is controlled with <code>-flto=<em>n</em></code> (where
+           <em>n</em> specifies the number of compilations to execute in
+           parallel).  GCC can also cooperate with a GNU make job server
+           by specifying the <code>-flto=jobserver</code> option and
+           adding <code>+</code> to the beginning of the
+           Makefile rule executing the linker.<br />
+	   Classical LTO mode can be enforced by
+	   <code>-flto-partition=none</code>. This may result in small code
+	   quality improvements.</li>
+        <li>A large number of bugs were fixed.  GCC itself, Mozilla
+           Firefox and other large applications can be built with
+           LTO enabled.</li>
+	<li>The linker plugin support improvements
+	<ul>
+	   <li>Linker plugin is now enabled by default when the linker is
+	   detected to have plugin support.  This is the case for GNU
+	   ld 2.21.51 or newer (on ELF and Cygwin targets) and the Gold
+	   linker on ELF targets.  Plugin support of the Apple linker on
+	   Darwin is not compatible with GCC.
+	   The linker plugin can also be controlled by the
+	   <code>-fuse-linker-plugin</code> command line option.</li>
+	   <li>Resolution information from the linker plugin is used to drive
+           whole program assumptions. Use of the linker plugin results in
+           more aggressive optimization on binaries and on shared libraries
+	   that use the <code>hidden</code> visibility
+	   attribute. Consequently the use
+	   of <code>-fwhole-program</code> is not neccesary in addition to
+           LTO.</li>
+	</ul>
+	</li>
+        <li>Hidden symbols used from non-LTO objects now have to be
+           explicitly annotated with <code>externally_visible</code> when
+           the linker plugin is not used.</li>
+        <li>C++ inline functions and virtual tables are now privatized more
+           aggressively, leading to better inter-procedural optimization
+           and faster dynamic linking.</li>
+        <li>Memory usage and intermediate language streaming performance
+           have been improved.</li>
+        <li>Static constructors and destructors from individual units are
+           inlined into a single function.
+           This can significantly improve startup times of large C++
+           applications where static constructors are very common. For
+           example, static constructors are used when including the
+           <code>iostream</code> header.</li>
+        <li>Support for the Ada language has been added.</li>
+      </ul>
+      </li>
+      <li>Interprocedural optimization improvements
+      <ul>
+	  <li>The interprocedural framework was re-tuned for link time
+	      optimization. Several scalability issues were resolved.</li>
+	  <li>Improved auto-detection of <code>const</code> and <code>pure</code>
+	      functions.  Newly, <code>noreturn</code> functions are auto-detected.
+	      <p>The <a href="http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options"><code>-Wsuggest-attribute=[const|pure|noreturn]</code></a>
+	      flag is available that informs users when adding
+	      attributes to headers might improve code generation.</p></li>
+	  <li>A number of inlining heuristic improvements. In particular:
+	      <ul>
+		 <li>Partial inlining is now supported and enabled by default
+		     at <code>-O2</code> and greater.  The feature can be
+		     controlled via <code>-fpartial-inlining</code>.
+		     <p>
+		     Partial inlining splits functions with short hot path
+		     to return.  This allows more aggressive inlining of the
+		     hot path leading to better performance and often to
+		     code size reductions (because cold parts of functions
+		     are not duplicated).
+		     </p>
+		 </li>
+		 <li>Scalability for large compilation units was improved
+		     significantly.</li>
+		 <li>Inlining of callbacks is now more aggressive.</li>
+		 <li>Virtual methods are considered for inlining when the
+		     caller is
+		     inlined and devirtualization is then possible.</li>
+                 <li>Inlining when optimizing for size (either in cold
+                    regions of a program or when compiling with
+                    <code>-Os</code>) was improved to better handle C++
+                    programs with larger abstraction penalty, leading
+                    to smaller and faster code.</li>
+	      </ul>
+	  </li>
+	  <li>The IPA reference optimization pass detecting global
+            variables used or modified by functions was strengthened
+            and sped up.</li>
+          <li>Functions whose address was taken are now optimized out
+            when all references to them are dead.</li>
+          <li>A new inter-procedural static profile estimation pass detects
+            functions that are executed once or unlikely to be executed.
+            Unlikely executed functions are optimized for size.  Functions
+            executed once are optimized for size except for the inner
+            loops.</li>
+	  <li>On most targets with named section support, functions used only
+	    at startup (static constructors and <code>main</code>), functions
+	    used only at exit and functions detected to be cold are placed into
+	    separate text segment subsections.
+	    This extends the <code>-freorder-functions</code> feature and is
+	    controlled by the same switch. The goal is to improve the startup
+	    time of large C++ programs.
+	    <p>Proper function placement requires linker support.
+	    GNU ld 2.21.51 on ELF targets was updated to place
+	    those functions together within the text section leading to better code
+	    locality and faster startup times of large C++ programs. The feature is
+	    also supported in the Apple linker.
+	    Support in the gold linker is planned.</p>
+	    </li>
+      </ul>
+      </li>
+      <li>A new switch <code>-fstack-usage</code> has been added.  It makes
+      the compiler output stack usage information for the program, on a
+      per-function basis, in an auxiliary file.</li>
+      <li>A new switch <code>-fcombine-stack-adjustments</code> has been added.
+      It can be used to enable or disable the compiler's stack-slot combining
+      pass which before was enabled automatically at <code>-O1</code> and above,
+      but could not be controlled on its own.</li>
+      <li>A new switch <code>-fstrict-volatile-bitfields</code> has been
+	added.  Using it indicates that accesses to volatile bitfields
+	should use a single access of the width of the field's type.
+	This option can be useful for precisely defining and accessing
+	memory-mapped peripheral registers from C or C++.</li>
+  </ul>
+
+<h2>Compile time and memory usage improvements</h2>
+  <ul>
+      <li>Datastructures used by the dataflow framework in GCC were reorganized
+	  for better memory usage and more cache locality.  Compile
+	  time is improved especially on units with large functions (possibly
+	  resulting from a lot of inlining) not fitting into the processor cache.
+	  The compile time of the GCC C compiler binary with link-time
+	  optimization went down by over 10% (benchmarked on x86-64 target).</li>
+  </ul>
+
+<h2>New Languages and Language specific improvements</h2>
+
+<h3>Ada</h3>
+
+  <ul>
+    <li>Stack checking has been improved on selected architectures (Alpha,
+    IA-32/x86-64, RS/6000 and SPARC): it now will detect stack overflows
+    in all cases on these architectures.</li>
+    <li>Initial support for Ada 2012 has been added.</li>
+  </ul>
+
+<h3>C family</h3>
+
+  <ul>
+    <li>A new warning, enabled by <code>-Wdouble-promotion</code>,
+      has been added that warns about cases where a value of type
+      <code>float</code> is implicitly promoted to <code>double</code>.
+      This is especially helpful for CPUs that handle the former in
+      hardware, but emulate the latter in software.</li>
+    <li>A new function attribute <code>leaf</code> was introduced.
+      This attribute allows better inter-procedural optimization across
+      calls to functions that return to the current unit only via returning
+      or exception handling.  This is the case for most library functions
+      that have no callbacks.</li>
+    <li>Support for a new data type <code>__int128</code> for targets having
+    wide enough machine-mode support.</li>
+    <li>The new function attribute <code>callee_pop_aggregate</code> allows
+    to specify if the caller or callee is responsible for popping the
+    aggregate return pointer value from the stack.</li>
+    <li>Support for selectively enabling and disabling warnings
+      via <code>#pragma GCC diagnostic</code> has been added.  For instance:
+<pre>#pragma GCC diagnostic error "-Wuninitialized"
+  foo(a);			/* error is given for this one */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wuninitialized"
+  foo(b);			/* no diagnostic for this one */
+#pragma GCC diagnostic pop
+  foo(c);			/* error is given for this one */
+#pragma GCC diagnostic pop
+  foo(d);			/* depends on command line options */
+</pre></li>
+    <li>The <code>-fmax-errors=N</code> option is now supported.  Using
+    this option causes the compiler to exit after <code>N</code> errors
+    have been issued.</li>
+  </ul>
+
+<h3 id="c">C</h3>
+
+  <ul>
+    <li>There is now experimental support for some features from the
+    upcoming C1X revision of the ISO C standard.  This support may be
+    selected with <code>-std=c1x</code>, or <code>-std=gnu1x</code>
+    for C1X with GNU extensions.  Note that this support is
+    experimental and may change incompatibly in future releases for
+    consistency with changes to the C1X standard draft.  The following
+    features are newly supported as described in the N1539 draft of
+    C1X (with changes agreed at the March 2011 WG14 meeting); some
+    other features were already supported with no compiler
+    changes being needed, or have some support but not in full accord
+    with N1539 (as amended).
+    <ul>
+      <li>Static assertions (<code>_Static_assert</code> keyword)</li>
+      <li>Typedef redefinition</li>
+      <li>New macros in <code>&lt;float.h&gt;</code></li>
+      <li>Anonymous structures and unions</li>
+    </ul>
+    </li>
+    <li>The new <code>-fplan9-extensions</code> option directs the
+      compiler to support some extensions for anonymous struct fields
+      which are implemented by the Plan 9 compiler.  A pointer to a
+      struct may be automatically converted to a pointer to an
+      anonymous field when calling a function, in order to make the
+      types match.  An anonymous struct field whose type is a typedef
+      name may be referred to using the typedef name.</li>
+  </ul>
+
+<h3 id="cplusplus">C++</h3>
+
+  <ul>
+    <li>Improved <a href="cxx0x_status.html">experimental support for the
+    upcoming C++0x</a> ISO C++ standard, including support for
+    <code>constexpr</code> (thanks to Gabriel Dos Reis and Jason Merrill),
+    <code>nullptr</code> (thanks to Magnus Fromreide), <code>noexcept</code>,
+    unrestricted unions, range-based <code>for</code> loops (thanks to Rodrigo Rivas Costa),
+    opaque enum declarations (thanks also to Rodrigo), implicitly deleted
+    functions and implicit move constructors.</li>
+
+    <li>When an extern declaration within a function does not match a
+    declaration in the enclosing context, G++ now properly declares the
+    name within the namespace of the function rather than the namespace
+    which was open just before the function definition
+    (<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43145">c++/43145</a>).</li>
+
+    <li>GCC now warns by default when casting integers to larger
+    pointer types.  These warnings can be disabled with the option
+    <code>-Wno-int-to-pointer-cast</code>, which is now also available
+    in C++.</li>
+
+    <li>G++ no longer optimizes using the assumption that a value of
+    enumeration type will fall within the range specified by the standard,
+    since that assumption is easily violated with a conversion from integer
+    type (<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43680">c++/43680</a>).
+    The old behavior can be restored with <code>-fstrict-enums</code>.</li>
+
+    <li>The new <code>-fnothrow-opt</code> flag changes the semantics of
+    a <code>throw()</code> exception specification to match the proposed
+    semantics of the <code>noexcept</code> specification: just call
+    <code>terminate</code> if an exception tries to propagate out of a
+    function with such an exception specification.  This dramatically
+    reduces or eliminates the code size overhead from adding the exception
+    specification.</li>
+
+    <li>The new <code>-Wnoexcept</code> flag will suggest adding
+    a <code>noexcept</code> qualifier to a function that the compiler can
+    tell doesn't throw if it would change the value of
+    a <code>noexcept</code> expression.</li>
+
+    <li>The <code>-Wshadow</code> option now warns if a local variable or
+    type declaration shadows another type in C++. Note that the compiler will
+    not warn if a local variable shadows a struct/class/enum, but will warn
+    if it shadows an explicit typedef. </li>
+
+    <li>When an identifier is not found in the current scope, G++ now
+    offers suggestions about which identifier might have been
+    intended.</li>
+
+    <li>G++ now issues clearer diagnostics for missing semicolons
+    after <code>class</code>, <code>struct</code>,
+    and <code>union</code> definitions.</li>
+
+    <li>G++ now issues clearer diagnostics for missing semicolons after
+    class member declarations.</li>
+
+    <li>G++ now issues clearer diagnostics when a colon is used in a
+    place where a double-colon was intended.</li>
+
+    <li>G++ no longer accepts <code>mutable</code> on reference members
+    (<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33558">c++/33558</a>).
+    Use <code>-fpermissive</code> to allow the old, non-conforming behaviour.
+    </li>
+
+    <li>A few mangling fixes have been made, to attribute const/volatile on
+      function pointer types, decltype of a plain decl, and use of a
+      function parameter in the declaration of another parameter.  By
+      default the compiler still uses the old mangling, but emits aliases
+      with the new mangling on targets that support strong aliases.  Users
+      can switch over entirely to the new mangling
+      with <code>-fabi-version=5</code> or <code>-fabi-version=0</code>.
+      <code>-Wabi</code> will now warn about code that uses the old
+      mangling.</li>
+
+    <li>G++ no longer allows objects of const-qualified type to be default
+    initialized unless the type has a user-declared default constructor.
+    Code that fails to compile can be fixed by providing an initializer e.g.
+    <pre>
+    struct A { A(); };
+    struct B : A { };
+    const B b = B();
+    </pre>
+    Use <code>-fpermissive</code> to allow the old, non-conforming behaviour.
+    </li>
+
+  </ul>
+
+  <h4>Runtime Library (libstdc++)</h4>
+
+  <ul>
+    <li><a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x">
+       Improved experimental support for the upcoming ISO C++ standard, 
+       C++0x</a>, including using <code>constexpr</code> and
+       <code>nullptr</code>. </li>
+    <li>Performance improvements to the
+      <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html">Debug
+      Mode</a>, thanks to Fran&ccedil;ois Dumont.
+    </li>
+    <li>Atomic operations used for reference-counting are annotated so that
+      they can be understood by race detectors such as Helgrind, see
+      <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races">Data
+      Race Hunting</a>.</li>
+    <li>Most libstdc++ standard headers have been changed to no longer include
+      the <code>cstddef</code> header as an implementation detail.  Code that
+      relied on that header being included as side-effect of including other
+      standard headers will need to include <code>cstddef</code> explicitly.</li>
+  </ul>
+
+<h3 id="fortran">Fortran</h3>
+  <ul>
+    <li>On systems supporting the <code>libquadmath</code> library, GNU Fortran
+    now also supports a quad-precision, <code>kind=16</code> floating-point
+    data type (<code>REAL(16)</code>, <code>COMPLEX(16)</code>). As the data
+    type is not fully supported in hardware, calculations might be one to
+    two orders of magnitude slower than with the 4, 8 or 10 bytes
+    floating-point data types. This change does not affect systems which
+    support <code>REAL(16)</code> in hardware nor those which do not support
+    <code>libquadmath</code>.</li>
+    <li>Much improved compile time for large array constructors.</li>
+    <li>In order to reduce execution time and memory consumption, use of
+      temporary arrays in assignment expressions is avoided for
+      many cases.  The compiler now reverses loops in order to avoid
+      generating a temporary array where possible.</li>
+    <li>Improved diagnostics, especially with
+      <code>-fwhole-file</code>.</li>
+    <li>The <code>-fwhole-file</code> flag is now enabled by default. This
+    improves code generation and diagnostics. It can be
+    disabled using the deprecated <code>-fno-whole-file</code> flag.</li>
+    <li>Support the generation of Makefile dependencies via the <a
+    href="http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html">
+    <code>-M</code>...</a> flags of GCC; you may need to specify the
+    <code>-cpp</code> option in addition. The dependencies take
+    modules, Fortran's <code>include</code>, and CPP's <code>#include</code>
+    into account. Note: Using <code>-M</code> for the module path is no
+    longer supported, use <code>-J</code> instead.</li>
+    <li>The flag <code>-Wconversion</code> has been modified to only issue
+    warnings where a conversion leads to information loss.  This drastically
+    reduces the number of warnings; <code>-Wconversion</code> is thus now
+    enabled with <code>-Wall</code>. The flag <code>-Wconversion-extra</code>
+    has been added and also warns about other conversions;
+    <code>-Wconversion-extra</code> typically issues a huge number of
+    warnings, most of which can be ignored.</li>
+    <li>A new command-line option <code>-Wunused-dummy-argument</code> warns
+	about unused dummy arguments and is included in <code>-Wall</code>.
+	Before, <code>-Wunused-variable</code> also warned about unused dummy
+	arguments.</li>
+    <li>Fortran 2003 support has been extended:
+      <ul>
+	<li>Improved support for polymorphism between libraries and
+	programs and for complicated inheritance patterns (cf. <a
+	href="http://gcc.gnu.org/wiki/OOP">object-oriented programming</a>).
+	</li>
+	<li>Experimental support of the <code>ASSOCIATE</code> construct.</li>
+	<li>In pointer assignments it is now possible to specify the lower
+	bounds of the pointer and, for a rank-1 or a simply contiguous
+	data-target, to remap the bounds.</li>
+	<li>Automatic (re)allocation: In intrinsic assignments to
+	allocatable variables the left-hand side will be automatically
+	allocated (if unallocated) or reallocated (if the shape or type
+	parameter is different). To avoid the small performance penalty,
+	you can use <code>a(:) = ...</code> instead of <code>a = ...</code>
+        for arrays and character strings &ndash; or disable the feature using
+        <code>-std=f95</code> or <code>-fno-realloc-lhs</code>.</li>
+	<li>Deferred type parameter: For scalar allocatable and pointer
+	variables the character length can be deferred.</li>
+	<li>Namelist variables with allocatable and pointer attribute and
+	nonconstant length type parameter are supported.</li>
+      </ul>
+    </li>
+    <li>Fortran 2008 support has been extended:
+      <ul>
+	<li>Experimental <a href="http://gcc.gnu.org/wiki/Coarray">
+	coarray support</a> (for one image only, i.e. <code>num_images() ==
+	1</code>); use the <a
+	href="http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233">
+	<code>-fcoarray=single</code></a> flag to enable it.</li>
+	<li>The <code>STOP</code> and the new <code>ERROR STOP</code>
+	statements now support all constant expressions.</li>
+	<li>Support for the <code>CONTIGUOUS</code> attribute.</li>
+	<li>Support for <code>ALLOCATE</code> with <code>MOLD</code>.</li>
+	<li>Support for the <code>STORAGE_SIZE</code> intrinsic inquiry
+	function.</li>
+	<li>Support of the <code>NORM2</code> and <code>PARITY</code>
+	intrinsic functions.</li>
+	<li>The following bit intrinsics were added: <code>POPCNT</code>
+	and <code>POPPAR</code> for counting the number of 1 bits and
+	returning the parity; <code>BGE</code>, <code>BGT</code>,
+	<code>BLE</code>, and <code>BLT</code> for bitwise comparisons;
+	<code>DSHIFTL</code> and <code>DSHIFTR</code> for combined left
+	and right shifts, <code>MASKL</code> and <code>MASKR</code> for
+	simple left and right justified masks, <code>MERGE_BITS</code>
+	for a bitwise merge using a mask, <code>SHIFTA</code>,
+	<code>SHIFTL</code> and <code>SHIFTR</code> for shift operations,
+	and the transformational bit intrinsics <code>IALL</code>,
+	<code>IANY</code> and <code>IPARITY</code>.</li>
+	<li>Support of the <code>EXECUTE_COMMAND_LINE</code> intrinsic
+	subroutine.</li>
+	<li>Support for the <code>IMPURE</code> attribute for procedures,
+	which allows for <code>ELEMENTAL</code> procedures without the
+	restrictions of <code>PURE</code>.</li>
+	<li>Null pointers (including <code>NULL()</code>) and not
+	allocated variables can be used as actual argument to optional
+	non-pointer, non-allocatable dummy arguments, denoting an absent
+	argument.</li>
+	<li>Non-pointer variables with <code>TARGET</code> attribute can
+	be used as actual argument to <code>POINTER</code> dummies with
+	<code>INTENT(IN)</code></li>
+	<li>Pointers including procedure pointers and those in a derived
+	type (pointer components) can now be initialized by a target
+	instead of only by <code>NULL</code>.</li>
+	<li>The <code>EXIT</code> statement (with construct-name) can
+	now be used to leave not only the <code>DO</code> but also the
+	<code>ASSOCIATE</code>, <code>BLOCK</code>, <code>IF</code>,
+	<code>SELECT CASE</code> and <code>SELECT TYPE</code> constructs.</li>
+	<li>Internal procedures can now be used as actual argument.</li>
+	<li>The named constants <code>INTEGER_KINDS</code>,
+	<code>LOGICAL_KINDS</code>, <code>REAL_KINDS</code> and
+	<code>CHARACTER_KINDS</code> of the intrinsic module
+	<code>ISO_FORTRAN_ENV</code> have been added; these arrays contain
+	the supported kind values for the respective types.</li>
+	<li>The module procedures <code>C_SIZEOF</code> of the intrinsic
+	module <code>ISO_C_BINDINGS</code> and <code>COMPILER_VERSION</code>
+	and <code>COMPILER_OPTIONS</code> of <code>ISO_FORTRAN_ENV</code>
+	have been implemented.</li>
+	<li>Minor changes: obsolescence diagnostics for <code>ENTRY</code>
+	was added for <code>-std=f2008</code>;
+	a line may start with a semicolon;
+	for internal and module procedures <code>END</code> can be used
+	instead of <code>END SUBROUTINE</code> and <code>END
+	FUNCTION</code>; <code>SELECTED_REAL_KIND</code> now also takes a
+	<code>RADIX</code> argument; intrinsic types are supported for
+	<code>TYPE(<i>intrinsic-type-spec</i>)</code>; multiple type-bound
+	procedures can be declared in a single <code>PROCEDURE</code>
+	statement; implied-shape arrays are supported for named constants
+	(<code>PARAMETER</code>). The transformational, three argument
+	versions of <code>BESSEL_JN</code> and <code>BESSEL_YN</code>
+	were added &ndash; the elemental, two-argument version had been
+	added in GCC 4.4; note that the transformational functions use
+	a recurrence algorithm.</li>
+      </ul>
+    </li>
+  </ul>
+
+<h3 id="go">Go</h3>
+
+<p>Support for the <a href="http://golang.org/">Go programming
+    language</a> has been added to GCC.  It is not enabled by default
+    when you build GCC; use the <code>--enable-languages</code>
+    configure option to build it.  The driver program for compiling Go
+    code is <code>gccgo</code>.</p>
+
+<p>Go is currently known to work on GNU/Linux and RTEMS.  Solaris
+  support is in progress.  It may or may not work on other
+  platforms.</p>
+
+<h3>Java (GCJ)</h3>
+
+<h3 id="objective-c">Objective-C and Objective-C++</h3>
+
+  <ul>
+    <li>The <code>-fobjc-exceptions</code> flag is now required to
+    enable Objective-C exception and synchronization syntax
+    (introduced by the keywords <code>@try</code>,
+    <code>@catch</code>, <code>@finally</code> and
+    <code>@synchronized</code>).</li>
+
+    <li>A number of Objective-C 2.0 features and extensions are now
+    supported by GCC.  These features are enabled by default; you can
+    disable them by using the new <code>-fobjc-std=objc1</code>
+    command-line option.</li>
+
+    <li>The Objective-C 2.0 dot-syntax is now supported.  It is an
+    alternative syntax for using getters and setters;
+    <code>object.count</code> is automatically converted into
+    <code>[object count]</code> or <code>[object setCount: ...]</code>
+    depending on context; for example <code>if (object.count >
+    0)</code> is automatically compiled into the equivalent of
+    <code>if ([object count] > 0)</code> while <code>object.count =
+    0;</code> is automatically compiled into the equivalent ot
+    <code>[object setCount: 0];</code>.  The dot-syntax can be used
+    with instance and class objects and with any setters or getters,
+    no matter if they are part of a declared property or not.</li>
+
+    <li>Objective-C 2.0 declared properties are now supported.  They
+    are declared using the new <code>@property</code> keyword, and are
+    most commonly used in conjunction with the new Objective-C 2.0
+    dot-syntax.  The <code>nonatomic</code>, <code>readonly</code>,
+    <code>readwrite</code>, <code>assign</code>, <code>retain</code>,
+    <code>copy</code>, <code>setter</code> and <code>getter</code>
+    attributes are all supported.  Marking declared properties with
+    <code>__attribute__ ((deprecated))</code> is supported too.</li>
+
+    <li>The Objective-C 2.0 <code>@synthesize</code> and
+    <code>@dynamic</code> keywords are supported.
+    <code>@synthesize</code> causes the compiler to automatically
+    synthesize a declared property, while <code>@dynamic</code> is
+    used to disable all warnings for a declared property for which no
+    implementation is provided at compile time.  Synthesizing declared
+    properties requires runtime support in most useful cases; to be
+    able to use it with the GNU runtime, appropriate helper functions
+    have been added to the GNU Objective-C runtime ABI, and are
+    implemented by the GNU Objective-C runtime library shipped with
+    GCC.</li>
+
+    <li>The Objective-C 2.0 fast enumeration syntax is supported in
+    Objective-C.  This is currently not yet available in
+    Objective-C++.  Fast enumeration requires support in the runtime,
+    and such support has been added to the GNU Objective-C runtime
+    library (shipped with GCC).</li>
+
+    <li>The Objective-C 2.0 <code>@optional</code> keyword is
+    supported.  It allows you to mark methods or properties in a
+    protocol as optional as opposed to required.</li>
+
+    <li>The Objective-C 2.0 <code>@package</code> keyword is
+    supported.  It has currently the same effect as the
+    <code>@public</code> keyword.</li>
+
+    <li>Objective-C 2.0 method attributes are supported.  Currently
+    the supported attributes are <code>deprecated</code>,
+    <code>sentinel</code>, <code>noreturn</code> and
+    <code>format</code>.</li>
+
+    <li>Objective-C 2.0 method argument attributes are supported.  The
+    most widely used attribute is <code>unused</code>, to mark an
+    argument as unused in the implementation.</li>
+
+    <li>Objective-C 2.0 class and protocol attributes are supported.
+    Currently the only supported attribute is
+    <code>deprecated</code>.</li>
+
+    <li>Objective-C 2.0 class extensions are supported.  A class
+    extension has the same syntax as a category declaration with no
+    category name, and the methods and properties declared in it are
+    added directly to the main class.  It is mostly used as an
+    alternative to a category to add methods to a class without
+    advertising them in the public headers, with the advantage that
+    for class extensions the compiler checks that all the privately
+    declared methods are actually implemented.</li>
+
+    <li>As a result of these enhancements, GCC can now be used to
+    build Objective-C and Objective-C++ software that uses Foundation
+    and other important system frameworks with the NeXT runtime on
+    Darwin 9 and Darwin 10 (Mac OS X 10.5 and 10.6).  Currently this is for
+    m32 code only.</li>
+
+    <li>Many bugs in the compiler have been fixed in this release; in
+    particular, LTO can now be used when compiling Objective-C and
+    Objective-C++ and the parser is much more robust in dealing with
+    invalid code.</li>
+  </ul>
+
+  <h4>Runtime Library (libobjc)</h4>
+
+  <ul>
+    <li>The GNU Objective-C runtime library now defines the macro
+    <code>__GNU_LIBOBJC__</code> (with a value that is increased at
+    every release where there is any change to the API) in
+    <code>objc/objc.h</code>, making it easy to determine if the GNU
+    Objective-C runtime library is being used, and if so, which
+    version.  Previous versions of the GNU Objective-C runtime library
+    (and other Objective-C runtime libraries such as the Apple one) do
+    not define this macro.</li>
+
+    <li>A new Objective-C 2.0 API, almost identical to the one
+    implemented by the Apple Objective-C runtime, has been implemented
+    in the GNU Objective-C runtime library.  The new API hides the
+    internals of most runtime structures but provides a more extensive
+    set of functions to operate on them.  It is much easier, for
+    example, to create or modify classes at runtime.  The new API also
+    makes it easier to port software from Apple to GNU as almost no
+    changes should be required.  The old API is still supported for
+    backwards compatibility; including the old
+    <code>objc/objc-api.h</code> header file automatically selects the
+    old API, while including the new <code>objc/runtime.h</code>
+    header file automatically selects the new API.  Support for the
+    old API is being phased out and upgrading the software to use the
+    new API is strongly recommended.  To check for the availability of
+    the new API, the <code>__GNU_LIBOBJC__</code> macro can be used as
+    older versions of the GNU Objective-C runtime library, which do
+    not support the new API, do not define such a macro.</li>
+
+    <li>Runtime support for <code>@synchronized</code> has been added.</li>
+
+    <li>Runtime support for Objective-C 2.0 synthesized property
+    accessors has been added.</li>
+
+    <li>Runtime support for Objective-C 2.0 fast enumeration has been
+    added.</li>
+  </ul>
+
+<h2 id="targets">New Targets and Target Specific Improvements</h2>
+
+<h3 id="arm">ARM</h3>
+    <ul>
+    <li>GCC now supports the Cortex-M4 processor implementing
+      the v7-em version of the architecture using the option
+      <code>-mcpu=cortex-m4</code>.</li>
+
+    <li>Scheduling descriptions for the Cortex-M4, the Neon and
+      the floating point units of the Cortex-A9 and a pipeline 
+      description for the Cortex-A5 have been added.</li>
+
+    <li>Synchronization primitives such as <code>__sync_fetch_and_add
+      </code> and friends are now inlined for supported architectures
+      rather than calling into a kernel helper function.</li>
+
+    <li>SSA loop prefetching is enabled by default for the
+      Cortex-A9 at <code>-O3</code>.</li>
+
+    <li>Several improvements were committed to improve code
+      generation for the ARM architecture including a rewritten
+      implementation for load and store multiples.</li>
+
+    <li>Several enhancements were committed to improve SIMD code
+      generation for NEON by adding support for widening instructions,
+      misaligned loads and stores, vector conditionals and
+      support for 64 bit arithmetic.</li>
+
+    <li>Support was added for the Faraday cores fa526, fa606te,
+      fa626te, fmp626te, fmp626 and fa726te and can be used with the
+      respective names as parameters to the <code>-mcpu=</code>
+      option.</li>
+
+    <li>Basic support was added for Cortex-A15 and is available through
+      <code>-mcpu=cortex-a15</code>.</li>
+
+    <li>GCC for AAPCS configurations now more closely adheres to the AAPCS
+      specification by enabling <code>-fstrict-volatile-bitfields</code> by
+      default.</li>
+  </ul>
+
+<h3>IA-32/x86-64</h3>
+  <ul>
+    <li>
+      The new <code>-fsplit-stack</code> option permits programs to
+      use a discontiguous stack.  This is useful for threaded
+      programs, in that it is no longer necessary to specify the
+      maximum stack size when creating a thread.  This feature is
+      currently only implemented for 32-bit and 64-bit x86 GNU/Linux
+      targets.
+    </li>
+	<li>Support for emitting profiler counter calls before function
+	prologues.  This is enabled via a new command-line option
+	<code>-mfentry</code>.</li>
+    <li>Optimization for the Intel Core 2 processors is now available through
+	the <code>-march=core2</code> and <code>-mtune=core2</code>
+	options.</li>
+    <li>Support for Intel Core i3/i5/i7 processors is now available through
+	the <code>-march=corei7</code> and <code>-mtune=corei7</code>
+	options.</li>
+    <li>Support for Intel Core i3/i5/i7 processors with AVX is now
+	available through the <code>-march=corei7-avx</code> and
+	<code>-mtune=corei7-avx</code> options.</li>
+    <li>Support for AMD Bobcat (family 14) processors is now available through
+	the <code>-march=btver1</code> and <code>-mtune=btver1</code>
+	options.</li>
+    <li>The default setting (when not optimizing for size) for 32-bit
+      GNU/Linux and Darwin x86 targets has been changed to
+      <code>-fomit-frame-pointer</code>.  The default can be reverted
+      to <code>-fno-omit-frame-pointer</code> by configuring GCC with
+      the <code>--enable-frame-pointer</code> configure option.</li>
+    <li>Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
+      <code>__float128</code> on 32-bit and 64-bit x86 targets.</li>
+    <li>AVX floating-point arithmetic can now be enabled by default at
+      configure time with the new <code>--with-fpmath=avx</code> option.</li>
+    <li>The SSA loop prefetching pass is enabled when
+      using <code>-O3</code> when optimizing for CPUs where prefetching
+      is beneficial (AMD CPUs newer than K6).</li>
+    <li>Support for TBM (Trailing Bit Manipulation) built-in functions
+      and code generation is available via <code>-mtbm</code>.</li>
+    <li>Support for AMD's BMI (Bit Manipulation) built-in functions and
+      code generation is available via <code>-mbmi</code>.</li>
+  </ul>
+
+<h3 id="microblaze">MicroBlaze</h3>
+
+  <ul>
+    <li>Support has been added for the Xilinx MicroBlaze softcore processor
+     (microblaze-elf) embedded target.  This configurable processor is
+     supported on several Xilinx Spartan and Virtex FPGAs.
+    </li>
+  </ul>
+
+<h3>MIPS</h3>
+  <ul>
+    <li>GCC now supports the Loongson 3A processor.  Its canonical
+	<code>-march=</code> and <code>-mtune=</code> name is
+	<code>loongson3a</code>.
+    </li>
+  </ul>
+
+<h3 id="mn10300">MN10300 / AM33</h3>
+  <ul>
+    <li>The inline assembly register constraint <code>"A"</code> has
+        been renamed <code>"c"</code>.  This constraint is used to
+        select a floating-point register that can be used as the
+        destination of a multiply-accumulate instruction.
+    </li>
+    <li>New inline assembly register constraints <code>"A"</code> and
+        <code>"D"</code> have been added.  These constraint letters
+        resolve to all general registers when compiling for AM33, and
+        resolve to address registers only or data registers only when
+        compiling for MN10300.
+    </li>
+    <li>The <code>MDR</code> register is represented in the compiler.
+        One can access the register via the <code>"z"</code> constraint
+        in inline assembly.  It can be marked as clobbered or used as
+        a local register variable via the <code>"mdr"</code> name.
+        The compiler uses the <code>RETF</code> instruction if the
+        function does not modify the <code>MDR</code> register, so it
+        is important that inline assembly properly annotate any usage
+        of the register.
+    </li>
+  </ul>
+
+<h3>PowerPC/PowerPC64</h3>
+  <ul>
+    <li>GCC now supports the Applied Micro Titan processor
+    with <code>-mcpu=titan</code>.</li>
+    <li>The <code>-mrecip</code> option has been added, which indicates
+    whether the reciprocal and reciprocal square root instructions
+    should be used.</li>
+    <li>The <code>-mveclibabi=mass</code> option can be used to enable
+    the compiler to autovectorize mathematical functions using the
+    Mathematical Acceleration Subsystem library.</li>
+    <li>The <code>-msingle-pic-base</code> option has been added, which
+    instructs the compiler to avoid loading the PIC base register in
+    function prologues.  The PIC base register must be initialized by
+    the runtime system.</li>
+    <li>The <code>-mblock-move-inline-limit</code> option has been
+    added, which enables the user to control the maximum size of
+    inlined <code>memcpy</code> calls and similar.</li>
+    <li>PowerPC64 GNU/Linux support for applications requiring a large
+      TOC section has been improved.  A new command-line option,
+      <code>-mcmodel=MODEL</code>, controls this feature; valid values
+      for <code>MODEL</code>
+      are <code>small</code>, <code>medium</code>,
+      or <code>large</code>.</li>
+    <li>The altivec builtin functions <code>vec_ld</code> and <code>vec_st</code>
+      have been modified to generate the Altivec memory instructions
+      <code>LVX</code> and <code>STVX</code>, even if the <code>-mvsx</code>
+      option is used.  In the initial GCC 4.5 release, these builtin functions
+      were changed to generate VSX memory reference instructions instead of
+      Altivec memory instructions, but there are differences between the two
+      instructions.  If the VSX instruction set is available, you can now use
+      the new builtin functions <code>vec_vsx_ld</code> and <code>vec_vsx_st</code>
+      which always generates the VSX memory instructions.</li>
+    <li>The GCC compiler on AIX now defaults to a process layout with a
+      larger data space allowing larger programs to be compiled.</li>
+    <li>The GCC long double type on AIX 6.1 and above has reverted to 64 bit
+      double precision, matching the AIX XL compiler default, because of
+      missing C99 symbols required by the GCC runtime.</li>
+    <li>The default processor scheduling model and tuning for PowerPC64
+      GNU/Linux and for AIX 6.1 and above now is POWER7.</li>
+  </ul>
+
+<h3>S/390, zSeries and System z9/z10, IBM zEnterprise z196</h3>
+  <ul>
+    <li>Support for the zEnterprise z196 processor has been added.
+      When using the <code>-march=z196</code> option, the compiler
+      will generate code making use of the following instruction
+      facilities:
+      <ul>
+	<li>Conditional load/store</li>
+	<li>Distinct-operands</li>
+	<li>Floating-point-extension</li>
+	<li>Interlocked-access</li>
+	<li>Population-count</li>
+      </ul>
+      The <code>-mtune=z196</code> option avoids the compare and
+      branch instructions as well as the load address instruction
+      with an index register as much as possible and performs
+      instruction scheduling appropriate for the new out-of-order
+      pipeline architecture.</li>
+    <li>When using the <code>-m31 -mzarch</code> options the generated
+      code still conforms to the 32-bit ABI but uses the general
+      purpose registers as 64-bit registers internally.  This
+      requires a Linux kernel saving the whole 64-bit registers when
+      doing a context switch.  Kernels providing that feature
+      indicate that by the 'highgprs' string
+      in <code>/proc/cpuinfo</code>.</li>
+    <li>The SSA loop prefetching pass is enabled when
+      using <code>-O3</code>.</li>
+  </ul>
+
+<h3>SPARC</h3>
+  <ul>
+    <li>GCC now supports the LEON series of SPARC V8 processors.  The
+     code generated by the compiler can either be tuned to it by means
+     of the <code>--with-tune=leon</code> configure option and
+     <code>-mtune=leon</code> compilation option, or the compiler can
+     be built for the <code>sparc-leon-{elf,linux}</code> and
+     <code>sparc-leon3-{elf,linux}</code> targets directly.</li>
+    <li>GCC has stopped sign/zero-extending parameter registers in the
+     callee for functions taking parameters with sub-word size in 32-bit
+     mode, since this is redundant with the specification of the ABI.
+     GCC has never done so in 64-bit mode since this is also redundant.</li>
+  </ul>
+
+<h2 id="os">Operating Systems</h2>
+
+<h3 id="android">Android</h3>
+  <ul>
+    <li>GCC now supports the Bionic C library and provides a convenient
+      way of building native libraries and applications for the Android
+      platform.
+      Refer to the documentation of the <code>-mandroid</code> and
+      <code>-mbionic</code> options for details on building native code.
+      At the moment, Android support is enabled only for ARM.</li>
+  </ul>
+
+<h3 id="darwin">Darwin/Mac OS X</h3>
+  <ul>
+      <li>General 
+       <ul>
+	<li>Initial support for <code>CFString</code> types has been
+	added.<br /> This allows GCC to build projects including the system
+	<em>Core Foundation</em> frameworks. The GCC Objective-C family
+	supports <code>CFString</code> "toll-free bridged" as per the Mac 
+	OS X system tools. <code>CFString</code> is also recognized in the
+	context of <code>format</code> attributes and arguments (see the
+	documentation for <code>format</code> attributes for limitations).
+	At present, 8-bit character types are supported.</li>
+	<li>LTO-support.<br />Darwin has benefited from ongoing work on
+	LTO; support for this is now stable and enabled by default.</li>
+	<li>Object file size reduction.<br /> The Darwin zeroed memory
+	allocators have been re-written to make more use of
+	<code>.zerofill</code> sections.  For non-debug code, this can
+	reduce object file size significantly.</li>
+       </ul></li>
+      <li>x86 Architecture 
+       <ul>
+	<li>The <code>-mdynamic-no-pic</code> option has been 
+	enabled.<br />Code supporting <code>-mdynamic-no-pic</code>
+	optimization has been added and is applicable to <code>-m32</code>
+	builds. The compiler bootstrap uses the option where 
+	appropriate.</li>
+	<li>The default value for <code>-mtune=</code> has been 
+	changed.<br />Since Darwin systems are primarily Xeon, Core-2 or
+	similar the default tuning has been changed to 
+	<code>-mtune=core2</code>.</li>
+      </ul></li>
+    <li>PPC Architecture
+      <ul>
+       <li>Darwin64 ABI.<br />Several significant bugs have been fixed,
+	such that GCC now produces code compatible with the Darwin64
+	PowerPC ABI.</li>
+	<li>libffi and boehm-gc.<br />The Darwin ports of the libffi and
+	boehm-gc libraries have been upgraded to include a Darwin64
+	implementation. This means that powerpc*-*-darwin9 platforms may
+	now, for example, build Java applications with <code>-m64</code>
+	enabled.</li>
+	<li>Plug-in support has been enabled.</li>
+	<li>The <code>-fsection-anchors</code> option is now available
+	although, presently, not heavily tested.</li>
+      </ul></li>
+  </ul>
+
+<h3 id="solaris">Solaris 2</h3>
+    <h4>New Features</h4>
+    <ul>
+      <li>Support symbol versioning with the Sun linker.</li>
+      <li>Allow libstdc++ to leverage full ISO C99 support on
+        Solaris 10+.</li>
+      <li>Support thread-local storage (TLS) with the Sun assembler on
+	Solaris 2/x86.</li>
+      <li>Support TLS on Solaris 8/9 if prerequisites are met.</li>
+      <li>Support COMDAT group with the GNU assembler and recent Sun
+	linker.</li>
+      <li>Support the Sun assembler visibility syntax.</li>
+      <li>Default Solaris 2/x86 to <code>-march=pentium4</code> (Solaris
+	10+) resp. <code>-march=pentiumpro</code> (Solaris 8/9).</li>
+      <li>Don't use SSE on Solaris 8/9 x86 by default.</li>
+      <li>Enable 128-bit long double (<code>__float128</code>) support on
+	Solaris 2/x86.</li>
+      </ul>
+    <h4>ABI Change</h4>
+    <ul>
+      <li>Change the ABI for returning 8-byte vectors like
+	<code>__m64</code> in MMX registers on Solaris 10+/x86 to match the
+	Sun Studio 12.1+ compilers.  <em>This is an incompatible change.
+	If you use such types, you must either recompile all your code with
+	the new compiler or use the new <code>-mvect8-ret-in-mem</code>
+	option to remain compatible with previous versions of GCC and
+	Sun Studio.</em></li>
+    </ul>
+
+<h3 id="windows">Windows x86/x86_64</h3>
+  <ul>
+    <li>Initial support for decimal floating point.</li>
+    <li>Support for the <code>__thiscall</code> calling-convention.</li>
+    <li>Support for hot-patchable function prologues via the
+    <code>ms_hook_prologue</code> attribute for x86_64 in addition to 32-bit x86.</li>
+    <li>Improvements of stack-probing and stack-allocation mechanisms.</li>
+    <li>Support of push/pop-macro pragma as preprocessor command.<br />
+    With <code>#pragma push_macro(&quot;macro-name&quot;)</code> the
+    current definition of <code>macro-name</code> is saved and can be
+    restored with <code>#pragma pop_macro(&quot;macro-name&quot;)</code>
+    to its saved definition.</li>
+    <li>Enable 128-bit long double (<code>__float128</code>) support on
+      MinGW and Cygwin.</li>
+  </ul>
+
+<h2>Documentation improvements</h2>
+
+<h2>Other significant improvements</h2>
+
+<h3>Installation changes</h3>
+
+  <ul>
+    <li>
+    An <code>install-strip</code> <code>make</code> target is provided
+    that installs stripped executables, and may install libraries with
+    unneeded or debugging sections stripped.
+    </li>
+
+    <li>
+    On Power7 systems, there is a potential problem if you build the GCC
+    compiler with a host compiler using options that enables the VSX
+    instruction set generation.  If the host compiler has been patched so that
+    the <code>vec_ld</code> and <code>vec_st</code> builtin functions
+    generate Altivec memory instructions instead of VSX memory instructions,
+    then you should be able to build the compiler with VSX instruction
+    generation.
+    </li>
+  </ul>
+
+<h2>Changes for GCC Developers</h2>
+
+<p>Note: these changes concern developers that develop GCC itself or
+  software that integrates with GCC, such as plugins, and not the
+  general GCC users.</p>
+
+<ul>
+  <li>
+    The <code>gengtype</code> utility, which previously was internal to
+    the GCC build process, has been enchanced to provide GC root
+    information for plugins as necessary.
+  </li>
+  <li>
+    The old GC allocation interface of <code>ggc_alloc</code> and
+    friends was replaced with a type-safe alternative.
+  </li>
+</ul>
+
+
+
+
+<!-- ==================================================================== -->
+
+<div class="copyright">
+
+<p>Please send FSF &amp; GNU inquiries &amp; questions to
+<a href="mailto:gnu@gnu.org">gnu@gnu.org</a>.
+There are also <a href="http://www.gnu.org/home.html#ContactInfo">other ways
+to contact</a> the FSF.</p>
+
+<p>These pages are <a href="http://gcc.gnu.org/about.html">maintained by
+the GCC team</a>.</p>
+
+<address>For questions related to the use of GCC, please consult these web
+pages and the <a href="http://gcc.gnu.org/onlinedocs/">GCC manuals</a>. If
+that fails, the <a href="mailto:gcc-help@gcc.gnu.org">gcc-help@gcc.gnu.org</a>
+mailing list might help.<br />
+Please send comments on these web pages and the development of GCC to our
+developer list at <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a>.
+All of our lists have
+<a href="http://gcc.gnu.org/lists.html">public archives</a>.
+</address>
+
+<p>Copyright (C) Free Software Foundation, Inc.<br />
+Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.</p>
+
+<table width="100%" border="0"><tr><td>
+  <!-- IGNORE DIFF -->Last modified 2011-03-22
+</td><td align="right" valign="bottom">
+  <a href="http://validator.w3.org/check/referer">
+      <img src="http://www.w3.org/Icons/valid-xhtml10"
+     alt="Valid XHTML 1.0" border="0" width="88" height="31" />
+   
+  </a>
+</td></tr></table>
+
+</div>
+
+<!-- ==================================================================== -->
+
+</body>
+     </html>
+  
+ 
--- gcc-4.6-4.6.3.orig/debian/lib64objc3.symbols
+++ gcc-4.6-4.6.3/debian/lib64objc3.symbols
@@ -0,0 +1,3 @@
+libobjc.so.3 lib64objc3 #MINVER#
+#include "libobjc3.symbols.common"
+ __gnu_objc_personality_v0@Base 4.2.1
--- gcc-4.6-4.6.3.orig/debian/lib32gfortran3.symbols
+++ gcc-4.6-4.6.3/debian/lib32gfortran3.symbols
@@ -0,0 +1,3 @@
+libgfortran.so.3 lib32gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
--- gcc-4.6-4.6.3.orig/debian/rules.conf
+++ gcc-4.6-4.6.3/debian/rules.conf
@@ -0,0 +1,960 @@
+# -*- makefile -*-
+# rules.conf
+#	- used to build debian/control and debian/rules.parameters
+#	- assumes unpacked sources
+
+include debian/rules.defs
+include debian/rules.sonames
+
+# Helper to generate biarch/triarch dependencies.
+# For example, $(eval $(call gen_multilib_deps,gomp)) will create the
+# libgompbiarch variable, and make it contains the libgompbiarch{32,64,n32}
+# variables if biarch{32,64,n32} is set to yes.
+define gen_multilib_deps
+  lib$1biarch64	:= lib64$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS) (>= $$$${gcc:Version})
+  lib$1biarch32	:= lib32$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS) (>= $$$${gcc:Version})
+  lib$1biarchn32 := libn32$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS) (>= $$$${gcc:Version})
+  lib$1biarchhf := libhf$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS) (>= $$$${gcc:Version})
+  lib$1biarchsf := libsf$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS) (>= $$$${gcc:Version})
+  ifeq ($$(biarch64),yes)
+    lib$1biarch := $$(lib$1biarch64)
+  endif
+  ifeq ($$(biarch32),yes)
+    lib$1biarch := $$(lib$1biarch32)
+  endif
+  ifeq ($$(biarchn32),yes)
+    ifeq ($$(biarch64),yes)
+      lib$1biarch := $$(lib$1biarch64), $$(lib$1biarchn32)
+    else
+      lib$1biarch := $$(lib$1biarchn32)
+    endif
+  endif
+  ifeq ($$(biarchhf),yes)
+    lib$1biarch := $$(lib$1biarchhf) | lib$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS)-armhf
+  endif
+  ifeq ($$(biarchsf),yes)
+    lib$1biarch := $$(lib$1biarchsf) | lib$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS)-armel
+  endif
+endef
+$(foreach x,gomp mudflap ssp gfortran objc quadmath go,$(eval $(call gen_multilib_deps,$(x))))
+
+# Helper to generate _no_archs variables.
+# For example, $(eval $(call gen_no_archs,java)) will create the java_no_archs
+# variable, using the java_no_cpu and java_no_systems variables.
+define gen_no_archs
+  $1_no_archs :=
+  ifneq (,$$($1_no_cpus))
+    $1_no_archs += $$(foreach cpu,$$(filter-out i386 amd64 alpha arm,$$($1_no_cpus)),!$$(cpu))
+    ifneq (,$$(filter i386,$$($1_no_cpus)))
+      $1_no_archs += !i386 !hurd-i386 !kfreebsd-i386 !knetbsd-i386
+    endif
+    ifneq (,$$(filter amd64,$$($1_no_cpus)))
+      $1_no_archs += !amd64 !kfreebsd-amd64
+    endif
+    ifneq (,$$(filter alpha,$$($1_no_cpus)))
+      $1_no_archs += !alpha !hurd-alpha !knetbsd-alpha
+    endif
+    ifneq (,$$(filter arm,$$($1_no_cpus)))
+      $1_no_archs += !arm !armel !armhf
+    endif
+    ifneq (,$$(strip $3))
+      $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$3$$(SPACE))
+      $1_no_archs += $$(foreach cpu,$$($1_no_cpus),$$(foreach system,$$($1_no_systems_tmp),!$$(subst gnu,$$(cpu),$$(system))))
+    endif
+  endif
+  ifneq (,$$($1_no_systems))
+    $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$$($1_no_systems)$$(SPACE))
+    $1_no_archs += $$(foreach system,$$($1_no_systems_tmp),$$(foreach cpu,$2,!$$(subst gnu,$$(cpu),$$(system))))
+  endif
+  $1_no_archs := $$(strip $$($1_no_archs))
+endef
+base_deb_cpus := i386 alpha
+base_deb_systems :=
+$(foreach x,ada java java_plugin fortran libphobos libgc check locale,$(eval $(call gen_no_archs,$(x),$(base_deb_cpus),$(base_deb_systems))))
+linux_no_archs := !hurd-i386 !hurd-alpha !kfreebsd-i386 !kfreebsd-amd64 !knetbsd-i386 !knetbsd-alpha
+
+GCC_VERSION := $(strip $(shell cat $(firstword $(wildcard $(srcdir)/gcc/FULL-VER $(srcdir)/gcc/BASE-VER))))
+NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \
+	awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}')
+GCC_MAJOR_VERSION := $(shell echo $(GCC_VERSION)   | sed -r 's/([0-9])\.[0-9]\.[0-9]/\1/')
+GCC_MINOR_VERSION := $(shell echo $(GCC_VERSION)   | sed -r 's/[0-9]\.([0-9])\.[0-9]/\1/')
+GCC_RELEASE_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.[0-9]\.([0-9])/\1/')
+NEXT_GCC_MAJOR_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1)
+NEXT_GCC_MINOR_VERSION := $(shell expr $(echo $(GCC_MINOR_VERSION)) + 1)
+NEXT_GCC_RELEASE_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1)
+
+ifeq ($(single_package),yes)
+  BASE_VERSION := $(shell echo $(GCC_VERSION) | sed -e 's/\([1-9]\.[0-9]\).*/\1/')
+endif
+ifneq (,$(findstring gdc,$(PKGSOURCE)))
+  GDC_BASE_VERSION := $(word 1, $(subst -, ,$(DEB_VERSION)))
+  DEB_VERSION := $(subst $(GDC_BASE_VERSION)-,,$(DEB_VERSION))
+endif
+
+GCC_SOURCE_VERSION := $(shell echo $(DEB_VERSION) | sed 's/-.*//')
+NEXT_GCC_SOURCE_VERSION := $(shell echo $(GCC_SOURCE_VERSION) | \
+	awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}')
+
+MAINTAINER = Debian GCC Maintainers <debian-gcc@lists.debian.org>
+ifeq ($(distribution),Ubuntu)
+  ifneq (,$(findstring $(PKGSOURCE),gnat gdc))
+    MAINTAINER = Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
+  else
+    MAINTAINER = Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+  endif
+endif
+
+UPLOADERS = Matthias Klose <doko@debian.org>
+ifneq (,$(findstring $(PKGSOURCE),gnat))
+  UPLOADERS = Ludovic Brenta <lbrenta@debian.org>
+endif
+ifneq (,$(findstring $(PKGSOURCE),gdc))
+  UPLOADERS = Iain Buclaw <ibuclaw@ubuntu.com>
+endif
+
+DPKG_BUILD_DEP = dpkg-dev (>= 1.14.15),
+ifeq ($(with_multiarch_lib),yes)
+  DPKG_BUILD_DEP = dpkg-dev (>= 1.16.0~ubuntu4),
+endif
+ifeq ($(multiarch_stage1),yes)
+  DPKG_BUILD_DEP = dpkg-dev (>= 1.16.0~ubuntu4),
+endif
+
+ifeq ($(DEB_CROSS),yes)
+  DPKG_BUILD_DEP += dpkg-cross (>= 1.25.99),
+endif
+
+# The binutils version needed.
+# The oldest suitable versions for the various platforms can be found in
+# INSTALL/specific.html ; we take a tighter dependency if possible to be on
+# the safe side (something like newest( version in stable, versions for the
+# various platforms in INSTALL/specific.html) ).
+# We need binutils (>= 2.19.1) for a new dwarf unwind expression opcode.
+# See http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01713.html
+ifeq ($(trunk_build),yes)
+  BINUTILSV = 2.22
+else
+  BINUTILSV = 2.21.1
+endif
+ifeq ($(DEB_CROSS),yes)
+  BINUTILS_BUILD_DEP = binutils$(TS) (>= $(BINUTILSV)), binutils-multiarch (>= $(BINUTILSV))
+else
+  BINUTILS_BUILD_DEP = binutils (>= $(BINUTILSV)) | binutils-multiarch (>= $(BINUTILSV))
+endif
+# FIXME; stripping doesn't work with gold
+#BINUTILS_BUILD_DEP += , binutils-gold (>= $(BINUTILSV)) [$(gold_archs)]
+
+# libc-dev dependencies
+libc_ver := 2.11
+libc_dev_ver := $(libc_ver)
+ifeq ($(with_multiarch_lib),yes)
+  ifeq ($(distribution),Debian)
+    libc_dev_ver := 2.13-5
+  else
+    libc_dev_ver := 2.13-0ubuntu6
+  endif
+endif
+ifeq ($(DEB_TARGET_ARCH_OS),linux)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),alpha ia64))
+    LIBC_DEP = libc6.1
+  else
+    LIBC_DEP = libc6
+  endif
+else
+  ifeq ($(DEB_TARGET_ARCH_OS),hurd)
+    LIBC_DEP = libc0.3
+  endif
+  ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd)
+    LIBC_DEP = libc0.1
+  endif
+  ifeq ($(DEB_TARGET_ARCH),uclibc)
+       LIBC_DEP ?= libuclibc
+       LIBC_DEV_DEP ?= libuclibc-dev
+  endif
+endif
+LIBC_DEV_DEP = $(LIBC_DEP)-dev
+# for cross
+ifeq ($(DEB_CROSS),yes)
+  LIBC_DEP ?= $(LIBC_DEP)$(LS)
+  LIBC_DEV_DEP ?= $(LIBC_DEV_DEP)$(LS)
+endif
+
+# this is about Debian archs name, *NOT* GNU target triplet
+biarch_deb_map := \
+	i386=amd64 amd64=i386 \
+	mips=mips64 mipsel=mips64 \
+	powerpc=ppc64 ppc64=powerpc \
+	sparc=sparc64 \
+	s390=s390x s390x=s390 \
+	kfreebsd-amd64=i386 \
+	armel=armhf \
+	armhf=armel
+
+biarch_deb_arch := $(patsubst $(DEB_TARGET_ARCH)=%,%, \
+	$(filter $(DEB_TARGET_ARCH)=%,$(biarch_deb_map)))
+
+LIBC_BIARCH_DEP :=
+LIBC_BIARCH_DEV_DEP :=
+LIBCXX_BIARCH_DEP :=
+LIBCXX_BIARCH_DBG_DEP :=
+ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32)$(biarchhf)$(biarchsf)))
+  LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS) (>= $(libc_ver))
+  LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS) (>= $(libc_ver))
+  ifeq ($(biarch64),yes)
+    LIBCXX_BIARCH_DEP := lib64stdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version})
+    LIBCXX_BIARCH_DBG_DEP := lib64stdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg$(LS)
+  endif
+  ifeq ($(biarch32),yes)
+    LIBCXX_BIARCH_DEP := lib32stdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version})
+    LIBCXX_BIARCH_DBG_DEP := lib32stdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg$(LS)
+  endif
+  ifeq ($(biarchn32),yes)
+    ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel))
+      triarch :=
+      ifeq ($(biarch64),yes)
+        triarch := $(COMMA)$(SPACE)
+      endif
+      LIBC_BIARCH_DEV_DEP += $(triarch)libc6-dev-mipsn32$(LS) (>= $(libc_ver))
+      LIBC_BIARCH_DEP += $(triarch)libc6-mipsn32$(LS) (>= $(libc_ver))
+      LIBCXX_BIARCH_DEP += $(triarch)libn32stdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version})
+      LIBCXX_BIARCH_DBG_DEP += $(triarch)libn32stdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg$(LS)
+    endif
+  endif
+  ifeq ($(biarchhf),yes)
+    LIBCXX_BIARCH_DEP := libhfstdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version}) | libstdc++$(CXX_SONAME)$(LS)-armhf
+    LIBCXX_BIARCH_DBG_DEP := libhfstdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg$(LS) | libstdc++$(CXX_SONAME)-$(BASE_VERSION)$(LS)-dbg-armhf
+    LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)
+    LIBC_BIARCH_DEV_DEP += | $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)
+  endif
+  ifeq ($(biarchsf),yes)
+    LIBCXX_BIARCH_DEP := libsfstdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version}) | libstdc++$(CXX_SONAME)$(LS)-armel
+    LIBCXX_BIARCH_DBG_DEP := libsfstdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg$(LS) | libstdc++$(CXX_SONAME)-$(BASE_VERSION)$(LS)-dbg-armel
+    LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)
+    LIBC_BIARCH_DEV_DEP += | $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)
+  endif
+endif
+
+# Add suffix and required version
+LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS) (>= $(libc_dev_ver))
+
+# TODO: make this automatic, there must be a better way to define LIBC_DEP.
+ifneq ($(DEB_CROSS),yes)
+  LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_dev_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_dev_ver)),
+  LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 s390x], lib64gcc1 [i386 powerpc sparc s390], libc6-dev-mips64 [mips mipsel], libc6-dev-mipsn32 [mips mipsel],
+ifneq (,$(findstring armel,$(biarchhfarchs)))
+  LIBC_BIARCH_BUILD_DEP += libc6-dev-armhf [armel],
+endif
+ifneq (,$(findstring armhf,$(biarchsfarchs)))
+  LIBC_BIARCH_BUILD_DEP += libc6-dev-armel [armhf],
+endif
+else
+  LIBC_BUILD_DEP = $(LIBC_DEV_DEP),
+  ifneq ($(LIBC_BIARCH_DEV_DEP),)
+    LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP),
+  else
+    LIBC_BIARCH_BUILD_DEP =
+  endif
+endif
+
+GCC_MULTILIB_BUILD_DEP = g++-multilib [$(multilib_archs)],
+
+LIBUNWIND_DEV_DEP := libunwind7-dev$(LS) (>= 0.98.5-6)
+LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64],
+LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64],
+ifneq ($(DEB_TARGET_ARCH),ia64)
+  LIBUNWIND_DEV_DEP := # nothing
+endif
+
+ifneq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty))
+  GMP_BUILD_DEP = libgmp3-dev,
+  MPFR_BUILD_DEP = libmpfr-dev,
+else
+  GMP_BUILD_DEP = libgmp-dev (>= 2:5.0.1~),
+  MPFR_BUILD_DEP = libmpfr-dev (>= 3.0.0-9~),
+endif
+
+cloog_parma =
+ifeq ($(cloog_parma),yes)
+  PPL_BUILD_DEP = libppl-dev (>= 0.11~) | libppl0.11-dev,
+  CLOOG_BUILD_DEP = libcloog-parma-dev,
+  # FIXME: currently not dl'opened.
+  #CLOOG_RUNTIME_DEP = libcloog-ppl1, libppl-c4, libppl9, libpwl5
+else
+  PPL_BUILD_DEP = libppl-dev (>= 0.11~) | libppl0.10-dev,
+  CLOOG_BUILD_DEP = libcloog-ppl-dev (>= 0.15.9-2~),
+  # FIXME: currently not dl'opened.
+  #CLOOG_RUNTIME_DEP = libcloog-ppl0 (>= 0.15.9-2~), libppl-c2, libppl7
+endif
+MPC_BUILD_DEP = libmpc-dev,
+ELF_BUILD_DEP = libelfg0-dev (>= 0.8.12),
+
+SOURCE_BUILD_DEP :=
+ifeq (,$(findstring gcc,$(PKGSOURCE)))
+  SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)),
+endif
+
+CHECK_BUILD_DEP := dejagnu [$(check_no_archs)],
+ifneq (,$(findstring gcc,$(PKGSOURCE)))
+  CHECK_BUILD_DEP += autogen,
+endif
+
+AUTO_BUILD_DEP := m4, libtool,
+AUTO_BUILD_DEP += autoconf2.64, automake (>= 1:1.11), automake (<< 1:1.12),
+
+ifneq ($(DEB_CROSS),yes)
+LIBC_BUILD_DEP := libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_dev_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_dev_ver))
+JAVA_BUILD_DEP := libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, zlib1g-dev, libantlr-java, python, libffi-dev,
+
+ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+  bd_java_archs =
+else ifeq ($(single_package)-$(with_java),yes-yes)
+  bd_java_archs =
+else
+  bd_java_archs = $(EMPTY) [$(java_no_archs)]
+endif
+
+ifneq (,$(java_awt_peers))
+  JAVA_BUILD_DEP += fastjar$(bd_java_archs), libmagic-dev$(bd_java_archs),
+  JAVA_BUILD_DEP += libecj-java (>= 3.3.0-2)$(bd_java_archs), zip$(bd_java_archs),
+  ifeq ($(with_java_maintainer_mode),yes)
+    # gcj-4.3 needed for gjavah-4.3.
+    JAVA_BUILD_DEP += gcj-4.4$(bd_java_archs), ecj (>= 3.3.0-2)$(bd_java_archs),
+  endif
+  JAVA_BUILD_DEP += libasound2-dev [$(java_no_archs) $(linux_no_archs)],
+  ifneq (,$(findstring gtk,$(java_awt_peers)))
+    JAVA_BUILD_DEP += libxtst-dev$(bd_java_archs), libxt-dev$(bd_java_archs), libgtk2.0-dev (>= 2.4.4-2)$(bd_java_archs), libart-2.0-dev$(bd_java_archs), libcairo2-dev$(bd_java_archs),
+  endif
+  ifneq (,$(findstring qt,$(java_awt_peers)))
+    JAVA_BUILD_DEP += libqt4-dev (>= 4.1.0)$(bd_java_archs),
+  endif
+  # gconf peer, disabled by default
+  #JAVA_BUILD_DEP += libgconf2-dev$(bd_java_archs),
+  # gstreamer peer
+  #JAVA_BUILD_DEP += libgstreamer-plugins-base0.10-dev$(bd_java_archs),
+  ifneq ($(single_package),yes)
+    JAVA_BUILD_DEP += g++-4.6 [armel armhf],
+  endif
+endif
+ifneq ($(with_standalone_gcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    JAVA_BUILD_DEP += $(SOURCE_BUILD_DEP)
+  endif
+endif
+#JAVA_BUILD_INDEP := gcj-$(BASE_VERSION)-jdk
+ifeq ($(single_package),yes)
+  LIBSTDCXX_BUILD_INDEP = doxygen (>= 1.7.2), graphviz (>= 2.2), gsfonts-x11, texlive-latex-base
+  ifeq ($(cloog_parma),yes)
+    LIBSTDCXX_BUILD_INDEP +=, xsltproc, libxml2-utils, docbook-xsl-ns
+  endif
+  JAVA_BUILD_INDEP :=
+endif
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+    JAVA_BUILD_DEP :=
+    JAVA_BUILD_INDEP :=
+  endif
+endif
+
+ifeq ($(with_ecj),yes)
+  ifneq (./,$(dir $(ecj_jar)))
+    ECJ_DEP = libecj-java (>= 3.5.1)
+  endif
+else
+  ECJ_DEP = ecj, libecj-java (>= 3.5.1)
+  ECJ_DEP = ecj-gcj, libecj-java-gcj (>= 3.5.1)
+  ifneq (,$(filter $(DEB_HOST_ARCH),arm armel armhf))
+    ECJ_DEP +=, ecj1
+  endif
+endif
+
+ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+  LIBSTDCXX_BUILD_INDEP = doxygen (>= 1.7.2), graphviz (>= 2.2), gsfonts-x11, texlive-latex-base
+  ifeq ($(cloog_parma),yes)
+    LIBSTDCXX_BUILD_INDEP +=, xsltproc, libxml2-utils, docbook-xsl-ns
+  endif
+  JAVA_BUILD_INDEP :=, $(JAVA_BUILD_INDEP)
+endif
+
+SPU_BUILD_DEP := binutils-spu (>= $(BINUTILSV)) [powerpc ppc64], newlib-spu (>= 1.16.0) [powerpc ppc64], gcc-$(BASE_VERSION)-base [powerpc ppc64],
+SPU_BUILD_DEP := binutils-spu (>= $(BINUTILSV)) [powerpc ppc64], newlib-spu (>= 1.16.0) [powerpc ppc64],
+
+ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+  ifneq ($(with_separate_gnat),yes)
+    # Build gnat as part of the combiled gcc-x.y source package.  Do not fail
+    # if gnat is not present on unsupported architectures; the build scripts
+    # will not use gnat anyway.
+    GNAT_BUILD_DEP := gnat (>= 4.1) [$(ada_no_archs)],
+  endif
+else ifeq ($(single_package),yes)
+  # Ditto, as part of the gcc-snapshot package.
+  # FIXME: ad hoc dependency, better fix setting of ada_no_archs
+  #GNAT_BUILD_DEP := gnat (>= 4.1) [$(ada_no_archs)], gcc-snapshot (>= 20090821-1) [armel armhf],
+  GNAT_BUILD_DEP := gnat (>= 4.1) [!arm !armhf !m68k !powerpcspe !sh4 !sparc64 !hurd-i386],
+else ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+  # Special source package just for gnat. Fail early if gnat is not present,
+  # rather than waste CPU cycles and fail later.
+  GNAT_BUILD_DEP := gnat (>= 4.1),
+  GNAT_BUILD_DEP += $(SOURCE_BUILD_DEP)
+  JAVA_BUILD_DEP :=
+  JAVA_BUILD_INDEP :=
+  GDC_BUILD_DEP :=
+  # gnat on spu should work ...
+  SPU_BUILD_DEP :=
+else ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+  # Special source package just for gcj.
+  GNAT_BUILD_DEP :=
+  GDC_BUILD_DEP :=
+  SPU_BUILD_DEP :=
+else ifeq ($(PKGSOURCE),gdc-$(BASE_VERSION))
+  # Special source package just for gdc.
+  GNAT_BUILD_DEP :=
+  JAVA_BUILD_DEP :=
+  JAVA_BUILD_INDEP :=
+  GDC_BUILD_DEP := $(SOURCE_BUILD_DEP)
+  SPU_BUILD_DEP :=
+endif
+
+else
+# build cross compiler
+  CROSS_BUILD_DEP := libc6-dev$(cross_lib_arch),
+ifeq ($(REVERSE_CROSS),yes)
+  CROSS_BUILD_DEP += zlib1g-dev$(cross_lib_arch), libmpfr-dev$(cross_lib_arch),
+endif
+  SOURCE_BUILD_DEP :=
+  ifeq (,$(findstring gcc,$(PKGSOURCE)))
+    SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)),
+  endif
+  ifeq ($(with_java),yes)
+    JAVA_BUILD_DEP := zlib1g-dev, lib64z1-dev [i386 powerpc sparc s390], lib32z1-dev [amd64 ppc64 kfreebsd-amd64 s390x],
+  endif
+  JAVA_BUILD_INDEP :=
+  GNAT_BUILD_DEP :=
+  ifeq (,$(findstring spu,$(DEB_TARGET_GNU_CPU)))
+    SPU_BUILD_DEP :=
+  endif
+endif # cross compiler
+
+# The numeric part of the gcc version number (x.yy.zz)
+NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \
+		awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}')
+# first version with a new path component in gcc_lib_dir (i.e. GCC_VERSION
+# or TARGET_ALIAS changes), or last version available for all architectures
+DEB_GCC_SOFT_VERSION := 4.6.3-1
+DEB_GCJ_SOFT_VERSION := 4.6.3-1
+
+ifeq ($(with_d),yes)
+  DEB_GDC_VERSION := $(GDC_BASE_VERSION)-$(DEB_VERSION)
+endif
+
+# semiautomatic ...
+DEB_SOVERSION		:= $(DEB_VERSION)
+DEB_SOVERSION		:= 4.6
+DEB_SOEVERSION		:= $(EPOCH):4.6
+DEB_STDCXX_SOVERSION	:= 4.6
+DEB_GCJ_SOVERSION	:= 4.6
+DEB_GOMP_SOVERSION	:= $(DEB_SOVERSION)
+DEB_GCCMATH_SOVERSION	:= $(DEB_SOVERSION)
+
+DEB_GCC_VERSION := $(DEB_VERSION)
+DEB_GCJ_VERSION := $(DEB_VERSION)
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    DEB_GCC_VERSION := $(DEB_GCC_SOFT_VERSION)
+  endif
+endif
+
+DEB_GNAT_VERSION := $(DEB_VERSION)
+ifeq ($(with_separate_gnat),yes)
+  ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+    DEB_GCC_VERSION := $(DEB_GCC_SOFT_VERSION)
+  endif
+endif
+
+# manual ...
+ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k))
+  ifeq ($(DEB_TARGET_ARCH),m68k)
+    GCC_SONAME := 2
+  endif
+  ifeq ($(DEB_TARGET_ARCH),hppa)
+    GCC_SONAME := 4
+  endif
+  DEB_LIBGCC_SOVERSION := $(DEB_SOVERSION)
+  DEB_LIBGCC_VERSION := $(DEB_VERSION)
+else
+  GCC_SONAME := 1
+  DEB_LIBGCC_SOVERSION := $(DEB_SOEVERSION)
+  DEB_LIBGCC_VERSION := $(DEB_EVERSION)
+endif
+
+ifeq ($(with_shared_libgcc),yes)
+LIBGCC_DEP := libgcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION))
+LIBGCC_BIARCH_DEP := 
+ifeq ($(biarch64),yes)
+  LIBGCC_BIARCH_DEP := lib64gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION))
+endif
+ifeq ($(biarch32),yes)
+  LIBGCC_BIARCH_DEP := lib32gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION))
+endif
+ifeq ($(biarchn32),yes)
+  ifeq ($(biarch64),yes)
+    LIBGCC_BIARCH_DEP := lib64gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)), libn32gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION))
+  else
+    LIBGCC_BIARCH_DEP := libn32gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION))
+  endif
+endif
+ifeq ($(biarchhf),yes)
+  LIBGCC_BIARCH_DEP := libhfgcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)) | libgcc1-armhf
+endif
+ifeq ($(biarchsf),yes)
+  LIBGCC_BIARCH_DEP := libsfgcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)) | libgcc1-armel
+endif
+endif # $(with_shared_libgcc)
+
+GNAT_VERSION := $(BASE_VERSION)
+
+LIBGNAT_DEP :=
+ifeq ($(with_libgnat),yes)
+  LIBGNAT_DEP := libgnat-$(GNAT_VERSION) (= $(DEB_VERSION))
+endif
+
+pkg_ver := -$(BASE_VERSION)
+
+PKG_GCJ_EXT = $(GCJ_SONAME1)
+PKG_LIBGCJ_EXT = $(GCJ_SONAME1)$(if $(GCJ_SONAME2),-$(GCJ_SONAME2))
+
+ctrl_flags = \
+	-DBINUTILSV=$(BINUTILSV) \
+	-DSRCNAME=$(PKGSOURCE) \
+	-D__$(DEB_TARGET_GNU_CPU)__ \
+	-DARCH=$(DEB_TARGET_ARCH) \
+	-DDIST=$(distribution)
+
+ctrl_flags += \
+	-DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \
+	-DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_BUILD_DEP)" \
+	-DFORTRAN_BUILD_DEP="$(FORTRAN_BUILD_DEP)" \
+	-DGNAT_BUILD_DEP="$(GNAT_BUILD_DEP)" \
+	-DJAVA_BUILD_DEP="$(JAVA_BUILD_DEP)" \
+	-DJAVA_BUILD_INDEP="$(JAVA_BUILD_INDEP)" \
+	-DLIBSTDCXX_BUILD_INDEP="$(LIBSTDCXX_BUILD_INDEP)" \
+	-DGDC_BUILD_DEP="$(GDC_BUILD_DEP)" \
+	-DSPU_BUILD_DEP="$(SPU_BUILD_DEP)" \
+	-DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \
+	-DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \
+	-DCHECK_BUILD_DEP="$(CHECK_BUILD_DEP)" \
+	-DAUTO_BUILD_DEP="$(AUTO_BUILD_DEP)" \
+	-DAUTOGEN_BUILD_DEP="$(AUTOGEN_BUILD_DEP)" \
+	-DCLOOG_BUILD_DEP="$(CLOOG_BUILD_DEP)" \
+	-DGMP_BUILD_DEP="$(GMP_BUILD_DEP)" \
+	-DMPFR_BUILD_DEP="$(MPFR_BUILD_DEP)" \
+	-DMPC_BUILD_DEP="$(MPC_BUILD_DEP)" \
+	-DELF_BUILD_DEP="$(ELF_BUILD_DEP)" \
+	-DDPKG_BUILD_DEP="$(DPKG_BUILD_DEP)" \
+	-DSOURCE_BUILD_DEP="$(SOURCE_BUILD_DEP)" \
+	-DCROSS_BUILD_DEP="$(CROSS_BUILD_DEP)" \
+	-DGCC_MULTILIB_BUILD_DEP='$(GCC_MULTILIB_BUILD_DEP)' \
+	-DMULTILIB_ARCHS="$(multilib_archs)" \
+	-DNEON_ARCHS="$(neon_archs)" \
+	-DTP=$(TP) \
+	-DTS=$(TS) \
+	-DLS=$(LS)
+
+ifeq ($(DEB_CROSS),yes)
+  ctrl_flags += \
+	-DTARGET=$(DEB_TARGET_ARCH) \
+	-DLIBUNWIND_BUILD_DEP="$(LIBUNWIND_BUILD_DEP)" \
+	-DLIBATOMIC_OPS_BUILD_DEP="$(LIBATOMIC_OPS_BUILD_DEP)"
+else
+  # add '-DPRI=optional' to ctrl_flags if this is not the default compiler
+  # ctrl_flags += \
+  #     -DPRI=optional
+endif
+
+ifeq ($(with_base_only),yes)
+  ctrl_flags += \
+	-DBASE_ONLY=yes
+endif
+
+ifeq ($(with_multiarch_lib),yes)
+  ctrl_flags += \
+	-DMULTIARCH=yes
+endif
+
+control: control-file readme-bugs-file parameters-file copyright-file substvars-file versioned-files
+
+# stage1 and stage2 compilers are only C
+ifdef DEB_STAGE
+  languages = c
+  addons = cdev plugindev
+  ifeq ($(DEB_STAGE),stage2)
+    addons += libgcc gccxbase
+  endif
+else
+languages = c c++ fortran objc objpp
+ifeq ($(DEB_CROSS),yes)
+  addons = gccxbase
+else
+  addons = gccbase
+endif
+addons += cdev c++dev fdev objcdev source objppdev multilib
+addons += plugindev
+ifeq ($(with_libgcc),yes)
+  addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgcc)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgcc)
+endif
+ifeq ($(with_libcxx),yes)
+  addons += libcxx lib32cxx lib64cxx libn32cxx
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfcxx)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfcxx)
+endif
+addons += $(if $(findstring armel,$(biarchhfarchs)),libhfdbgcxx)
+addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfdbgcxx)
+ifeq ($(with_mudflap),yes)
+  addons += mudflap
+  ifeq ($(with_libmudflap),yes)
+    addons += libmudf
+  endif
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfmudflap)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfmudflap)
+endif
+ifeq ($(with_libgfortran),yes)
+  addons += libgfortran lib32gfortran lib64gfortran libn32gfortran
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgfortran)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgfortran)
+endif
+ifeq ($(with_libobjc),yes)
+  addons += libobjc lib32objc lib64objc libn32objc
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfobjc)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfobjc)
+endif
+ifeq ($(with_libgomp),yes)
+  addons += libgomp lib32gomp lib64gomp libn32gomp
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgomp)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgomp)
+endif
+ifeq ($(with_libqmath),yes)
+  addons += libqmath lib32qmath lib64qmath libn32qmath
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfqmath)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfqmath)
+endif
+ifeq ($(with_go),yes)
+  addons += ggo godev
+  ifeq ($(with_go),yes)
+    addons += libggo
+  endif
+endif
+
+ifneq ($(DEB_CROSS),yes)
+
+  languages += ada java
+  addons += libgcj libgcjdev gcjdoc libgnat libs source # libgmath libnof lib64gnat ssp
+
+  ifneq (,$(neon_archs))
+    addons += libneongcc libneongomp libneonobjc libneongfortran libneoncxx
+  endif
+  ifeq ($(with_fixincl),yes)
+    addons += fixincl
+  endif
+  ifeq ($(with_libgcj_doc),yes)
+    addons += gcjdoc
+  endif
+#  ifneq (,$(findstring gtk, $(java_awt_peers)))
+#    addons += gtkpeer
+#  endif
+#  ifneq (,$(findstring qt, $(java_awt_peers)))
+#    addons += qtpeer
+#  endif
+  ifeq ($(with_separate_libgcj),yes)
+    ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+      languages := $(filter-out java,$(languages))
+      addons := $(filter-out gcj libgcj libgcjdev gcjdoc gtkpeer qtpeer,$(addons))
+    endif
+    ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+      languages = java
+      addons = gcj libgcj libgcjdev
+    ifeq ($(with_libgcj_doc),yes)
+      addons += gcjdoc
+    endif
+#      ifneq (,$(findstring gtk, $(java_awt_peers)))
+#        addons += gtkpeer
+#      endif
+#      ifneq (,$(findstring qt, $(java_awt_peers)))
+#        addons += qtpeer
+#      endif
+      ifeq ($(with_standalone_gcj),yes)
+	addons += libgcc lib4gcc lib64gcc lib32gcc libn32gcc
+      endif
+    endif
+  endif
+  ifeq ($(with_standalone_gcj),yes)
+    ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+      ctrl_flags += -DSTANDALONEJAVA
+    endif
+  endif
+  ifeq ($(with_separate_gnat),yes)
+    ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+      languages := $(filter-out ada,$(languages))
+      addons := $(filter-out libgnat,$(addons))
+    endif
+    ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+      languages = ada
+      addons = libgnat
+    endif
+  endif
+  ifeq ($(with_separate_gdc),yes)
+    ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+      languages := $(filter-out d,$(languages))
+    endif
+    ifeq ($(PKGSOURCE),gdc-$(BASE_VERSION))
+      languages = d
+      addons = 
+      ifeq ($(with_libphobos),yes)
+        addons += libphobos
+      endif
+    endif
+  endif
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    addons += gfdldoc
+  endif
+endif
+endif # not stage
+
+control-file:
+	echo "addons: $(addons)"; \
+	m4 $(ctrl_flags) \
+	  -DPV=$(pkg_ver) \
+	  -DCXX_SO=$(CXX_SONAME) \
+	  -DGCC_SO=$(GCC_SONAME) \
+	  -DOBJC_SO=$(OBJC_SONAME) \
+	  -DFORTRAN_SO=$(FORTRAN_SONAME) \
+	  -DGCJ_SO=$(PKG_GCJ_EXT) \
+	  -DLIBGCJ_EXT=$(PKG_LIBGCJ_EXT) \
+	  -DGNAT_SO=$(GNAT_SONAME) \
+	  -DGNAT_V=$(GNAT_VERSION) \
+	  -DPHOBOS_V=$(libphobos_version) \
+	  -DGOMP_SO=$(GOMP_SONAME) \
+	  -DGCCMATH_SO=$(GCCMATH_SONAME) \
+	  -DMF_SO=$(MUDFLAP_SONAME) \
+	  -DQMATH_SO=$(QUADMATH_SONAME) \
+	  -DSSP_SO=$(SSP_SONAME) \
+	  -DGO_SO=$(GO_SONAME) \
+	  -Denabled_languages="$(languages) $(addons)" \
+	  -Dada_no_archs="$(ada_no_archs)" \
+	  -Djava_no_archs="$(java_no_archs)" \
+	  -Dfortran_no_archs="$(fortran_no_archs)" \
+	  -Dlibgc_no_archs="$(libgc_no_archs)" \
+	  -Dlibphobos_no_archs="$(libphobos_no_archs)" \
+	  -Dcheck_no_archs="$(check_no_archs)" \
+	  -Dlocale_no_archs="$(locale_no_archs)" \
+	  -Dlinux_gnu_archs="$(linux_gnu_archs)" \
+	  -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32archs)))" \
+	  -Dbiarch64_archs="$(strip $(subst /, ,$(biarch64archs)))" \
+	  -Dbiarchn32_archs="$(strip $(subst /, ,$(biarchn32archs)))" \
+	  -Dbiarchhf_archs="$(strip $(subst /, ,$(biarchhfarchs)))" \
+	  -Dbiarchsf_archs="$(strip $(subst /, ,$(biarchsfarchs)))" \
+		debian/control.m4 > debian/control.tmp2
+	uniq debian/control.tmp2 | sed '/^Build/s/ *, */, /g' \
+		> debian/control.tmp
+	rm -f debian/control.tmp2
+	[ -e debian/control ] \
+	  && cmp -s debian/control debian/control.tmp \
+	  && rm -f debian/control.tmp && exit 0; \
+	  mv debian/control.tmp debian/control; touch $(control_stamp)
+
+readme-bugs-file:
+	m4 -DDIST=$(distribution) -DSRCNAME=$(PKGSOURCE) \
+		debian/README.Bugs.m4 > debian/README.Bugs
+
+copyright-file:
+	rm -f debian/copyright
+	if echo $(SOURCE_VERSION) | grep -E ^'[0-9]\.[0-9]-[0-9]{8}' ; \
+		then SVN_BRANCH="trunk" ; \
+	else \
+		SVN_BRANCH="gcc-$(subst .,_,$(BASE_VERSION))-branch" ; \
+	fi ; \
+	sed debian/copyright.in		\
+		-e "s/@BV@/$(BASE_VERSION)/g"		\
+		-e "s/@SVN_BRANCH@/$$SVN_BRANCH/g"	\
+		> debian/copyright
+
+substvars-file:
+	rm -f debian/substvars.local.tmp
+	( \
+		echo 'gcc:Version=$(DEB_GCC_VERSION)'; \
+		echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \
+		echo 'gcc:SoftVersion=$(DEB_GCC_SOFT_VERSION)'; \
+		echo 'gdc:Version=$(DEB_GDC_VERSION)'; \
+		echo 'gcj:Version=$(DEB_GCJ_VERSION)'; \
+		echo 'gcj:SoftVersion=$(DEB_GCJ_SOFT_VERSION)'; \
+		echo 'gcj:BaseVersion=$(BASE_VERSION)'; \
+		echo 'gnat:Version=$(DEB_GNAT_VERSION)'; \
+		echo 'binutils:Version=$(BINUTILSV)'; \
+		echo 'dep:libgcc=$(LIBGCC_DEP)'; \
+		echo 'dep:libgccbiarch=$(LIBGCC_BIARCH_DEP)'; \
+		echo 'dep:libc=$(LIBC_DEP) (>= $(libc_ver))'; \
+		echo 'dep:libcdev=$(LIBC_DEV_DEP)'; \
+		echo 'dep:libcbiarch=$(LIBC_BIARCH_DEP)'; \
+		echo 'dep:libcbiarchdev=$(LIBC_BIARCH_DEV_DEP)'; \
+		echo 'dep:libunwinddev=$(LIBUNWIND_DEV_DEP)'; \
+		echo 'dep:libcxxbiarch=$(LIBCXX_BIARCH_DEP)'; \
+		echo 'dep:libcxxbiarchdbg=$(LIBCXX_BIARCH_DBG_DEP)'; \
+		echo 'dep:libgobiarch=$(LIBGO_BIARCH_DEP)'; \
+		echo 'dep:libgobiarchdbg=$(LIBGO_BIARCH_DBG_DEP)'; \
+		echo 'dep:libgnat=$(LIBGNAT_DEP)'; \
+		echo 'dep:ecj=$(ECJ_DEP)'; \
+		echo 'dep:libcloog=$(CLOOG_RUNTIME_DEP)'; \
+	) > debian/substvars.local.tmp
+ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs)))
+	( \
+		echo 'gcc:multilib=gcc-$(BASE_VERSION)-multilib$(TS)'; \
+		echo 'gxx:multilib=g++-$(BASE_VERSION)-multilib$(TS)'; \
+		echo 'gobjc:multilib=gobjc-$(BASE_VERSION)-multilib$(TS)'; \
+		echo 'gobjcxx:multilib=gobjc++-$(BASE_VERSION)-multilib$(TS)'; \
+		echo 'gfortran:multilib=gfortran-$(BASE_VERSION)-multilib$(TS)'; \
+	) >> debian/substvars.local.tmp
+endif
+ifeq ($(with_gold),yes)
+	echo 'dep:gold=binutils-gold (>= $(BINUTILSV))' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_libssp),yes)
+	echo 'dep:libssp=libssp$(SSP_SONAME) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_gomp),yes)
+	echo 'dep:libgomp=libgomp$(GOMP_SONAME)$(LS) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_qmath),yes)
+	echo 'dep:libqmath=libquadmath$(QUADMATH_SONAME)$(LS) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(multilib),yes)
+	echo 'dep:libgfortranbiarch=$(libgfortranbiarch)' \
+		>> debian/substvars.local.tmp
+	echo 'dep:libobjcbiarch=$(libobjcbiarch)' \
+		>> debian/substvars.local.tmp
+  ifeq ($(with_mudflap),yes)
+	echo 'dep:libmudflapbiarch=$(libmudflapbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_libssp),yes)
+	echo 'dep:libsspbiarch=$(libsspbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_gomp),yes)
+	echo 'dep:libgompbiarch=$(libgompbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_qmath),yes)
+	echo 'dep:libqmathbiarch=$(libquadmathbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_go),yes)
+	echo 'dep:libgobiarch=$(libgobiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+endif
+ifneq ($(with_standalone_gcj),yes)
+  ifneq (,$(filter $(DEB_HOST_ARCH),armel armhf))
+	echo 'dep:gcj=g++$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \
+		>> debian/substvars.local.tmp
+  else
+	echo 'dep:gcj=gcc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \
+		>> debian/substvars.local.tmp
+  endif
+endif
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#	echo 'pkg:gcjgtk=libgcj$(subst 0,,$(GCJ_SONAME))-awt-gtk (>= $(DEB_GCJ_VERSION))' \
+#		>> debian/substvars.local.tmp
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#	echo 'pkg:gcjqt=libgcj$(subst 0,,$(GCJ_SONAME))-awt-qt (>= $(DEB_GCJ_VERSION))' \
+#		>> debian/substvars.local.tmp
+#endif
+ifeq ($(DEB_HOST_ARCH),hppa)
+	echo 'dep:prctl=prctl' >> debian/substvars.local.tmp
+endif
+ifneq (,$(filter $(DEB_TARGET_ARCH), powerpc ppc64))
+	echo 'base:Replaces=gcc-$(BASE_VERSION)-spu (<< 4.4.0-1)' >> debian/substvars.local.tmp
+endif
+ifeq ($(distribution)-$(DEB_HOST_ARCH),Debian-amd64)
+	echo 'confl:lib32=libc6-i386 (<< 2.9-22)' >> debian/substvars.local.tmp
+endif
+ifeq ($(with_multiarch_lib),yes)
+	echo 'multiarch:breaks=gcc-4.1, gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)' >> debian/substvars.local.tmp
+endif
+	[ -e debian/substvars.local ] \
+	  && cmp -s debian/substvars.local debian/substvars.local.tmp \
+	  && rm -f debian/substvars.local.tmp && exit 0; \
+	  mv debian/substvars.local.tmp debian/substvars.local; \
+	  touch $(control_stamp)
+
+parameters-file:
+	rm -f debian/rules.parameters.tmp
+	( \
+		echo '# configuration parameters taken from upstream source files'; \
+		echo 'GCC_VERSION	:= $(GCC_VERSION)'; \
+		echo 'NEXT_GCC_VERSION	:= $(NEXT_GCC_VERSION)'; \
+		echo 'BASE_VERSION	:= $(BASE_VERSION)'; \
+		echo 'SOURCE_VERSION	:= $(SOURCE_VERSION)'; \
+		echo 'DEB_VERSION	:= $(DEB_VERSION)'; \
+		echo 'DEB_EVERSION	:= $(DEB_EVERSION)'; \
+		echo 'GDC_BASE_VERSION  := $(GDC_BASE_VERSION)'; \
+		echo 'DEB_GDC_VERSION	:= $(DEB_GDC_VERSION)'; \
+		echo 'DEB_SOVERSION	:= $(DEB_SOVERSION)'; \
+		echo 'DEB_SOEVERSION	:= $(DEB_SOEVERSION)'; \
+		echo 'DEB_LIBGCC_SOVERSION	:= $(DEB_LIBGCC_SOVERSION)'; \
+		echo 'DEB_LIBGCC_VERSION	:= $(DEB_LIBGCC_VERSION)'; \
+		echo 'DEB_STDCXX_SOVERSION	:= $(DEB_STDCXX_SOVERSION)'; \
+		echo 'DEB_GCJ_SOVERSION	:= $(DEB_GCJ_SOVERSION)'; \
+		echo 'PKG_GCJ_EXT	:= $(PKG_GCJ_EXT)'; \
+		echo 'PKG_LIBGCJ_EXT	:= $(PKG_LIBGCJ_EXT)'; \
+		echo 'DEB_GOMP_SOVERSION	:= $(DEB_GOMP_SOVERSION)'; \
+		echo 'DEB_GCCMATH_SOVERSION	:= $(DEB_GCCMATH_SOVERSION)'; \
+		echo 'GCC_SONAME	:= $(GCC_SONAME)'; \
+		echo 'CXX_SONAME	:= $(CXX_SONAME)'; \
+		echo 'FORTRAN_SONAME	:= $(FORTRAN_SONAME)'; \
+		echo 'OBJC_SONAME	:= $(OBJC_SONAME)'; \
+		echo 'GCJ_SONAME	:= $(GCJ_SONAME)'; \
+		echo 'GNAT_VERSION	:= $(GNAT_VERSION)'; \
+		echo 'GNAT_SONAME	:= $(GNAT_SONAME)'; \
+		echo 'FFI_SONAME	:= $(FFI_SONAME)'; \
+		echo 'MUDFLAP_SONAME	:= $(MUDFLAP_SONAME)'; \
+		echo 'SSP_SONAME	:= $(SSP_SONAME)'; \
+		echo 'GOMP_SONAME	:= $(GOMP_SONAME)'; \
+		echo 'QMATH_SONAME	:= $(QUADMATH_SONAME)'; \
+		echo 'GCCMATH_SONAME	:= $(GCCMATH_SONAME)'; \
+		echo 'GO_SONAME		:= $(GO_SONAME)'; \
+		echo 'LIBC_DEP		:= $(LIBC_DEP)'; \
+	) > debian/rules.parameters.tmp
+	[ -e debian/rules.parameters ] \
+	  && cmp -s debian/rules.parameters debian/rules.parameters.tmp \
+	  && rm -f debian/rules.parameters.tmp && exit 0; \
+	  mv debian/rules.parameters.tmp debian/rules.parameters; \
+	  touch $(control_stamp)
+
+versioned-files:
+	fs=`echo debian/*BV* debian/*GCJ* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \
+	for f in $$fs debian/source.lintian-overrides.in; do \
+	  [ -f $$f ] || echo "CANNOT FIND $$f"; \
+	  [ -f $$f ] || continue; \
+	  if [ -z "$(DEB_CROSS)" ]; then case "$$f" in *-CR*) continue; esac; fi; \
+	  f2=$$(echo $$f \
+		| sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LGCJ/$(PKG_LIBGCJ_EXT)/;s/GCJ/$(PKG_GCJ_EXT)/;s/LC/$(GCC_SONAME)/;s/MF/$(MUDFLAP_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \
+	  sed -e 's/@BV@/$(BASE_VERSION)/g' \
+	      -e 's/@CXX@/$(CXX_SONAME)/g' \
+	      -e 's/@LGCJ@/$(PKG_LIBGCJ_EXT)/g' \
+	      -e 's/@GCJ@/$(PKG_GCJ_EXT)/g' \
+	      -e 's/@GCJSO@/$(GCJ_SONAME)/g' \
+	      -e 's/@LC@/$(GCC_SONAME)/g' \
+	      -e 's/@MF@/$(MUDFLAP_SONAME)/g' \
+	      -e 's/@SRC@/$(PKGSOURCE)/g' \
+	      -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \
+	      -e 's/@java_priority@/$(java_priority)/g' \
+	      -e 's/@gcc_priority@/$(subst .,,$(BASE_VERSION))/g' \
+	      -e 's/@TARGET@/$(DEB_TARGET_GNU_TYPE)/g' \
+	    $$f > $$f2; \
+	  touch -r $$f $$f2; \
+	done
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.i386
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.i386
@@ -0,0 +1,6 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/lib64gfortran3.symbols.mips
+++ gcc-4.6-4.6.3/debian/lib64gfortran3.symbols.mips
@@ -0,0 +1,5 @@
+libgfortran.so.3 lib64gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/source.lintian-overrides
+++ gcc-4.6-4.6.3/debian/source.lintian-overrides
@@ -0,0 +1,5 @@
+gcc-4.6: invalid-arch-string-in-source-relation
+gcc-4.6: quilt-build-dep-but-no-series-file
+gcc-4.6: weak-library-dev-dependency libgnatvsn4.6-dev on libgnatvsn4.6 (= ${gnat:Version})
+gcc-4.6: weak-library-dev-dependency libgnatprj4.6-dev on libgnatprj4.6 (= ${gnat:Version})
+gcc-4.6: weak-library-dev-dependency libgcj12-dev on libgcj12-awt (= ${gcj:Version})
--- gcc-4.6-4.6.3.orig/debian/libgnat-BV.overrides
+++ gcc-4.6-4.6.3/debian/libgnat-BV.overrides
@@ -0,0 +1 @@
+libgnat-@BV@: package-name-doesnt-match-sonames
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.32bit
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.32bit
@@ -0,0 +1,551 @@
+#include "libstdc++6.symbols.common"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEj@GLIBCXX_3.4.4 4.1.1
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjRKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEjj@GLIBCXX_3.4 4.1.1
+ _ZNKSsixEj@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5
+ _ZNKSt8valarrayIjE4sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEjj@GLIBCXX_3.4.16 4.6.0
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSs10_S_compareEjj@GLIBCXX_3.4.16 4.6.0
+ _ZNSs12_S_constructEjcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEjjjc@GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEjjPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs18_S_construct_aux_2EjcRKSaIcE@GLIBCXX_3.4.14 4.5
+ _ZNSs2atEj@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEjjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEjj@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEjc@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEjc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjRKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjjc@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEj@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEjc@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjRKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjjc@GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEj@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcjc@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcjc@GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEjjj@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EjcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EjcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsixEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEj@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1
+ (arch=!powerpc !powerpcspe !ppc64 !sparc)_ZNSt14numeric_limitsIeE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15messages_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_j@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_j@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC1ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC2ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEixEj@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZSt11_Hash_bytesPKvjj@CXXABI_1.3.5 4.6
+ _ZSt15_Fnv_hash_bytesPKvjj@CXXABI_1.3.5 4.6
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1
+ _ZSt17__verify_groupingPKcjRKSs@GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _Znaj@GLIBCXX_3.4 4.1.1
+ _ZnajRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ _Znwj@GLIBCXX_3.4 4.1.1
+ _ZnwjRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.hurd-i386
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.hurd-i386
@@ -0,0 +1,3 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
--- gcc-4.6-4.6.3.orig/debian/source.lintian-overrides.in
+++ gcc-4.6-4.6.3/debian/source.lintian-overrides.in
@@ -0,0 +1,5 @@
+@SRC@: invalid-arch-string-in-source-relation
+@SRC@: quilt-build-dep-but-no-series-file
+@SRC@: weak-library-dev-dependency libgnatvsn@BV@-dev on libgnatvsn@BV@ (= ${gnat:Version})
+@SRC@: weak-library-dev-dependency libgnatprj@BV@-dev on libgnatprj@BV@ (= ${gnat:Version})
+@SRC@: weak-library-dev-dependency libgcj@LGCJ@-dev on libgcj@LGCJ@-awt (= ${gcj:Version})
--- gcc-4.6-4.6.3.orig/debian/libgcc4.symbols.hppa
+++ gcc-4.6-4.6.3/debian/libgcc4.symbols.hppa
@@ -0,0 +1,93 @@
+libgcc_s.so.4 libgcc4 #MINVER#
+ GCC_3.0@GCC_3.0 4.1.1
+ GCC_3.3.1@GCC_3.3.1 4.1.1
+ GCC_3.3@GCC_3.3 4.1.1
+ GCC_3.4.2@GCC_3.4.2 4.1.1
+ GCC_3.4@GCC_3.4 4.1.1
+ GCC_4.0.0@GCC_4.0.0 4.1.1
+ GCC_4.2.0@GCC_4.2.0 4.1.1
+ GCC_4.3.0@GCC_4.3.0 4.3
+ GLIBC_2.0@GLIBC_2.0 4.1.1
+ _Unwind_Backtrace@GCC_3.3 4.1.1
+ _Unwind_DeleteException@GCC_3.0 4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 4.1.1
+ _Unwind_Find_FDE@GCC_3.0 4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 4.1.1
+ _Unwind_GetCFA@GCC_3.3 4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 4.1.1
+ _Unwind_GetGR@GCC_3.0 4.1.1
+ _Unwind_GetIP@GCC_3.0 4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 4.1.1
+ _Unwind_RaiseException@GCC_3.0 4.1.1
+ _Unwind_Resume@GCC_3.0 4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 4.1.1
+ _Unwind_SetGR@GCC_3.0 4.1.1
+ _Unwind_SetIP@GCC_3.0 4.1.1
+ __absvdi2@GCC_3.0 4.1.1
+ __absvsi2@GCC_3.0 4.1.1
+ __addvdi3@GCC_3.0 4.1.1
+ __addvsi3@GCC_3.0 4.1.1
+ __ashldi3@GCC_3.0 4.1.1
+ __ashrdi3@GCC_3.0 4.1.1
+ __bswapdi2@GCC_4.3.0 4.3
+ __bswapsi2@GCC_4.3.0 4.3
+ __clear_cache@GCC_3.0 4.1.1
+ __clzdi2@GCC_3.4 4.1.1
+ __clzsi2@GCC_3.4 4.1.1
+ __cmpdi2@GCC_3.0 4.1.1
+ __ctzdi2@GCC_3.4 4.1.1
+ __ctzsi2@GCC_3.4 4.1.1
+ __deregister_frame@GLIBC_2.0 4.1.1
+ __deregister_frame_info@GLIBC_2.0 4.1.1
+ __deregister_frame_info_bases@GCC_3.0 4.1.1
+ __divdc3@GCC_4.0.0 4.1.1
+ __divdi3@GLIBC_2.0 4.1.1
+ __divsc3@GCC_4.0.0 4.1.1
+ __emutls_get_address@GCC_4.3.0 4.3
+ __emutls_register_common@GCC_4.3.0 4.3
+ __enable_execute_stack@GCC_3.4.2 4.1.1
+ __ffsdi2@GCC_3.0 4.1.1
+ __ffssi2@GCC_4.3.0 4.3
+ __fixdfdi@GCC_3.0 4.1.1
+ __fixsfdi@GCC_3.0 4.1.1
+ __fixunsdfdi@GCC_3.0 4.1.1
+ __fixunsdfsi@GCC_3.0 4.1.1
+ __fixunssfdi@GCC_3.0 4.1.1
+ __fixunssfsi@GCC_3.0 4.1.1
+ __floatdidf@GCC_3.0 4.1.1
+ __floatdisf@GCC_3.0 4.1.1
+ __floatundidf@GCC_4.2.0 4.2.1
+ __floatundisf@GCC_4.2.0 4.2.1
+ __frame_state_for@GLIBC_2.0 4.1.1
+ __gcc_personality_v0@GCC_3.3.1 4.1.1
+ __lshrdi3@GCC_3.0 4.1.1
+ __moddi3@GLIBC_2.0 4.1.1
+ __muldc3@GCC_4.0.0 4.1.1
+ __muldi3@GCC_3.0 4.1.1
+ __mulsc3@GCC_4.0.0 4.1.1
+ __mulvdi3@GCC_3.0 4.1.1
+ __mulvsi3@GCC_3.0 4.1.1
+ __negdi2@GCC_3.0 4.1.1
+ __negvdi2@GCC_3.0 4.1.1
+ __negvsi2@GCC_3.0 4.1.1
+ __paritydi2@GCC_3.4 4.1.1
+ __paritysi2@GCC_3.4 4.1.1
+ __popcountdi2@GCC_3.4 4.1.1
+ __popcountsi2@GCC_3.4 4.1.1
+ __powidf2@GCC_4.0.0 4.1.1
+ __powisf2@GCC_4.0.0 4.1.1
+ __register_frame@GLIBC_2.0 4.1.1
+ __register_frame_info@GLIBC_2.0 4.1.1
+ __register_frame_info_bases@GCC_3.0 4.1.1
+ __register_frame_info_table@GLIBC_2.0 4.1.1
+ __register_frame_info_table_bases@GCC_3.0 4.1.1
+ __register_frame_table@GLIBC_2.0 4.1.1
+ __subvdi3@GCC_3.0 4.1.1
+ __subvsi3@GCC_3.0 4.1.1
+ __ucmpdi2@GCC_3.0 4.1.1
+ __udivdi3@GLIBC_2.0 4.1.1
+ __udivmoddi4@GCC_3.0 4.1.1
+ __umoddi3@GLIBC_2.0 4.1.1
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.armel
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.armel
@@ -0,0 +1,26 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+ CXXABI_ARM_1.3.3@CXXABI_ARM_1.3.3 4.4.0
+ _ZNKSt9type_info6beforeERKS_@GLIBCXX_3.4 4.3.0
+ _ZNKSt9type_infoeqERKS_@GLIBCXX_3.4 4.3.0
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ __aeabi_atexit@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_cctor_nocookie_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_ctor_cookie_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_ctor_nocookie_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_delete3@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_delete3_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_delete@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_dtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_dtor_cookie@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_new_cookie@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_new_cookie_noctor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_new_cookie_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_new_nocookie@CXXABI_ARM_1.3.3 4.4.0
+ __cxa_begin_cleanup@CXXABI_1.3 4.3.0
+ __cxa_end_cleanup@CXXABI_1.3 4.3.0
+ __cxa_type_match@CXXABI_1.3 4.3.0
--- gcc-4.6-4.6.3.orig/debian/gcc-BV-hppa64.postinst
+++ gcc-4.6-4.6.3/debian/gcc-BV-hppa64.postinst
@@ -0,0 +1,13 @@
+#! /bin/sh -e
+
+prio=$(echo @BV@ | sed 's/\.//g')
+
+update-alternatives --quiet \
+	--install /usr/bin/hppa64-linux-gnu-gcc \
+		hppa64-linux-gnu-gcc \
+		/usr/bin/hppa64-linux-gnu-gcc-@BV@ \
+		$prio
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.mipsel
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.mipsel
@@ -0,0 +1,1219 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addda3@GCC_4.3.0 1:4.3
+ __adddf3@GCC_3.0 1:4.1.1
+ __adddq3@GCC_4.3.0 1:4.3
+ __addha3@GCC_4.3.0 1:4.3
+ __addhq3@GCC_4.3.0 1:4.3
+ __addqq3@GCC_4.3.0 1:4.3
+ __addsa3@GCC_4.3.0 1:4.3
+ __addsf3@GCC_3.0 1:4.1.1
+ __addsq3@GCC_4.3.0 1:4.3
+ __adduda3@GCC_4.3.0 1:4.3
+ __addudq3@GCC_4.3.0 1:4.3
+ __adduha3@GCC_4.3.0 1:4.3
+ __adduhq3@GCC_4.3.0 1:4.3
+ __adduqq3@GCC_4.3.0 1:4.3
+ __addusa3@GCC_4.3.0 1:4.3
+ __addusq3@GCC_4.3.0 1:4.3
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashlda3@GCC_4.3.0 1:4.3
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashldq3@GCC_4.3.0 1:4.3
+ __ashlha3@GCC_4.3.0 1:4.3
+ __ashlhq3@GCC_4.3.0 1:4.3
+ __ashlqq3@GCC_4.3.0 1:4.3
+ __ashlsa3@GCC_4.3.0 1:4.3
+ __ashlsq3@GCC_4.3.0 1:4.3
+ __ashluda3@GCC_4.3.0 1:4.3
+ __ashludq3@GCC_4.3.0 1:4.3
+ __ashluha3@GCC_4.3.0 1:4.3
+ __ashluhq3@GCC_4.3.0 1:4.3
+ __ashluqq3@GCC_4.3.0 1:4.3
+ __ashlusa3@GCC_4.3.0 1:4.3
+ __ashlusq3@GCC_4.3.0 1:4.3
+ __ashrda3@GCC_4.3.0 1:4.3
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __ashrdq3@GCC_4.3.0 1:4.3
+ __ashrha3@GCC_4.3.0 1:4.3
+ __ashrhq3@GCC_4.3.0 1:4.3
+ __ashrqq3@GCC_4.3.0 1:4.3
+ __ashrsa3@GCC_4.3.0 1:4.3
+ __ashrsq3@GCC_4.3.0 1:4.3
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpda2@GCC_4.3.0 1:4.3
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __cmpdq2@GCC_4.3.0 1:4.3
+ __cmpha2@GCC_4.3.0 1:4.3
+ __cmphq2@GCC_4.3.0 1:4.3
+ __cmpqq2@GCC_4.3.0 1:4.3
+ __cmpsa2@GCC_4.3.0 1:4.3
+ __cmpsq2@GCC_4.3.0 1:4.3
+ __cmpuda2@GCC_4.3.0 1:4.3
+ __cmpudq2@GCC_4.3.0 1:4.3
+ __cmpuha2@GCC_4.3.0 1:4.3
+ __cmpuhq2@GCC_4.3.0 1:4.3
+ __cmpuqq2@GCC_4.3.0 1:4.3
+ __cmpusa2@GCC_4.3.0 1:4.3
+ __cmpusq2@GCC_4.3.0 1:4.3
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divda3@GCC_4.3.0 1:4.3
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdf3@GCC_3.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divdq3@GCC_4.3.0 1:4.3
+ __divha3@GCC_4.3.0 1:4.3
+ __divhq3@GCC_4.3.0 1:4.3
+ __divqq3@GCC_4.3.0 1:4.3
+ __divsa3@GCC_4.3.0 1:4.3
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divsf3@GCC_3.0 1:4.1.1
+ __divsq3@GCC_4.3.0 1:4.3
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqdf2@GCC_3.0 1:4.1.1
+ __eqsf2@GCC_3.0 1:4.1.1
+ __extendsfdf2@GCC_3.0 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixdfsi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixsfsi@GCC_3.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatsidf@GCC_3.0 1:4.1.1
+ __floatsisf@GCC_3.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunsidf@GCC_4.2.0 1:4.2.1
+ __floatunsisf@GCC_4.2.0 1:4.2.1
+ __fractdadf@GCC_4.3.0 1:4.3
+ __fractdadi@GCC_4.3.0 1:4.3
+ __fractdadq@GCC_4.3.0 1:4.3
+ __fractdaha2@GCC_4.3.0 1:4.3
+ __fractdahi@GCC_4.3.0 1:4.3
+ __fractdahq@GCC_4.3.0 1:4.3
+ __fractdaqi@GCC_4.3.0 1:4.3
+ __fractdaqq@GCC_4.3.0 1:4.3
+ __fractdasa2@GCC_4.3.0 1:4.3
+ __fractdasf@GCC_4.3.0 1:4.3
+ __fractdasi@GCC_4.3.0 1:4.3
+ __fractdasq@GCC_4.3.0 1:4.3
+ __fractdauda@GCC_4.3.0 1:4.3
+ __fractdaudq@GCC_4.3.0 1:4.3
+ __fractdauha@GCC_4.3.0 1:4.3
+ __fractdauhq@GCC_4.3.0 1:4.3
+ __fractdauqq@GCC_4.3.0 1:4.3
+ __fractdausa@GCC_4.3.0 1:4.3
+ __fractdausq@GCC_4.3.0 1:4.3
+ __fractdfda@GCC_4.3.0 1:4.3
+ __fractdfdq@GCC_4.3.0 1:4.3
+ __fractdfha@GCC_4.3.0 1:4.3
+ __fractdfhq@GCC_4.3.0 1:4.3
+ __fractdfqq@GCC_4.3.0 1:4.3
+ __fractdfsa@GCC_4.3.0 1:4.3
+ __fractdfsq@GCC_4.3.0 1:4.3
+ __fractdfuda@GCC_4.3.0 1:4.3
+ __fractdfudq@GCC_4.3.0 1:4.3
+ __fractdfuha@GCC_4.3.0 1:4.3
+ __fractdfuhq@GCC_4.3.0 1:4.3
+ __fractdfuqq@GCC_4.3.0 1:4.3
+ __fractdfusa@GCC_4.3.0 1:4.3
+ __fractdfusq@GCC_4.3.0 1:4.3
+ __fractdida@GCC_4.3.0 1:4.3
+ __fractdidq@GCC_4.3.0 1:4.3
+ __fractdiha@GCC_4.3.0 1:4.3
+ __fractdihq@GCC_4.3.0 1:4.3
+ __fractdiqq@GCC_4.3.0 1:4.3
+ __fractdisa@GCC_4.3.0 1:4.3
+ __fractdisq@GCC_4.3.0 1:4.3
+ __fractdiuda@GCC_4.3.0 1:4.3
+ __fractdiudq@GCC_4.3.0 1:4.3
+ __fractdiuha@GCC_4.3.0 1:4.3
+ __fractdiuhq@GCC_4.3.0 1:4.3
+ __fractdiuqq@GCC_4.3.0 1:4.3
+ __fractdiusa@GCC_4.3.0 1:4.3
+ __fractdiusq@GCC_4.3.0 1:4.3
+ __fractdqda@GCC_4.3.0 1:4.3
+ __fractdqdf@GCC_4.3.0 1:4.3
+ __fractdqdi@GCC_4.3.0 1:4.3
+ __fractdqha@GCC_4.3.0 1:4.3
+ __fractdqhi@GCC_4.3.0 1:4.3
+ __fractdqhq2@GCC_4.3.0 1:4.3
+ __fractdqqi@GCC_4.3.0 1:4.3
+ __fractdqqq2@GCC_4.3.0 1:4.3
+ __fractdqsa@GCC_4.3.0 1:4.3
+ __fractdqsf@GCC_4.3.0 1:4.3
+ __fractdqsi@GCC_4.3.0 1:4.3
+ __fractdqsq2@GCC_4.3.0 1:4.3
+ __fractdquda@GCC_4.3.0 1:4.3
+ __fractdqudq@GCC_4.3.0 1:4.3
+ __fractdquha@GCC_4.3.0 1:4.3
+ __fractdquhq@GCC_4.3.0 1:4.3
+ __fractdquqq@GCC_4.3.0 1:4.3
+ __fractdqusa@GCC_4.3.0 1:4.3
+ __fractdqusq@GCC_4.3.0 1:4.3
+ __fracthada2@GCC_4.3.0 1:4.3
+ __fracthadf@GCC_4.3.0 1:4.3
+ __fracthadi@GCC_4.3.0 1:4.3
+ __fracthadq@GCC_4.3.0 1:4.3
+ __fracthahi@GCC_4.3.0 1:4.3
+ __fracthahq@GCC_4.3.0 1:4.3
+ __fracthaqi@GCC_4.3.0 1:4.3
+ __fracthaqq@GCC_4.3.0 1:4.3
+ __fracthasa2@GCC_4.3.0 1:4.3
+ __fracthasf@GCC_4.3.0 1:4.3
+ __fracthasi@GCC_4.3.0 1:4.3
+ __fracthasq@GCC_4.3.0 1:4.3
+ __fracthauda@GCC_4.3.0 1:4.3
+ __fracthaudq@GCC_4.3.0 1:4.3
+ __fracthauha@GCC_4.3.0 1:4.3
+ __fracthauhq@GCC_4.3.0 1:4.3
+ __fracthauqq@GCC_4.3.0 1:4.3
+ __fracthausa@GCC_4.3.0 1:4.3
+ __fracthausq@GCC_4.3.0 1:4.3
+ __fracthida@GCC_4.3.0 1:4.3
+ __fracthidq@GCC_4.3.0 1:4.3
+ __fracthiha@GCC_4.3.0 1:4.3
+ __fracthihq@GCC_4.3.0 1:4.3
+ __fracthiqq@GCC_4.3.0 1:4.3
+ __fracthisa@GCC_4.3.0 1:4.3
+ __fracthisq@GCC_4.3.0 1:4.3
+ __fracthiuda@GCC_4.3.0 1:4.3
+ __fracthiudq@GCC_4.3.0 1:4.3
+ __fracthiuha@GCC_4.3.0 1:4.3
+ __fracthiuhq@GCC_4.3.0 1:4.3
+ __fracthiuqq@GCC_4.3.0 1:4.3
+ __fracthiusa@GCC_4.3.0 1:4.3
+ __fracthiusq@GCC_4.3.0 1:4.3
+ __fracthqda@GCC_4.3.0 1:4.3
+ __fracthqdf@GCC_4.3.0 1:4.3
+ __fracthqdi@GCC_4.3.0 1:4.3
+ __fracthqdq2@GCC_4.3.0 1:4.3
+ __fracthqha@GCC_4.3.0 1:4.3
+ __fracthqhi@GCC_4.3.0 1:4.3
+ __fracthqqi@GCC_4.3.0 1:4.3
+ __fracthqqq2@GCC_4.3.0 1:4.3
+ __fracthqsa@GCC_4.3.0 1:4.3
+ __fracthqsf@GCC_4.3.0 1:4.3
+ __fracthqsi@GCC_4.3.0 1:4.3
+ __fracthqsq2@GCC_4.3.0 1:4.3
+ __fracthquda@GCC_4.3.0 1:4.3
+ __fracthqudq@GCC_4.3.0 1:4.3
+ __fracthquha@GCC_4.3.0 1:4.3
+ __fracthquhq@GCC_4.3.0 1:4.3
+ __fracthquqq@GCC_4.3.0 1:4.3
+ __fracthqusa@GCC_4.3.0 1:4.3
+ __fracthqusq@GCC_4.3.0 1:4.3
+ __fractqida@GCC_4.3.0 1:4.3
+ __fractqidq@GCC_4.3.0 1:4.3
+ __fractqiha@GCC_4.3.0 1:4.3
+ __fractqihq@GCC_4.3.0 1:4.3
+ __fractqiqq@GCC_4.3.0 1:4.3
+ __fractqisa@GCC_4.3.0 1:4.3
+ __fractqisq@GCC_4.3.0 1:4.3
+ __fractqiuda@GCC_4.3.0 1:4.3
+ __fractqiudq@GCC_4.3.0 1:4.3
+ __fractqiuha@GCC_4.3.0 1:4.3
+ __fractqiuhq@GCC_4.3.0 1:4.3
+ __fractqiuqq@GCC_4.3.0 1:4.3
+ __fractqiusa@GCC_4.3.0 1:4.3
+ __fractqiusq@GCC_4.3.0 1:4.3
+ __fractqqda@GCC_4.3.0 1:4.3
+ __fractqqdf@GCC_4.3.0 1:4.3
+ __fractqqdi@GCC_4.3.0 1:4.3
+ __fractqqdq2@GCC_4.3.0 1:4.3
+ __fractqqha@GCC_4.3.0 1:4.3
+ __fractqqhi@GCC_4.3.0 1:4.3
+ __fractqqhq2@GCC_4.3.0 1:4.3
+ __fractqqqi@GCC_4.3.0 1:4.3
+ __fractqqsa@GCC_4.3.0 1:4.3
+ __fractqqsf@GCC_4.3.0 1:4.3
+ __fractqqsi@GCC_4.3.0 1:4.3
+ __fractqqsq2@GCC_4.3.0 1:4.3
+ __fractqquda@GCC_4.3.0 1:4.3
+ __fractqqudq@GCC_4.3.0 1:4.3
+ __fractqquha@GCC_4.3.0 1:4.3
+ __fractqquhq@GCC_4.3.0 1:4.3
+ __fractqquqq@GCC_4.3.0 1:4.3
+ __fractqqusa@GCC_4.3.0 1:4.3
+ __fractqqusq@GCC_4.3.0 1:4.3
+ __fractsada2@GCC_4.3.0 1:4.3
+ __fractsadf@GCC_4.3.0 1:4.3
+ __fractsadi@GCC_4.3.0 1:4.3
+ __fractsadq@GCC_4.3.0 1:4.3
+ __fractsaha2@GCC_4.3.0 1:4.3
+ __fractsahi@GCC_4.3.0 1:4.3
+ __fractsahq@GCC_4.3.0 1:4.3
+ __fractsaqi@GCC_4.3.0 1:4.3
+ __fractsaqq@GCC_4.3.0 1:4.3
+ __fractsasf@GCC_4.3.0 1:4.3
+ __fractsasi@GCC_4.3.0 1:4.3
+ __fractsasq@GCC_4.3.0 1:4.3
+ __fractsauda@GCC_4.3.0 1:4.3
+ __fractsaudq@GCC_4.3.0 1:4.3
+ __fractsauha@GCC_4.3.0 1:4.3
+ __fractsauhq@GCC_4.3.0 1:4.3
+ __fractsauqq@GCC_4.3.0 1:4.3
+ __fractsausa@GCC_4.3.0 1:4.3
+ __fractsausq@GCC_4.3.0 1:4.3
+ __fractsfda@GCC_4.3.0 1:4.3
+ __fractsfdq@GCC_4.3.0 1:4.3
+ __fractsfha@GCC_4.3.0 1:4.3
+ __fractsfhq@GCC_4.3.0 1:4.3
+ __fractsfqq@GCC_4.3.0 1:4.3
+ __fractsfsa@GCC_4.3.0 1:4.3
+ __fractsfsq@GCC_4.3.0 1:4.3
+ __fractsfuda@GCC_4.3.0 1:4.3
+ __fractsfudq@GCC_4.3.0 1:4.3
+ __fractsfuha@GCC_4.3.0 1:4.3
+ __fractsfuhq@GCC_4.3.0 1:4.3
+ __fractsfuqq@GCC_4.3.0 1:4.3
+ __fractsfusa@GCC_4.3.0 1:4.3
+ __fractsfusq@GCC_4.3.0 1:4.3
+ __fractsida@GCC_4.3.0 1:4.3
+ __fractsidq@GCC_4.3.0 1:4.3
+ __fractsiha@GCC_4.3.0 1:4.3
+ __fractsihq@GCC_4.3.0 1:4.3
+ __fractsiqq@GCC_4.3.0 1:4.3
+ __fractsisa@GCC_4.3.0 1:4.3
+ __fractsisq@GCC_4.3.0 1:4.3
+ __fractsiuda@GCC_4.3.0 1:4.3
+ __fractsiudq@GCC_4.3.0 1:4.3
+ __fractsiuha@GCC_4.3.0 1:4.3
+ __fractsiuhq@GCC_4.3.0 1:4.3
+ __fractsiuqq@GCC_4.3.0 1:4.3
+ __fractsiusa@GCC_4.3.0 1:4.3
+ __fractsiusq@GCC_4.3.0 1:4.3
+ __fractsqda@GCC_4.3.0 1:4.3
+ __fractsqdf@GCC_4.3.0 1:4.3
+ __fractsqdi@GCC_4.3.0 1:4.3
+ __fractsqdq2@GCC_4.3.0 1:4.3
+ __fractsqha@GCC_4.3.0 1:4.3
+ __fractsqhi@GCC_4.3.0 1:4.3
+ __fractsqhq2@GCC_4.3.0 1:4.3
+ __fractsqqi@GCC_4.3.0 1:4.3
+ __fractsqqq2@GCC_4.3.0 1:4.3
+ __fractsqsa@GCC_4.3.0 1:4.3
+ __fractsqsf@GCC_4.3.0 1:4.3
+ __fractsqsi@GCC_4.3.0 1:4.3
+ __fractsquda@GCC_4.3.0 1:4.3
+ __fractsqudq@GCC_4.3.0 1:4.3
+ __fractsquha@GCC_4.3.0 1:4.3
+ __fractsquhq@GCC_4.3.0 1:4.3
+ __fractsquqq@GCC_4.3.0 1:4.3
+ __fractsqusa@GCC_4.3.0 1:4.3
+ __fractsqusq@GCC_4.3.0 1:4.3
+ __fractudada@GCC_4.3.0 1:4.3
+ __fractudadf@GCC_4.3.0 1:4.3
+ __fractudadi@GCC_4.3.0 1:4.3
+ __fractudadq@GCC_4.3.0 1:4.3
+ __fractudaha@GCC_4.3.0 1:4.3
+ __fractudahi@GCC_4.3.0 1:4.3
+ __fractudahq@GCC_4.3.0 1:4.3
+ __fractudaqi@GCC_4.3.0 1:4.3
+ __fractudaqq@GCC_4.3.0 1:4.3
+ __fractudasa@GCC_4.3.0 1:4.3
+ __fractudasf@GCC_4.3.0 1:4.3
+ __fractudasi@GCC_4.3.0 1:4.3
+ __fractudasq@GCC_4.3.0 1:4.3
+ __fractudaudq@GCC_4.3.0 1:4.3
+ __fractudauha2@GCC_4.3.0 1:4.3
+ __fractudauhq@GCC_4.3.0 1:4.3
+ __fractudauqq@GCC_4.3.0 1:4.3
+ __fractudausa2@GCC_4.3.0 1:4.3
+ __fractudausq@GCC_4.3.0 1:4.3
+ __fractudqda@GCC_4.3.0 1:4.3
+ __fractudqdf@GCC_4.3.0 1:4.3
+ __fractudqdi@GCC_4.3.0 1:4.3
+ __fractudqdq@GCC_4.3.0 1:4.3
+ __fractudqha@GCC_4.3.0 1:4.3
+ __fractudqhi@GCC_4.3.0 1:4.3
+ __fractudqhq@GCC_4.3.0 1:4.3
+ __fractudqqi@GCC_4.3.0 1:4.3
+ __fractudqqq@GCC_4.3.0 1:4.3
+ __fractudqsa@GCC_4.3.0 1:4.3
+ __fractudqsf@GCC_4.3.0 1:4.3
+ __fractudqsi@GCC_4.3.0 1:4.3
+ __fractudqsq@GCC_4.3.0 1:4.3
+ __fractudquda@GCC_4.3.0 1:4.3
+ __fractudquha@GCC_4.3.0 1:4.3
+ __fractudquhq2@GCC_4.3.0 1:4.3
+ __fractudquqq2@GCC_4.3.0 1:4.3
+ __fractudqusa@GCC_4.3.0 1:4.3
+ __fractudqusq2@GCC_4.3.0 1:4.3
+ __fractuhada@GCC_4.3.0 1:4.3
+ __fractuhadf@GCC_4.3.0 1:4.3
+ __fractuhadi@GCC_4.3.0 1:4.3
+ __fractuhadq@GCC_4.3.0 1:4.3
+ __fractuhaha@GCC_4.3.0 1:4.3
+ __fractuhahi@GCC_4.3.0 1:4.3
+ __fractuhahq@GCC_4.3.0 1:4.3
+ __fractuhaqi@GCC_4.3.0 1:4.3
+ __fractuhaqq@GCC_4.3.0 1:4.3
+ __fractuhasa@GCC_4.3.0 1:4.3
+ __fractuhasf@GCC_4.3.0 1:4.3
+ __fractuhasi@GCC_4.3.0 1:4.3
+ __fractuhasq@GCC_4.3.0 1:4.3
+ __fractuhauda2@GCC_4.3.0 1:4.3
+ __fractuhaudq@GCC_4.3.0 1:4.3
+ __fractuhauhq@GCC_4.3.0 1:4.3
+ __fractuhauqq@GCC_4.3.0 1:4.3
+ __fractuhausa2@GCC_4.3.0 1:4.3
+ __fractuhausq@GCC_4.3.0 1:4.3
+ __fractuhqda@GCC_4.3.0 1:4.3
+ __fractuhqdf@GCC_4.3.0 1:4.3
+ __fractuhqdi@GCC_4.3.0 1:4.3
+ __fractuhqdq@GCC_4.3.0 1:4.3
+ __fractuhqha@GCC_4.3.0 1:4.3
+ __fractuhqhi@GCC_4.3.0 1:4.3
+ __fractuhqhq@GCC_4.3.0 1:4.3
+ __fractuhqqi@GCC_4.3.0 1:4.3
+ __fractuhqqq@GCC_4.3.0 1:4.3
+ __fractuhqsa@GCC_4.3.0 1:4.3
+ __fractuhqsf@GCC_4.3.0 1:4.3
+ __fractuhqsi@GCC_4.3.0 1:4.3
+ __fractuhqsq@GCC_4.3.0 1:4.3
+ __fractuhquda@GCC_4.3.0 1:4.3
+ __fractuhqudq2@GCC_4.3.0 1:4.3
+ __fractuhquha@GCC_4.3.0 1:4.3
+ __fractuhquqq2@GCC_4.3.0 1:4.3
+ __fractuhqusa@GCC_4.3.0 1:4.3
+ __fractuhqusq2@GCC_4.3.0 1:4.3
+ __fractunsdadi@GCC_4.3.0 1:4.3
+ __fractunsdahi@GCC_4.3.0 1:4.3
+ __fractunsdaqi@GCC_4.3.0 1:4.3
+ __fractunsdasi@GCC_4.3.0 1:4.3
+ __fractunsdida@GCC_4.3.0 1:4.3
+ __fractunsdidq@GCC_4.3.0 1:4.3
+ __fractunsdiha@GCC_4.3.0 1:4.3
+ __fractunsdihq@GCC_4.3.0 1:4.3
+ __fractunsdiqq@GCC_4.3.0 1:4.3
+ __fractunsdisa@GCC_4.3.0 1:4.3
+ __fractunsdisq@GCC_4.3.0 1:4.3
+ __fractunsdiuda@GCC_4.3.0 1:4.3
+ __fractunsdiudq@GCC_4.3.0 1:4.3
+ __fractunsdiuha@GCC_4.3.0 1:4.3
+ __fractunsdiuhq@GCC_4.3.0 1:4.3
+ __fractunsdiuqq@GCC_4.3.0 1:4.3
+ __fractunsdiusa@GCC_4.3.0 1:4.3
+ __fractunsdiusq@GCC_4.3.0 1:4.3
+ __fractunsdqdi@GCC_4.3.0 1:4.3
+ __fractunsdqhi@GCC_4.3.0 1:4.3
+ __fractunsdqqi@GCC_4.3.0 1:4.3
+ __fractunsdqsi@GCC_4.3.0 1:4.3
+ __fractunshadi@GCC_4.3.0 1:4.3
+ __fractunshahi@GCC_4.3.0 1:4.3
+ __fractunshaqi@GCC_4.3.0 1:4.3
+ __fractunshasi@GCC_4.3.0 1:4.3
+ __fractunshida@GCC_4.3.0 1:4.3
+ __fractunshidq@GCC_4.3.0 1:4.3
+ __fractunshiha@GCC_4.3.0 1:4.3
+ __fractunshihq@GCC_4.3.0 1:4.3
+ __fractunshiqq@GCC_4.3.0 1:4.3
+ __fractunshisa@GCC_4.3.0 1:4.3
+ __fractunshisq@GCC_4.3.0 1:4.3
+ __fractunshiuda@GCC_4.3.0 1:4.3
+ __fractunshiudq@GCC_4.3.0 1:4.3
+ __fractunshiuha@GCC_4.3.0 1:4.3
+ __fractunshiuhq@GCC_4.3.0 1:4.3
+ __fractunshiuqq@GCC_4.3.0 1:4.3
+ __fractunshiusa@GCC_4.3.0 1:4.3
+ __fractunshiusq@GCC_4.3.0 1:4.3
+ __fractunshqdi@GCC_4.3.0 1:4.3
+ __fractunshqhi@GCC_4.3.0 1:4.3
+ __fractunshqqi@GCC_4.3.0 1:4.3
+ __fractunshqsi@GCC_4.3.0 1:4.3
+ __fractunsqida@GCC_4.3.0 1:4.3
+ __fractunsqidq@GCC_4.3.0 1:4.3
+ __fractunsqiha@GCC_4.3.0 1:4.3
+ __fractunsqihq@GCC_4.3.0 1:4.3
+ __fractunsqiqq@GCC_4.3.0 1:4.3
+ __fractunsqisa@GCC_4.3.0 1:4.3
+ __fractunsqisq@GCC_4.3.0 1:4.3
+ __fractunsqiuda@GCC_4.3.0 1:4.3
+ __fractunsqiudq@GCC_4.3.0 1:4.3
+ __fractunsqiuha@GCC_4.3.0 1:4.3
+ __fractunsqiuhq@GCC_4.3.0 1:4.3
+ __fractunsqiuqq@GCC_4.3.0 1:4.3
+ __fractunsqiusa@GCC_4.3.0 1:4.3
+ __fractunsqiusq@GCC_4.3.0 1:4.3
+ __fractunsqqdi@GCC_4.3.0 1:4.3
+ __fractunsqqhi@GCC_4.3.0 1:4.3
+ __fractunsqqqi@GCC_4.3.0 1:4.3
+ __fractunsqqsi@GCC_4.3.0 1:4.3
+ __fractunssadi@GCC_4.3.0 1:4.3
+ __fractunssahi@GCC_4.3.0 1:4.3
+ __fractunssaqi@GCC_4.3.0 1:4.3
+ __fractunssasi@GCC_4.3.0 1:4.3
+ __fractunssida@GCC_4.3.0 1:4.3
+ __fractunssidq@GCC_4.3.0 1:4.3
+ __fractunssiha@GCC_4.3.0 1:4.3
+ __fractunssihq@GCC_4.3.0 1:4.3
+ __fractunssiqq@GCC_4.3.0 1:4.3
+ __fractunssisa@GCC_4.3.0 1:4.3
+ __fractunssisq@GCC_4.3.0 1:4.3
+ __fractunssiuda@GCC_4.3.0 1:4.3
+ __fractunssiudq@GCC_4.3.0 1:4.3
+ __fractunssiuha@GCC_4.3.0 1:4.3
+ __fractunssiuhq@GCC_4.3.0 1:4.3
+ __fractunssiuqq@GCC_4.3.0 1:4.3
+ __fractunssiusa@GCC_4.3.0 1:4.3
+ __fractunssiusq@GCC_4.3.0 1:4.3
+ __fractunssqdi@GCC_4.3.0 1:4.3
+ __fractunssqhi@GCC_4.3.0 1:4.3
+ __fractunssqqi@GCC_4.3.0 1:4.3
+ __fractunssqsi@GCC_4.3.0 1:4.3
+ __fractunsudadi@GCC_4.3.0 1:4.3
+ __fractunsudahi@GCC_4.3.0 1:4.3
+ __fractunsudaqi@GCC_4.3.0 1:4.3
+ __fractunsudasi@GCC_4.3.0 1:4.3
+ __fractunsudqdi@GCC_4.3.0 1:4.3
+ __fractunsudqhi@GCC_4.3.0 1:4.3
+ __fractunsudqqi@GCC_4.3.0 1:4.3
+ __fractunsudqsi@GCC_4.3.0 1:4.3
+ __fractunsuhadi@GCC_4.3.0 1:4.3
+ __fractunsuhahi@GCC_4.3.0 1:4.3
+ __fractunsuhaqi@GCC_4.3.0 1:4.3
+ __fractunsuhasi@GCC_4.3.0 1:4.3
+ __fractunsuhqdi@GCC_4.3.0 1:4.3
+ __fractunsuhqhi@GCC_4.3.0 1:4.3
+ __fractunsuhqqi@GCC_4.3.0 1:4.3
+ __fractunsuhqsi@GCC_4.3.0 1:4.3
+ __fractunsuqqdi@GCC_4.3.0 1:4.3
+ __fractunsuqqhi@GCC_4.3.0 1:4.3
+ __fractunsuqqqi@GCC_4.3.0 1:4.3
+ __fractunsuqqsi@GCC_4.3.0 1:4.3
+ __fractunsusadi@GCC_4.3.0 1:4.3
+ __fractunsusahi@GCC_4.3.0 1:4.3
+ __fractunsusaqi@GCC_4.3.0 1:4.3
+ __fractunsusasi@GCC_4.3.0 1:4.3
+ __fractunsusqdi@GCC_4.3.0 1:4.3
+ __fractunsusqhi@GCC_4.3.0 1:4.3
+ __fractunsusqqi@GCC_4.3.0 1:4.3
+ __fractunsusqsi@GCC_4.3.0 1:4.3
+ __fractuqqda@GCC_4.3.0 1:4.3
+ __fractuqqdf@GCC_4.3.0 1:4.3
+ __fractuqqdi@GCC_4.3.0 1:4.3
+ __fractuqqdq@GCC_4.3.0 1:4.3
+ __fractuqqha@GCC_4.3.0 1:4.3
+ __fractuqqhi@GCC_4.3.0 1:4.3
+ __fractuqqhq@GCC_4.3.0 1:4.3
+ __fractuqqqi@GCC_4.3.0 1:4.3
+ __fractuqqqq@GCC_4.3.0 1:4.3
+ __fractuqqsa@GCC_4.3.0 1:4.3
+ __fractuqqsf@GCC_4.3.0 1:4.3
+ __fractuqqsi@GCC_4.3.0 1:4.3
+ __fractuqqsq@GCC_4.3.0 1:4.3
+ __fractuqquda@GCC_4.3.0 1:4.3
+ __fractuqqudq2@GCC_4.3.0 1:4.3
+ __fractuqquha@GCC_4.3.0 1:4.3
+ __fractuqquhq2@GCC_4.3.0 1:4.3
+ __fractuqqusa@GCC_4.3.0 1:4.3
+ __fractuqqusq2@GCC_4.3.0 1:4.3
+ __fractusada@GCC_4.3.0 1:4.3
+ __fractusadf@GCC_4.3.0 1:4.3
+ __fractusadi@GCC_4.3.0 1:4.3
+ __fractusadq@GCC_4.3.0 1:4.3
+ __fractusaha@GCC_4.3.0 1:4.3
+ __fractusahi@GCC_4.3.0 1:4.3
+ __fractusahq@GCC_4.3.0 1:4.3
+ __fractusaqi@GCC_4.3.0 1:4.3
+ __fractusaqq@GCC_4.3.0 1:4.3
+ __fractusasa@GCC_4.3.0 1:4.3
+ __fractusasf@GCC_4.3.0 1:4.3
+ __fractusasi@GCC_4.3.0 1:4.3
+ __fractusasq@GCC_4.3.0 1:4.3
+ __fractusauda2@GCC_4.3.0 1:4.3
+ __fractusaudq@GCC_4.3.0 1:4.3
+ __fractusauha2@GCC_4.3.0 1:4.3
+ __fractusauhq@GCC_4.3.0 1:4.3
+ __fractusauqq@GCC_4.3.0 1:4.3
+ __fractusausq@GCC_4.3.0 1:4.3
+ __fractusqda@GCC_4.3.0 1:4.3
+ __fractusqdf@GCC_4.3.0 1:4.3
+ __fractusqdi@GCC_4.3.0 1:4.3
+ __fractusqdq@GCC_4.3.0 1:4.3
+ __fractusqha@GCC_4.3.0 1:4.3
+ __fractusqhi@GCC_4.3.0 1:4.3
+ __fractusqhq@GCC_4.3.0 1:4.3
+ __fractusqqi@GCC_4.3.0 1:4.3
+ __fractusqqq@GCC_4.3.0 1:4.3
+ __fractusqsa@GCC_4.3.0 1:4.3
+ __fractusqsf@GCC_4.3.0 1:4.3
+ __fractusqsi@GCC_4.3.0 1:4.3
+ __fractusqsq@GCC_4.3.0 1:4.3
+ __fractusquda@GCC_4.3.0 1:4.3
+ __fractusqudq2@GCC_4.3.0 1:4.3
+ __fractusquha@GCC_4.3.0 1:4.3
+ __fractusquhq2@GCC_4.3.0 1:4.3
+ __fractusquqq2@GCC_4.3.0 1:4.3
+ __fractusqusa@GCC_4.3.0 1:4.3
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __gedf2@GCC_3.0 1:4.1.1
+ __gesf2@GCC_3.0 1:4.1.1
+ __gtdf2@GCC_3.0 1:4.1.1
+ __gtsf2@GCC_3.0 1:4.1.1
+ __ledf2@GCC_3.0 1:4.1.1
+ __lesf2@GCC_3.0 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __lshruda3@GCC_4.3.0 1:4.3
+ __lshrudq3@GCC_4.3.0 1:4.3
+ __lshruha3@GCC_4.3.0 1:4.3
+ __lshruhq3@GCC_4.3.0 1:4.3
+ __lshruqq3@GCC_4.3.0 1:4.3
+ __lshrusa3@GCC_4.3.0 1:4.3
+ __lshrusq3@GCC_4.3.0 1:4.3
+ __ltdf2@GCC_3.0 1:4.1.1
+ __ltsf2@GCC_3.0 1:4.1.1
+ __mips16_adddf3@GCC_4.4.0 1:4.4.0
+ __mips16_addsf3@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_9@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_0@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_9@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_0@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_9@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_0@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_9@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_0@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_9@GCC_4.4.0 1:4.4.0
+ __mips16_divdf3@GCC_4.4.0 1:4.4.0
+ __mips16_divsf3@GCC_4.4.0 1:4.4.0
+ __mips16_eqdf2@GCC_4.4.0 1:4.4.0
+ __mips16_eqsf2@GCC_4.4.0 1:4.4.0
+ __mips16_extendsfdf2@GCC_4.4.0 1:4.4.0
+ __mips16_fix_truncdfsi@GCC_4.4.0 1:4.4.0
+ __mips16_fix_truncsfsi@GCC_4.4.0 1:4.4.0
+ __mips16_floatsidf@GCC_4.4.0 1:4.4.0
+ __mips16_floatsisf@GCC_4.4.0 1:4.4.0
+ __mips16_floatunsidf@GCC_4.4.0 1:4.4.0
+ __mips16_floatunsisf@GCC_4.4.0 1:4.4.0
+ __mips16_gedf2@GCC_4.4.0 1:4.4.0
+ __mips16_gesf2@GCC_4.4.0 1:4.4.0
+ __mips16_gtdf2@GCC_4.4.0 1:4.4.0
+ __mips16_gtsf2@GCC_4.4.0 1:4.4.0
+ __mips16_ledf2@GCC_4.4.0 1:4.4.0
+ __mips16_lesf2@GCC_4.4.0 1:4.4.0
+ __mips16_ltdf2@GCC_4.4.0 1:4.4.0
+ __mips16_ltsf2@GCC_4.4.0 1:4.4.0
+ __mips16_muldf3@GCC_4.4.0 1:4.4.0
+ __mips16_mulsf3@GCC_4.4.0 1:4.4.0
+ __mips16_nedf2@GCC_4.4.0 1:4.4.0
+ __mips16_nesf2@GCC_4.4.0 1:4.4.0
+ __mips16_ret_dc@GCC_4.4.0 1:4.4.0
+ __mips16_ret_df@GCC_4.4.0 1:4.4.0
+ __mips16_ret_sc@GCC_4.4.0 1:4.4.0
+ __mips16_ret_sf@GCC_4.4.0 1:4.4.0
+ __mips16_subdf3@GCC_4.4.0 1:4.4.0
+ __mips16_subsf3@GCC_4.4.0 1:4.4.0
+ __mips16_truncdfsf2@GCC_4.4.0 1:4.4.0
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __mulda3@GCC_4.3.0 1:4.3
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldf3@GCC_3.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __muldq3@GCC_4.3.0 1:4.3
+ __mulha3@GCC_4.3.0 1:4.3
+ __mulhq3@GCC_4.3.0 1:4.3
+ __mulqq3@GCC_4.3.0 1:4.3
+ __mulsa3@GCC_4.3.0 1:4.3
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __mulsf3@GCC_3.0 1:4.1.1
+ __mulsq3@GCC_4.3.0 1:4.3
+ __muluda3@GCC_4.3.0 1:4.3
+ __muludq3@GCC_4.3.0 1:4.3
+ __muluha3@GCC_4.3.0 1:4.3
+ __muluhq3@GCC_4.3.0 1:4.3
+ __muluqq3@GCC_4.3.0 1:4.3
+ __mulusa3@GCC_4.3.0 1:4.3
+ __mulusq3@GCC_4.3.0 1:4.3
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __nedf2@GCC_3.0 1:4.1.1
+ __negda2@GCC_4.3.0 1:4.3
+ __negdf2@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negdq2@GCC_4.3.0 1:4.3
+ __negha2@GCC_4.3.0 1:4.3
+ __neghq2@GCC_4.3.0 1:4.3
+ __negqq2@GCC_4.3.0 1:4.3
+ __negsa2@GCC_4.3.0 1:4.3
+ __negsf2@GCC_3.0 1:4.1.1
+ __negsq2@GCC_4.3.0 1:4.3
+ __neguda2@GCC_4.3.0 1:4.3
+ __negudq2@GCC_4.3.0 1:4.3
+ __neguha2@GCC_4.3.0 1:4.3
+ __neguhq2@GCC_4.3.0 1:4.3
+ __neguqq2@GCC_4.3.0 1:4.3
+ __negusa2@GCC_4.3.0 1:4.3
+ __negusq2@GCC_4.3.0 1:4.3
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __nesf2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __satfractdadq@GCC_4.3.0 1:4.3
+ __satfractdaha2@GCC_4.3.0 1:4.3
+ __satfractdahq@GCC_4.3.0 1:4.3
+ __satfractdaqq@GCC_4.3.0 1:4.3
+ __satfractdasa2@GCC_4.3.0 1:4.3
+ __satfractdasq@GCC_4.3.0 1:4.3
+ __satfractdauda@GCC_4.3.0 1:4.3
+ __satfractdaudq@GCC_4.3.0 1:4.3
+ __satfractdauha@GCC_4.3.0 1:4.3
+ __satfractdauhq@GCC_4.3.0 1:4.3
+ __satfractdauqq@GCC_4.3.0 1:4.3
+ __satfractdausa@GCC_4.3.0 1:4.3
+ __satfractdausq@GCC_4.3.0 1:4.3
+ __satfractdfda@GCC_4.3.0 1:4.3
+ __satfractdfdq@GCC_4.3.0 1:4.3
+ __satfractdfha@GCC_4.3.0 1:4.3
+ __satfractdfhq@GCC_4.3.0 1:4.3
+ __satfractdfqq@GCC_4.3.0 1:4.3
+ __satfractdfsa@GCC_4.3.0 1:4.3
+ __satfractdfsq@GCC_4.3.0 1:4.3
+ __satfractdfuda@GCC_4.3.0 1:4.3
+ __satfractdfudq@GCC_4.3.0 1:4.3
+ __satfractdfuha@GCC_4.3.0 1:4.3
+ __satfractdfuhq@GCC_4.3.0 1:4.3
+ __satfractdfuqq@GCC_4.3.0 1:4.3
+ __satfractdfusa@GCC_4.3.0 1:4.3
+ __satfractdfusq@GCC_4.3.0 1:4.3
+ __satfractdida@GCC_4.3.0 1:4.3
+ __satfractdidq@GCC_4.3.0 1:4.3
+ __satfractdiha@GCC_4.3.0 1:4.3
+ __satfractdihq@GCC_4.3.0 1:4.3
+ __satfractdiqq@GCC_4.3.0 1:4.3
+ __satfractdisa@GCC_4.3.0 1:4.3
+ __satfractdisq@GCC_4.3.0 1:4.3
+ __satfractdiuda@GCC_4.3.0 1:4.3
+ __satfractdiudq@GCC_4.3.0 1:4.3
+ __satfractdiuha@GCC_4.3.0 1:4.3
+ __satfractdiuhq@GCC_4.3.0 1:4.3
+ __satfractdiuqq@GCC_4.3.0 1:4.3
+ __satfractdiusa@GCC_4.3.0 1:4.3
+ __satfractdiusq@GCC_4.3.0 1:4.3
+ __satfractdqda@GCC_4.3.0 1:4.3
+ __satfractdqha@GCC_4.3.0 1:4.3
+ __satfractdqhq2@GCC_4.3.0 1:4.3
+ __satfractdqqq2@GCC_4.3.0 1:4.3
+ __satfractdqsa@GCC_4.3.0 1:4.3
+ __satfractdqsq2@GCC_4.3.0 1:4.3
+ __satfractdquda@GCC_4.3.0 1:4.3
+ __satfractdqudq@GCC_4.3.0 1:4.3
+ __satfractdquha@GCC_4.3.0 1:4.3
+ __satfractdquhq@GCC_4.3.0 1:4.3
+ __satfractdquqq@GCC_4.3.0 1:4.3
+ __satfractdqusa@GCC_4.3.0 1:4.3
+ __satfractdqusq@GCC_4.3.0 1:4.3
+ __satfracthada2@GCC_4.3.0 1:4.3
+ __satfracthadq@GCC_4.3.0 1:4.3
+ __satfracthahq@GCC_4.3.0 1:4.3
+ __satfracthaqq@GCC_4.3.0 1:4.3
+ __satfracthasa2@GCC_4.3.0 1:4.3
+ __satfracthasq@GCC_4.3.0 1:4.3
+ __satfracthauda@GCC_4.3.0 1:4.3
+ __satfracthaudq@GCC_4.3.0 1:4.3
+ __satfracthauha@GCC_4.3.0 1:4.3
+ __satfracthauhq@GCC_4.3.0 1:4.3
+ __satfracthauqq@GCC_4.3.0 1:4.3
+ __satfracthausa@GCC_4.3.0 1:4.3
+ __satfracthausq@GCC_4.3.0 1:4.3
+ __satfracthida@GCC_4.3.0 1:4.3
+ __satfracthidq@GCC_4.3.0 1:4.3
+ __satfracthiha@GCC_4.3.0 1:4.3
+ __satfracthihq@GCC_4.3.0 1:4.3
+ __satfracthiqq@GCC_4.3.0 1:4.3
+ __satfracthisa@GCC_4.3.0 1:4.3
+ __satfracthisq@GCC_4.3.0 1:4.3
+ __satfracthiuda@GCC_4.3.0 1:4.3
+ __satfracthiudq@GCC_4.3.0 1:4.3
+ __satfracthiuha@GCC_4.3.0 1:4.3
+ __satfracthiuhq@GCC_4.3.0 1:4.3
+ __satfracthiuqq@GCC_4.3.0 1:4.3
+ __satfracthiusa@GCC_4.3.0 1:4.3
+ __satfracthiusq@GCC_4.3.0 1:4.3
+ __satfracthqda@GCC_4.3.0 1:4.3
+ __satfracthqdq2@GCC_4.3.0 1:4.3
+ __satfracthqha@GCC_4.3.0 1:4.3
+ __satfracthqqq2@GCC_4.3.0 1:4.3
+ __satfracthqsa@GCC_4.3.0 1:4.3
+ __satfracthqsq2@GCC_4.3.0 1:4.3
+ __satfracthquda@GCC_4.3.0 1:4.3
+ __satfracthqudq@GCC_4.3.0 1:4.3
+ __satfracthquha@GCC_4.3.0 1:4.3
+ __satfracthquhq@GCC_4.3.0 1:4.3
+ __satfracthquqq@GCC_4.3.0 1:4.3
+ __satfracthqusa@GCC_4.3.0 1:4.3
+ __satfracthqusq@GCC_4.3.0 1:4.3
+ __satfractqida@GCC_4.3.0 1:4.3
+ __satfractqidq@GCC_4.3.0 1:4.3
+ __satfractqiha@GCC_4.3.0 1:4.3
+ __satfractqihq@GCC_4.3.0 1:4.3
+ __satfractqiqq@GCC_4.3.0 1:4.3
+ __satfractqisa@GCC_4.3.0 1:4.3
+ __satfractqisq@GCC_4.3.0 1:4.3
+ __satfractqiuda@GCC_4.3.0 1:4.3
+ __satfractqiudq@GCC_4.3.0 1:4.3
+ __satfractqiuha@GCC_4.3.0 1:4.3
+ __satfractqiuhq@GCC_4.3.0 1:4.3
+ __satfractqiuqq@GCC_4.3.0 1:4.3
+ __satfractqiusa@GCC_4.3.0 1:4.3
+ __satfractqiusq@GCC_4.3.0 1:4.3
+ __satfractqqda@GCC_4.3.0 1:4.3
+ __satfractqqdq2@GCC_4.3.0 1:4.3
+ __satfractqqha@GCC_4.3.0 1:4.3
+ __satfractqqhq2@GCC_4.3.0 1:4.3
+ __satfractqqsa@GCC_4.3.0 1:4.3
+ __satfractqqsq2@GCC_4.3.0 1:4.3
+ __satfractqquda@GCC_4.3.0 1:4.3
+ __satfractqqudq@GCC_4.3.0 1:4.3
+ __satfractqquha@GCC_4.3.0 1:4.3
+ __satfractqquhq@GCC_4.3.0 1:4.3
+ __satfractqquqq@GCC_4.3.0 1:4.3
+ __satfractqqusa@GCC_4.3.0 1:4.3
+ __satfractqqusq@GCC_4.3.0 1:4.3
+ __satfractsada2@GCC_4.3.0 1:4.3
+ __satfractsadq@GCC_4.3.0 1:4.3
+ __satfractsaha2@GCC_4.3.0 1:4.3
+ __satfractsahq@GCC_4.3.0 1:4.3
+ __satfractsaqq@GCC_4.3.0 1:4.3
+ __satfractsasq@GCC_4.3.0 1:4.3
+ __satfractsauda@GCC_4.3.0 1:4.3
+ __satfractsaudq@GCC_4.3.0 1:4.3
+ __satfractsauha@GCC_4.3.0 1:4.3
+ __satfractsauhq@GCC_4.3.0 1:4.3
+ __satfractsauqq@GCC_4.3.0 1:4.3
+ __satfractsausa@GCC_4.3.0 1:4.3
+ __satfractsausq@GCC_4.3.0 1:4.3
+ __satfractsfda@GCC_4.3.0 1:4.3
+ __satfractsfdq@GCC_4.3.0 1:4.3
+ __satfractsfha@GCC_4.3.0 1:4.3
+ __satfractsfhq@GCC_4.3.0 1:4.3
+ __satfractsfqq@GCC_4.3.0 1:4.3
+ __satfractsfsa@GCC_4.3.0 1:4.3
+ __satfractsfsq@GCC_4.3.0 1:4.3
+ __satfractsfuda@GCC_4.3.0 1:4.3
+ __satfractsfudq@GCC_4.3.0 1:4.3
+ __satfractsfuha@GCC_4.3.0 1:4.3
+ __satfractsfuhq@GCC_4.3.0 1:4.3
+ __satfractsfuqq@GCC_4.3.0 1:4.3
+ __satfractsfusa@GCC_4.3.0 1:4.3
+ __satfractsfusq@GCC_4.3.0 1:4.3
+ __satfractsida@GCC_4.3.0 1:4.3
+ __satfractsidq@GCC_4.3.0 1:4.3
+ __satfractsiha@GCC_4.3.0 1:4.3
+ __satfractsihq@GCC_4.3.0 1:4.3
+ __satfractsiqq@GCC_4.3.0 1:4.3
+ __satfractsisa@GCC_4.3.0 1:4.3
+ __satfractsisq@GCC_4.3.0 1:4.3
+ __satfractsiuda@GCC_4.3.0 1:4.3
+ __satfractsiudq@GCC_4.3.0 1:4.3
+ __satfractsiuha@GCC_4.3.0 1:4.3
+ __satfractsiuhq@GCC_4.3.0 1:4.3
+ __satfractsiuqq@GCC_4.3.0 1:4.3
+ __satfractsiusa@GCC_4.3.0 1:4.3
+ __satfractsiusq@GCC_4.3.0 1:4.3
+ __satfractsqda@GCC_4.3.0 1:4.3
+ __satfractsqdq2@GCC_4.3.0 1:4.3
+ __satfractsqha@GCC_4.3.0 1:4.3
+ __satfractsqhq2@GCC_4.3.0 1:4.3
+ __satfractsqqq2@GCC_4.3.0 1:4.3
+ __satfractsqsa@GCC_4.3.0 1:4.3
+ __satfractsquda@GCC_4.3.0 1:4.3
+ __satfractsqudq@GCC_4.3.0 1:4.3
+ __satfractsquha@GCC_4.3.0 1:4.3
+ __satfractsquhq@GCC_4.3.0 1:4.3
+ __satfractsquqq@GCC_4.3.0 1:4.3
+ __satfractsqusa@GCC_4.3.0 1:4.3
+ __satfractsqusq@GCC_4.3.0 1:4.3
+ __satfractudada@GCC_4.3.0 1:4.3
+ __satfractudadq@GCC_4.3.0 1:4.3
+ __satfractudaha@GCC_4.3.0 1:4.3
+ __satfractudahq@GCC_4.3.0 1:4.3
+ __satfractudaqq@GCC_4.3.0 1:4.3
+ __satfractudasa@GCC_4.3.0 1:4.3
+ __satfractudasq@GCC_4.3.0 1:4.3
+ __satfractudaudq@GCC_4.3.0 1:4.3
+ __satfractudauha2@GCC_4.3.0 1:4.3
+ __satfractudauhq@GCC_4.3.0 1:4.3
+ __satfractudauqq@GCC_4.3.0 1:4.3
+ __satfractudausa2@GCC_4.3.0 1:4.3
+ __satfractudausq@GCC_4.3.0 1:4.3
+ __satfractudqda@GCC_4.3.0 1:4.3
+ __satfractudqdq@GCC_4.3.0 1:4.3
+ __satfractudqha@GCC_4.3.0 1:4.3
+ __satfractudqhq@GCC_4.3.0 1:4.3
+ __satfractudqqq@GCC_4.3.0 1:4.3
+ __satfractudqsa@GCC_4.3.0 1:4.3
+ __satfractudqsq@GCC_4.3.0 1:4.3
+ __satfractudquda@GCC_4.3.0 1:4.3
+ __satfractudquha@GCC_4.3.0 1:4.3
+ __satfractudquhq2@GCC_4.3.0 1:4.3
+ __satfractudquqq2@GCC_4.3.0 1:4.3
+ __satfractudqusa@GCC_4.3.0 1:4.3
+ __satfractudqusq2@GCC_4.3.0 1:4.3
+ __satfractuhada@GCC_4.3.0 1:4.3
+ __satfractuhadq@GCC_4.3.0 1:4.3
+ __satfractuhaha@GCC_4.3.0 1:4.3
+ __satfractuhahq@GCC_4.3.0 1:4.3
+ __satfractuhaqq@GCC_4.3.0 1:4.3
+ __satfractuhasa@GCC_4.3.0 1:4.3
+ __satfractuhasq@GCC_4.3.0 1:4.3
+ __satfractuhauda2@GCC_4.3.0 1:4.3
+ __satfractuhaudq@GCC_4.3.0 1:4.3
+ __satfractuhauhq@GCC_4.3.0 1:4.3
+ __satfractuhauqq@GCC_4.3.0 1:4.3
+ __satfractuhausa2@GCC_4.3.0 1:4.3
+ __satfractuhausq@GCC_4.3.0 1:4.3
+ __satfractuhqda@GCC_4.3.0 1:4.3
+ __satfractuhqdq@GCC_4.3.0 1:4.3
+ __satfractuhqha@GCC_4.3.0 1:4.3
+ __satfractuhqhq@GCC_4.3.0 1:4.3
+ __satfractuhqqq@GCC_4.3.0 1:4.3
+ __satfractuhqsa@GCC_4.3.0 1:4.3
+ __satfractuhqsq@GCC_4.3.0 1:4.3
+ __satfractuhquda@GCC_4.3.0 1:4.3
+ __satfractuhqudq2@GCC_4.3.0 1:4.3
+ __satfractuhquha@GCC_4.3.0 1:4.3
+ __satfractuhquqq2@GCC_4.3.0 1:4.3
+ __satfractuhqusa@GCC_4.3.0 1:4.3
+ __satfractuhqusq2@GCC_4.3.0 1:4.3
+ __satfractunsdida@GCC_4.3.0 1:4.3
+ __satfractunsdidq@GCC_4.3.0 1:4.3
+ __satfractunsdiha@GCC_4.3.0 1:4.3
+ __satfractunsdihq@GCC_4.3.0 1:4.3
+ __satfractunsdiqq@GCC_4.3.0 1:4.3
+ __satfractunsdisa@GCC_4.3.0 1:4.3
+ __satfractunsdisq@GCC_4.3.0 1:4.3
+ __satfractunsdiuda@GCC_4.3.0 1:4.3
+ __satfractunsdiudq@GCC_4.3.0 1:4.3
+ __satfractunsdiuha@GCC_4.3.0 1:4.3
+ __satfractunsdiuhq@GCC_4.3.0 1:4.3
+ __satfractunsdiuqq@GCC_4.3.0 1:4.3
+ __satfractunsdiusa@GCC_4.3.0 1:4.3
+ __satfractunsdiusq@GCC_4.3.0 1:4.3
+ __satfractunshida@GCC_4.3.0 1:4.3
+ __satfractunshidq@GCC_4.3.0 1:4.3
+ __satfractunshiha@GCC_4.3.0 1:4.3
+ __satfractunshihq@GCC_4.3.0 1:4.3
+ __satfractunshiqq@GCC_4.3.0 1:4.3
+ __satfractunshisa@GCC_4.3.0 1:4.3
+ __satfractunshisq@GCC_4.3.0 1:4.3
+ __satfractunshiuda@GCC_4.3.0 1:4.3
+ __satfractunshiudq@GCC_4.3.0 1:4.3
+ __satfractunshiuha@GCC_4.3.0 1:4.3
+ __satfractunshiuhq@GCC_4.3.0 1:4.3
+ __satfractunshiuqq@GCC_4.3.0 1:4.3
+ __satfractunshiusa@GCC_4.3.0 1:4.3
+ __satfractunshiusq@GCC_4.3.0 1:4.3
+ __satfractunsqida@GCC_4.3.0 1:4.3
+ __satfractunsqidq@GCC_4.3.0 1:4.3
+ __satfractunsqiha@GCC_4.3.0 1:4.3
+ __satfractunsqihq@GCC_4.3.0 1:4.3
+ __satfractunsqiqq@GCC_4.3.0 1:4.3
+ __satfractunsqisa@GCC_4.3.0 1:4.3
+ __satfractunsqisq@GCC_4.3.0 1:4.3
+ __satfractunsqiuda@GCC_4.3.0 1:4.3
+ __satfractunsqiudq@GCC_4.3.0 1:4.3
+ __satfractunsqiuha@GCC_4.3.0 1:4.3
+ __satfractunsqiuhq@GCC_4.3.0 1:4.3
+ __satfractunsqiuqq@GCC_4.3.0 1:4.3
+ __satfractunsqiusa@GCC_4.3.0 1:4.3
+ __satfractunsqiusq@GCC_4.3.0 1:4.3
+ __satfractunssida@GCC_4.3.0 1:4.3
+ __satfractunssidq@GCC_4.3.0 1:4.3
+ __satfractunssiha@GCC_4.3.0 1:4.3
+ __satfractunssihq@GCC_4.3.0 1:4.3
+ __satfractunssiqq@GCC_4.3.0 1:4.3
+ __satfractunssisa@GCC_4.3.0 1:4.3
+ __satfractunssisq@GCC_4.3.0 1:4.3
+ __satfractunssiuda@GCC_4.3.0 1:4.3
+ __satfractunssiudq@GCC_4.3.0 1:4.3
+ __satfractunssiuha@GCC_4.3.0 1:4.3
+ __satfractunssiuhq@GCC_4.3.0 1:4.3
+ __satfractunssiuqq@GCC_4.3.0 1:4.3
+ __satfractunssiusa@GCC_4.3.0 1:4.3
+ __satfractunssiusq@GCC_4.3.0 1:4.3
+ __satfractuqqda@GCC_4.3.0 1:4.3
+ __satfractuqqdq@GCC_4.3.0 1:4.3
+ __satfractuqqha@GCC_4.3.0 1:4.3
+ __satfractuqqhq@GCC_4.3.0 1:4.3
+ __satfractuqqqq@GCC_4.3.0 1:4.3
+ __satfractuqqsa@GCC_4.3.0 1:4.3
+ __satfractuqqsq@GCC_4.3.0 1:4.3
+ __satfractuqquda@GCC_4.3.0 1:4.3
+ __satfractuqqudq2@GCC_4.3.0 1:4.3
+ __satfractuqquha@GCC_4.3.0 1:4.3
+ __satfractuqquhq2@GCC_4.3.0 1:4.3
+ __satfractuqqusa@GCC_4.3.0 1:4.3
+ __satfractuqqusq2@GCC_4.3.0 1:4.3
+ __satfractusada@GCC_4.3.0 1:4.3
+ __satfractusadq@GCC_4.3.0 1:4.3
+ __satfractusaha@GCC_4.3.0 1:4.3
+ __satfractusahq@GCC_4.3.0 1:4.3
+ __satfractusaqq@GCC_4.3.0 1:4.3
+ __satfractusasa@GCC_4.3.0 1:4.3
+ __satfractusasq@GCC_4.3.0 1:4.3
+ __satfractusauda2@GCC_4.3.0 1:4.3
+ __satfractusaudq@GCC_4.3.0 1:4.3
+ __satfractusauha2@GCC_4.3.0 1:4.3
+ __satfractusauhq@GCC_4.3.0 1:4.3
+ __satfractusauqq@GCC_4.3.0 1:4.3
+ __satfractusausq@GCC_4.3.0 1:4.3
+ __satfractusqda@GCC_4.3.0 1:4.3
+ __satfractusqdq@GCC_4.3.0 1:4.3
+ __satfractusqha@GCC_4.3.0 1:4.3
+ __satfractusqhq@GCC_4.3.0 1:4.3
+ __satfractusqqq@GCC_4.3.0 1:4.3
+ __satfractusqsa@GCC_4.3.0 1:4.3
+ __satfractusqsq@GCC_4.3.0 1:4.3
+ __satfractusquda@GCC_4.3.0 1:4.3
+ __satfractusqudq2@GCC_4.3.0 1:4.3
+ __satfractusquha@GCC_4.3.0 1:4.3
+ __satfractusquhq2@GCC_4.3.0 1:4.3
+ __satfractusquqq2@GCC_4.3.0 1:4.3
+ __satfractusqusa@GCC_4.3.0 1:4.3
+ __ssaddda3@GCC_4.3.0 1:4.3
+ __ssadddq3@GCC_4.3.0 1:4.3
+ __ssaddha3@GCC_4.3.0 1:4.3
+ __ssaddhq3@GCC_4.3.0 1:4.3
+ __ssaddqq3@GCC_4.3.0 1:4.3
+ __ssaddsa3@GCC_4.3.0 1:4.3
+ __ssaddsq3@GCC_4.3.0 1:4.3
+ __ssashlda3@GCC_4.3.0 1:4.3
+ __ssashldq3@GCC_4.3.0 1:4.3
+ __ssashlha3@GCC_4.3.0 1:4.3
+ __ssashlhq3@GCC_4.3.0 1:4.3
+ __ssashlqq3@GCC_4.3.0 1:4.3
+ __ssashlsa3@GCC_4.3.0 1:4.3
+ __ssashlsq3@GCC_4.3.0 1:4.3
+ __ssdivda3@GCC_4.3.0 1:4.3
+ __ssdivdq3@GCC_4.3.0 1:4.3
+ __ssdivha3@GCC_4.3.0 1:4.3
+ __ssdivhq3@GCC_4.3.0 1:4.3
+ __ssdivqq3@GCC_4.3.0 1:4.3
+ __ssdivsa3@GCC_4.3.0 1:4.3
+ __ssdivsq3@GCC_4.3.0 1:4.3
+ __ssmulda3@GCC_4.3.0 1:4.3
+ __ssmuldq3@GCC_4.3.0 1:4.3
+ __ssmulha3@GCC_4.3.0 1:4.3
+ __ssmulhq3@GCC_4.3.0 1:4.3
+ __ssmulqq3@GCC_4.3.0 1:4.3
+ __ssmulsa3@GCC_4.3.0 1:4.3
+ __ssmulsq3@GCC_4.3.0 1:4.3
+ __ssnegda2@GCC_4.3.0 1:4.3
+ __ssnegdq2@GCC_4.3.0 1:4.3
+ __ssnegha2@GCC_4.3.0 1:4.3
+ __ssneghq2@GCC_4.3.0 1:4.3
+ __ssnegqq2@GCC_4.3.0 1:4.3
+ __ssnegsa2@GCC_4.3.0 1:4.3
+ __ssnegsq2@GCC_4.3.0 1:4.3
+ __sssubda3@GCC_4.3.0 1:4.3
+ __sssubdq3@GCC_4.3.0 1:4.3
+ __sssubha3@GCC_4.3.0 1:4.3
+ __sssubhq3@GCC_4.3.0 1:4.3
+ __sssubqq3@GCC_4.3.0 1:4.3
+ __sssubsa3@GCC_4.3.0 1:4.3
+ __sssubsq3@GCC_4.3.0 1:4.3
+ __subda3@GCC_4.3.0 1:4.3
+ __subdf3@GCC_3.0 1:4.1.1
+ __subdq3@GCC_4.3.0 1:4.3
+ __subha3@GCC_4.3.0 1:4.3
+ __subhq3@GCC_4.3.0 1:4.3
+ __subqq3@GCC_4.3.0 1:4.3
+ __subsa3@GCC_4.3.0 1:4.3
+ __subsf3@GCC_3.0 1:4.1.1
+ __subsq3@GCC_4.3.0 1:4.3
+ __subuda3@GCC_4.3.0 1:4.3
+ __subudq3@GCC_4.3.0 1:4.3
+ __subuha3@GCC_4.3.0 1:4.3
+ __subuhq3@GCC_4.3.0 1:4.3
+ __subuqq3@GCC_4.3.0 1:4.3
+ __subusa3@GCC_4.3.0 1:4.3
+ __subusq3@GCC_4.3.0 1:4.3
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __sync_add_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_add_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_add_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_and_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_and_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_and_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4.0
+ __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4.0
+ __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_add_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_add_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_add_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_and_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_and_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_and_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_or_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_or_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_or_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4.0
+ __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4.0
+ __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4.0
+ __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4.0
+ __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_or_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_or_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_or_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_synchronize@GCC_4.4.0 1:4.4.0
+ __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4.0
+ __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4.0
+ __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4.0
+ __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __truncdfsf2@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __udivuda3@GCC_4.3.0 1:4.3
+ __udivudq3@GCC_4.3.0 1:4.3
+ __udivuha3@GCC_4.3.0 1:4.3
+ __udivuhq3@GCC_4.3.0 1:4.3
+ __udivuqq3@GCC_4.3.0 1:4.3
+ __udivusa3@GCC_4.3.0 1:4.3
+ __udivusq3@GCC_4.3.0 1:4.3
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unorddf2@GCC_3.3.4 1:4.1.1
+ __unordsf2@GCC_3.3.4 1:4.1.1
+ __usadduda3@GCC_4.3.0 1:4.3
+ __usaddudq3@GCC_4.3.0 1:4.3
+ __usadduha3@GCC_4.3.0 1:4.3
+ __usadduhq3@GCC_4.3.0 1:4.3
+ __usadduqq3@GCC_4.3.0 1:4.3
+ __usaddusa3@GCC_4.3.0 1:4.3
+ __usaddusq3@GCC_4.3.0 1:4.3
+ __usashluda3@GCC_4.3.0 1:4.3
+ __usashludq3@GCC_4.3.0 1:4.3
+ __usashluha3@GCC_4.3.0 1:4.3
+ __usashluhq3@GCC_4.3.0 1:4.3
+ __usashluqq3@GCC_4.3.0 1:4.3
+ __usashlusa3@GCC_4.3.0 1:4.3
+ __usashlusq3@GCC_4.3.0 1:4.3
+ __usdivuda3@GCC_4.3.0 1:4.3
+ __usdivudq3@GCC_4.3.0 1:4.3
+ __usdivuha3@GCC_4.3.0 1:4.3
+ __usdivuhq3@GCC_4.3.0 1:4.3
+ __usdivuqq3@GCC_4.3.0 1:4.3
+ __usdivusa3@GCC_4.3.0 1:4.3
+ __usdivusq3@GCC_4.3.0 1:4.3
+ __usmuluda3@GCC_4.3.0 1:4.3
+ __usmuludq3@GCC_4.3.0 1:4.3
+ __usmuluha3@GCC_4.3.0 1:4.3
+ __usmuluhq3@GCC_4.3.0 1:4.3
+ __usmuluqq3@GCC_4.3.0 1:4.3
+ __usmulusa3@GCC_4.3.0 1:4.3
+ __usmulusq3@GCC_4.3.0 1:4.3
+ __usneguda2@GCC_4.3.0 1:4.3
+ __usnegudq2@GCC_4.3.0 1:4.3
+ __usneguha2@GCC_4.3.0 1:4.3
+ __usneguhq2@GCC_4.3.0 1:4.3
+ __usneguqq2@GCC_4.3.0 1:4.3
+ __usnegusa2@GCC_4.3.0 1:4.3
+ __usnegusq2@GCC_4.3.0 1:4.3
+ __ussubuda3@GCC_4.3.0 1:4.3
+ __ussubudq3@GCC_4.3.0 1:4.3
+ __ussubuha3@GCC_4.3.0 1:4.3
+ __ussubuhq3@GCC_4.3.0 1:4.3
+ __ussubuqq3@GCC_4.3.0 1:4.3
+ __ussubusa3@GCC_4.3.0 1:4.3
+ __ussubusq3@GCC_4.3.0 1:4.3
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.kfreebsd-i386
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.kfreebsd-i386
@@ -0,0 +1,134 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GCC_4.5.0@GCC_4.5.0 1:4.5.0
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addtf3@GCC_4.4.0 1:4.4.0
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __copysigntf3@GCC_4.4.0 1:4.4.0
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.4.0 1:4.4.0
+ __divtf3@GCC_4.4.0 1:4.4.0
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.4.0 1:4.4.0
+ __extenddftf2@GCC_4.4.0 1:4.4.0
+ __extendsftf2@GCC_4.4.0 1:4.4.0
+ __extendxftf2@GCC_4.5.0 1:4.5.0
+ __fabstf2@GCC_4.4.0 1:4.4.0
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.4.0 1:4.4.0
+ __fixtfsi@GCC_4.4.0 1:4.4.0
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.4.0 1:4.4.0
+ __fixunstfsi@GCC_4.4.0 1:4.4.0
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfsi@GCC_3.0 1:4.1.1
+ __fixxfdi@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.4.0 1:4.4.0
+ __floatdixf@GCC_3.0 1:4.1.1
+ __floatsitf@GCC_4.4.0 1:4.4.0
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.4.0 1:4.4.0
+ __floatundixf@GCC_4.2.0 1:4.2.1
+ __floatunsitf@GCC_4.4.0 1:4.4.0
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.4.0 1:4.4.0
+ __gttf2@GCC_4.4.0 1:4.4.0
+ __letf2@GCC_4.4.0 1:4.4.0
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_4.4.0 1:4.4.0
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.4.0 1:4.4.0
+ __multf3@GCC_4.4.0 1:4.4.0
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negtf2@GCC_4.4.0 1:4.4.0
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __netf2@GCC_4.4.0 1:4.4.0
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.4.0 1:4.4.0
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subtf3@GCC_4.4.0 1:4.4.0
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __trunctfdf2@GCC_4.4.0 1:4.4.0
+ __trunctfsf2@GCC_4.4.0 1:4.4.0
+ __trunctfxf2@GCC_4.4.0 1:4.4.0
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unordtf2@GCC_4.4.0 1:4.4.0
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.lpia
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.lpia
@@ -0,0 +1,6 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/relink
+++ gcc-4.6-4.6.3/debian/relink
@@ -0,0 +1,74 @@
+#! /bin/sh
+#
+# Relink GNAT utilities using the shared library
+#
+
+set -e
+
+pwd=`pwd`
+
+# why?
+chmod a-w build/gcc/ada/rts/*.ali
+
+rm -rf tmp
+ln -s $pwd/build/gcc/ada/rts/libgnat.so.1 tmp/libgnat.so
+
+LD_LIBRARY_PATH=$pwd/tmp
+export LD_LIBRARY_PATH
+
+PATH=$pwd/debian:$pwd/tmp:$PATH
+export PATH
+
+echo "#! /bin/sh" > tmp/dgcc
+echo "$pwd/build/gcc/xgcc -B$pwd/build/gcc/ "'"$@"' >> tmp/dgcc
+chmod 755 tmp/dgcc
+
+echo "#! /bin/sh" > tmp/dgnatlink
+echo "$pwd/build/gcc/gnatlink --GCC=dgcc "'"$@"' >> tmp/dgnatlink
+chmod 755 tmp/dgnatlink
+
+GMCMD="$pwd/build/gcc/gnatmake -I- -Irts -I. -a -m --GNATBIND=$pwd/build/gcc/gnatbind --GNATLINK=dgnatlink --GCC=dgcc"
+
+#cd $pwd/build/gcc/ada
+#make CFLAGS="-O2" CC="../xgcc -B../" STAGE_PREFIX=../ a-link.o a-gmem.o
+#cd $pwd
+
+[ -f build/gcc/gnatmake.old ] || cp -p build/gcc/gnatmake build/gcc/gnatmake.old
+[ -f build/gcc/gnatlink.old ] || cp -p build/gcc/gnatlink build/gcc/gnatlink.old
+
+make -C build/gcc/ada \
+	CFLAGS='-gnatp -gnata -O2 ' \
+	ADA_INCLUDES="-I." \
+	CC="../xgcc -B../" \
+	STAGE_PREFIX=../ \
+    ../gnatmake ../gnatlink
+
+mv gnatmake bgnatmake
+mv gnatlink bgnatlink
+exit 0
+
+cd build/gcc/ada
+for i in ../gnatchop ../gnatcmd \
+    ../gnatkr ../gnatlbr \
+    ../gnatls ../gnatmake \
+    ../gnatprep ../gnatpsys \
+    ../gnatxref ../gnatfind
+do
+  rm -f $i
+  $GMCMD -O2 -gnatp -o $i `basename $i`.adb -largs -L..
+done
+
+rm -f ../gnatmem
+$GMCMD -O2 -gnatp -o ../gnatmem gnatmem.adb -largs -L.. a-gmem.o
+$GMCMD -O2 -gnatp -o ../gnatlink gnatlink -largs -L.. a-link.o
+rm -f ../gnatpsta
+
+make CFLAGS="-O2" CC="../xgcc -B../" a-gettty.o a-deftar.o
+$GMCMD -O2 -gnatp -o ../gnatpsta gnatpsta -largs -L.. a-gettty.o a-deftar.o
+rm -f ../gnatbl
+
+make CFLAGS="-O2" CC="../xgcc -B../" gnatbl.o
+../xgcc -B../ -o ../gnatbl gnatbl.o -L.. -lgnat
+rm -f ../bgnatmake ../bgnatlink ../debian/dgcc ../debian/dgnatlink
+
+chmod +w rts/*.ali
--- gcc-4.6-4.6.3.orig/debian/lib32stdc++6.symbols.amd64
+++ gcc-4.6-4.6.3/debian/lib32stdc++6.symbols.amd64
@@ -0,0 +1,6 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.ppc64
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.ppc64
@@ -0,0 +1,9 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.hurd-i386
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.hurd-i386
@@ -0,0 +1,5 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit.hurd"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
--- gcc-4.6-4.6.3.orig/debian/libgcc2.symbols.m68k
+++ gcc-4.6-4.6.3/debian/libgcc2.symbols.m68k
@@ -0,0 +1,157 @@
+libgcc_s.so.2 libgcc2 #MINVER#
+ GCC_3.0@GCC_3.0 4.2.1
+ GCC_3.3.1@GCC_3.3.1 4.2.1
+ GCC_3.3.4@GCC_3.3.4 4.4.5
+ GCC_3.3@GCC_3.3 4.2.1
+ GCC_3.4.2@GCC_3.4.2 4.2.1
+ GCC_3.4@GCC_3.4 4.2.1
+ GCC_4.0.0@GCC_4.0.0 4.2.1
+ GCC_4.2.0@GCC_4.2.0 4.2.1
+ GCC_4.3.0@GCC_4.3.0 4.3.0
+ GLIBC_2.0@GLIBC_2.0 4.2.1
+ _Unwind_Backtrace@GCC_3.3 4.2.1
+ _Unwind_DeleteException@GCC_3.0 4.2.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1
+ _Unwind_Find_FDE@GCC_3.0 4.2.1
+ _Unwind_ForcedUnwind@GCC_3.0 4.2.1
+ _Unwind_GetCFA@GCC_3.3 4.2.1
+ _Unwind_GetDataRelBase@GCC_3.0 4.2.1
+ _Unwind_GetGR@GCC_3.0 4.2.1
+ _Unwind_GetIP@GCC_3.0 4.2.1
+ _Unwind_GetIPInfo@GCC_4.2.0 4.2.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1
+ _Unwind_GetRegionStart@GCC_3.0 4.2.1
+ _Unwind_GetTextRelBase@GCC_3.0 4.2.1
+ _Unwind_RaiseException@GCC_3.0 4.2.1
+ _Unwind_Resume@GCC_3.0 4.2.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1
+ _Unwind_SetGR@GCC_3.0 4.2.1
+ _Unwind_SetIP@GCC_3.0 4.2.1
+ __absvdi2@GCC_3.0 4.2.1
+ __absvsi2@GCC_3.0 4.2.1
+ __adddf3@GCC_3.0 4.4.5
+ __addsf3@GCC_3.0 4.4.5
+ __addvdi3@GCC_3.0 4.2.1
+ __addvsi3@GCC_3.0 4.2.1
+ __addxf3@GCC_3.0 4.4.5
+ __ashldi3@GCC_3.0 4.2.1
+ __ashrdi3@GCC_3.0 4.2.1
+ __bswapdi2@GCC_4.3.0 4.3.0
+ __bswapsi2@GCC_4.3.0 4.3.0
+ __clear_cache@GCC_3.0 4.2.1
+ __clzdi2@GCC_3.4 4.2.1
+ __clzsi2@GCC_3.4 4.2.1
+ __cmpdi2@GCC_3.0 4.2.1
+ __ctzdi2@GCC_3.4 4.2.1
+ __ctzsi2@GCC_3.4 4.2.1
+ __deregister_frame@GLIBC_2.0 4.2.1
+ __deregister_frame_info@GLIBC_2.0 4.2.1
+ __deregister_frame_info_bases@GCC_3.0 4.2.1
+ __divdc3@GCC_4.0.0 4.2.1
+ __divdf3@GCC_3.0 4.4.5
+ __divdi3@GLIBC_2.0 4.2.1
+ __divsc3@GCC_4.0.0 4.2.1
+ __divsf3@GCC_3.0 4.4.5
+ __divsi3@GCC_3.0 4.4.5
+ __divxc3@GCC_4.0.0 4.2.1
+ __divxf3@GCC_3.0 4.4.5
+ __emutls_get_address@GCC_4.3.0 4.3.0
+ __emutls_register_common@GCC_4.3.0 4.3.0
+ __enable_execute_stack@GCC_3.4.2 4.2.1
+ __eqdf2@GCC_3.0 4.4.5
+ __eqsf2@GCC_3.0 4.4.5
+ __eqxf2@GCC_3.0 4.4.5
+ __extenddfxf2@GCC_3.0 4.4.5
+ __extendsfdf2@GCC_3.0 4.4.5
+ __extendsfxf2@GCC_3.0 4.4.5
+ __ffsdi2@GCC_3.0 4.2.1
+ __ffssi2@GCC_4.3.0 4.3.0
+ __fixdfdi@GCC_3.0 4.2.1
+ __fixdfsi@GCC_3.0 4.4.5
+ __fixsfdi@GCC_3.0 4.2.1
+ __fixsfsi@GCC_3.0 4.4.5
+ __fixunsdfdi@GCC_3.0 4.2.1
+ __fixunsdfsi@GCC_3.0 4.2.1
+ __fixunssfdi@GCC_3.0 4.2.1
+ __fixunssfsi@GCC_3.0 4.2.1
+ __fixunsxfdi@GCC_3.0 4.2.1
+ __fixunsxfsi@GCC_3.0 4.2.1
+ __fixxfdi@GCC_3.0 4.2.1
+ __fixxfsi@GCC_3.0 4.4.5
+ __floatdidf@GCC_3.0 4.2.1
+ __floatdisf@GCC_3.0 4.2.1
+ __floatdixf@GCC_3.0 4.2.1
+ __floatsidf@GCC_3.0 4.4.5
+ __floatsisf@GCC_3.0 4.4.5
+ __floatsixf@GCC_3.0 4.4.5
+ __floatundidf@GCC_4.2.0 4.2.1
+ __floatundisf@GCC_4.2.0 4.2.1
+ __floatundixf@GCC_4.2.0 4.2.1
+ __floatunsidf@GCC_4.2.0 4.4.5
+ __floatunsisf@GCC_4.2.0 4.4.5
+ __floatunsixf@GCC_4.2.0 4.4.5
+ __frame_state_for@GLIBC_2.0 4.2.1
+ __gcc_personality_v0@GCC_3.3.1 4.2.1
+ __gedf2@GCC_3.0 4.4.5
+ __gesf2@GCC_3.0 4.4.5
+ __gexf2@GCC_3.0 4.4.5
+ __gtdf2@GCC_3.0 4.4.5
+ __gtsf2@GCC_3.0 4.4.5
+ __gtxf2@GCC_3.0 4.4.5
+ __ledf2@GCC_3.0 4.4.5
+ __lesf2@GCC_3.0 4.4.5
+ __lexf2@GCC_3.0 4.4.5
+ __lshrdi3@GCC_3.0 4.2.1
+ __ltdf2@GCC_3.0 4.4.5
+ __ltsf2@GCC_3.0 4.4.5
+ __ltxf2@GCC_3.0 4.4.5
+ __moddi3@GLIBC_2.0 4.2.1
+ __modsi3@GCC_3.0 4.4.5
+ __muldc3@GCC_4.0.0 4.2.1
+ __muldf3@GCC_3.0 4.4.5
+ __muldi3@GCC_3.0 4.2.1
+ __mulsc3@GCC_4.0.0 4.2.1
+ __mulsf3@GCC_3.0 4.4.5
+ __mulsi3@GCC_3.0 4.4.5
+ __mulvdi3@GCC_3.0 4.2.1
+ __mulvsi3@GCC_3.0 4.2.1
+ __mulxc3@GCC_4.0.0 4.2.1
+ __mulxf3@GCC_3.0 4.4.5
+ __nedf2@GCC_3.0 4.4.5
+ __negdf2@GCC_3.0 4.4.5
+ __negdi2@GCC_3.0 4.2.1
+ __negsf2@GCC_3.0 4.4.5
+ __negvdi2@GCC_3.0 4.2.1
+ __negvsi2@GCC_3.0 4.2.1
+ __negxf2@GCC_3.0 4.4.5
+ __nesf2@GCC_3.0 4.4.5
+ __nexf2@GCC_3.0 4.4.5
+ __paritydi2@GCC_3.4 4.2.1
+ __paritysi2@GCC_3.4 4.2.1
+ __popcountdi2@GCC_3.4 4.2.1
+ __popcountsi2@GCC_3.4 4.2.1
+ __powidf2@GCC_4.0.0 4.2.1
+ __powisf2@GCC_4.0.0 4.2.1
+ __powixf2@GCC_4.0.0 4.2.1
+ __register_frame@GLIBC_2.0 4.2.1
+ __register_frame_info@GLIBC_2.0 4.2.1
+ __register_frame_info_bases@GCC_3.0 4.2.1
+ __register_frame_info_table@GLIBC_2.0 4.2.1
+ __register_frame_info_table_bases@GCC_3.0 4.2.1
+ __register_frame_table@GLIBC_2.0 4.2.1
+ __subdf3@GCC_3.0 4.4.5
+ __subsf3@GCC_3.0 4.4.5
+ __subvdi3@GCC_3.0 4.2.1
+ __subvsi3@GCC_3.0 4.2.1
+ __subxf3@GCC_3.0 4.4.5
+ __truncdfsf2@GCC_3.0 4.4.5
+ __truncxfdf2@GCC_3.0 4.4.5
+ __truncxfsf2@GCC_3.0 4.4.5
+ __ucmpdi2@GCC_3.0 4.2.1
+ __udivdi3@GLIBC_2.0 4.2.1
+ __udivmoddi4@GCC_3.0 4.2.1
+ __udivsi3@GCC_3.0 4.4.5
+ __umoddi3@GLIBC_2.0 4.2.1
+ __umodsi3@GCC_3.0 4.4.5
+ __unorddf2@GCC_3.3.4 4.4.5
+ __unordsf2@GCC_3.3.4 4.4.5
--- gcc-4.6-4.6.3.orig/debian/libmudflap.copyright
+++ gcc-4.6-4.6.3/debian/libmudflap.copyright
@@ -0,0 +1,30 @@
+This package was debianized by Matthias Klose <doko@debian.org> on
+Mon,  5 Jul 2004 21:29:57 +0200
+
+Mudflap is part of GCC.
+
+Authors: Frank Ch. Eigler <fche@redhat.com>, Graydon Hoare <graydon@redhat.com>
+
+Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+
+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 2, or (at your option) any later
+version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+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.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
--- gcc-4.6-4.6.3.orig/debian/changelog-4.4
+++ gcc-4.6-4.6.3/debian/changelog-4.4
@@ -0,0 +1,36 @@
+  * Closing reports reported against gcc-4.1 and fixed in gcc-4.4:
+    - General
+      + 
+    - C
+      + 
+    - C++/libstdc++
+      + 
+    - Fortran
+    - Java
+    - Architecture specific:
+      - mips
+      - sparc
+  * Closing reports reported against gcc-4.2 and fixed in gcc-4.4:
+    - General
+      + 
+    - C
+      + 
+    - C++/libstdc++
+      + 
+    - Fortran
+    - Java
+    - Architecture specific:
+      - mips
+      - sparc
+  * Closing reports reported against gcc-4.3 and fixed in gcc-4.4:
+    - General
+      + 
+    - C
+      + 
+    - C++/libstdc++
+      + 
+    - Fortran
+    - Java
+    - Architecture specific:
+      - mips
+      - sparc
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.mips
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.mips
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
--- gcc-4.6-4.6.3.orig/debian/logwatch.sh
+++ gcc-4.6-4.6.3/debian/logwatch.sh
@@ -0,0 +1,104 @@
+#! /bin/sh
+
+# script to trick the build daemons and output something, if there is
+# still test/build activity
+
+# $1: primary file to watch. if there is activity on this file, we do nothing
+# $2+: files to watch to look for activity despite no output in $1
+#      if the files are modified or are newly created, then the message
+#      is printed on stdout.
+#      if nothing is modified, don't output anything (so the buildd timeout
+#      hits).
+
+pidfile=logwatch.pid
+timeout=3600
+message='\nlogwatch still running\n'
+
+usage()
+{
+    echo >&2 "usage: `basename $0` [-p <pidfile>] [-t <timeout>] [-m <message>]"
+    echo >&2 "           <logfile> [<logfile> ...]"
+    exit 1
+}
+
+while [ $# -gt 0 ]; do
+    case $1 in
+    -p)
+	pidfile=$2
+	shift
+	shift
+	;;
+    -t)
+	timeout=$2
+	shift
+	shift
+	;;
+    -m)
+	message="$2"
+	shift
+	shift
+	;;
+    -*)
+	usage
+	;;
+    *)
+	break
+    esac
+done
+
+[ $# -gt 0 ] || usage
+
+logfile="$1"
+shift
+otherlogs="$@"
+
+cleanup()
+{
+    rm -f $pidfile
+    exit 0
+}
+
+#trap cleanup 0 1 3 15
+
+echo $$ > $pidfile
+
+update()
+{
+    _logvar=$1
+    _othervar=$2
+
+    # logfile may not exist yet
+    if [ -r $logfile ]; then
+	_logtail="`tail -10 $logfile | md5sum` $f"
+    else
+	_logtail="does not exist: $logfile"
+    fi
+    eval $_logvar="'$_logtail'"
+
+    _othertails=''
+    for f in $otherlogs; do
+	if [ -r $f ]; then
+	    _othertails="$_othertails `tail -10 $f | md5sum` $f"
+	else
+	    _othertails="$_othertails does not exist: $f"
+	fi
+    done
+    eval $_othervar="'$_othertails'"
+}
+
+update logtail othertails
+while true; do
+    sleep $timeout
+    update newlogtail newothertails
+    if [ "$logtail" != "$newlogtail" ]; then
+	# there is still action in the primary logfile. do nothing.
+	logtail="$newlogtail"
+    elif [ "$othertails" != "$newothertails" ]; then
+	# there is still action in the other log files, so print the message
+	/bin/echo -e $message
+	othertails="$newothertails"
+    else
+	# nothing changed in the other log files. maybe a timeout ...
+	:
+    fi
+done
--- gcc-4.6-4.6.3.orig/debian/dummy-man.1
+++ gcc-4.6-4.6.3/debian/dummy-man.1
@@ -0,0 +1,29 @@
+.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation"
+.SH NAME
+@name@ \- A program with a man page covered by the GFDL with invariant sections
+.SH SYNOPSIS
+@name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fB@name@\fR is documented by a man page, which is covered by the "GNU
+Free Documentation License" (GFDL) containing invariant sections.
+.P
+In November 2002, version 1.2 of the GNU Free Documentation License (GNU
+FDL) was released by the Free Software Foundation after a long period
+of consultation. Unfortunately, some concerns raised by members of the
+Debian Project were not addressed, and as such the GNU FDL can apply
+to works that do not pass the Debian Free Software Guidelines (DFSG),
+and may thus only be included in the non-free component of the Debian
+archive, not the Debian distribution itself.
+
+.SH "SEE ALSO"
+.BR http://gcc.gnu.org/onlinedocs/
+for the complete documentation,
+.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html
+for a proposed statement of Debian with respect to the GFDL,
+.BR gfdl(7)
+
+.SH AUTHOR
+This manual page was written by the Debian GCC maintainers,
+for the Debian GNU/Linux system.
--- gcc-4.6-4.6.3.orig/debian/lib32gcc1.symbols.kfreebsd-amd64
+++ gcc-4.6-4.6.3/debian/lib32gcc1.symbols.kfreebsd-amd64
@@ -0,0 +1,134 @@
+libgcc_s.so.1 lib32gcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GCC_4.5.0@GCC_4.5.0 1:4.5.0
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addtf3@GCC_4.4.0 1:4.4.0
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __copysigntf3@GCC_4.4.0 1:4.4.0
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.4.0 1:4.4.0
+ __divtf3@GCC_4.4.0 1:4.4.0
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.4.0 1:4.4.0
+ __extenddftf2@GCC_4.4.0 1:4.4.0
+ __extendsftf2@GCC_4.4.0 1:4.4.0
+ __extendxftf2@GCC_4.5.0 1:4.5.0
+ __fabstf2@GCC_4.4.0 1:4.4.0
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.4.0 1:4.4.0
+ __fixtfsi@GCC_4.4.0 1:4.4.0
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.4.0 1:4.4.0
+ __fixunstfsi@GCC_4.4.0 1:4.4.0
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfsi@GCC_3.0 1:4.1.1
+ __fixxfdi@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.4.0 1:4.4.0
+ __floatdixf@GCC_3.0 1:4.1.1
+ __floatsitf@GCC_4.4.0 1:4.4.0
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.4.0 1:4.4.0
+ __floatundixf@GCC_4.2.0 1:4.2.1
+ __floatunsitf@GCC_4.4.0 1:4.4.0
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.4.0 1:4.4.0
+ __gttf2@GCC_4.4.0 1:4.4.0
+ __letf2@GCC_4.4.0 1:4.4.0
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_4.4.0 1:4.4.0
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.4.0 1:4.4.0
+ __multf3@GCC_4.4.0 1:4.4.0
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negtf2@GCC_4.4.0 1:4.4.0
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __netf2@GCC_4.4.0 1:4.4.0
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.4.0 1:4.4.0
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subtf3@GCC_4.4.0 1:4.4.0
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __trunctfdf2@GCC_4.4.0 1:4.4.0
+ __trunctfsf2@GCC_4.4.0 1:4.4.0
+ __trunctfxf2@GCC_4.4.0 1:4.4.0
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unordtf2@GCC_4.4.0 1:4.4.0
--- gcc-4.6-4.6.3.orig/debian/cpp-BV-doc.doc-base.cpp
+++ gcc-4.6-4.6.3/debian/cpp-BV-doc.doc-base.cpp
@@ -0,0 +1,16 @@
+Document: cpp-@BV@
+Title: The GNU C preprocessor
+Author: Various
+Abstract: The C preprocessor is a "macro processor" that is used automatically
+ by the C compiler to transform your program before actual compilation.
+ It is called a macro processor because it allows you to define "macros",
+ which are brief abbreviations for longer constructs.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc-@BV@-base/cpp.html
+Files: /usr/share/doc/gcc-@BV@-base/cpp.html
+
+Format: info
+Index: /usr/share/info/cpp-@BV@.info.gz
+Files: /usr/share/info/cpp-@BV@*
--- gcc-4.6-4.6.3.orig/debian/gfortran-BV-spu.overrides
+++ gcc-4.6-4.6.3/debian/gfortran-BV-spu.overrides
@@ -0,0 +1,2 @@
+gfortran-@BV@-spu: non-standard-dir-in-usr usr/spu/
+gfortran-@BV@-spu: file-in-unusual-dir
--- gcc-4.6-4.6.3.orig/debian/runcheck.sh
+++ gcc-4.6-4.6.3/debian/runcheck.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+mkdir -p build
+
+cat >build/runcheck.c <<EOF
+#include <stdio.h>
+int main()
+{
+	return printf("yes\n") != 4;
+}
+EOF
+
+if m=$(${CC:-gcc} -o build/runcheck build/runcheck.c 2>&1); then
+    m=$(build/runcheck 2>&1)
+    echo ${m#* } > build/runcheck.out
+    echo ${m#* }
+else
+    echo ${m##*:} > build/runcheck.out
+    echo ${m##*:}
+fi
--- gcc-4.6-4.6.3.orig/debian/gnat-BV-doc.doc-base.rm
+++ gcc-4.6-4.6.3/debian/gnat-BV-doc.doc-base.rm
@@ -0,0 +1,16 @@
+Document: gnat-rm-@BV@
+Title: GNAT (GNU Ada) Reference Manual
+Author: Various
+Abstract: This manual contains useful information in writing programs
+ using the GNAT compiler.  It includes information on implementation
+ dependent characteristics of GNAT, including all the information
+ required by Annex M of the standard.
+Section: Programming/Ada
+
+Format: html
+Index: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html
+Files: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html
+
+Format: info
+Index: /usr/share/info/gnat_rm-@BV@.info.gz
+Files: /usr/share/info/gnat_rm-@BV@*
--- gcc-4.6-4.6.3.orig/debian/libstdc++CXX-BV-doc.doc-base
+++ gcc-4.6-4.6.3/debian/libstdc++CXX-BV-doc.doc-base
@@ -0,0 +1,13 @@
+Document: libstdc++@CXX@-@BV@-doc
+Title: The GNU Standard C++ Library v3 (gcc-@BV@)
+Author: Various
+Abstract: This package contains documentation files for the GNU stdc++ library.
+ One set is the distribution documentation, the other set is the
+ source documentation including a namespace list, class hierarchy,
+ alphabetical list, compound list, file list, namespace members,
+ compound members and file members.
+Section: Programming/C++
+
+Format: html
+Index: /usr/share/doc/libstdc++@CXX@-@BV@-doc/libstdc++/html/index.html
+Files: /usr/share/doc/libstdc++@CXX@-@BV@-doc/libstdc++/html*/*
--- gcc-4.6-4.6.3.orig/debian/README.Bugs.m4
+++ gcc-4.6-4.6.3/debian/README.Bugs.m4
@@ -0,0 +1,333 @@
+Reporting Bugs in the GNU Compiler Collection for DIST
+========================================================
+
+Before reporting a bug, please
+------------------------------
+
+- Check that the behaviour really is a bug. Have a look into some
+  ANSI standards document.
+
+- Check the list of well known bugs: http://gcc.gnu.org/bugs.html#known
+
+- Try to reproduce the bug with a current GCC development snapshot. You
+  usually can get a recent development snapshot from the gcc-snapshot
+ifelse(DIST,`Debian',`dnl
+  package in the unstable (or experimental) distribution.
+
+  See: http://packages.debian.org/gcc-snapshot
+', DIST, `Ubuntu',`dnl
+  package in the current development distribution.
+
+  See: http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-snapshot/
+')dnl
+
+- Try to find out if the bug is a regression (an older GCC version does
+  not show the bug).
+
+- Check if the bug is already reported in the bug tracking systems.
+
+ifelse(DIST,`Debian',`dnl
+    Debian:   http://bugs.debian.org/debian-gcc@lists.debian.org
+', DIST, `Ubuntu',`dnl
+    Ubuntu:   https://bugs.launchpad.net/~ubuntu-toolchain/+packagebugs
+    Debian:   http://bugs.debian.org/debian-gcc@lists.debian.org
+')dnl
+    Upstream: http://gcc.gnu.org/bugzilla/
+
+
+Where to report a bug
+---------------------
+
+ifelse(DIST,`Debian',`dnl
+Please report bugs found in the packaging of GCC to the Debian bug tracking
+system. See http://www.debian.org/Bugs/ for instructions (or use the
+reportbug script).
+', DIST, `Ubuntu',`dnl
+Please report bugs found in the packaging of GCC to Launchpad. See below
+how issues should be reported.
+')dnl
+
+DIST's current policy is to closely follow the upstream development and
+only apply a minimal set of patches (which are summarized in the README.Debian
+document).
+
+ifelse(DIST,`Debian',`dnl
+If you think you have found an upstream bug, you did check the section
+above ("Before reporting a bug") and are able to provide a complete bug
+report (see below "How to report a bug"), then you may help the Debian
+GCC package maintainers, if you report the bug upstream and then submit
+a bug report to the Debian BTS and tell us the upstream report number.
+This way you are able to follow the upstream bug handling as well. If in
+doubt, report the bug to the Debian BTS (but read "How to report a bug"
+below).
+', DIST, `Ubuntu',`dnl
+If you think you have found an upstream bug, you did check the section
+above ("Before reporting a bug") and are able to provide a complete bug
+report (see below "How to report a bug"), then you may help the Ubuntu
+GCC package maintainers, if you report the bug upstream and then submit
+a bug report to Launchpad and tell us the upstream report number.
+This way you are able to follow the upstream bug handling as well. If in
+doubt, report the bug to Launchpad (but read "How to report a bug" below).
+
+Report the issue to https://bugs.launchpad.net/ubuntu/+source/SRCNAME.
+')dnl
+
+
+How to report a bug
+-------------------
+
+There are complete instructions in the gcc info manual (found in the
+gcc-doc package), section Bugs.
+
+The manual can be read using `M-x info' in Emacs, or if the GNU info
+program is installed on your system by `info --node "(gcc)Bugs"'. Or see
+the file BUGS included with the gcc source code.
+
+Online bug reporting instructions can be found at
+
+	http://gcc.gnu.org/bugs.html
+
+[Some paragraphs taken from the above URL]
+
+The main purpose of a bug report is to enable us to fix the bug. The
+most important prerequisite for this is that the report must be
+complete and self-contained, which we explain in detail below.
+
+Before you report a bug, please check the list of well-known bugs and,
+if possible in any way, try a current development snapshot.
+
+Summarized bug reporting instructions
+-------------------------------------
+
+What we need
+
+Please include in your bug report all of the following items, the
+first three of which can be obtained from the output of gcc -v:
+
+    * the exact version of GCC;
+    * the system type;
+    * the options given when GCC was configured/built;
+    * the complete command line that triggers the bug;
+    * the compiler output (error messages, warnings, etc.); and
+    * the preprocessed file (*.i*) that triggers the bug, generated by
+      adding -save-temps to the complete compilation command, or, in
+      the case of a bug report for the GNAT front end, a complete set
+      of source files (see below).
+
+What we do not want
+
+    * A source file that #includes header files that are left out
+      of the bug report (see above)
+    * That source file and a collection of header files.
+    * An attached archive (tar, zip, shar, whatever) containing all
+      (or some :-) of the above.
+    * A code snippet that won't cause the compiler to produce the
+      exact output mentioned in the bug report (e.g., a snippet with
+      just a few lines around the one that apparently triggers the
+      bug, with some pieces replaced with ellipses or comments for
+      extra obfuscation :-)
+    * The location (URL) of the package that failed to build (we won't
+      download it, anyway, since you've already given us what we need
+      to duplicate the bug, haven't you? :-)
+    * An error that occurs only some of the times a certain file is
+      compiled, such that retrying a sufficient number of times
+      results in a successful compilation; this is a symptom of a
+      hardware problem, not of a compiler bug (sorry)
+    * E-mail messages that complement previous, incomplete bug
+      reports. Post a new, self-contained, full bug report instead, if
+      possible as a follow-up to the original bug report
+    * Assembly files (*.s) produced by the compiler, or any binary files,
+      such as object files, executables, core files, or precompiled
+      header files
+    * Duplicate bug reports, or reports of bugs already fixed in the
+      development tree, especially those that have already been
+      reported as fixed last week :-)
+    * Bugs in the assembler, the linker or the C library. These are
+      separate projects, with separate mailing lists and different bug
+      reporting procedures
+    * Bugs in releases or snapshots of GCC not issued by the GNU
+      Project. Report them to whoever provided you with the release
+    * Questions about the correctness or the expected behavior of
+      certain constructs that are not GCC extensions. Ask them in
+      forums dedicated to the discussion of the programming language
+
+
+Known Bugs and Non-Bugs
+-----------------------
+
+[Please see /usr/share/doc/gcc/FAQ or http://gcc.gnu.org/faq.html first]
+
+
+C++ exceptions don't work with C libraries
+------------------------------------------
+
+[Taken from the closed bug report #22769] C++ exceptions don't work
+with C libraries, if the C code wasn't designed to be thrown through.
+A solution could be to translate all C libraries with -fexceptions.
+Mostly trying to throw an exception in a callback function (qsort,
+Tcl command callbacks, etc ...). Example:
+
+    #include <stdio.h>
+    #include <tcl.h>
+
+    class A {};
+
+    static
+    int SortCondition(void const*, void const*)
+    {
+        printf("throwing 'sortcondition' exception\n");
+        throw A();
+    }
+
+    int main(int argc, char *argv[])
+    {
+        int list[2];
+
+        try {
+            SortCondition(NULL,NULL);
+        } catch (A) {
+            printf("caught test-sortcondition exception\n");
+        }
+        try {
+            qsort(&list, sizeof(list)/sizeof(list[0]),sizeof(list[0]),
+                 &SortCondition);
+        } catch (A) {
+            printf("caught real-sortcondition exception\n");
+        }
+        return 0;
+}
+
+Andrew Macleod <amacleod@cygnus.com> responded:
+
+When compiled with the table driven exception handling, exception can only
+be thrown through functions which have been compiled with the table driven EH.
+If a function isn't compiled that way, then we do not have the frame
+unwinding information required to restore the registers when unwinding.
+
+I believe the setjmp/longjmp mechanism will throw through things like this, 
+but its produces much messier code.  (-fsjlj-exceptions)
+
+The C compiler does support exceptions, you just have to turn them on
+with -fexceptions.
+
+Your main options are to:
+  a) Don't use callbacks, or at least don't throw through them.
+  b) Get the source and compile the library with -fexceptions (You have to
+     explicitly turn on exceptions in the C compiler)
+  c) always use -fsjlj-exceptions (boo, bad choice :-)
+
+
+g++: "undefined reference" to static const array in class
+---------------------------------------------------------
+
+The following code compiles under GNU C++ 2.7.2 with correct results,
+but produces the same linker error with GNU C++ 2.95.2.
+Alexandre Oliva <oliva@lsd.ic.unicamp.br> responded:
+
+All of them are correct.  A static data member *must* be defined
+outside the class body even if it is initialized within the class
+body, but no diagnostic is required if the definition is missing.  It
+turns out that some releases do emit references to the missing symbol,
+while others optimize it away.
+
+#include <iostream>
+
+class Test
+{
+  public:
+    Test(const char *q);
+  protected:
+    static const unsigned char  Jam_signature[4]   = "JAM";
+};
+
+Test::Test(const char *q)
+{
+  if (memcmp(q, Jam_signature, sizeof(Jam_signature)) != 0)
+  cerr << "Hello world!\n";
+}
+
+int main(void)
+{
+  Test::Test("JAM");
+  return 0;
+}
+
+g++: g++ causes passing non const ptr to ptr to a func with const arg
+     to cause an error (not a bug)
+---------------------------------------------------------------------
+
+Example:
+
+#include <stdio.h>
+void test(const char **b){
+        printf ("%s\n",*b);
+}
+int main(void){
+        char *test1="aoeu";
+        test(&test1);
+}
+
+make const
+g++     const.cc   -o const
+const.cc: In function `int main()':
+const.cc:7: passing `char **' as argument 1 of `test(const char **)' adds cv-quals without intervening `const'
+make: *** [const] Error 1
+
+Answer from "Martin v. Loewis" <martin@loewis.home.cs.tu-berlin.de>:
+
+> ok... maybe I missed something.. I haven't really kept up with the latest in
+> C++ news.  But I've never heard anything even remotly close to passing a non
+> const var into a const arg being an error before.
+
+Thanks for your bug report. This is a not a bug in the compiler, but
+in your code. The standard, in 4.4/4, puts it that way
+
+# A conversion can add cv-qualifiers at levels other than the first in
+# multi-level pointers, subject to the following rules:
+# Two pointer types T1 and T2 are similar if there exists a type T and
+# integer n > 0 such that:
+#   T1 is cv(1,0) pointer to cv(1,1) pointer to ... cv(1,n-1)
+#   pointer to cv(1,n) T
+# and
+#   T2 is cv(2,0) pointer to cv(2,1) pointer to ... cv(2,n-1)
+#   pointer to cv(2,n) T
+# where each cv(i,j) is const, volatile, const volatile, or
+# nothing. The n-tuple of cv-qualifiers after the first in a pointer
+# type, e.g., cv(1,1) , cv(1,2) , ... , cv(1,n) in the pointer type
+# T1, is called the cv-qualification signature of the pointer type. An
+# expression of type T1 can be converted to type T2 if and only if the
+# following conditions are satisfied:
+#  - the pointer types are similar.
+#  - for every j > 0, if const is in cv(1,j) then const is in cv(2,j) ,
+#    and similarly for volatile.
+#  - if the cv(1,j) and cv(2,j) are different, then const is in every
+#    cv(2,k) for 0 < k < j.
+
+It is the last rule that your code violates. The standard gives then
+the following example as a rationale:
+
+# [Note: if a program could assign a pointer of type T** to a pointer
+# of type const T** (that is, if line //1 below was allowed), a
+# program could inadvertently modify a const object (as it is done on
+# line //2). For example,
+# int main() { 
+#   const char c = 'c'; 
+#   char* pc; 
+#   const char** pcc = &pc; //1: not allowed 
+#   *pcc = &c; 
+#   *pc = 'C'; //2: modifies a const object 
+# }
+# - end note]
+
+If you question this line of reasoning, please discuss it in one of
+the public C++ fora first, eg. comp.lang.c++.moderated, or
+comp.std.c++.
+
+
+cpp removes blank lines
+-----------------------
+
+With the new cpp, you need to add -traditional to the "cpp -P" args, else 
+blank lines get removed.
+
+[EDIT ME: scan Debian bug reports and write some nice summaries ...]
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.alpha
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.alpha
@@ -0,0 +1,9 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/lib64stdc++6.symbols.sparc
+++ gcc-4.6-4.6.3/debian/lib64stdc++6.symbols.sparc
@@ -0,0 +1,9 @@
+libstdc++.so.6 lib64stdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVli@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVli@GLIBCXX_3.4 4.1.1
+# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc.
+# #include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.m68k
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.m68k
@@ -0,0 +1,5 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
--- gcc-4.6-4.6.3.orig/debian/lib32quadmath0.symbols
+++ gcc-4.6-4.6.3/debian/lib32quadmath0.symbols
@@ -0,0 +1,2 @@
+libquadmath.so.0 lib32quadmath0 #MINVER#
+#include "libquadmath0.symbols.common"
--- gcc-4.6-4.6.3.orig/debian/gcc-BV-source.overrides
+++ gcc-4.6-4.6.3/debian/gcc-BV-source.overrides
@@ -0,0 +1,5 @@
+gcc-@BV@-source: changelog-file-not-compressed
+
+# these are patches taken over unmodified from 4.3
+gcc-@BV@-source: script-not-executable
+gcc-@BV@-source: shell-script-fails-syntax-check
--- gcc-4.6-4.6.3.orig/debian/gcj-wrapper-BV.1
+++ gcc-4.6-4.6.3/debian/gcj-wrapper-BV.1
@@ -0,0 +1,20 @@
+.TH GCJ-WRAPPER 1 "June 6, 2002" gcj-wrapper "Java User's Manual"
+.SH NAME
+gcj-wrapper \- a wrapper around gcj
+
+.SH SYNOPSIS
+gcj-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fBgcj-wrapper\fR is a wrapper around gcj(1) to be called as the java
+compiler. Options different for javac(1) and gcj(1) are translated,
+options unknown to gcj(1) are silently ignored.
+
+.SH OPTIONS
+See gcj-@BV@(1) for a list of options that gcj understands.
+
+.SH "SEE ALSO"
+.BR gcj-@BV@(1)
+,
+.BR javac(1)
--- gcc-4.6-4.6.3.orig/debian/gcj-wrapper-BV
+++ gcc-4.6-4.6.3/debian/gcj-wrapper-BV
@@ -0,0 +1,91 @@
+#!/usr/bin/perl -w
+#
+# Starts the GNU Java compiler.
+#
+# Command-line arguments should be in the style of Sun's Java compiler;
+# these will be converted to gcj arguments before being passed to the
+# gcj itself.
+#
+# Copyright (C) 2002-2003 by Ben Burton <bab@debian.org>
+# Based on the original gcj-wrapper-3.2 shell script.
+
+use strict;
+
+# The real Java compiler:
+my $javaCompiler = '/usr/bin/gcj-@BV@';
+
+# The command-line arguments to pass to the real Java compiler:
+my @commandLine;
+
+# The warning flags to pass to the GNU Java compiler:
+my $warnings = '-Wall';
+
+# Build the command-line from the arguments given.
+my $parsingOptions = 1;
+my $copyNextArg = 0;
+my $ignoreNextArg = 0;
+my $appendNextArg = '';
+foreach my $arg (@ARGV) {
+    # See if we already know what to do with this argument.
+    if ($ignoreNextArg) {
+        # Throw it away.
+        $ignoreNextArg = 0;
+        next;
+    } elsif ($copyNextArg or not $parsingOptions) {
+        # Copy it directly.
+        push @commandLine, $arg;
+        $copyNextArg = 0;
+        next;
+    } elsif ($appendNextArg) {
+        # Append it to $appendNextArg and then copy directly.
+        push @commandLine, ($appendNextArg . $arg);
+        $appendNextArg = '';
+        next;
+    }
+
+    # Try to interpret Sun-style options.
+    if ($arg eq '-version') {
+        push @commandLine, '--version';
+    } elsif ($arg eq '-h' or $arg eq '-help') {
+        push @commandLine, '--help';
+    } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') {
+        $appendNextArg = '--classpath=';
+    } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or
+             $arg eq '-extdirs') {
+        $appendNextArg = '-' . $arg . '=';
+    } elsif ($arg eq '-d') {
+        push @commandLine, '-d';
+        $copyNextArg = 1;
+    } elsif ($arg eq '-nowarn') {
+        $warnings = '';
+    } elsif ($arg =~ /^-g/) {
+        # Some kind of debugging option - just switch debugging on.
+        push @commandLine, '-g' if ($arg ne '-g:none');
+    } elsif ($arg eq '-O') {
+        push @commandLine, '-O2';
+    } elsif ($arg eq '-Xss') {
+        push @commandLine, $arg;
+    } elsif ($arg =~ /^-X/) {
+        # An extended Sun option (which we don't support).
+        push @commandLine, '--help' if ($arg eq '-X');
+    } elsif ($arg eq '-source' or $arg eq '-sourcepath' or $arg eq '-target') {
+        # An unsupported option with a following argument.
+        $ignoreNextArg = 1;
+    } elsif ($arg =~ /^-/) {
+        # An unsupported standalone option.
+    } else {
+        # Some non-option argument has been given.
+        # Stop parsing options at this point.
+        push @commandLine, $arg;
+        $parsingOptions = 0;
+    }
+}
+
+# Was there a partial argument that was never completed?
+push @commandLine, $appendNextArg if ($appendNextArg);
+
+# Call the real Java compiler.
+my @fullCommandLine = ( $javaCompiler, '-C' );
+push @fullCommandLine, $warnings if ($warnings);
+push @fullCommandLine, @commandLine;
+exec @fullCommandLine or exit(1);
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.alpha
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.alpha
@@ -0,0 +1,5 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/lib32gcc1.symbols.amd64
+++ gcc-4.6-4.6.3/debian/lib32gcc1.symbols.amd64
@@ -0,0 +1,134 @@
+libgcc_s.so.1 lib32gcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GCC_4.5.0@GCC_4.5.0 1:4.5.0
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addtf3@GCC_4.4.0 1:4.4.0
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __copysigntf3@GCC_4.4.0 1:4.4.0
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.4.0 1:4.4.0
+ __divtf3@GCC_4.4.0 1:4.4.0
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.4.0 1:4.4.0
+ __extenddftf2@GCC_4.4.0 1:4.4.0
+ __extendsftf2@GCC_4.4.0 1:4.4.0
+ __extendxftf2@GCC_4.5.0 1:4.5.0
+ __fabstf2@GCC_4.4.0 1:4.4.0
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.4.0 1:4.4.0
+ __fixtfsi@GCC_4.4.0 1:4.4.0
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.4.0 1:4.4.0
+ __fixunstfsi@GCC_4.4.0 1:4.4.0
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfsi@GCC_3.0 1:4.1.1
+ __fixxfdi@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.4.0 1:4.4.0
+ __floatdixf@GCC_3.0 1:4.1.1
+ __floatsitf@GCC_4.4.0 1:4.4.0
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.4.0 1:4.4.0
+ __floatundixf@GCC_4.2.0 1:4.2.1
+ __floatunsitf@GCC_4.4.0 1:4.4.0
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.4.0 1:4.4.0
+ __gttf2@GCC_4.4.0 1:4.4.0
+ __letf2@GCC_4.4.0 1:4.4.0
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_4.4.0 1:4.4.0
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.4.0 1:4.4.0
+ __multf3@GCC_4.4.0 1:4.4.0
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negtf2@GCC_4.4.0 1:4.4.0
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __netf2@GCC_4.4.0 1:4.4.0
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.4.0 1:4.4.0
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subtf3@GCC_4.4.0 1:4.4.0
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __trunctfdf2@GCC_4.4.0 1:4.4.0
+ __trunctfsf2@GCC_4.4.0 1:4.4.0
+ __trunctfxf2@GCC_4.4.0 1:4.4.0
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unordtf2@GCC_4.4.0 1:4.4.0
--- gcc-4.6-4.6.3.orig/debian/gcj-BV-jdk.postinst
+++ gcc-4.6-4.6.3/debian/gcj-BV-jdk.postinst
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+
+if [ -d /usr/share/doc/gcc-@BV@-base/java ] && [ ! -h /usr/share/doc/gcc-@BV@-base/java ]; then
+    rm -rf /usr/share/doc/gcc-@BV@-base/java
+    ln -s ../gcj-@BV@-base /usr/share/doc/gcc-@BV@-base/java
+fi
+
+prio=@java_priority@
+update-alternatives --quiet \
+    --install /usr/bin/javac javac /usr/bin/gcj-wrapper-@BV@ $prio \
+    @GFDL@--slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/share/man/man1/gcj-wrapper-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/jar jar /usr/bin/gjar-@BV@ $prio \
+    --slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/share/man/man1/gjar-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/jarsigner jarsigner /usr/bin/gjarsigner-@BV@ $prio \
+    --slave /usr/share/man/man1/jarsigner.1.gz jarsigner.1.gz /usr/share/man/man1/gjarsigner-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/javah javah /usr/bin/gjavah-@BV@ $prio \
+    --slave /usr/share/man/man1/javah.1.gz javah.1.gz /usr/share/man/man1/gjavah-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/javadoc javadoc /usr/bin/gjdoc-@BV@ $prio \
+    --slave /usr/share/man/man1/javadoc.1.gz javadoc.1.gz /usr/share/man/man1/gjdoc-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/native2ascii native2ascii /usr/bin/gnative2ascii-@BV@ $prio \
+    --slave /usr/share/man/man1/native2ascii.1.gz native2ascii.1.gz /usr/share/man/man1/gnative2ascii-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/rmic rmic /usr/bin/grmic-@BV@ $prio \
+    @GFDL@--slave /usr/share/man/man1/rmic.1.gz rmic.1.gz /usr/share/man/man1/grmic-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/serialver serialver /usr/bin/gserialver-@BV@ $prio \
+    --slave /usr/share/man/man1/serialver.1.gz serialver.1.gz /usr/share/man/man1/gserialver-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/tnameserv tnameserv /usr/bin/gtnameserv-@BV@ $prio \
+    --slave /usr/share/man/man1/tnameserv.1.gz tnameserv.1.gz /usr/share/man/man1/gtnameserv-@BV@.1.gz
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/libquadmath0.symbols
+++ gcc-4.6-4.6.3/debian/libquadmath0.symbols
@@ -0,0 +1,2 @@
+libquadmath.so.0 libquadmath0 #MINVER#
+#include "libquadmath0.symbols.common"
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.10
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.10
@@ -0,0 +1,98 @@
+ __iso_c_binding_c_f_pointer_c10@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_r10@GFORTRAN_1.0 4.3
+ _gfortran_arandom_r10@GFORTRAN_1.0 4.3
+ _gfortran_bessel_jn_r10@GFORTRAN_1.4 4.6
+ _gfortran_bessel_yn_r10@GFORTRAN_1.4 4.6
+ _gfortran_cpu_time_10@GFORTRAN_1.0 4.3
+ _gfortran_erfc_scaled_r10@GFORTRAN_1.1 4.4.0
+ _gfortran_exponent_r10@GFORTRAN_1.0 4.3
+ _gfortran_fraction_r10@GFORTRAN_1.0 4.3
+ _gfortran_matmul_c10@GFORTRAN_1.0 4.3
+ _gfortran_matmul_r10@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_maxval_r10@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_minval_r10@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_r10@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_mminval_r10@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_c10@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_r10@GFORTRAN_1.0 4.3
+ _gfortran_msum_c10@GFORTRAN_1.0 4.3
+ _gfortran_msum_r10@GFORTRAN_1.0 4.3
+ _gfortran_nearest_r10@GFORTRAN_1.0 4.3
+ _gfortran_pow_c10_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_c10_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_r10_i8@GFORTRAN_1.0 4.3
+ _gfortran_product_c10@GFORTRAN_1.0 4.3
+ _gfortran_product_r10@GFORTRAN_1.0 4.3
+ _gfortran_random_r10@GFORTRAN_1.0 4.3
+ _gfortran_reshape_c10@GFORTRAN_1.0 4.3
+ _gfortran_reshape_r10@GFORTRAN_1.0 4.3
+ _gfortran_rrspacing_r10@GFORTRAN_1.0 4.3
+ _gfortran_set_exponent_r10@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_r10@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_r10@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_r10@GFORTRAN_1.0 4.3
+ _gfortran_sminval_r10@GFORTRAN_1.0 4.3
+ _gfortran_spacing_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_c10@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__acos_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__acosh_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__aimag_c10@GFORTRAN_1.0 4.3
+ _gfortran_specific__aint_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__anint_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__asin_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__asinh_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan2_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__atanh_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__conjg_10@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_c10@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__cosh_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_c10@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__log10_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_c10@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_4_10@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_8_10@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_c10@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__sinh_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_c10@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__tan_r10@GFORTRAN_1.0 4.3
+ _gfortran_specific__tanh_r10@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_c10@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_r10@GFORTRAN_1.0 4.3
+ _gfortran_ssum_c10@GFORTRAN_1.0 4.3
+ _gfortran_ssum_r10@GFORTRAN_1.0 4.3
+ _gfortran_sum_c10@GFORTRAN_1.0 4.3
+ _gfortran_sum_r10@GFORTRAN_1.0 4.3
+ _gfortran_transpose_c10@GFORTRAN_1.0 4.3
+ _gfortran_transpose_r10@GFORTRAN_1.0 4.3
--- gcc-4.6-4.6.3.orig/debian/lib64quadmath0.symbols
+++ gcc-4.6-4.6.3/debian/lib64quadmath0.symbols
@@ -0,0 +1,2 @@
+libquadmath.so.0 lib64quadmath0 #MINVER#
+#include "libquadmath0.symbols.common"
--- gcc-4.6-4.6.3.orig/debian/gcj-BV-jre-headless.postrm
+++ gcc-4.6-4.6.3/debian/gcj-BV-jre-headless.postrm
@@ -0,0 +1,10 @@
+#! /bin/sh -e
+
+case "$1" in
+    purge)
+	rm -f /var/lib/gcj-@BV@/classmap.db
+esac
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.kfreebsd-amd64
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.kfreebsd-amd64
@@ -0,0 +1,5 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
+#include "libgfortran3.symbols.16"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.powerpc
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.powerpc
@@ -0,0 +1,8 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.armhf
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.armhf
@@ -0,0 +1,26 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+ CXXABI_ARM_1.3.3@CXXABI_ARM_1.3.3 4.4.0
+ _ZNKSt9type_info6beforeERKS_@GLIBCXX_3.4 4.3.0
+ _ZNKSt9type_infoeqERKS_@GLIBCXX_3.4 4.3.0
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ __aeabi_atexit@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_cctor_nocookie_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_ctor_cookie_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_ctor_nocookie_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_delete3@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_delete3_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_delete@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_dtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_dtor_cookie@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_new_cookie@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_new_cookie_noctor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_new_cookie_nodtor@CXXABI_ARM_1.3.3 4.4.0
+ __aeabi_vec_new_nocookie@CXXABI_ARM_1.3.3 4.4.0
+ __cxa_begin_cleanup@CXXABI_1.3 4.3.0
+ __cxa_end_cleanup@CXXABI_1.3 4.3.0
+ __cxa_type_match@CXXABI_1.3 4.3.0
--- gcc-4.6-4.6.3.orig/debian/libgomp1.symbols.common
+++ gcc-4.6-4.6.3/debian/libgomp1.symbols.common
@@ -0,0 +1,154 @@
+ GOMP_1.0@GOMP_1.0 4.2.1
+ GOMP_2.0@GOMP_2.0 4.4
+ GOMP_atomic_end@GOMP_1.0 4.2.1
+ GOMP_atomic_start@GOMP_1.0 4.2.1
+ GOMP_barrier@GOMP_1.0 4.2.1
+ GOMP_critical_end@GOMP_1.0 4.2.1
+ GOMP_critical_name_end@GOMP_1.0 4.2.1
+ GOMP_critical_name_start@GOMP_1.0 4.2.1
+ GOMP_critical_start@GOMP_1.0 4.2.1
+ GOMP_loop_dynamic_next@GOMP_1.0 4.2.1
+ GOMP_loop_dynamic_start@GOMP_1.0 4.2.1
+ GOMP_loop_end@GOMP_1.0 4.2.1
+ GOMP_loop_end_nowait@GOMP_1.0 4.2.1
+ GOMP_loop_guided_next@GOMP_1.0 4.2.1
+ GOMP_loop_guided_start@GOMP_1.0 4.2.1
+ GOMP_loop_ordered_dynamic_next@GOMP_1.0 4.2.1
+ GOMP_loop_ordered_dynamic_start@GOMP_1.0 4.2.1
+ GOMP_loop_ordered_guided_next@GOMP_1.0 4.2.1
+ GOMP_loop_ordered_guided_start@GOMP_1.0 4.2.1
+ GOMP_loop_ordered_runtime_next@GOMP_1.0 4.2.1
+ GOMP_loop_ordered_runtime_start@GOMP_1.0 4.2.1
+ GOMP_loop_ordered_static_next@GOMP_1.0 4.2.1
+ GOMP_loop_ordered_static_start@GOMP_1.0 4.2.1
+ GOMP_loop_runtime_next@GOMP_1.0 4.2.1
+ GOMP_loop_runtime_start@GOMP_1.0 4.2.1
+ GOMP_loop_static_next@GOMP_1.0 4.2.1
+ GOMP_loop_static_start@GOMP_1.0 4.2.1
+ GOMP_loop_ull_dynamic_next@GOMP_2.0 4.4
+ GOMP_loop_ull_dynamic_start@GOMP_2.0 4.4
+ GOMP_loop_ull_guided_next@GOMP_2.0 4.4
+ GOMP_loop_ull_guided_start@GOMP_2.0 4.4
+ GOMP_loop_ull_ordered_dynamic_next@GOMP_2.0 4.4
+ GOMP_loop_ull_ordered_dynamic_start@GOMP_2.0 4.4
+ GOMP_loop_ull_ordered_guided_next@GOMP_2.0 4.4
+ GOMP_loop_ull_ordered_guided_start@GOMP_2.0 4.4
+ GOMP_loop_ull_ordered_runtime_next@GOMP_2.0 4.4
+ GOMP_loop_ull_ordered_runtime_start@GOMP_2.0 4.4
+ GOMP_loop_ull_ordered_static_next@GOMP_2.0 4.4
+ GOMP_loop_ull_ordered_static_start@GOMP_2.0 4.4
+ GOMP_loop_ull_runtime_next@GOMP_2.0 4.4
+ GOMP_loop_ull_runtime_start@GOMP_2.0 4.4
+ GOMP_loop_ull_static_next@GOMP_2.0 4.4
+ GOMP_loop_ull_static_start@GOMP_2.0 4.4
+ GOMP_ordered_end@GOMP_1.0 4.2.1
+ GOMP_ordered_start@GOMP_1.0 4.2.1
+ GOMP_parallel_end@GOMP_1.0 4.2.1
+ GOMP_parallel_loop_dynamic_start@GOMP_1.0 4.2.1
+ GOMP_parallel_loop_guided_start@GOMP_1.0 4.2.1
+ GOMP_parallel_loop_runtime_start@GOMP_1.0 4.2.1
+ GOMP_parallel_loop_static_start@GOMP_1.0 4.2.1
+ GOMP_parallel_sections_start@GOMP_1.0 4.2.1
+ GOMP_parallel_start@GOMP_1.0 4.2.1
+ GOMP_sections_end@GOMP_1.0 4.2.1
+ GOMP_sections_end_nowait@GOMP_1.0 4.2.1
+ GOMP_sections_next@GOMP_1.0 4.2.1
+ GOMP_sections_start@GOMP_1.0 4.2.1
+ GOMP_single_copy_end@GOMP_1.0 4.2.1
+ GOMP_single_copy_start@GOMP_1.0 4.2.1
+ GOMP_single_start@GOMP_1.0 4.2.1
+ GOMP_task@GOMP_2.0 4.4
+ GOMP_taskwait@GOMP_2.0 4.4
+ OMP_1.0@OMP_1.0 4.2.1
+ OMP_2.0@OMP_2.0 4.2.1
+ OMP_3.0@OMP_3.0 4.4
+ omp_destroy_lock@OMP_1.0 4.2.1
+ omp_destroy_lock@OMP_3.0 4.4
+ omp_destroy_lock_@OMP_1.0 4.2.1
+ omp_destroy_lock_@OMP_3.0 4.4
+ omp_destroy_nest_lock@OMP_1.0 4.2.1
+ omp_destroy_nest_lock@OMP_3.0 4.4
+ omp_destroy_nest_lock_@OMP_1.0 4.2.1
+ omp_destroy_nest_lock_@OMP_3.0 4.4
+ omp_get_active_level@OMP_3.0 4.4
+ omp_get_active_level_@OMP_3.0 4.4
+ omp_get_ancestor_thread_num@OMP_3.0 4.4
+ omp_get_ancestor_thread_num_8_@OMP_3.0 4.4
+ omp_get_ancestor_thread_num_@OMP_3.0 4.4
+ omp_get_dynamic@OMP_1.0 4.2.1
+ omp_get_dynamic_@OMP_1.0 4.2.1
+ omp_get_level@OMP_3.0 4.4
+ omp_get_level_@OMP_3.0 4.4
+ omp_get_max_active_levels@OMP_3.0 4.4
+ omp_get_max_active_levels_@OMP_3.0 4.4
+ omp_get_max_threads@OMP_1.0 4.2.1
+ omp_get_max_threads_@OMP_1.0 4.2.1
+ omp_get_nested@OMP_1.0 4.2.1
+ omp_get_nested_@OMP_1.0 4.2.1
+ omp_get_num_procs@OMP_1.0 4.2.1
+ omp_get_num_procs_@OMP_1.0 4.2.1
+ omp_get_num_threads@OMP_1.0 4.2.1
+ omp_get_num_threads_@OMP_1.0 4.2.1
+ omp_get_schedule@OMP_3.0 4.4
+ omp_get_schedule_8_@OMP_3.0 4.4
+ omp_get_schedule_@OMP_3.0 4.4
+ omp_get_team_size@OMP_3.0 4.4
+ omp_get_team_size_8_@OMP_3.0 4.4
+ omp_get_team_size_@OMP_3.0 4.4
+ omp_get_thread_limit@OMP_3.0 4.4
+ omp_get_thread_limit_@OMP_3.0 4.4
+ omp_get_thread_num@OMP_1.0 4.2.1
+ omp_get_thread_num_@OMP_1.0 4.2.1
+ omp_get_wtick@OMP_2.0 4.2.1
+ omp_get_wtick_@OMP_2.0 4.2.1
+ omp_get_wtime@OMP_2.0 4.2.1
+ omp_get_wtime_@OMP_2.0 4.2.1
+ omp_in_parallel@OMP_1.0 4.2.1
+ omp_in_parallel_@OMP_1.0 4.2.1
+ omp_init_lock@OMP_1.0 4.2.1
+ omp_init_lock@OMP_3.0 4.4
+ omp_init_lock_@OMP_1.0 4.2.1
+ omp_init_lock_@OMP_3.0 4.4
+ omp_init_nest_lock@OMP_1.0 4.2.1
+ omp_init_nest_lock@OMP_3.0 4.4
+ omp_init_nest_lock_@OMP_1.0 4.2.1
+ omp_init_nest_lock_@OMP_3.0 4.4
+ omp_set_dynamic@OMP_1.0 4.2.1
+ omp_set_dynamic_8_@OMP_1.0 4.2.1
+ omp_set_dynamic_@OMP_1.0 4.2.1
+ omp_set_lock@OMP_1.0 4.2.1
+ omp_set_lock@OMP_3.0 4.4
+ omp_set_lock_@OMP_1.0 4.2.1
+ omp_set_lock_@OMP_3.0 4.4
+ omp_set_max_active_levels@OMP_3.0 4.4
+ omp_set_max_active_levels_8_@OMP_3.0 4.4
+ omp_set_max_active_levels_@OMP_3.0 4.4
+ omp_set_nest_lock@OMP_1.0 4.2.1
+ omp_set_nest_lock@OMP_3.0 4.4
+ omp_set_nest_lock_@OMP_1.0 4.2.1
+ omp_set_nest_lock_@OMP_3.0 4.4
+ omp_set_nested@OMP_1.0 4.2.1
+ omp_set_nested_8_@OMP_1.0 4.2.1
+ omp_set_nested_@OMP_1.0 4.2.1
+ omp_set_num_threads@OMP_1.0 4.2.1
+ omp_set_num_threads_8_@OMP_1.0 4.2.1
+ omp_set_num_threads_@OMP_1.0 4.2.1
+ omp_set_schedule@OMP_3.0 4.4
+ omp_set_schedule_8_@OMP_3.0 4.4
+ omp_set_schedule_@OMP_3.0 4.4
+ omp_test_lock@OMP_1.0 4.2.1
+ omp_test_lock@OMP_3.0 4.4
+ omp_test_lock_@OMP_1.0 4.2.1
+ omp_test_lock_@OMP_3.0 4.4
+ omp_test_nest_lock@OMP_1.0 4.2.1
+ omp_test_nest_lock@OMP_3.0 4.4
+ omp_test_nest_lock_@OMP_1.0 4.2.1
+ omp_test_nest_lock_@OMP_3.0 4.4
+ omp_unset_lock@OMP_1.0 4.2.1
+ omp_unset_lock@OMP_3.0 4.4
+ omp_unset_lock_@OMP_1.0 4.2.1
+ omp_unset_lock_@OMP_3.0 4.4
+ omp_unset_nest_lock@OMP_1.0 4.2.1
+ omp_unset_nest_lock@OMP_3.0 4.4
+ omp_unset_nest_lock_@OMP_1.0 4.2.1
+ omp_unset_nest_lock_@OMP_3.0 4.4
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.common
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.common
@@ -0,0 +1,803 @@
+ F2C_1.0@F2C_1.0 4.3
+ GFORTRAN_1.0@GFORTRAN_1.0 4.3
+ GFORTRAN_1.1@GFORTRAN_1.1 4.4.0
+ GFORTRAN_1.2@GFORTRAN_1.2 4.4.0
+ GFORTRAN_1.3@GFORTRAN_1.3 4.6
+ GFORTRAN_1.4@GFORTRAN_1.4 4.6
+ GFORTRAN_C99_1.0@GFORTRAN_C99_1.0 4.3
+ GFORTRAN_C99_1.1@GFORTRAN_C99_1.1 4.5
+ __iso_c_binding_c_f_pointer@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_c4@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_c8@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_d0@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_i1@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_i2@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_i4@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_i8@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_l1@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_l2@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_l4@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_l8@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_r4@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_r8@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_s0@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_u0@GFORTRAN_1.0 4.3
+ _gfortran_abort@GFORTRAN_1.0 4.3
+ _gfortran_access_func@GFORTRAN_1.0 4.3
+ _gfortran_adjustl@GFORTRAN_1.0 4.3
+ _gfortran_adjustl_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_adjustr@GFORTRAN_1.0 4.3
+ _gfortran_adjustr_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_alarm_sub_i4@GFORTRAN_1.0 4.3
+ _gfortran_alarm_sub_i8@GFORTRAN_1.0 4.3
+ _gfortran_alarm_sub_int_i4@GFORTRAN_1.0 4.3
+ _gfortran_alarm_sub_int_i8@GFORTRAN_1.0 4.3
+ _gfortran_all_l1@GFORTRAN_1.0 4.3
+ _gfortran_all_l2@GFORTRAN_1.0 4.3
+ _gfortran_all_l4@GFORTRAN_1.0 4.3
+ _gfortran_all_l8@GFORTRAN_1.0 4.3
+ _gfortran_any_l1@GFORTRAN_1.0 4.3
+ _gfortran_any_l2@GFORTRAN_1.0 4.3
+ _gfortran_any_l4@GFORTRAN_1.0 4.3
+ _gfortran_any_l8@GFORTRAN_1.0 4.3
+ _gfortran_arandom_r4@GFORTRAN_1.0 4.3
+ _gfortran_arandom_r8@GFORTRAN_1.0 4.3
+ _gfortran_associated@GFORTRAN_1.0 4.3
+ _gfortran_bessel_jn_r4@GFORTRAN_1.4 4.6
+ _gfortran_bessel_jn_r8@GFORTRAN_1.4 4.6 
+ _gfortran_bessel_yn_r4@GFORTRAN_1.4 4.6
+ _gfortran_bessel_yn_r8@GFORTRAN_1.4 4.6
+ _gfortran_chdir_i4@GFORTRAN_1.0 4.3
+ _gfortran_chdir_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_chdir_i8@GFORTRAN_1.0 4.3
+ _gfortran_chdir_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_chmod_func@GFORTRAN_1.0 4.3
+ _gfortran_chmod_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_chmod_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_compare_string@GFORTRAN_1.0 4.3
+ _gfortran_compare_string_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_concat_string@GFORTRAN_1.0 4.3
+ _gfortran_concat_string_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_convert_char1_to_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_convert_char4_to_char1@GFORTRAN_1.1 4.4.0
+ _gfortran_count_1_l@GFORTRAN_1.0 4.3
+ _gfortran_count_2_l@GFORTRAN_1.0 4.3
+ _gfortran_count_4_l@GFORTRAN_1.0 4.3
+ _gfortran_count_8_l@GFORTRAN_1.0 4.3
+ _gfortran_cpu_time_4@GFORTRAN_1.0 4.3
+ _gfortran_cpu_time_8@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_1@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_1_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift0_1_char@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_2@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_2_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift0_2_char@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_4@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_4_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift0_4_char@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_8@GFORTRAN_1.0 4.3
+ _gfortran_cshift0_8_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift0_8_char@GFORTRAN_1.0 4.3
+ _gfortran_cshift1_4@GFORTRAN_1.0 4.3
+ _gfortran_cshift1_4_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift1_4_char@GFORTRAN_1.0 4.3
+ _gfortran_cshift1_8@GFORTRAN_1.0 4.3
+ _gfortran_cshift1_8_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_cshift1_8_char@GFORTRAN_1.0 4.3
+ _gfortran_ctime@GFORTRAN_1.0 4.3
+ _gfortran_ctime_sub@GFORTRAN_1.0 4.3
+ _gfortran_date_and_time@GFORTRAN_1.0 4.3
+ _gfortran_dtime@GFORTRAN_1.0 4.3
+ _gfortran_dtime_sub@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_1@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_1_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift0_1_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_2@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_2_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift0_2_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_4@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_4_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift0_4_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_8@GFORTRAN_1.0 4.3
+ _gfortran_eoshift0_8_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift0_8_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift1_4@GFORTRAN_1.0 4.3
+ _gfortran_eoshift1_4_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift1_4_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift1_8@GFORTRAN_1.0 4.3
+ _gfortran_eoshift1_8_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift1_8_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_1@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_1_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift2_1_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_2@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_2_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift2_2_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_4@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_4_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift2_4_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_8@GFORTRAN_1.0 4.3
+ _gfortran_eoshift2_8_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift2_8_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift3_4@GFORTRAN_1.0 4.3
+ _gfortran_eoshift3_4_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift3_4_char@GFORTRAN_1.0 4.3
+ _gfortran_eoshift3_8@GFORTRAN_1.0 4.3
+ _gfortran_eoshift3_8_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_eoshift3_8_char@GFORTRAN_1.0 4.3
+ _gfortran_erfc_scaled_r4@GFORTRAN_1.1 4.4.0
+ _gfortran_erfc_scaled_r8@GFORTRAN_1.1 4.4.0
+ _gfortran_error_stop_numeric@GFORTRAN_1.4 4.6
+ _gfortran_error_stop_string@GFORTRAN_1.3 4.6   
+ _gfortran_etime@GFORTRAN_1.0 4.3
+ _gfortran_etime_sub@GFORTRAN_1.0 4.3
+ _gfortran_execute_command_line_i4@GFORTRAN_1.1 4.6
+ _gfortran_execute_command_line_i8@GFORTRAN_1.1 4.6
+ _gfortran_exit_i4@GFORTRAN_1.0 4.3
+ _gfortran_exit_i8@GFORTRAN_1.0 4.3
+ _gfortran_exponent_r4@GFORTRAN_1.0 4.3
+ _gfortran_exponent_r8@GFORTRAN_1.0 4.3
+ _gfortran_f2c_specific__abs_c4@F2C_1.0 4.3
+ _gfortran_f2c_specific__abs_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__acos_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__acosh_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__aimag_c4@F2C_1.0 4.3
+ _gfortran_f2c_specific__aimag_c8@F2C_1.0 4.3
+ _gfortran_f2c_specific__aint_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__anint_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__asin_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__asinh_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__atan2_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__atan_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__atanh_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__conjg_4@F2C_1.0 4.3
+ _gfortran_f2c_specific__conjg_8@F2C_1.0 4.3
+ _gfortran_f2c_specific__cos_c4@F2C_1.0 4.3
+ _gfortran_f2c_specific__cos_c8@F2C_1.0 4.3
+ _gfortran_f2c_specific__cos_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__cosh_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__dim_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__exp_c4@F2C_1.0 4.3
+ _gfortran_f2c_specific__exp_c8@F2C_1.0 4.3
+ _gfortran_f2c_specific__exp_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__log10_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__log_c4@F2C_1.0 4.3
+ _gfortran_f2c_specific__log_c8@F2C_1.0 4.3
+ _gfortran_f2c_specific__log_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__mod_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__sign_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__sin_c4@F2C_1.0 4.3
+ _gfortran_f2c_specific__sin_c8@F2C_1.0 4.3
+ _gfortran_f2c_specific__sin_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__sinh_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__sqrt_c4@F2C_1.0 4.3
+ _gfortran_f2c_specific__sqrt_c8@F2C_1.0 4.3
+ _gfortran_f2c_specific__sqrt_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__tan_r4@F2C_1.0 4.3
+ _gfortran_f2c_specific__tanh_r4@F2C_1.0 4.3
+ _gfortran_fdate@GFORTRAN_1.0 4.3
+ _gfortran_fdate_sub@GFORTRAN_1.0 4.3
+ _gfortran_fget@GFORTRAN_1.0 4.3
+ _gfortran_fget_i1_sub@GFORTRAN_1.0 4.3
+ _gfortran_fget_i2_sub@GFORTRAN_1.0 4.3
+ _gfortran_fget_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_fget_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_fgetc@GFORTRAN_1.0 4.3
+ _gfortran_fgetc_i1_sub@GFORTRAN_1.0 4.3
+ _gfortran_fgetc_i2_sub@GFORTRAN_1.0 4.3
+ _gfortran_fgetc_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_fgetc_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_flush_i4@GFORTRAN_1.0 4.3
+ _gfortran_flush_i8@GFORTRAN_1.0 4.3
+ _gfortran_fnum_i4@GFORTRAN_1.0 4.3
+ _gfortran_fnum_i8@GFORTRAN_1.0 4.3
+ _gfortran_fput@GFORTRAN_1.0 4.3
+ _gfortran_fput_i1_sub@GFORTRAN_1.0 4.3
+ _gfortran_fput_i2_sub@GFORTRAN_1.0 4.3
+ _gfortran_fput_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_fput_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_fputc@GFORTRAN_1.0 4.3
+ _gfortran_fputc_i1_sub@GFORTRAN_1.0 4.3
+ _gfortran_fputc_i2_sub@GFORTRAN_1.0 4.3
+ _gfortran_fputc_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_fputc_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_fraction_r4@GFORTRAN_1.0 4.3
+ _gfortran_fraction_r8@GFORTRAN_1.0 4.3
+ _gfortran_free@GFORTRAN_1.0 4.3
+ _gfortran_fseek_sub@GFORTRAN_1.0 4.3
+ _gfortran_fstat_i4@GFORTRAN_1.0 4.3
+ _gfortran_fstat_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_fstat_i8@GFORTRAN_1.0 4.3
+ _gfortran_fstat_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_ftell@GFORTRAN_1.0 4.3
+ _gfortran_ftell_i1_sub@GFORTRAN_1.0 4.3
+ _gfortran_ftell_i2_sub@GFORTRAN_1.0 4.3
+ _gfortran_ftell_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_ftell_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_generate_error@GFORTRAN_1.0 4.3
+ _gfortran_gerror@GFORTRAN_1.0 4.3
+ _gfortran_get_command_argument_i4@GFORTRAN_1.0 4.3
+ _gfortran_get_command_argument_i8@GFORTRAN_1.0 4.3
+ _gfortran_get_command_i4@GFORTRAN_1.0 4.3
+ _gfortran_get_command_i8@GFORTRAN_1.0 4.3
+ _gfortran_get_environment_variable_i4@GFORTRAN_1.0 4.3
+ _gfortran_get_environment_variable_i8@GFORTRAN_1.0 4.3
+ _gfortran_getarg_i4@GFORTRAN_1.0 4.3
+ _gfortran_getarg_i8@GFORTRAN_1.0 4.3
+ _gfortran_getcwd@GFORTRAN_1.0 4.3
+ _gfortran_getcwd_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_getcwd_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_getenv@GFORTRAN_1.0 4.3
+ _gfortran_getgid@GFORTRAN_1.0 4.3
+ _gfortran_getlog@GFORTRAN_1.0 4.3
+ _gfortran_getpid@GFORTRAN_1.0 4.3
+ _gfortran_getuid@GFORTRAN_1.0 4.3
+ _gfortran_gmtime_i4@GFORTRAN_1.0 4.3
+ _gfortran_gmtime_i8@GFORTRAN_1.0 4.3
+ _gfortran_hostnm@GFORTRAN_1.0 4.3
+ _gfortran_hostnm_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_hostnm_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_iall_i1@GFORTRAN_1.4 4.6
+ _gfortran_iall_i2@GFORTRAN_1.4 4.6
+ _gfortran_iall_i4@GFORTRAN_1.4 4.6
+ _gfortran_iall_i8@GFORTRAN_1.4 4.6
+ _gfortran_iany_i1@GFORTRAN_1.4 4.6
+ _gfortran_iany_i2@GFORTRAN_1.4 4.6  
+ _gfortran_iany_i4@GFORTRAN_1.4 4.6  
+ _gfortran_iany_i8@GFORTRAN_1.4 4.6
+ _gfortran_iargc@GFORTRAN_1.0 4.3
+ _gfortran_idate_i4@GFORTRAN_1.0 4.3
+ _gfortran_idate_i8@GFORTRAN_1.0 4.3
+ _gfortran_ierrno_i4@GFORTRAN_1.0 4.3
+ _gfortran_ierrno_i8@GFORTRAN_1.0 4.3
+ _gfortran_internal_pack@GFORTRAN_1.0 4.3
+ _gfortran_internal_unpack@GFORTRAN_1.0 4.3
+ _gfortran_iparity_i1@GFORTRAN_1.4 4.6
+ _gfortran_iparity_i2@GFORTRAN_1.4 4.6
+ _gfortran_iparity_i4@GFORTRAN_1.4 4.6
+ _gfortran_iparity_i8@GFORTRAN_1.4 4.6
+ _gfortran_irand@GFORTRAN_1.0 4.3
+ _gfortran_is_extension_of@GFORTRAN_1.2 4.5
+ _gfortran_isatty_l4@GFORTRAN_1.0 4.3
+ _gfortran_isatty_l8@GFORTRAN_1.0 4.3
+ _gfortran_ishftc4@GFORTRAN_1.0 4.3
+ _gfortran_ishftc8@GFORTRAN_1.0 4.3
+ _gfortran_itime_i4@GFORTRAN_1.0 4.3
+ _gfortran_itime_i8@GFORTRAN_1.0 4.3
+ _gfortran_kill_i4@GFORTRAN_1.0 4.3
+ _gfortran_kill_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_kill_i8@GFORTRAN_1.0 4.3
+ _gfortran_kill_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_link_i4@GFORTRAN_1.0 4.3
+ _gfortran_link_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_link_i8@GFORTRAN_1.0 4.3
+ _gfortran_link_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_lstat_i4@GFORTRAN_1.0 4.3
+ _gfortran_lstat_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_lstat_i8@GFORTRAN_1.0 4.3
+ _gfortran_lstat_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_ltime_i4@GFORTRAN_1.0 4.3
+ _gfortran_ltime_i8@GFORTRAN_1.0 4.3
+ _gfortran_malloc@GFORTRAN_1.0 4.3
+ _gfortran_matmul_c4@GFORTRAN_1.0 4.3
+ _gfortran_matmul_c8@GFORTRAN_1.0 4.3
+ _gfortran_matmul_i1@GFORTRAN_1.0 4.3
+ _gfortran_matmul_i2@GFORTRAN_1.0 4.3
+ _gfortran_matmul_i4@GFORTRAN_1.0 4.3
+ _gfortran_matmul_i8@GFORTRAN_1.0 4.3
+ _gfortran_matmul_l4@GFORTRAN_1.0 4.3
+ _gfortran_matmul_l8@GFORTRAN_1.0 4.3
+ _gfortran_matmul_r4@GFORTRAN_1.0 4.3
+ _gfortran_matmul_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_maxval_i1@GFORTRAN_1.0 4.3
+ _gfortran_maxval_i2@GFORTRAN_1.0 4.3
+ _gfortran_maxval_i4@GFORTRAN_1.0 4.3
+ _gfortran_maxval_i8@GFORTRAN_1.0 4.3
+ _gfortran_maxval_r4@GFORTRAN_1.0 4.3
+ _gfortran_maxval_r8@GFORTRAN_1.0 4.3
+ _gfortran_mclock8@GFORTRAN_1.0 4.3
+ _gfortran_mclock@GFORTRAN_1.0 4.3
+ _gfortran_miall_i1@GFORTRAN_1.4 4.6
+ _gfortran_miall_i2@GFORTRAN_1.4 4.6
+ _gfortran_miall_i4@GFORTRAN_1.4 4.6
+ _gfortran_miall_i8@GFORTRAN_1.4 4.6
+ _gfortran_miany_i1@GFORTRAN_1.4 4.6
+ _gfortran_miany_i2@GFORTRAN_1.4 4.6
+ _gfortran_miany_i4@GFORTRAN_1.4 4.6
+ _gfortran_miany_i8@GFORTRAN_1.4 4.6
+ _gfortran_minloc0_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_minval_i1@GFORTRAN_1.0 4.3
+ _gfortran_minval_i2@GFORTRAN_1.0 4.3
+ _gfortran_minval_i4@GFORTRAN_1.0 4.3
+ _gfortran_minval_i8@GFORTRAN_1.0 4.3
+ _gfortran_minval_r4@GFORTRAN_1.0 4.3
+ _gfortran_minval_r8@GFORTRAN_1.0 4.3
+ _gfortran_miparity_i1@GFORTRAN_1.4 4.6
+ _gfortran_miparity_i2@GFORTRAN_1.4 4.6
+ _gfortran_miparity_i4@GFORTRAN_1.4 4.6
+ _gfortran_miparity_i8@GFORTRAN_1.4 4.6
+ _gfortran_mmaxloc0_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_i1@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_i2@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_i4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_i8@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_r4@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_mminval_i1@GFORTRAN_1.0 4.3
+ _gfortran_mminval_i2@GFORTRAN_1.0 4.3
+ _gfortran_mminval_i4@GFORTRAN_1.0 4.3
+ _gfortran_mminval_i8@GFORTRAN_1.0 4.3
+ _gfortran_mminval_r4@GFORTRAN_1.0 4.3
+ _gfortran_mminval_r8@GFORTRAN_1.0 4.3
+ _gfortran_move_alloc@GFORTRAN_1.0 4.3
+ _gfortran_move_alloc_c@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_c4@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_c8@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_i1@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_i2@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_i4@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_i8@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_r4@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_r8@GFORTRAN_1.0 4.3
+ _gfortran_msum_c4@GFORTRAN_1.0 4.3
+ _gfortran_msum_c8@GFORTRAN_1.0 4.3
+ _gfortran_msum_i1@GFORTRAN_1.0 4.3
+ _gfortran_msum_i2@GFORTRAN_1.0 4.3
+ _gfortran_msum_i4@GFORTRAN_1.0 4.3
+ _gfortran_msum_i8@GFORTRAN_1.0 4.3
+ _gfortran_msum_r4@GFORTRAN_1.0 4.3
+ _gfortran_msum_r8@GFORTRAN_1.0 4.3
+ _gfortran_mvbits_i1@GFORTRAN_1.0 4.3
+ _gfortran_mvbits_i2@GFORTRAN_1.0 4.3
+ _gfortran_mvbits_i4@GFORTRAN_1.0 4.3
+ _gfortran_mvbits_i8@GFORTRAN_1.0 4.3
+ _gfortran_nearest_r4@GFORTRAN_1.0 4.3
+ _gfortran_nearest_r8@GFORTRAN_1.0 4.3
+ _gfortran_norm2_r4@GFORTRAN_1.4 4.6
+ _gfortran_norm2_r8@GFORTRAN_1.4 4.6
+ _gfortran_os_error@GFORTRAN_1.0 4.3
+ _gfortran_pack@GFORTRAN_1.0 4.3
+ _gfortran_pack_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_pack_char@GFORTRAN_1.0 4.3
+ _gfortran_pack_s@GFORTRAN_1.0 4.3
+ _gfortran_pack_s_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_pack_s_char@GFORTRAN_1.0 4.3
+ _gfortran_parity_l1@GFORTRAN_1.4 4.6
+ _gfortran_parity_l2@GFORTRAN_1.4 4.6   
+ _gfortran_parity_l4@GFORTRAN_1.4 4.6   
+ _gfortran_parity_l8@GFORTRAN_1.4 4.6
+ _gfortran_pause_numeric@GFORTRAN_1.0 4.3
+ _gfortran_pause_string@GFORTRAN_1.0 4.3
+ _gfortran_perror_sub@GFORTRAN_1.0 4.3
+ _gfortran_pow_c4_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_c4_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_c8_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_c8_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_i4_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_i4_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_i8_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_i8_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_r4_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_r8_i8@GFORTRAN_1.0 4.3
+ _gfortran_product_c4@GFORTRAN_1.0 4.3
+ _gfortran_product_c8@GFORTRAN_1.0 4.3
+ _gfortran_product_i1@GFORTRAN_1.0 4.3
+ _gfortran_product_i2@GFORTRAN_1.0 4.3
+ _gfortran_product_i4@GFORTRAN_1.0 4.3
+ _gfortran_product_i8@GFORTRAN_1.0 4.3
+ _gfortran_product_r4@GFORTRAN_1.0 4.3
+ _gfortran_product_r8@GFORTRAN_1.0 4.3
+ _gfortran_rand@GFORTRAN_1.0 4.3
+ _gfortran_random_r4@GFORTRAN_1.0 4.3
+ _gfortran_random_r8@GFORTRAN_1.0 4.3
+ _gfortran_random_seed_i4@GFORTRAN_1.0 4.3
+ _gfortran_random_seed_i8@GFORTRAN_1.0 4.3
+ _gfortran_rename_i4@GFORTRAN_1.0 4.3
+ _gfortran_rename_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_rename_i8@GFORTRAN_1.0 4.3
+ _gfortran_rename_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_reshape@GFORTRAN_1.0 4.3
+ _gfortran_reshape_4@GFORTRAN_1.0 4.3
+ _gfortran_reshape_8@GFORTRAN_1.0 4.3
+ _gfortran_reshape_c4@GFORTRAN_1.0 4.3
+ _gfortran_reshape_c8@GFORTRAN_1.0 4.3
+ _gfortran_reshape_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_reshape_char@GFORTRAN_1.0 4.3
+ _gfortran_reshape_r4@GFORTRAN_1.0 4.3
+ _gfortran_reshape_r8@GFORTRAN_1.0 4.3
+ _gfortran_rrspacing_r4@GFORTRAN_1.0 4.3
+ _gfortran_rrspacing_r8@GFORTRAN_1.0 4.3
+ _gfortran_runtime_error@GFORTRAN_1.0 4.3
+ _gfortran_runtime_error_at@GFORTRAN_1.0 4.3
+ _gfortran_runtime_warning_at@GFORTRAN_1.1 4.4.0
+ _gfortran_secnds@GFORTRAN_1.0 4.3
+ _gfortran_second@GFORTRAN_1.0 4.3
+ _gfortran_second_sub@GFORTRAN_1.0 4.3
+ _gfortran_select_string@GFORTRAN_1.0 4.3
+ _gfortran_select_string_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_selected_char_kind@GFORTRAN_1.1 4.4.0
+ _gfortran_selected_int_kind@GFORTRAN_1.0 4.3
+ _gfortran_selected_real_kind2008@GFORTRAN_1.4 4.6
+ _gfortran_selected_real_kind@GFORTRAN_1.0 4.3
+ _gfortran_set_args@GFORTRAN_1.0 4.3
+ _gfortran_set_convert@GFORTRAN_1.0 4.3
+ _gfortran_set_exponent_r4@GFORTRAN_1.0 4.3
+ _gfortran_set_exponent_r8@GFORTRAN_1.0 4.3
+ _gfortran_set_fpe@GFORTRAN_1.0 4.3
+ _gfortran_set_max_subrecord_length@GFORTRAN_1.0 4.3
+ _gfortran_set_options@GFORTRAN_1.0 4.3
+ _gfortran_set_record_marker@GFORTRAN_1.0 4.3
+ _gfortran_shape_4@GFORTRAN_1.0 4.3
+ _gfortran_shape_8@GFORTRAN_1.0 4.3
+ _gfortran_siall_i1@GFORTRAN_1.4 4.6
+ _gfortran_siall_i2@GFORTRAN_1.4 4.6
+ _gfortran_siall_i4@GFORTRAN_1.4 4.6
+ _gfortran_siall_i8@GFORTRAN_1.4 4.6
+ _gfortran_siany_i1@GFORTRAN_1.4 4.6
+ _gfortran_siany_i2@GFORTRAN_1.4 4.6
+ _gfortran_siany_i4@GFORTRAN_1.4 4.6
+ _gfortran_siany_i8@GFORTRAN_1.4 4.6
+ _gfortran_signal_func@GFORTRAN_1.0 4.3
+ _gfortran_signal_func_int@GFORTRAN_1.0 4.3
+ _gfortran_signal_sub@GFORTRAN_1.0 4.3
+ _gfortran_signal_sub_int@GFORTRAN_1.0 4.3
+ _gfortran_siparity_i1@GFORTRAN_1.4 4.6
+ _gfortran_siparity_i2@GFORTRAN_1.4 4.6
+ _gfortran_siparity_i4@GFORTRAN_1.4 4.6
+ _gfortran_siparity_i8@GFORTRAN_1.4 4.6
+ _gfortran_size0@GFORTRAN_1.0 4.3
+ _gfortran_size1@GFORTRAN_1.0 4.3
+ _gfortran_sleep_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_sleep_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_i1@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_i2@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_i4@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_i8@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_r4@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_r8@GFORTRAN_1.0 4.3
+ _gfortran_sminval_i1@GFORTRAN_1.0 4.3
+ _gfortran_sminval_i2@GFORTRAN_1.0 4.3
+ _gfortran_sminval_i4@GFORTRAN_1.0 4.3
+ _gfortran_sminval_i8@GFORTRAN_1.0 4.3
+ _gfortran_sminval_r4@GFORTRAN_1.0 4.3
+ _gfortran_sminval_r8@GFORTRAN_1.0 4.3
+ _gfortran_spacing_r4@GFORTRAN_1.0 4.3
+ _gfortran_spacing_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_c4@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_c8@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_i4@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_i8@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__acos_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__acos_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__acosh_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__acosh_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__aimag_c4@GFORTRAN_1.0 4.3
+ _gfortran_specific__aimag_c8@GFORTRAN_1.0 4.3
+ _gfortran_specific__aint_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__aint_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__anint_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__anint_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__asin_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__asin_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__asinh_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__asinh_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan2_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan2_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__atanh_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__atanh_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__char_1_i4@GFORTRAN_1.0 4.3
+ _gfortran_specific__char_1_i8@GFORTRAN_1.0 4.3
+ _gfortran_specific__conjg_4@GFORTRAN_1.0 4.3
+ _gfortran_specific__conjg_8@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_c4@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_c8@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__cosh_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__cosh_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_i4@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_i8@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__dprod_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_c4@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_c8@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__index_1_i4@GFORTRAN_1.0 4.3
+ _gfortran_specific__index_1_i8@GFORTRAN_1.0 4.3
+ _gfortran_specific__len_1_i4@GFORTRAN_1.0 4.3
+ _gfortran_specific__len_1_i8@GFORTRAN_1.0 4.3
+ _gfortran_specific__log10_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__log10_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_c4@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_c8@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_i4@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_i8@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_4_4@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_4_8@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_8_4@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_8_8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_i4@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_i8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_c4@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_c8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sinh_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__sinh_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_c4@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_c8@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__tan_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__tan_r8@GFORTRAN_1.0 4.3
+ _gfortran_specific__tanh_r4@GFORTRAN_1.0 4.3
+ _gfortran_specific__tanh_r8@GFORTRAN_1.0 4.3
+ _gfortran_spread@GFORTRAN_1.0 4.3
+ _gfortran_spread_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_spread_char4_scalar@GFORTRAN_1.1 4.4.0
+ _gfortran_spread_char@GFORTRAN_1.0 4.3
+ _gfortran_spread_char_scalar@GFORTRAN_1.0 4.3
+ _gfortran_spread_scalar@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_c4@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_c8@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_i1@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_i2@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_i4@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_i8@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_r4@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_r8@GFORTRAN_1.0 4.3
+ _gfortran_srand@GFORTRAN_1.0 4.3
+ _gfortran_ssum_c4@GFORTRAN_1.0 4.3
+ _gfortran_ssum_c8@GFORTRAN_1.0 4.3
+ _gfortran_ssum_i1@GFORTRAN_1.0 4.3
+ _gfortran_ssum_i2@GFORTRAN_1.0 4.3
+ _gfortran_ssum_i4@GFORTRAN_1.0 4.3
+ _gfortran_ssum_i8@GFORTRAN_1.0 4.3
+ _gfortran_ssum_r4@GFORTRAN_1.0 4.3
+ _gfortran_ssum_r8@GFORTRAN_1.0 4.3
+ _gfortran_st_backspace@GFORTRAN_1.0 4.3
+ _gfortran_st_close@GFORTRAN_1.0 4.3
+ _gfortran_st_endfile@GFORTRAN_1.0 4.3
+ _gfortran_st_flush@GFORTRAN_1.0 4.3
+ _gfortran_st_inquire@GFORTRAN_1.0 4.3
+ _gfortran_st_iolength@GFORTRAN_1.0 4.3
+ _gfortran_st_iolength_done@GFORTRAN_1.0 4.3
+ _gfortran_st_open@GFORTRAN_1.0 4.3
+ _gfortran_st_read@GFORTRAN_1.0 4.3
+ _gfortran_st_read_done@GFORTRAN_1.0 4.3
+ _gfortran_st_rewind@GFORTRAN_1.0 4.3
+ _gfortran_st_set_nml_var@GFORTRAN_1.0 4.3
+ _gfortran_st_set_nml_var_dim@GFORTRAN_1.0 4.3
+ _gfortran_st_wait@GFORTRAN_1.1 4.4.0
+ _gfortran_st_write@GFORTRAN_1.0 4.3
+ _gfortran_st_write_done@GFORTRAN_1.0 4.3
+ _gfortran_stat_i4@GFORTRAN_1.0 4.3
+ _gfortran_stat_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_stat_i8@GFORTRAN_1.0 4.3
+ _gfortran_stat_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_stop_numeric@GFORTRAN_1.0 4.3
+ _gfortran_stop_numeric_f08@GFORTRAN_1.4 4.6
+ _gfortran_stop_string@GFORTRAN_1.0 4.3
+ _gfortran_store_exe_path@GFORTRAN_1.0 4.3
+ _gfortran_string_index@GFORTRAN_1.0 4.3
+ _gfortran_string_index_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_string_len_trim@GFORTRAN_1.0 4.3
+ _gfortran_string_len_trim_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_string_minmax@GFORTRAN_1.0 4.3
+ _gfortran_string_minmax_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_string_scan@GFORTRAN_1.0 4.3
+ _gfortran_string_scan_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_string_trim@GFORTRAN_1.0 4.3
+ _gfortran_string_trim_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_string_verify@GFORTRAN_1.0 4.3
+ _gfortran_string_verify_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_sum_c4@GFORTRAN_1.0 4.3
+ _gfortran_sum_c8@GFORTRAN_1.0 4.3
+ _gfortran_sum_i1@GFORTRAN_1.0 4.3
+ _gfortran_sum_i2@GFORTRAN_1.0 4.3
+ _gfortran_sum_i4@GFORTRAN_1.0 4.3
+ _gfortran_sum_i8@GFORTRAN_1.0 4.3
+ _gfortran_sum_r4@GFORTRAN_1.0 4.3
+ _gfortran_sum_r8@GFORTRAN_1.0 4.3
+ _gfortran_symlnk_i4@GFORTRAN_1.0 4.3
+ _gfortran_symlnk_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_symlnk_i8@GFORTRAN_1.0 4.3
+ _gfortran_symlnk_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_system@GFORTRAN_1.0 4.3
+ _gfortran_system_clock_4@GFORTRAN_1.0 4.3
+ _gfortran_system_clock_8@GFORTRAN_1.0 4.3
+ _gfortran_system_sub@GFORTRAN_1.0 4.3
+ _gfortran_time8_func@GFORTRAN_1.0 4.3
+ _gfortran_time_func@GFORTRAN_1.0 4.3
+ _gfortran_transfer_array@GFORTRAN_1.0 4.3
+ _gfortran_transfer_array_write@GFORTRAN_1.4 4.6
+ _gfortran_transfer_character@GFORTRAN_1.0 4.3
+ _gfortran_transfer_character_wide@GFORTRAN_1.1 4.4.0
+ _gfortran_transfer_character_wide_write@GFORTRAN_1.4 4.6
+ _gfortran_transfer_character_write@GFORTRAN_1.4 4.6
+ _gfortran_transfer_complex@GFORTRAN_1.0 4.3
+ _gfortran_transfer_complex_write@GFORTRAN_1.4 4.6
+ _gfortran_transfer_integer@GFORTRAN_1.0 4.3
+ _gfortran_transfer_integer_write@GFORTRAN_1.4 4.6
+ _gfortran_transfer_logical@GFORTRAN_1.0 4.3
+ _gfortran_transfer_logical_write@GFORTRAN_1.4 4.6
+ _gfortran_transfer_real@GFORTRAN_1.0 4.3
+ _gfortran_transfer_real_write@GFORTRAN_1.4 4.6
+ _gfortran_transpose@GFORTRAN_1.0 4.3
+ _gfortran_transpose_c4@GFORTRAN_1.0 4.3
+ _gfortran_transpose_c8@GFORTRAN_1.0 4.3
+ _gfortran_transpose_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_transpose_char@GFORTRAN_1.0 4.3
+ _gfortran_transpose_i4@GFORTRAN_1.0 4.3
+ _gfortran_transpose_i8@GFORTRAN_1.0 4.3
+ _gfortran_transpose_r4@GFORTRAN_1.0 4.3
+ _gfortran_transpose_r8@GFORTRAN_1.0 4.3
+ _gfortran_ttynam@GFORTRAN_1.0 4.3
+ _gfortran_ttynam_sub@GFORTRAN_1.0 4.3
+ _gfortran_umask_i4@GFORTRAN_1.0 4.3
+ _gfortran_umask_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_umask_i8@GFORTRAN_1.0 4.3
+ _gfortran_umask_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_unlink@GFORTRAN_1.0 4.3
+ _gfortran_unlink_i4_sub@GFORTRAN_1.0 4.3
+ _gfortran_unlink_i8_sub@GFORTRAN_1.0 4.3
+ _gfortran_unpack0@GFORTRAN_1.0 4.3
+ _gfortran_unpack0_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_unpack0_char@GFORTRAN_1.0 4.3
+ _gfortran_unpack1@GFORTRAN_1.0 4.3
+ _gfortran_unpack1_char4@GFORTRAN_1.1 4.4.0
+ _gfortran_unpack1_char@GFORTRAN_1.0 4.3
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.mipsel
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.mipsel
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.excprop
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.excprop
@@ -0,0 +1,17 @@
+ _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@CXXABI_1.3.3 4.4.0
+ _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@CXXABI_1.3.3 4.4.0
+ _ZNKSt15__exception_ptr13exception_ptrntEv@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptr4swapERS0_@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC1ERKS0_@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC1Ev@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC2ERKS0_@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC2Ev@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrD1Ev@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrD2Ev@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptraSERKS0_@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@CXXABI_1.3.3 4.4.0
+ _ZSt17current_exceptionv@CXXABI_1.3.3 4.4.0
+ _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@CXXABI_1.3.3 4.4.0
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.s390x
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.s390x
@@ -0,0 +1,5 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/lib32stdc++6.symbols.ppc64
+++ gcc-4.6-4.6.3/debian/lib32stdc++6.symbols.ppc64
@@ -0,0 +1,8 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.hurd-i386
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.hurd-i386
@@ -0,0 +1,101 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 4.2.1
+ GCC_3.3.1@GCC_3.3.1 4.2.1
+ GCC_3.3@GCC_3.3 4.2.1
+ GCC_3.4.2@GCC_3.4.2 4.2.1
+ GCC_3.4@GCC_3.4 4.2.1
+ GCC_4.0.0@GCC_4.0.0 4.2.1
+ GCC_4.2.0@GCC_4.2.0 4.2.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3.0
+ GLIBC_2.0@GLIBC_2.0 4.2.1
+ _Unwind_Backtrace@GCC_3.3 4.2.1
+ _Unwind_DeleteException@GCC_3.0 4.2.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1
+ _Unwind_Find_FDE@GCC_3.0 4.2.1
+ _Unwind_ForcedUnwind@GCC_3.0 4.2.1
+ _Unwind_GetCFA@GCC_3.3 4.2.1
+ _Unwind_GetDataRelBase@GCC_3.0 4.2.1
+ _Unwind_GetGR@GCC_3.0 4.2.1
+ _Unwind_GetIP@GCC_3.0 4.2.1
+ _Unwind_GetIPInfo@GCC_4.2.0 4.2.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1
+ _Unwind_GetRegionStart@GCC_3.0 4.2.1
+ _Unwind_GetTextRelBase@GCC_3.0 4.2.1
+ _Unwind_RaiseException@GCC_3.0 4.2.1
+ _Unwind_Resume@GCC_3.0 4.2.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1
+ _Unwind_SetGR@GCC_3.0 4.2.1
+ _Unwind_SetIP@GCC_3.0 4.2.1
+ __absvdi2@GCC_3.0 4.2.1
+ __absvsi2@GCC_3.0 4.2.1
+ __addvdi3@GCC_3.0 4.2.1
+ __addvsi3@GCC_3.0 4.2.1
+ __ashldi3@GCC_3.0 4.2.1
+ __ashrdi3@GCC_3.0 4.2.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 4.2.1
+ __clzdi2@GCC_3.4 4.2.1
+ __clzsi2@GCC_3.4 4.2.1
+ __cmpdi2@GCC_3.0 4.2.1
+ __ctzdi2@GCC_3.4 4.2.1
+ __ctzsi2@GCC_3.4 4.2.1
+ __deregister_frame@GLIBC_2.0 4.2.1
+ __deregister_frame_info@GLIBC_2.0 4.2.1
+ __deregister_frame_info_bases@GCC_3.0 4.2.1
+ __divdc3@GCC_4.0.0 4.2.1
+ __divdi3@GLIBC_2.0 4.2.1
+ __divsc3@GCC_4.0.0 4.2.1
+ __divxc3@GCC_4.0.0 4.2.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 4.2.1
+ __ffsdi2@GCC_3.0 4.2.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 4.2.1
+ __fixsfdi@GCC_3.0 4.2.1
+ __fixunsdfdi@GCC_3.0 4.2.1
+ __fixunsdfsi@GCC_3.0 4.2.1
+ __fixunssfdi@GCC_3.0 4.2.1
+ __fixunssfsi@GCC_3.0 4.2.1
+ __fixunsxfdi@GCC_3.0 4.2.1
+ __fixunsxfsi@GCC_3.0 4.2.1
+ __fixxfdi@GCC_3.0 4.2.1
+ __floatdidf@GCC_3.0 4.2.1
+ __floatdisf@GCC_3.0 4.2.1
+ __floatdixf@GCC_3.0 4.2.1
+ __floatundidf@GCC_4.2.0 4.2.1
+ __floatundisf@GCC_4.2.0 4.2.1
+ __floatundixf@GCC_4.2.0 4.2.1
+ __frame_state_for@GLIBC_2.0 4.2.1
+ __gcc_personality_v0@GCC_3.3.1 4.2.1
+ __lshrdi3@GCC_3.0 4.2.1
+ __moddi3@GLIBC_2.0 4.2.1
+ __muldc3@GCC_4.0.0 4.2.1
+ __muldi3@GCC_3.0 4.2.1
+ __mulsc3@GCC_4.0.0 4.2.1
+ __mulvdi3@GCC_3.0 4.2.1
+ __mulvsi3@GCC_3.0 4.2.1
+ __mulxc3@GCC_4.0.0 4.2.1
+ __negdi2@GCC_3.0 4.2.1
+ __negvdi2@GCC_3.0 4.2.1
+ __negvsi2@GCC_3.0 4.2.1
+ __paritydi2@GCC_3.4 4.2.1
+ __paritysi2@GCC_3.4 4.2.1
+ __popcountdi2@GCC_3.4 4.2.1
+ __popcountsi2@GCC_3.4 4.2.1
+ __powidf2@GCC_4.0.0 4.2.1
+ __powisf2@GCC_4.0.0 4.2.1
+ __powixf2@GCC_4.0.0 4.2.1
+ __register_frame@GLIBC_2.0 4.2.1
+ __register_frame_info@GLIBC_2.0 4.2.1
+ __register_frame_info_bases@GCC_3.0 4.2.1
+ __register_frame_info_table@GLIBC_2.0 4.2.1
+ __register_frame_info_table_bases@GCC_3.0 4.2.1
+ __register_frame_table@GLIBC_2.0 4.2.1
+ __subvdi3@GCC_3.0 4.2.1
+ __subvsi3@GCC_3.0 4.2.1
+ __ucmpdi2@GCC_3.0 4.2.1
+ __udivdi3@GLIBC_2.0 4.2.1
+ __udivmoddi4@GCC_3.0 4.2.1
+ __umoddi3@GLIBC_2.0 4.2.1
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.mipsel
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.mipsel
@@ -0,0 +1,2 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
--- gcc-4.6-4.6.3.orig/debian/lib32gfortran3.overrides
+++ gcc-4.6-4.6.3/debian/lib32gfortran3.overrides
@@ -0,0 +1,2 @@
+# automake gets it wrong for the multilib build
+lib32gfortran3 binary: binary-or-shlib-defines-rpath
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.mips
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.mips
@@ -0,0 +1,2 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
--- gcc-4.6-4.6.3.orig/debian/lib64gomp1.symbols
+++ gcc-4.6-4.6.3/debian/lib64gomp1.symbols
@@ -0,0 +1,4 @@
+libgomp.so.1 lib64gomp1 #MINVER#
+#include "libgomp1.symbols.common"
+ GOMP_atomic_end@GOMP_1.0 4.2.1
+ GOMP_atomic_start@GOMP_1.0 4.2.1
--- gcc-4.6-4.6.3.orig/debian/copyright
+++ gcc-4.6-4.6.3/debian/copyright
@@ -0,0 +1,567 @@
+This is the Debian GNU/Linux prepackaged version of the GNU compiler
+collection, containing Ada, C, C++, Fortran 95, Java, Objective-C,
+Objective-C++, and Treelang compilers, documentation, and support
+libraries.  In addition, Debian provides the gdc compiler, either in
+the same source package, or built from a separate same source package.
+Packaging is done by the Debian GCC Maintainers
+<debian-gcc@lists.debian.org>, with sources obtained from:
+
+  ftp://gcc.gnu.org/pub/gcc/releases/  (for full releases)
+  svn://gcc.gnu.org/svn/gcc/           (for prereleases)
+  http://bitbucket.org/goshawk/gdc     (for D)
+
+The current gcc-4.6 source package is taken from the SVN gcc-4_6-branch.
+
+Changes: See changelog.Debian.gz
+
+Debian splits the GNU Compiler Collection into packages for each language,
+library, and documentation as follows:
+
+Language       Compiler package  Library package    Documentation
+---------------------------------------------------------------------------
+Ada            gnat-4.6          libgnat-4.6        gnat-4.6-doc
+C              gcc-4.6                              gcc-4.6-doc
+C++            g++-4.6           libstdc++6         libstdc++6-4.6-doc
+D              gdc-4.6
+Fortran 95     gfortran-4.6      libgfortran3       gfortran-4.6-doc
+Go             gccgo-4.6         libgo0
+Java           gcj-4.6           libgcj10           libgcj-doc
+Objective C    gobjc-4.6         libobjc2
+Objective C++  gobjc++-4.6
+
+For some language run-time libraries, Debian provides source files,
+development files, debugging symbols and libraries containing position-
+independent code in separate packages:
+
+Language  Sources      Development   Debugging            Position-Independent
+------------------------------------------------------------------------------
+C++                                  libstdc++6-4.6-dbg  libstdc++6-4.6-pic
+D         libphobos-4.6-dev
+Java      libgcj10-src libgcj10-dev  libgcj10-dbg
+
+Additional packages include:
+
+All languages:
+libgcc1, libgcc2, libgcc4       GCC intrinsics (platform-dependent)
+gcc-4.6-base                    Base files common to all compilers
+gcc-4.6-soft-float              Software floating point (ARM only)
+gcc-4.6-source                  The sources with patches
+
+Ada:
+libgnatvsn-dev, libgnatvsn4.6   GNAT version library
+libgnatprj-dev, libgnatprj4.6   GNAT Project Manager library
+
+C:
+cpp-4.6, cpp-4.6-doc            GNU C Preprocessor
+libmudflap0-dev, libmudflap0    Library for instrumenting pointers
+libssp0-dev, libssp0            GCC stack smashing protection library
+libquadmath0                    Math routines for the __float128 type
+fixincludes                     Fix non-ANSI header files
+protoize                        Create/remove ANSI prototypes from C code
+
+Java:
+gij                             The Java bytecode interpreter and VM
+libgcj-common                   Common files for the Java run-time
+libgcj10-awt                    The Abstract Windowing Toolkit
+libgcj10-jar                    Java ARchive for the Java run-time
+
+C, C++ and Fortran 95:
+libgomp1-dev, libgomp1		GCC OpenMP (GOMP) support library
+
+Biarch support: On some 64-bit platforms which can also run 32-bit code,
+Debian provides additional packages containing 32-bit versions of some
+libraries.  These packages have names beginning with 'lib32' instead of
+'lib', for example lib32stdc++6.  Similarly, on some 32-bit platforms which
+can also run 64-bit code, Debian provides additional packages with names
+beginning with 'lib64' instead of 'lib'.  These packages contain 64-bit
+versions of the libraries.  (At this time, not all platforms and not all
+libraries support biarch.)  The license terms for these lib32 or lib64
+packages are identical to the ones for the lib packages.
+
+
+COPYRIGHT STATEMENTS AND LICENSING TERMS
+
+
+GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+
+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.
+
+Files that have exception clauses are licensed under the terms of the
+GNU General Public License; either version 3, or (at your option) any
+later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', version 3 of this
+license in `/usr/share/common-licenses/GPL-3'.
+
+The following runtime libraries are licensed under the terms of the
+GNU General Public License (v3 or later) with version 3.1 of the GCC
+Runtime Library Exception (included in this file):
+
+ - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*,
+   gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h,
+   gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c,
+   gcc/tsystem.h, gcc/typeclass.h).
+ - libdecnumber
+ - libgomp
+ - libssp
+ - libstdc++-v3
+ - libobjc
+ - libmudflap
+ - libgfortran
+ - The libgnat-4.6 Ada support library and libgnatvsn library.
+ - Various config files in gcc/config/ used in runtime libraries.
+
+In contrast, libgnatprj is licensed under the terms of the pure GNU
+General Public License.
+
+The libgcj library is licensed under the terms of the GNU General
+Public License, with a special exception:
+
+    Linking this library statically or dynamically with other modules
+    is making a combined work based on this library.  Thus, the terms
+    and conditions of the GNU General Public License cover the whole
+    combination.
+
+    As a special exception, the copyright holders of this library give
+    you permission to link this library with independent modules to
+    produce an executable, regardless of the license terms of these
+    independent modules, and to copy and distribute the resulting
+    executable under terms of your choice, provided that you also
+    meet, for each linked independent module, the terms and conditions
+    of the license of that module.  An independent module is a module
+    which is not derived from or based on this library.  If you modify
+    this library, you may extend this exception to your version of the
+    library, but you are not obligated to do so.  If you do not wish
+    to do so, delete this exception statement from your version.
+
+The libffi library is licensed under the following terms:
+
+    libffi - Copyright (c) 1996-2003  Red Hat, Inc.
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    ``Software''), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be included
+    in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+    IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+    OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+    ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+    OTHER DEALINGS IN THE SOFTWARE.
+
+
+The documentation is licensed under the GNU Free Documentation License (v1.2).
+On Debian GNU/Linux systems, the complete text of this license is in
+`/usr/share/common-licenses/GFDL-1.2'.
+
+
+GCC RUNTIME LIBRARY EXCEPTION
+
+Version 3.1, 31 March 2009
+
+Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+This GCC Runtime Library Exception ("Exception") is an additional
+permission under section 7 of the GNU General Public License, version
+3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
+bears a notice placed by the copyright holder of the file stating that
+the file is governed by GPLv3 along with this Exception.
+
+When you use GCC to compile a program, GCC may combine portions of
+certain GCC header files and runtime libraries with the compiled
+program. The purpose of this Exception is to allow compilation of
+non-GPL (including proprietary) programs to use, in this way, the
+header files and runtime libraries covered by this Exception.
+
+0. Definitions.
+
+A file is an "Independent Module" if it either requires the Runtime
+Library for execution after a Compilation Process, or makes use of an
+interface provided by the Runtime Library, but is not otherwise based
+on the Runtime Library.
+
+"GCC" means a version of the GNU Compiler Collection, with or without
+modifications, governed by version 3 (or a specified later version) of
+the GNU General Public License (GPL) with the option of using any
+subsequent versions published by the FSF.
+
+"GPL-compatible Software" is software whose conditions of propagation,
+modification and use would permit combination with GCC in accord with
+the license of GCC.
+
+"Target Code" refers to output from any compiler for a real or virtual
+target processor architecture, in executable form or suitable for
+input to an assembler, loader, linker and/or execution
+phase. Notwithstanding that, Target Code does not include data in any
+format that is used as a compiler intermediate representation, or used
+for producing a compiler intermediate representation.
+
+The "Compilation Process" transforms code entirely represented in
+non-intermediate languages designed for human-written code, and/or in
+Java Virtual Machine byte code, into Target Code. Thus, for example,
+use of source code generators and preprocessors need not be considered
+part of the Compilation Process, since the Compilation Process can be
+understood as starting with the output of the generators or
+preprocessors.
+
+A Compilation Process is "Eligible" if it is done using GCC, alone or
+with other GPL-compatible software, or if it is done without using any
+work based on GCC. For example, using non-GPL-compatible Software to
+optimize any GCC intermediate representations would not qualify as an
+Eligible Compilation Process.
+
+1. Grant of Additional Permission.
+
+You have permission to propagate a work of Target Code formed by
+combining the Runtime Library with Independent Modules, even if such
+propagation would otherwise violate the terms of GPLv3, provided that
+all Target Code was generated by Eligible Compilation Processes. You
+may then convey such a combination under terms of your choice,
+consistent with the licensing of the Independent Modules.
+
+2. No Weakening of GCC Copyleft.
+
+The availability of this Exception does not imply any general
+presumption that third-party software is unaffected by the copyleft
+requirements of the license of GCC.
+
+
+libquadmath/*.[hc]:
+
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Written by Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+   Written by Tobias Burnus  <burnus@net-b.de>
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty 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
+Library General Public License for more details.
+
+libquadmath/gdtoa:
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998, 1999, 2000, 2001 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+libquadmath/math:
+
+atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c:
+    Copyright 2001 by Stephen L. Moshier <moshier@na-net.ornl.gov> 
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c:
+   Changes for 128-bit __float128 are
+   Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+   and are incorporated herein by permission of the author.  The author 
+   reserves the right to distribute this material elsewhere under different
+   copying permissions.  These modifications are distributed here under 
+   the following terms:
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+ldexpq.c:
+   * Conversion to long double by Ulrich Drepper,
+   * Cygnus Support, drepper@cygnus.com.
+
+cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c,
+sinq_kernel.c, truncq.c:
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+isinfq.c:
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Change for long double by Jakub Jelinek <jj@ultra.linux.cz>
+ * Public domain.
+
+llroundq.c, lroundq.c, tgammaq.c:
+   Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+                  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+log10q.c:
+   Cephes Math Library Release 2.2:  January, 1991
+   Copyright 1984, 1991 by Stephen L. Moshier
+   Adapted for glibc November, 2001
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+remaining files:
+
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+
+
+libjava/classpath/resource/gnu/java/locale/*
+
+They are copyrighted and covered by the terms of use:
+http://www.unicode.org/copyright.html
+
+EXHIBIT 1
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+ Unicode Data Files include all data files under the directories 
+http://www.unicode.org/Public/ and http://www.unicode.org/reports/. 
+Unicode Software includes any source code published in the Unicode Standard or 
+under the directories http://www.unicode.org/Public/ and 
+http://www.unicode.org/reports/.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, 
+INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), 
+AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, 
+ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, 
+DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+	    COPYRIGHT AND PERMISSION NOTICE
+
+Copyrigh (c) 1991-2011 Unicode, Inc. All rights reserved. 
+Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy 
+of the Unicode data files and any associated documentation (the "Data Files") 
+or Unicode software and any associated documentation (the "Software") to deal 
+in the Data Files or Software without restriction, including without limitation 
+the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
+ of the Data Files or Software, and to permit persons to whom the Data Files 
+or Software are furnished to do so, provided that (a) the above copyright notice(s) 
+and this permission notice appear with all copies of the Data Files or Software, 
+(b) both the above copyright notice(s) and this permission notice appear 
+in associated documentation, and (c) there is clear notice in each modified 
+Data File or in the Software as well as in the documentation associated with 
+the Data File(s) or Software that the data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. 
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE
+ FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
+WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be used
+ in advertising or otherwise to promote the sale, use or other dealings in these 
+Data Files or Software without prior written authorization of the copyright holder.
+
+Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be registered
+ in some jurisdictions. All other trademarks and registered trademarks mentioned 
+herein are the property of their respective owners.
+
+
+gcc/go/gofrontend, libgo:
+
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+D:
+gdc-4.6                         GNU D Compiler
+libphobos-4.6-dev               D standard runtime library
+
+The D source package is made up of the following components.
+
+The D front-end for GCC:
+ - d/*
+
+Copyright (C) 2004-2007 David Friedman
+Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010
+
+This program 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 2 of the License, or
+(at your option) any later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', version 2 of this
+license in `/usr/share/common-licenses/GPL-2'.
+
+
+The DMD Compiler implementation of the D programming language:
+ - d/dmd/*
+
+Copyright (c) 1999-2010 by Digital Mars
+All Rights Reserved
+written by Walter Bright
+http://www.digitalmars.com
+License for redistribution is by either the Artistic License or
+the GNU General Public License (v1).
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', the Artistic
+license in `/usr/share/common-licenses/Artistic'.
+
+
+The Zlib data compression library:
+ - d/phobos/etc/c/zlib/*
+
+ (C) 1995-2004 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+
+The Phobos standard runtime library:
+ - d/phobos/*
+
+Unless otherwise marked within the file, each file in the source
+is under the following licenses:
+
+Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com
+Written by Walter Bright
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, in both source and binary form, subject to the following
+restrictions:
+
+ o  The origin of this software must not be misrepresented; you must not
+    claim that you wrote the original software. If you use this software
+    in a product, an acknowledgment in the product documentation would be
+    appreciated but is not required.
+ o  Altered source versions must be plainly marked as such, and must not
+    be misrepresented as being the original software.
+ o  This notice may not be removed or altered from any source
+    distribution.
+
+By plainly marking modifications, something along the lines of adding to each
+file that has been changed a "Modified by Foo Bar" line
+underneath the "Written by" line would be adequate.
+
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.qf
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.qf
@@ -0,0 +1,16 @@
+ _gfortran_maxloc0_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_maxloc1_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_minloc0_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_minloc1_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_mmaxloc0_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_mmaxloc1_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_mminloc0_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_mminloc1_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_smaxloc0_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_smaxloc1_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_sminloc0_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_sminloc1_16_r16@GFORTRAN_1.0 4.6
+ _gfortran_transfer_complex128@GFORTRAN_1.4 4.6
+ _gfortran_transfer_complex128_write@GFORTRAN_1.4 4.6
+ _gfortran_transfer_real128@GFORTRAN_1.4 4.6
+ _gfortran_transfer_real128_write@GFORTRAN_1.4 4.6
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.ia64
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.ia64
@@ -0,0 +1,7 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
+#include "libgfortran3.symbols.16"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.64"
+#include "libgfortran3.symbols.qf"
--- gcc-4.6-4.6.3.orig/debian/dummy.texi
+++ gcc-4.6-4.6.3/debian/dummy.texi
@@ -0,0 +1 @@
+@c This file is empty because the original one has a non DFSG free license (GFDL)
--- gcc-4.6-4.6.3.orig/debian/changelog
+++ gcc-4.6-4.6.3/debian/changelog
@@ -0,0 +1,10352 @@
+gcc-4.6 (4.6.3-14.7.201403121553) ucs4-0-0-0; urgency=low
+
+  * UCS auto build. The following patches have been applied to the original source package
+    00_hardcode-debian-settings-in-lsb-detection
+    gcc46-add-multiarch-links
+    gcc46-ftbfs
+
+ -- Univention builddaemon <buildd@univention.de>  Wed, 12 Mar 2014 15:53:25 +0100
+
+gcc-4.6 (4.6.3-14) unstable; urgency=low
+
+  * Update to SVN 20121121 (r193837) from the gcc-4_6-branch.
+    - Fix PR fortran/55314.
+  * Make explicit --{en,dis}able-multiarch options effecitive (Thorsten Glaser).
+  * Fix multiarch name for powerpc non-biarch builds.
+  * Fix 64bit C++ header installation on s390. Closes: #694482.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 27 Nov 2012 06:02:15 +0100
+
+gcc-4.6 (4.6.3-13) unstable; urgency=low
+
+  * Update to SVN 20121121 (r193700) from the gcc-4_6-branch.
+    - Fix PR middle-end/55219 (ice on valid), PR rtl-optimization/48374 (ice
+      on valid), PR rtl-optimization/53701 (ice on valid), PR middle-end/54945,
+      PR target/54950 (m32c), PR libfortran/54736 (wrong code).
+  * Split multiarch patches into local and upstreamed parts.
+  * Update symbols files for powerpcspe (Roland Stigge). Closes: #693326.
+  * Clean up libstdc++ man pages. Closes: #692446.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 22 Nov 2012 02:28:41 +0100
+
+gcc-4.6 (4.6.3-12) unstable; urgency=low
+
+  * Update to SVN 20121011 (r192379) from the gcc-4_6-branch.
+    - PARISC fix, test case fix.
+
+  [ Matthias Klose ]
+  * Merge from gnat-4.6 4.6.3-6:
+  * debian/patches/ada-symbolic-tracebacks.diff (src/gcc/ada/tracebak.c):
+    Use the GCC stack unwinder on GNU/kFreeBSD too.  Closes: #685559.
+  * debian/patches/gcc_ada_gcc-interface_Makefile.in.diff: link
+    libgnarl.so.4.6 with librt on GNU/Hurd.  Closes: #685561.
+  * debian/patches/ada-kfreebsd-gnu.diff: likewise on GNU/kFreeBSD.
+    Closes: #685562.
+  * debian/patches/ada-symbolic-tracebacks.diff (src/gcc/ada/tracebak.c):
+    new hunk.  Use the GCC stack unwinder on GNU/Hurd.  Closes: #681998.
+  * debian/patches/ada-link-lib.diff: do not use parallel makes to build
+    the GNAT tools.  Closes: #667184.
+
+  [ Thorsten Glaser ]
+  * Actually apply the libffi-m68k patch; update it from upstream
+  * Apply further m68k platform bugfixes (pr47955, m68k-fp-cmp-zero)
+  * Revert pr45144 fix on m68k only, it results in miscompilation
+  * Apply initial m68k-ada support patch; enable Ada for m68k
+  * debian/patches/ada-libgnatprj.diff: add support for m68k-*-linux.
+
+  [ Steven Chamberlain ]
+  * Fix kfreebsd build issues.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 12 Oct 2012 00:19:41 +0200
+
+gcc-4.6 (4.6.3-11) unstable; urgency=low
+
+  * Update to SVN 20121006 (r192156) from the gcc-4_6-branch.
+    - Fix PR other/43620, PR middle-end/54638, PR libstdc++/54228,
+      PR tree-optimization/33763 (closes: #672411), PR target/54785,
+      PR target/54741.
+  * On ARM, don't warn anymore that 4.4 has changed the `va_list' mangling,
+    taken from the trunk.
+  * Don't run the libstdc++ tests on mipsel, times out on the buildds.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 06 Oct 2012 14:05:54 +0200
+
+gcc-4.6 (4.6.3-10) unstable; urgency=low
+
+  * Update to SVN 20120918 (r191439) from the gcc-4_6-branch.
+    - Fix PR c/54552 (ice on valid), PR c/54103 (ice on valid),
+      PR target/54536 (AVR), PR middle-end/54515 (ice on valid),
+      PR target/45070 (ARM, wrong code), PR target/54220 (AVR),
+      PR driver/54335, PR rtl-optimization/54369 (mips, wrong code),
+      PR c++/54511 (ice on valid), PR fortran/54225 (ice on invalid),
+      PR fortran/53306 (ice on invalid), PR fortran/54556 (wrong code),
+      PR fortran/54208 (rejects valid).
+
+  [ Nobuhiro Iwamatsu ]
+  * Remove sh4-enable-ieee.diff, -mieee enabled by default. Closes: #685974.
+
+  [ Matthias Klose ]
+  * Fix PR tree-optimization/51987, backport from the trunk, Linaro only
+   (Matthew Gretton-Dann). LP: #1029454.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 18 Sep 2012 22:40:18 +0200
+
+gcc-4.6 (4.6.3-9) unstable; urgency=medium
+
+  * Update to SVN 20120820 (r190530) from the gcc-4_6-branch.
+    - ARM: Set vector type alignment to 8 bytes.
+    - Fix PR target/33135 (SH), PR rtl-optimization/53908 (wrong code),
+      PR middle-end/53433, PR middle-end/38474, PR middle-end/53790,
+      PR c++/52988 (wrong code), PR fortran/51758.
+
+  [ Aurelien JarnoÂ ]
+  * Add patches/ada-ppc64.diff to fix GNAT build on ppc64.
+  * powerpc64: fix non-multilib builds.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.6-2012.08 release.
+  * spu build: Move static libraries to version specific directories.
+    Closes: #680022.
+
+  [ Thibaut Girka ]
+  * Fix cross compilers for 64bit architectures when using
+    DEB_CROSS_NO_BIARCH.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 20 Aug 2012 13:13:45 +0200
+
+gcc-4.6 (4.6.3-8) unstable; urgency=low
+
+  * Update to SVN 20120624 (r188916) from the gcc-4_6-branch.
+    - Fix PR gcov-profile/53744, PR target/48126, PR target/53621,
+      PR target/53559, PR target/46261, PR target/52999, PR middle-end/53541,
+      PR target/53385, PR middle-end/51071, PR target/52407, PR c/52862,
+      PR fortran/53597, PR fortran/50619, PR fortran/53521, PR fortran/53389,
+      PR libstdc++/53678.
+  * Update the Linaro support to the 4.6-2012.06 release.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 24 Jun 2012 14:41:39 +0200
+
+gcc-4.6 (4.6.3-7) unstable; urgency=low
+
+  * Update to SVN 20120528 (r187930) from the gcc-4_6-branch.
+    - Fix PR target/53385, PR middle-end/51071, PR target/52407,
+      PR c/52862, PR fortran/53389.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 28 May 2012 16:12:02 +0200
+
+gcc-4.6 (4.6.3-6) unstable; urgency=low
+
+  * Update to SVN 20120522 (r187757) from the gcc-4_6-branch.
+    - Fix PR fortran/52864, PR c/53418, PR target/53416, PR target/46098,
+      PR target/52999, PR target/53228, PR target/53199, PR fortran/53310.
+  * Update the arm-dynamic-linker patch as found on the trunk, and
+    the arm-multilib-defaults patch as proposed for upstream.
+  * Update the Linaro support to the 4.6-2012.05 release.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 22 May 2012 13:24:37 +0800
+
+gcc-4.6 (4.6.3-5) unstable; urgency=medium
+
+  * Update to SVN 20120430 (r186999) from the gcc-4_6-branch.
+    - Fix PR middle-end/53084, PR lto/48246, PR target/53138.
+  * Don't try to run the libstdc++ testsuite if the C++ frontend isn't built.
+  * Don't configure with --enable-gnu-unique-object on kfreebsd and hurd.
+  * Treat wheezy the same as sid in more places (Peter Green). Closes: #670821.
+  * Fix setting MULTILIB_DEFAULTS for ARM multilib builds.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 01 May 2012 18:43:22 +0200
+
+gcc-4.6 (4.6.3-4) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20120416 (r186492) from the gcc-4_6-branch.
+    - Fix PR middle-end/52894, PR target/52717, PR target/52775,
+      PR target/52775.
+  * Update the Linaro support to the 4.6-2012.04 release.
+  * Fix PR middle-end/52870, taken from the trunk (Ulrich Weigand).
+    Linaro only. LP: #968766.
+  * Fix ICE (regression) in Linaro gcc-4.6 (Ulrich Weigand).
+    LP: #972648.
+  * Don't build ARM biarch runtime libraries, now built from the
+    gcc-4.7 sources.
+  * Set the ARM hard-float linker path according to the consensus:
+    http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html
+
+  [ Samuel Thibault ]
+  * ada-s-osinte-gnu.adb.diff, ada-s-osinte-gnu.ads.diff,
+    ada-s-taprop-gnu.adb.diff, gcc_ada_gcc-interface_Makefile.in.diff:
+    Add ada support for GNU/Hurd, thanks Svante Signell for the patches
+    and bootstrap! (Closes: #668425).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 16 Apr 2012 14:17:30 +0200
+
+gcc-4.6 (4.6.3-3) unstable; urgency=low
+
+  * Update to SVN 20120406 (r186200) from the gcc-4_6-branch.
+    - Fix PR c++/52796.
+
+  [ Matthias Klose ]
+  * Re-add missing dependency on libgcc in gcc-multilib. Closes: #667519.
+  * Add support for GNU locales for GNU/Hurd (Svante Signell).
+    Closes: #667662.
+  * Reenable the spu build on ppc64. Closes: #664617.
+  * Apply proposed patch for PR52894, stage1 bootstrap failure on hppa
+    (John David Anglin). Closes: #667969.
+
+  [ Nobuhiro Iwamatsu ]
+  * Fix cross build targeting sh4. Closes: #663028.
+  * Enable -mieee by default on sh4. Closes: #665328.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 08 Apr 2012 15:22:12 +0200
+
+gcc-4.6 (4.6.3-2) unstable; urgency=low
+
+  * Update to SVN 20120403 (r186115) from the gcc-4_6-branch.
+    - Fix PR target/52698, PR middle-end/51200, PR middle-end/52693,
+      PR target/52741, PR target/52736, PR regression/52696,
+      PR middle-end/51737, PR middle-end/52640, PR middle-end/48600,
+      PR pch/45979, PR rtl-optimization/52528, PR Bug middle-end/50232,
+      PR target/51871, PR target/50310, PR target/52408, PR target/52425,
+      PR tree-optimization/50031, PR tree-optimization/50969,
+      PR fortran/52469, PR fortran/52452, PR libstdc++/52433,
+      PR boehm-gc/52179, PR target/49461.
+
+  [ Matthias Klose ]
+  * Merge from gnat-4.6 4.6.3-1:
+  * debian/control.m4: remove dependencies on ada-compiler which is being
+    phased out.
+  * debian/patches/ada-libgnatvsn.diff (gnatvsn.ads): new hunk, revert an
+    upstream change to Current_Year to preserve the aliversion.
+  * Include -print-multiarch option in gcc --help output. Closes: #656998.
+  * Re-add build dependency on doxygen.
+  * Stop building runtime packages now built by gcc-4.7.
+  * Stop building gccgo-4.6, predating the Go language version 1.
+  * Drop the 4.6.2 symlink.
+  * Always configure with --enable-gnu-unique-object. LP: #949805.
+  * Fix ARM ABI conformance regression, taken from trunk/Linaro.
+
+  [ Samuel Thibault ]
+  * Apply hurd-fixes.diff on hurd-any.
+  * debian/patches/ada-bug564232.diff: Enable on hurd too.
+  * debian/patches/ada-libgnatprj.diff: Add hurd configuration.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 04 Apr 2012 00:10:02 +0200
+
+gcc-4.6 (4.6.3-1) unstable; urgency=low
+
+  * GCC 4.6.3 release.
+
+  [ Matthias Klose ]
+  * Linaro only:
+    Backport bug fixes (r106870, r106873) from the Linaro branch. LP: #922474.
+  * Fix PR target/50946, taken from the trunk. Closes: #641849.
+
+  [ Thorsten Glaser ]
+  * Backport PR rtl-optimization/47612 from the trunk, apply for m68k only.
+  * Don't set the bootstrap-lean target unconditionally.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 01 Mar 2012 15:31:27 +0100
+
+gcc-4.6 (4.6.2-16) unstable; urgency=medium
+
+  * Update to SVN 20120223 (r184520) from the gcc-4_6-branch (4.6.3 release
+    candidate.
+    - Fix PR tree-optimization/52286, PR c/52290, PR target/52330,
+      PR target/52294, PR target/52238, PR libstdc++/52300,
+      PR libstdc++/52317, PR libstdc++/52309.
+
+  [ Marcin Juszkiewicz ]
+  * Fix ARM sf/hf multilib dpkg-shlibdeps dependency generation.
+
+  [ Samuel Thibault ]
+  * Update hurd patch, fixing build failure. Closes: #661362.
+
+  [ Thorsten Glaser ]
+  * Apply patch from Alan Hourihane to fix err_bad_abi testcase on m68k.
+  * Apply patch from Andreas Schwab to fix floats on m68k.
+
+  [ Jonathan Nieder ]
+  * libstdc++6: Depends on libc (>= 2.11) for STB_GNU_UNIQUE support
+    (Eugene V. Lyubimkin). Closes: #584572.
+  * libstdc++6, libobjc2, libgfortran3, libmudflap0, libgomp1: Breaks
+    pre-multiarch gcc. Closes: #651550.
+  * libstdc++6: Lower priority from required to important. Closes: #661118.
+
+  [ Matthias Klose ]
+  * Fix path calculation for the libstdc++ -gdb.py file when installed into
+    multiarch locations. Closes: #661385. LP: #908163.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 26 Feb 2012 18:15:10 +0100
+
+gcc-4.6 (4.6.2-15) unstable; urgency=low
+
+  * Update to SVN 20120219 (r184373) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/46886, PR debug/51950, PR c/52181,
+      PR middle-end/52230, PR bootstrap/51969, PR c++/52247, PR c/5218,
+      PR debug/52260, PR target/52199.
+  * Don't add ARM sf/hf conflicts for cross package builds. LP: #913734.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 19 Feb 2012 15:01:53 +0100
+
+gcc-4.6 (4.6.2-14) unstable; urgency=low
+
+  * Update to SVN 20120210 (r184105) from the gcc-4_6-branch.
+    - Fix PR rtl-optimization/52139, PR rtl-optimization/52060,
+      PR middle-end/52074, PR target/52129, PR middle-end/48071,
+      PR target/52006, PR libmudflap/40778, PR rtl-optimization/51767,
+      PR middle-end/51768, PR middle-end/44777, PR debug/51695, PR c/51360,
+      PR debug/51517, PR middle-end/52140, PR target/51106, PR c++/51669,
+      PR driver/48306, PR tree-optimization/49536.
+  * Fix libstdc++-dev control file for cross builds.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 10 Feb 2012 19:11:07 +0100
+
+gcc-4.6 (4.6.2-13) unstable; urgency=low
+
+  * Update to SVN 20120208 (r184026) from the gcc-4_6-branch.
+    - Fix PR middle-end/51994, PR target/40068, PR target/52107,
+      PR tree-optimization/51118, PR rtl-optimization/51374, PR target/51835,
+      PR target/50313, PR middle-end/45678, PR ada/46192, PR fortran/52151,
+      PR fortran/52093, PR fortran/52012, PR fortran/52022, PR fortran/51966,
+      PR fortran/51948, PR fortran/51913, PR libstdc++/51795, PR libjava/48512.
+
+  * Install libstdc++ -gdb.py file into /usr/lib/debug.
+    Closes: #652160, #653446.
+  * Configure --with-system-root, remove trailing slash from system root.
+  * Strip whitespace from with_libssp definition. Closes: #653255.
+  * Fix control file generation for cross packages. LP: #913734.
+  * Update the Linaro support to the 4.6-2012.01-1 release.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 09 Feb 2012 01:06:15 +0100
+
+gcc-4.6 (4.6.2-12) unstable; urgency=low
+
+  * Update to SVN 20120120 (r183333) from the gcc-4_6-branch.
+    - Fix PR middle-end/48660, PR tree-optimization/51315,
+      PR target/51756 (avr), PR rtl-optimization/38644, PR ada/41929,
+      PR target/48743 (x86), PR tree-optimization/49642,
+      PR rtl-optimization/51821, PR tree-optimization/51759,
+      PR rtl-optimization/51821, PR target/51623, PR c++/51854, PR c++/51868,
+      PR c++/51344, PR fortran/51800, PR fortran/51904.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.6-2012.01-1 release.
+
+  [ Marcin Juszkiewicz ]
+  * Fix control file generation for ARM multiarch cross builds.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 20 Jan 2012 12:05:27 +0100
+
+gcc-4.6 (4.6.2-11) unstable; urgency=low
+
+  * Update to SVN 20120104 (r182901) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/51624.
+  * gcc-volatile-bitfields.diff: Remove, integrated upstream.
+  * Replace Fortran 95 with Fortran in package descriptions.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 05 Jan 2012 06:04:20 +0100
+
+gcc-4.6 (4.6.2-10) unstable; urgency=low
+
+  * Update to SVN 20120104 (r182882) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/49651, PR tree-optimization/51042,
+      PR tree-optimization/51070, PR target/51623, PR rtl-optimization/50396,
+      PR target/51643, PR lto/41159, PR tree-optimization/51583,
+      PR debug/49951, PR c++/51416, PR c++/51331, PR fortran/51502,
+      PR fortran/51310, PR libstdc++/51711, PR libstdc++/51626,
+      PR libstdc++/51083, PR libstdc++/50862, PR libstdc++/51540,
+      PR bootstrap/51686, PR bootstrap/49907.
+
+  [ Matthias Klose ]
+  * Don't provide the 4.6.1 symlink anymore.
+  * Fix generating libphobos dependency for gdc. Addresses: #653078.
+  * Link libmudflapth.so with -lpthread.
+  * Apply proposed backport for PR middle-end/48660 (Richard Sandiford).
+    Closes: #630752, LP: #736661.
+  * On armel/armhf, allow g*-multilib installation using the runtime
+    libraries of the corresponding multiarch architecture.
+  * Fix location of .jinfo files. Addresses: #654579.
+
+  [ Aurelien Jarno ]
+  * Re-enable parallel builds on kfreebsd-i386, as the problem from bug
+    #637236 only affects kfreebsd-amd64.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 04 Jan 2012 18:29:28 +0100
+
+gcc-4.6 (4.6.2-9) unstable; urgency=medium
+
+  * Update to SVN 20111217 (r182430) from the gcc-4_6-branch.
+    - Fix PR c++/51331.
+  * Fix build dependencies for armel/armhf.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 17 Dec 2011 10:40:26 +0100
+
+gcc-4.6 (4.6.2-8) unstable; urgency=low
+
+  * Update to SVN 20111216 (r182407) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/51485, PR tree-optimization/50569, PR c++/51248,
+      PR c++/51406, PR c++/51161, PR rtl-optimization/49720, PR fortran/50923,
+      PR fortran/51338, PR fortran/51550, PR fortran/47545, PR fortran/49050,
+      PR fortran/51075.
+
+  [ Matthias Klose ]
+  * gdc-4.6: Provide <gnu-triplet>-{gdc,gdmd}-4.6 symlinks.
+
+  [Ludovic Brenta]
+  Merge from gnat-4.6 (4.6.2-2) unstable; urgency=low
+  [��²�³�µ�½Ñ�ı ��µÑ�µÑÑ�ş���²]
+  * debian/patches/pr47818.diff: new.  Fixes: #614402.
+  * debian/rules.patch: apply it.
+
+  Merge from gnat-4.6 (4.6.2-1) unstable; urgency=low
+  [Ludovic Brenta]
+  * Suggest ada-reference-manual-{html,info,pdf,text} instead of just
+    ada-reference-manual which no longer exists.
+  * Do not suggest gnat-gdb, superseded by gdb.
+  * Downgrade libgnat{vsn,prj}4.6-dev to priority extra; they conflict
+    with their 4.4 counterparts and priority optional packages may not
+    conflict with one another, per Policy 2.5.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 16 Dec 2011 16:59:30 +0100
+
+gcc-4.6 (4.6.2-7) unstable; urgency=medium
+
+  * Update to SVN 20111210 (r182189) from the gcc-4_6-branch.
+    - Fix PR rtl-optimization/51469, PR tree-optimization/51466,
+      PR tree-optimization/50078, PR target/51408, PR fortran/51310,
+      PR fortran/51448.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Dec 2011 20:12:33 +0100
+
+gcc-4.6 (4.6.2-6) unstable; urgency=low
+
+  * Update to SVN 20111208 (r182120) from the gcc-4_6-branch.
+    - Fix PR c++/51265, PR bootstrap/50888, PR target/51393 (ix86),
+      PR target/51002 (AVR), PR target/51345 (AVR), PR debug/48190,
+      PR fortran/50684, PR fortran/51218, PR target/50906 (closes: #650318),
+      PR tree-optimization/51315 (closes: #635126), PR tree-optimization/50622,
+      PR fortran/51435, PR debug/51410, PR c/51339, PR rtl-optimization/48721,
+      PR middle-end/51323 (LP: #897583), PR middle-end/50074,
+      PR middle-end/50074.
+
+  [ Matthias Klose ]
+  * Run the libstdc++ testsuite on all architectures again. Closes: #622699.
+  * Apply proposed patch for PR target/50906 (powerpcspe only). Closes: #650318.
+  * Fix PR target/49030 (ARM), taken from Linaro. Closes: #633479.
+  * Fix PR target/50193 (ARM), taken from Linaro. Closes: #642127.
+  * Install the libstdc++.so-gdb.py file. LP: #883269.
+  * Fix PR c++/50114, backport from trunk. LP: #827806.
+  * Merge changes to allow gcc-snapshot cross builds, taken from Linaro.
+  * Update the Linaro support to the 4.6 branch.
+
+  [ Marcin Juszkiewicz ]
+  * Fix issues with gcc-snapshot cross builds.
+  * Allow building Linaro binary packages in a single package.
+  * Apply hardening patches for cross builds when enabled for native builds.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 08 Dec 2011 17:14:35 +0100
+
+gcc-4.6 (4.6.2-5) unstable; urgency=low
+
+  * Update to SVN 20111121 (r181596) from the gcc-4_6-branch.
+    - Fix PR c++/50870, PR c++/50608, PR target/47997, PR target/48108,
+      PR target/45233, PR middle-end/51077, PR target/30282, PR c++/50608,
+      PR target/50979, PR target/4810, PR rtl-optimization/51187,
+      PR target/50493, PR target/49992, PR target/49641, PR c++/51150,
+      PR target/50678, PR libstdc++/51142, PR libstdc++/51133.
+
+  [ Matthias Klose ]
+  * Use the default gcc as stage1 compiler for all architectures.
+
+  [ Marcin Juszkiewicz ]
+  * debian/control.m4: Use BASEDEP in more places.
+  * Work around debhelper not calling the correct strip for cross builds.
+  * Drop dpkg-cross build dependency for cross builds.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 21 Nov 2011 22:26:49 +0100
+
+gcc-4.6 (4.6.2-4) unstable; urgency=low
+
+  * Update to SVN 20111103 (r180830) from the gcc-4_6-branch.
+    - Fix PR target/50691, PR c++/50901, PR target/50945,
+      PR rtl-optimization/47918, PR libstdc++/50880.
+
+  * Configure the armel build by explicitly passing --with-arch=armv4t
+    --with-float=soft.
+  * libffi: Simplify PowerPC assembly and avoid CPU-specific string
+    instructions (Kyle Moffett).
+  * Fix MULTIARCH_DIRNAME on powerpcspe (Kyle Moffett). Closes: #647324.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 03 Nov 2011 12:03:41 -0400
+
+gcc-4.6 (4.6.2-3) unstable; urgency=low
+
+  * disable parallel builds on kfreebsd-* even if DEB_BUILD_OPTIONS
+    enables them (continued investigation for #637236).
+
+ -- Ludovic Brenta <lbrenta@debian.org>  Sat, 29 Oct 2011 00:42:46 +0200
+
+gcc-4.6 (4.6.2-2) unstable; urgency=low
+
+  * Update to SVN 20111028 (r180603) from the gcc-4_6-branch.
+    - Fix PR target/50875.
+
+  * Fix gcj, gdc and gnat builds, broken by the stage1 cross-compiler
+    package dependency fixes.
+  * Update the Linaro support to the 4.6 branch.
+  * Fix gcc-4.6-hppa64 installation. Closes: #646805.
+  * For ARM hard float, set the dynamic linker to
+    /lib/arm-linux-gnueabihf/ld-linux.so.3.
+  * Don't use parallel builds on kfreebsd.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 28 Oct 2011 16:36:55 +0200
+
+gcc-4.6 (4.6.2-1) unstable; urgency=low
+
+  * GCC 4.6.2 release.
+
+  * Fix libgcc installation into /usr/lib/gcc/<triplet>/4.6. Closes: #645021.
+  * Fix stage1 cross-compiler package dependencies (Kyle Moffett).
+    Closes: #644439.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 26 Oct 2011 13:10:44 +0200
+
+gcc-4.6 (4.6.1-16) unstable; urgency=medium
+
+  * Update to SVN 20111019 (r180208) from the gcc-4_6-branch.
+    - Fix PR target/49967 (ia64), PR tree-optimization/50189, PR fortran/50273,
+      PR tree-optimization/50700, PR c/50565 (closes: #642144),
+      PR target/49965 (sparc), PR middle-end/49801, PR c++/49216,
+      PR c++/49855, PR c++/49896, PR c++/44473, PR c++/50611, PR fortran/50659,
+      PR tree-optimization/50723, PR tree-optimization/50712, PR obj-c++/48275,
+      PR c++/50618, PR fortran/47023, PR fortran/50570, PR fortran/50718,
+      PR libobjc/49883, PR libobjc/50002, PR target/50350, PR middle-end/50386,
+      PR middle-end/50326, PR target/50737, PR c++/50787, PR c++/50531,
+      PR fortran/50016, PR target/50737.
+
+  [ Matthias Klose ]
+  * Fix libjava installation into /usr/lib/gcc/<triplet>/4.6.
+  * Fix powerpc and ppc64 libffi builds (Kyle Moffett).
+  * Apply proposed patch for PR target/50350. Closes: #642313.
+  * Re-apply the fix for PR tree-optimization/49911 on ia64.
+  * Apply proposed patch for PR target/50106 (ARM).
+
+  [Xavier Grave]
+  * debian/patches/address-clauses-timed-entry-calls.diff: new; backport
+    bug fix about address clauses and timed entry calls.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-kfreebsd-gnu.diff: new; provide dummy
+    implementations of some optional POSIX Threads functions missing in
+    GNU/kFreeBSD. Closes: #642128.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 20 Oct 2011 00:24:13 +0200
+
+gcc-4.6 (4.6.1-15) unstable; urgency=low
+
+  * Update to SVN 20111010 (r179753) from the gcc-4_6-branch.
+    - Fix PR target/50652.
+  * Update the Linaro support to the 4.6-2011.10-1 release.
+  * Fix gcc-spu installation.
+  * Restore symlink for subminor GCC version. Closes: #644849.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 10 Oct 2011 17:10:40 +0200
+
+gcc-4.6 (4.6.1-14) unstable; urgency=low
+
+  * Update to SVN 20111008 (r179710) from the gcc-4_6-branch.
+    - Fix PR inline-asm/50571, PR c++/46105, PR c++/50508, PR libstdc++/50529,
+      PR libstdc++/49559, PR c++/40831, PR fortran/48706, PR target/49049,
+      PR tree-optimization/49279, PR fortran/50585, PR fortran/50625,
+      PR libstdc++/48698.
+
+  [ Matthias Klose ]
+  * Configure and build to install into /usr/lib/gcc/<triplet>/4.6.
+    Closes: #643891.
+  * libgcc1: Versioned break to gcc-4.3.
+  * Fix gcc-multiarch for i386-linux-gnu with disabled multilibs.
+  * libffi: Fix PowerPC soft-floating-point support (Kyle Moffett).
+
+  [ Marcin Juszkiewicz ]
+  * Enable gcc-snapshot cross builds.
+
+  [ Iain Buclaw ]
+  * Port gdc to GCC-4.6.
+
+  [ Aurelien Jarno ]
+  * Backport fix for PR target/49696 from the trunk (Closes: #633443).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 08 Oct 2011 14:40:49 +0200
+
+gcc-4.6 (4.6.1-13) unstable; urgency=low
+
+  * Update to SVN 20110926 (r179207) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/50472, PR tree-optimization/50413,
+      PR tree-optimization/50412, PR c++/20039, PR c++/42844,
+      PR libstdc++/50510, PR libstdc++/50509.
+  * Revert the fix for PR tree-optimization/49911, bootstrap error on ia64.
+  * libffi: Define FFI_MMAP_EXEC_WRIT on kfreebsd-* (Petr Salinger).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 26 Sep 2011 19:59:55 +0200
+
+gcc-4.6 (4.6.1-12) unstable; urgency=low
+
+  * Update to SVN 20110924 (r179140) from the gcc-4_6-branch.
+    - Fix PR target/50464, PR target/50341, PR middle-end/49886,
+      PR target/50091, PR c++/50491, PR c++/50442 (Closes: #642176).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 Sep 2011 10:39:32 +0200
+
+gcc-4.6 (4.6.1-11) unstable; urgency=low
+
+  * Update to SVN 20110917 (r178926) from the gcc-4_6-branch.
+    - Fix PR c++/50424, PR c++/48320, PR fortran/49479.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.6-2011.09-1 release.
+
+  [ Aurelien Jarno ]
+  * gcc.c (for_each_path): Allocate memory for multiarch suffix.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 17 Sep 2011 10:53:36 +0200
+
+gcc-4.6 (4.6.1-10) unstable; urgency=medium
+
+  * Update to SVN 20110910 (r178746) from the gcc-4_6-branch.
+    - Fix PR middle-end/50266, PR tree-optimization/49911,
+      PR tree-optimization/49518, PR tree-optimization/49628,
+      PR tree-optimization/49628, PR target/50310, PR target/50289,
+      PR c++/50255, PR c++/50309, PR c++/49267, PR libffi/49594.
+    - Revert fix for PR middle-end/49886, causing PR middle-end/50295.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Sep 2011 03:38:48 +0200
+
+gcc-4.6 (4.6.1-9) unstable; urgency=low
+
+  * Update to SVN 20110903 (r178501) from the gcc-4_6-branch.
+    - Fix PR target/50090, PR middle-end/50116, PR target/50202, PR c/50179,
+      PR c++/50157, PR fortran/50163, PR libfortran/50192,
+      PR middle-end/49886, PR tree-optimization/50178, PR c++/50207,
+      PR c++/50089, PR c++/50220, PR c++/50234, PR c++/50224,
+      PR libstdc++/50268.
+
+  [ Matthias Klose ]
+  * Fix gcc --print-multilib-osdir for non-biarch architectures.
+  * Fix multiarch for non-biarch builds. Closes: #635860.
+  * Move the lto plugin to the cpp packge. Closes: #639531.
+
+  [ Thorsten Glaser ]
+  * [m68k] Disable multilib. Closes: #639303.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 03 Sep 2011 20:11:50 +0200
+
+gcc-4.6 (4.6.1-8) unstable; urgency=low
+
+  * Update to SVN 20110824 (r178027) from the gcc-4_6-branch.
+    Fix PR fortran/49792, PR tree-optimization/48739, PR target/50092,
+    PR c++/50086, PR c++/50054, PR fortran/50050, PR fortran/50130,
+    PR fortran/50129, PR fortran/49792, PR fortran/50109, PR c++/50024,
+    PR c++/46862.
+
+  * Properly disable multilib builds for selected libraries on armel and armhf.
+  * Update and re-enable the gcc-ice patch.
+  * Update and re-enable the gcc-cloog-dl patch.
+  * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility,
+    taken from the trunk.
+  * Re-work the multiarch patches.
+  * Break older gcj-4.6 and gnat-4.6 versions, changed gcc_lib_dir.
+  * Omit the target alias from the go libdir.
+  * Linaro updates from the 4.6-2011.07-stable branch.
+  * Revert:
+    - libjava: Build with the system libffi PIC library.
+  * For native builds, gcc -print-file-name now resolve . and ..,
+    and removes the subminor version number.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 24 Aug 2011 10:22:42 +0200
+
+gcc-4.6 (4.6.1-7) unstable; urgency=low
+
+  * Update to SVN 20110816 (r177780) from the gcc-4_6-branch.
+    - Fix PR middle-end/49923.
+
+  [ Matthias Klose ]
+  * gcc-4.6-multilib: Depend on biarch quadmath library. Closes: #637174.
+  * Don't hard-code build dependency on gcc-multilib.
+  * Build-depends on python when building java.
+  * Fix thinko in java::lang::Class::finalize (taken from the trunk).
+  * Add support for ARM 64bit sync intrinsics (David Gilbert). Only
+    enable for armv7 or better.
+  * libjava: Build with the system libffi PIC library.
+  * Disable gnat multilib builds on armel and armhf.
+
+  Merge from gnat-4.6 (4.6.1-4) unstable; urgency=low
+
+  [Ludovic Brenta]
+  * debian/patches/ada-symbolic-tracebacks.diff
+    (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I-
+    to gnatgcc; fixes FTBFS on i386 and closes: #637418.
+
+  Merge from gnat-4.6 (4.6.1-3) unstable; urgency=low
+
+  [��²�³�µ�½Ñ�ı ��µÑ�µÑÑ�ş���²]
+  * debian/patches/ada-mips.diff: do not use the alternate stack on mips,
+    as on mipsel.  Closes: #566234.
+
+  [Ludovic Brenta]
+  * debian/patches/pr49940.diff: new; copy the definition of function
+    lwp_self from s-osinte-freebsd.ads to s-osinte-kfreebsd-gnu.ads.
+    Closes: #636291.
+  * debian/patches/pr49944.diff: new.  Closes: #636692.
+  * debian/patches/pr49819.diff: drop, merged upstream.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 16 Aug 2011 13:11:25 +0200
+
+gcc-4.6 (4.6.1-6) unstable; urgency=low
+
+  * Update to SVN 20110807 (r177547) from the gcc-4_6-branch.
+    - Fix PR rtl-optimization/49799, PR debug/49871, PR target/47364,
+      PR target/49866, PR tree-optimization/49671, PR target/39386,
+      PR ada/4981, PR fortran/45586, PR fortran/49791, PR middle-end/49897,
+      PR middle-end/49898, PR target/49920, PR target/47908 (closes: #635919),
+      PR c++/43886, PR c++/49593, PR c++/49803, PR c++/49924, PR c++/49260,
+      PR fortran/49885, PR fortran/48876, PR libstdc++/49925, PR target/50001,
+      PR tree-optimization/49948, PR c++/48993, PR c++/49921, PR c++/49669,
+      PR c++/49988, PR fortran/49112.
+
+  [ Aurelien Jarno ]
+  * Update patches/kbsd-gnu.diff for recent changes. Closes: #635195.
+  * Add s390x support.
+
+  [ Marcin Juszkiewicz ]
+  * Fixes for multilib cross builds. LP: #816852, #819147.
+
+  [ Matthias Klose ]
+  * Fix libgo installation for cross builds.
+  * Only apply arm-multilib when building for multilib.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 07 Aug 2011 18:20:00 +0200
+
+gcc-4.6 (4.6.1-5) unstable; urgency=low
+
+  * Update to SVN 20110723 (r176672) from the gcc-4_6-branch.
+    - Fix PR target/49541, PR tree-optimization/49768, PR middle-end/49675,
+      PR target/49746, PR middle-end/49732, PR tree-optimization/49725,
+      PR target/49723, PR target/49541, PR tree-opt/49309, PR c++/49785,
+      PR ada/48711, PR ada/46350, PR fortran/49648, PR testsuite/49753,
+      PR tree-optimization/49309, PR tree-optimization/45819, PR target/49600,
+      PR fortran/49708, PR libstdc++/49293.
+  * Update the Linaro support to the 4.6-2011.07-0 release.
+    - Fix PR target/49335. LP: #791327.
+  * Update gcc-multiarch:
+    - Add -print-multiarch option.
+    - Fix library path for non-default multilib(s).
+    - Handle `.' in MULTILIB_DIRNAMES.
+  * Add support to build multilib on armel and armhf, only enable it for
+    Ubuntu/oneiric. LP: #810360.
+  * cpp-4.6: Add empty multiarch directories for the non-default multilibs,
+    needed for relative lookups from startfile_prefixes.
+  * Fix PR c++/49756, backport from trunk. LP: #721378.
+  * libgcc1: Add breaks to gcc-4.1 and gcc-4.3. Closes: #634821.
+  * Configure for DEB_TARGET_MULTIARCH defaults.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 23 Jul 2011 08:15:50 +0200
+
+gcc-4.6 (4.6.1-4) unstable; urgency=low
+
+  * Update to SVN 20110714 (r176280) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672,
+      PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296,
+      PR target/49487, PR tree-optimization/49651, PR ada/48711.
+
+  [ Matthias Klose ]
+  * Build Go on alpha for gcc-snapshot builds.
+  * For multicore ARM, clear both caches, not just the dcache (proposed
+    patch by Andrew Haley).
+  * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk.
+    LP: #807573.
+  * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit
+    off function pointers (Richard Sandiford). LP: #721531.
+
+  [ Marcin Juszkiewicz ]
+  * Define DEB_TARGET_MULTIARCH macro.
+  * debian/rules2: Macro and configuration consolidation.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 14 Jul 2011 19:38:49 +0200
+
+gcc-4.6 (4.6.1-3) unstable; urgency=medium
+
+  * Update to SVN 20110709 (r176108) from the gcc-4_6-branch.
+    - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598,
+      PR fortran/49479, PR target/49621, PR target/46779, PR target/49660,
+      PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640,
+      PR c++/48157, PR c/49644, PR fortran/48926.
+    - Apparently fixes a boost issue. Closes: #632938.
+  * Apply proposed patch for PR fortran/49690. Closes: #631204.
+
+  * README.Debian: New section 'Former and/or inactive maintainers'.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 10 Jul 2011 00:04:34 +0200
+
+gcc-4.6 (4.6.1-2) unstable; urgency=medium
+
+  * Update to SVN 20110705 (r175840) from the gcc-4_6-branch.
+    - Fix PR target/47997, PR c++/49528, PR c++/49440, PR c++/49418,
+      PR target/44643, PR tree-optimization/49615, PR tree-optimization/49572,
+      PR target/34734, PR tree-optimization/49539, PR tree-optimizations/49516,
+      PR target/49089, PR rtl-optimization/49014, PR target/48273,
+      PR fortran/49466, PR libfortran/49296, PR libffi/46660, PR debug/49262,
+      PR rtl-optimization/49472, PR rtl-optimization/49619, PR fortran/49623,
+      PR fortran/49540.
+
+  [Ludovic Brenta, ��²�³�µ�½Ñ�ı ��µÑ�µÑÑ�ş���², Xavier Grave]
+  * Adjust patches to GCC 4.6.
+  * Remove patches merged upstream:
+    - debian/patches/ada-arm-eabi.diff
+    - debian/patches/ada-bug589164.diff
+    - debian/patches/ada-bug601133.diff
+    - debian/patches/ada-gnatvsn.diff
+    - debian/patches/ada-mips.diff
+    - debian/patches/ada-polyorb-dsa.diff
+
+  [Ludovic Brenta]
+  * debian/patches/ada-acats.diff: set LD_LIBRARY_PATH, ADA_INCLUDE_PATH
+    and ADA_OBJECTS_PATH so that the GNAT testsuite runs.
+  * debian/patches/adalibgnat{vsn,prj}.diff,
+    debian/rules.d/binary-ada.mk: install libgnat{vsn,prj}.so.* in the correct
+    multiarch directory.
+  * debian/control.m4, debian/rules.d/binary-ada.mk: move the SJLJ version
+    of the Ada run-time library to a new package, gnat-4.6-sjlj.
+  * debian/control.m4 (libgnatvsn4.6, libgnatvsn4.6-dbg, libgnatprj4.6,
+    libgnatprj4.6-dbg): pre-depend on multiarch-support and add
+    Multi-Arch: same.
+
+  [Nicolas Boulenguez]
+  * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.6.
+  * debian/gnat.1: remove the version number of GCC.  Mention gnathtml.
+
+  [ Matthias Klose ]
+  * Do not install the spu and hppa64 cross compilers into the multiarch path.
+  * Update the Linaro support to 20110704.
+
+  [ Thorsten Glaser ]
+  * Apply changes from src:gcc-4.4 for m68k support. Closes: #632380.
+    - debian/rules.defs: Remove m68k from locale_no_cpus.
+    - debian/patches/gcc-multiarch.diff: Add m68k multiarch_mappings.
+    - debian/patches/pr43804.diff: Fix backported from SVN.
+    - debian/rules.patch: Add pr43804.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 05 Jul 2011 10:45:56 +0200
+
+gcc-4.6 (4.6.1-1) unstable; urgency=low
+
+  * GCC 4.6.1 release.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-gnatvsn.diff,
+    debian/patches/ada-polyorb-dsa.diff: remove backports, no longer
+    needed.
+
+  [ Matthias Klose ]
+  * Fix plugin header installation. Closes: #631082.
+  * Stop passing -Wno-error=unused-but-set-parameter and
+    -Wno-error=unused-but-set-variable if -Werror is present.
+    This was a temporary workaround introduced in 4.6.0~rc1-2. Closes: #615157.
+  * gcc-4.6-spu: Install the lto plugin. Closes: #631772.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 27 Jun 2011 13:54:04 +0200
+
+gcc-4.6 (4.6.0-14) unstable; urgency=low
+
+  * Update to SVN 20110616 (r175102) from the gcc-4_6-branch.
+    - Fix PR debug/48459, PR fortran/49103, PR rtl-optimization/49390,
+      PR c++/49117, PR c++/49369, PR c++/49290, PR target/44618,
+      PR tree-optimization/49419 (closes: #630567).
+  * Update the Linaro support to the 4.6-2011.06-0 release.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 16 Jun 2011 16:10:33 +0200
+
+gcc-4.6 (4.6.0-13) unstable; urgency=low
+
+  * Update to SVN 20110611 (r174958) from the gcc-4_6-branch.
+  * Extend multiarch support for mips/mipsel.
+  * Fix control files for gcj multiarch builds.
+  * Update libstdc++ symbols files.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 11 Jun 2011 20:49:42 +0200
+
+gcc-4.6 (4.6.0-12) unstable; urgency=medium
+
+  * Update to SVN 20110608 (r174800) from the gcc-4_6-branch.
+    - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702,
+      PR tree-optimization/49243, PR c++/49134, PR target/49238,
+      PR gcov-profile/49299, PR c++/48780, PR c++/49298, PR fortran/49268.
+  * Fix c++ biarch header installation on i386. LP: #793411.
+  * Enable multiarch.
+  * Add multiarch attributes for gnat and libgnat packages.
+  * Add multiarch attributes for libgcj* packages.
+  * Adjust build dependency on multiarch glibc.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 08 Jun 2011 11:26:52 +0200
+
+gcc-4.6 (4.6.0-11) unstable; urgency=low
+
+  * Update to SVN 20110604 (r174637) from the gcc-4_6-branch.
+    - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263,
+      PR target/43700, PR target/43995, PR tree-optimization/49217,
+      PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657,
+      PR c++/49176, PR fortran/48955, PR tree-optimization/49038,
+      PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953,
+      PR c++/49276, PR fortran/49265, PR fortran/45786.
+  * Configure the hppa64 and spu cross builds with --enable-plugin.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 04 Jun 2011 16:12:27 +0200
+
+gcc-4.6 (4.6.0-10) unstable; urgency=high
+
+  * Update to SVN 20110526 (r174290) from the gcc-4_6-branch.
+    - Fix PR target/44643, PR c++/49165, PR tree-optimization/49161,
+      PR target/49128, PR tree-optimization/44897, PR target/49133,
+      PR c++/44994, PR c++/49156, PR c++/45401, PR c++/44311, PR c++/44311,
+      PR c++/45698, PR c++/46145, PR c++/46245, PR c++/46696, PR c++/47184,
+      PR c++/48935, PR c++/45418, PR c++/45080, PR c++/48292, PR c++/49136,
+      PR c++/49042, PR c++/48884, PR c++/49105, PR c++/47263, PR c++/47336,
+      PR c++/47544, PR c++/48617, PR c++/48424, PR libstdc++/49141,
+      PR libobjc/48177.
+  * Proposed fix for PR tree-optimization/48702, PR tree-optimization/49144.
+    Closes: #627795.
+  * Proposed fix for PR fortran/PR48955.
+  * Add some conditionals to build the package on older releases.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 26 May 2011 16:00:49 +0200
+
+gcc-4.6 (4.6.0-9) unstable; urgency=low
+
+  * Update to SVN 20110524 (r174102) from the gcc-4_6-branch.
+    - Fix PR lto/49123, PR debug/49032, PR c/49120, PR middle-end/48973,
+      PR target/49104, PR middle-end/49029, PR c++/48647, PR c++/48945,
+      PR c++/48780, PR c++/49066, PR libstdc++/49058, PR target/49104.
+  * Use gcc-4.4 as the bootstrap compiler for kfreebsd to work around
+    a bootstrap issue.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 24 May 2011 09:41:35 +0200
+
+gcc-4.6 (4.6.0-8) unstable; urgency=low
+
+  * Update to SVN 20110521 (r173994) from the gcc-4_6-branch.
+    - Fix PR target/48986, PR preprocessor/48677, PR tree-optimization/48975,
+      PR tree-optimization/48822, PR debug/48967, PR debug/48159,
+      PR target/48857, PR target/48495, PR tree-optimization/48837,
+      PR tree-optimization/48611, PR tree-optimization/48794, PR c++/48859,
+      PR c++/48574, PR fortran/48889, PR target/49002, PR lto/48207,
+      PR tree-optimization/49039, PR tree-optimization/49018, PR lto/48703,
+      PR tree-optimization/48172, PR tree-optimization/48172, PR c++/48873,
+      PR tree-optimization/49000, PR c++/48869, PR c++/49043, PR c++/49082,
+      PR c++/48948, PR c++/48745, PR c++/48736, PR bootstrap/49086,
+      PR tree-optimization/49079, PR tree-optimization/49073.
+  * Update the Linaro support to the 4.6-2011.05-0 release.
+  * pr45979.diff: Update to the version from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 21 May 2011 12:19:10 +0200
+
+gcc-4.6 (4.6.0-7) unstable; urgency=low
+
+  * Update to SVN 20110507 (r173528) from the gcc-4_6-branch.
+    - Fix PR middle-end/48597, PR c++/48656, PR fortran/48112,
+      PR fortran/48279, PR fortran/48788, PR tree-optimization/48809,
+      PR target/48262, PR fortran/48462, PR fortran/48746,
+      PR fortran/48810, PR fortran/48800, PR libstdc++/48760,
+      PR libgfortran/48030, PR preprocessor/48192, PR lto/48846,
+      PR target/48723, PR fortran/48894, PR target/48900, PR target/48252,
+      PR c++/40975, PR target/48252, PR target/48774, PR c++/48838,
+      PR c++/48749, PR ada/48844, PR fortran/48720, PR libstdc++/48750,
+      PR c++/48909, PR c++/48911, PR c++/48446, PR c++/48089.
+
+  * Fix issue with volatile bitfields vs. inline asm memory constraints,
+    taken from the trunk, apply for ARM only. Addresses: #625825.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 07 May 2011 14:54:51 +0200
+
+gcc-4.6 (4.6.0-6) unstable; urgency=low
+
+  * Update to SVN 20110428 (r173059) from the gcc-4_6-branch.
+    - Fix PR c/48685 (closes: #623161), PR tree-optimization/48717, PR c/48716,
+      PR c/48742, PR debug/48768, PR tree-optimization/48734,
+      PR tree-optimization/48731, PR other/48748, PR c++/42687, PR c++/48726,
+      PR c++/48707, PR fortran/48588, PR libstdc++/48521, PR c++/48046,
+      PR preprocessor/48740.
+  * Update the ibm/gcc-4_6-branch to 20110428.
+  * Use gcc-4.6 as bootstrap compiler on kfreebsd-*.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 28 Apr 2011 10:33:52 +0200
+
+gcc-4.6 (4.6.0-5) unstable; urgency=low
+
+  * Update to SVN 20110421 (r172845) from the gcc-4_6-branch.
+    - Fix PR target/48288, PR tree-optimization/48611, PR lto/48148,
+      PR lto/48492, PR fortran/47976, PR c++/48594, PR c++/48657,
+      PR c++/46304, PR target/48708, PR middle-end/48695.
+
+  * Update the Linaro support to the 4.6-2011.04-0 release.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 21 Apr 2011 22:50:25 +0200
+
+gcc-4.6 (4.6.0-4) unstable; urgency=medium
+
+  * Update to SVN 20110419 (r172584) from the gcc-4_6-branch.
+    - Fix PR target/48678, PR middle-end/48661, PR tree-optimization/48616,
+      PR lto/48538, PR c++/48537, PR c++/48632, PR testsuite/48675,
+      PR libstdc++/48635, PR libfortran/47571.
+
+  [ Aurelien Jarno ]
+  * Enable SSP on mips/mipsel.
+
+  [ Matthias Klose ]
+  * (Build-)depend on binutils 2.21.51.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Apr 2011 23:45:16 +0200
+
+gcc-4.6 (4.6.0-3) unstable; urgency=high
+
+  * Update to SVN 20110416 (r172584) from the gcc-4_6-branch.
+    - Fix PR rtl-optimization/48143, PR target/48142, PR target/48349,
+      PR debug/48253, PR fortran/48291, PR target/16292, PR c++/48280,
+      PR c++/48212, PR c++/48369, PR c++/48281, PR c++/48265, PR lto/48246,
+      PR libstdc++/48398, PR bootstrap/48431, PR tree-optimization/48377,
+      PR debug/48343, PR rtl-optimization/48144, PR debug/48466, PR c/48517,
+      PR middle-end/48335, PR c++/48450, PR target/47829, PR c++/48534,
+      PR c++/48523, PR libstdc++/48566, PR libstdc++/48541, PR target/48366,
+      PR libstdc++/48465, PR middle-end/48591, PR target/48605,
+      PR middle-end/48591, PR target/48090, PR tree-optimization/48195,
+      PR rtl-optimization/48549, PR c++/48594, PR c++/48570, PR c++/48574,
+      PR fortran/48360, PR fortran/48456, PR libstdc++/48631,
+      PR libstdc++/48635, PR libstdc++/48476.
+
+  [ Matthias Klose ]
+  * libjava-jnipath.diff: Add /usr/lib/<multiarch>/jni as jnipath too.
+  * Add mudflap support for varargs (patch taken from the trunk).
+  * gcc-4.6-plugin-dev: Install gtype.state.
+  * Bootstrap with gcc-4.4 -g -O2 on armel.
+  * Fix linker plugin configuration. Closes: #620661.
+  * Update the Linaro support for GCC-4.6.
+  * gcc-snapshot builds:
+    - Fix build with multiarch changes.
+    - Use gcc-snapshot as the bootstrap compiler on armel.
+    - Re-enable building java in the gcc-snapshot package.
+  * Build supporting multiarch on wheezy/sid.
+  * Adjust (build)-dependency to new libgmp-dev name.
+
+  [ Marcin Juszkiewicz ]
+  * Configure stage1 cross builds with --disable-libquadmath.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 16 Apr 2011 17:02:30 +0200
+
+gcc-4.6 (4.6.0-2) unstable; urgency=low
+
+  * Update to SVN 20110329 (r171700) from the gcc-4_6-branch.
+    - Fix PR bootstrap/48135, PR target/47553, PR middle-end/48269,
+      PR tree-optimization/48228, PR middle-end/48134, PR middle-end/48031,
+      PR other/48179, PR other/48221, PR other/48234, PR target/48237,
+      PR debug/48204, PR c/42544, PR c/48197, PR rtl-optimization/48141,
+      PR rtl-optimization/48141, PR c++/48166, PR c++/48296, PR c++/48289,
+      PR c++/47999, PR c++/48313, Core 1232, Core 1148, PR c++/47504,
+      PR c++/47570, PR preprocessor/48248, PR c++/48319.
+
+  [ Matthias Klose ]
+  * Update NEWS files.
+  * Configure the hppa64 cross build with --disable-libquadmath.
+  * Don't build armhf from the Linaro branch.
+  * Don't try to build Go on sh4.
+
+  [ Marcin Juszkiewicz ]
+  * Fixes issues with staged cross builds. LP: #741855, #741853.
+  * Fix libdir setting for multiarch enabled cross builds. LP: #741846.
+  * Drop alternatives for cross builds. LP: #676454.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 29 Mar 2011 23:22:07 +0200
+
+gcc-4.6 (4.6.0-1) unstable; urgency=low
+
+  * GCC 4.6.0 release.
+
+  * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618865.
+  * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX,
+    taken from the trunk.
+  * Fix PR target/47487 ICE building libgo, taken from the trunk.
+  * Merge multiarch changes from the gcc-4.5 package.
+  * Apply proposed patch to reduce the overhead of dwarf2 location tracking.
+    Addresses: #618748.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 26 Mar 2011 03:03:21 +0100
+
+gcc-4.6 (4.6.0~rc1-3) experimental; urgency=low
+
+  * GCC 4.6.0 release candidate 2.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 22 Mar 2011 22:11:42 +0100
+
+gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low
+
+  [ Loic Minier ]
+  * Rework config/vxworks-dummy.h installation snippet to test
+    DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips%
+    sh% sparc%) as to also install this header on other ports targetting the
+    relevant upstream CPUs such as armhf.  Add a comment pointing at the
+    upstream bug.
+  * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches
+    arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals
+    armel.  Add a comment pointing at the Debian bug and indicating that this
+    is only useful for older dpkg-dev versions.
+  * debian/rules.def: fix "armel" entry to "arm" in list of
+    DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries.
+  * debian/rules2: drop commented out GCC #42509 workaround as this was fixed
+    upstream in 4.4+.
+  * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for
+    arm as ths is what the Debian arm, armel and armhf port use.
+  * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid
+    duplication, as a comment called out for.
+  * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding
+    whether to enable profiledbootstrap.
+  * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well.
+  * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU.
+  * Patched a couple of comments mentioning armel to also mention armhf.
+  * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported
+    from a patch sent on the upstream mailing-list.
+
+  [ Matthias Klose ]
+  * Update libstdc++ symbols files.
+  * Update libgfortran symbols files.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 Mar 2011 13:53:48 +0100
+
+gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low
+
+  * Update to SVN 20110320 (r171192) from the gcc-4_6-branch.
+
+  [ Matthias Klose ]
+  * Update gcc-default-ssp* patches for the release candidate.
+  * Pass -Wno-error=unused-but-set-parameter if -Werror is present (temporary
+    for rebuild tests).
+  * Always configure --with-plugin-ld, always install liblto_plugin.so.
+
+  [ Marcin Juszkiewicz ]
+  * Add conflicts with -4.5-*dev packages. Closes: #618450.
+
+  [ Petr Salinger]
+  * Disable lock-2.c test on kfreebsd-*. Closes: #618988.
+  * Re-enable parallel builds on kfreebsd.
+  * Package lto_plugin for kfreebsd-* and Hurd.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 Mar 2011 13:53:48 +0100
+
+gcc-4.6 (4.6.0~rc1-1) experimental; urgency=low
+
+  * Build from the GCC 4.6.0 release candidate tarball.
+
+  [ Matthias Klose ]
+  * Disable Go on powerpc. Closes: #615827.
+  * Fix lintian errors for the -plugin-dev package.
+  * Update kbsd-gnu.diff (Petr Salinger). Closes: #615826.
+  * Disable parallel builds on kfreebsd (Petr Salinger).
+  * Update gmp (build) dependencies.
+  * Update GFDL compliant builds. Closes: #609161.
+  * For GFDL compliant builds, build a dummy s-tm-texi without access
+    to the texinfo sources.
+  
+  [ Aurelien Jarno ]
+  * Import symbol files for kfreebsd-amd64, kfreebsd-i386, sh4 and 
+    sparc64 from gcc-4.5.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 14 Mar 2011 19:01:08 +0100
+
+gcc-4.6 (4.6-20110227-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Update libquadmath symbols file.
+  * gcc-4.6-plugin-dev: Install gengtype.
+
+  [ Sebastian Andrzej Siewior ]
+  * Remove -many on powerpcspe (__SPE__).
+  * Remove classic FPU opcodes from libgcc if target has no support for them
+    (powerpcspe).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Feb 2011 22:33:45 +0100
+
+gcc-4.6 (4.6-20110216-1) experimental; urgency=low
+
+  * GCC snapshot, taken from the trunk.
+  * Pass --no-add-needed by default to the linker. See
+    http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols
+    in indirect dependent shared libraries" for more information.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 Feb 2011 23:55:32 +0100
+
+gcc-4.6 (4.6-20110125-1) experimental; urgency=low
+
+  * debian/copyright: Add unicode copyright for
+    libjava/classpath/resource/gnu/java/locale/* files. Addresses: #609161.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 26 Jan 2011 03:42:10 +0100
+
+gcc-4.6 (4.6-20110123-1) experimental; urgency=low
+
+  * GCC snapshot, taken from the trunk.
+  * Don't run the libstdc++ testsuite on mipsel, times out on the buildd.
+
+  [ Marcin Juszkiewicz ]
+  * Fix biarch/triarch cross builds.
+    - dpkg-shlibdeps failed to find libraries for 64 or n32 builds
+    - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 23 Jan 2011 12:14:49 +0100
+
+gcc-4.6 (4.6-20110116-1) experimental; urgency=low
+
+  * GCC snapshot, taken from the trunk.
+  * Update patches for the trunk.
+  * Pass -Wno-error=unused-but-set-variable if -Werror is present (temporary
+    for rebuild tests).
+  * Work around PR libffi/47248, force a read only eh frame section.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 16 Jan 2011 23:28:28 +0100
+
+gcc-4.6 (4.6-20110105-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Rename and update libobjc symbols files.
+  * Update cloog/ppl build dependencies.
+  * Adjust libstdc++ configure and paths for stylesheets and dtds.
+  * Update copyright for libquadmath, libgo, gcc/go/gofrontend.
+  * Enable Go for more architectures.
+  * DP: libgo: Fix GOARCH for i386 biarch, add GOARCH for powerpc
+
+  [ Kees Cook ]
+  * Update hardening patches for GCC-4.6. LP: #696990.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 05 Jan 2011 22:29:57 +0100
+
+gcc-4.6 (4.6-20101220-1) maverick; urgency=low
+
+  * GCC snapshot, taken from the trunk.
+
+ -- Matthias Klose <doko@ubuntu.com>  Tue, 21 Dec 2010 00:16:19 +0100
+
+gcc-4.5 (4.5.2-7) unstable; urgency=low
+
+  * Update to SVN 20110323 (r171351) from the gcc-4_5-branch.
+    - Fix PR c++/47125, PR fortran/47348, PR libstdc++/48114,
+      PR libfortran/48066, PR target/48171, PR target/47862.
+      PR preprocessor/48192.
+
+  [ Steve Langasek ]
+  * Make dpkg-dev versioned build-dependency conditional on whether we want
+    to build for multiarch.
+  * Add a new patch, gcc-multiarch+biarch.diff, used only when building for
+    multiarch to set our multilib paths to the correct relative directories.
+  * debian/rules.defs: support turning on multiarch build by architecture;
+    but don't enable this yet, we still need to wait for dpkg-dev.
+  * When DEB_HOST_MULTIARCH is available (i.e., with the next dpkg upload),
+    use it as our multiarch path.
+  * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports,
+    not $(libdir)/jvm-exports.
+  * OTOH, libgcj_bc *is* in $(libdir).
+  * the spu build is not a multiarch build; look in the correct
+    non-multiarch directory.
+  * debian/rules2: pass --libdir also for stageX builds, needed in order to
+    successfully build for multiarch.
+  * debian/rules2: $(usr_lib) for a cross-build should not include the
+    multiarch dir as part of the path.
+  * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of
+    the patch, namely, that the multilib dir for the default variant is
+    always equal to libdir (the multiarch dir), and we walk up the tree
+    to find lib<qual> for the secondary variant.
+  * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib
+    directory rewriting for biarch paths with multiarch as we do without;
+    still needed in the near term.
+  * Put our list of patches in README.Debian.$(DEB_TARGET_ARCH) instead of
+    in README.Debian, so that the individual files are architecture-neutral
+    and play nicely with multiarch.  LP: #737846.
+  * Add a comment at the bottom of README.Debian with a pointer to the new
+    file listing the patches.
+
+  [ Loic Minier ]
+  * Rework config/vxworks-dummy.h installation snippet to test
+    DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips%
+    sh% sparc%) as to also install this header on other ports targetting the
+    relevant upstream CPUs such as armhf.  Add a comment pointing at the
+    upstream bug.
+  * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches
+    arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals
+    armel.  Add a comment pointing at the Debian bug and indicating that this
+    is only useful for older dpkg-dev versions.
+  * debian/rules.def: fix "armel" entry to "arm" in list of
+    DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries.
+  * debian/rules2: drop commented out GCC #42509 workaround as this was fixed
+    upstream in 4.4+.
+  * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for
+    arm as ths is what the Debian arm, armel and armhf port use.
+  * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid
+    duplication, as a comment called out for.
+  * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding
+    whether to enable profiledbootstrap.
+  * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well.
+  * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU.
+  * Patched a couple of comments mentioning armel to also mention armhf.
+  * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported
+    from a patch sent on the upstream mailing-list.
+
+  [ Matthias Klose ]
+  * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX,
+    taken from the trunk.
+  * Fix PR preprocessor/48192, make conditional macros not defined for
+    #ifdef, proposed patch.
+  * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618864.
+  * Fix issue with volatile bitfields, default to -fstrict-volatile-bitfields
+    again on armel for Linaro builds. LP: #675347.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Mar 2011 15:44:01 +0100
+
+gcc-4.5 (4.5.2-6) unstable; urgency=low
+
+  * Update to SVN 20110312 (r170895) from the gcc-4_5-branch.
+    - Fix PR tree-optimization/45967, PR tree-optimization/47278,
+      PR target/47862, PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47705,
+      PR c++/47488, PR libgfortran/47778, PR c++/48029.
+
+  [ Steve Langasek ]
+  * Make sure our libs Pre-Depend on 'multiarch-support' when building for
+    multiarch.
+  * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the
+    multiarch path for amd64 / kfreebsd-amd64, not i486 or i686.  This lets
+    us use a common set of paths on both Debian and Ubuntu, regardless of
+    the target default optimization level.
+  * debian/rules.conf: when building for multiarch, we need to be sure we
+    are building against a libc-dev that supports the corresponding paths. 
+    (the referenced version number for this needs to be bumped once this is
+    officially in the archive.)
+
+  [ Matthias Klose ]
+  * Don't run the libmudflap testsuite on hppa; times out on the buildd.
+  * Don't run the libstdc++ testsuite on mipsel; times out on the buildd.
+  * Post Linaro 4.5-2011.03-0 release changes (up to 20110313).
+  * Undefine LINK_EH_SPEC before redefining it to turn off warnings on
+    powerpc.
+  * Update gmp (build) dependencies.
+
+  [ Aurelien Jarno ]
+  * Add symbol files on kfreebsd-i386.
+  * Add symbol files on kfreebsd-amd64.
+  * Add symbol files on sparc64.
+  * Add symbol files on sh4.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 13 Mar 2011 17:30:48 +0100
+
+gcc-4.5 (4.5.2-5) unstable; urgency=low
+
+  * Update to SVN 20110305 (r170696) from the gcc-4_5-branch.
+    - Fix PR target/43810, PR fortran/47886, PR tree-optimization/47615,
+      PR middle-end/47639, PR tree-optimization/47890, PR libfortran/47830,
+      PR tree-optimization/46723, PR target/45261, PR target/45808,
+      PR c++/46159, PR c++/47904, PR fortran/47886, PR libstdc++/47433,
+      PR target/42240, PR fortran/47878, PR libfortran/47694.
+  * Update the Linaro support to the 4.5-2011.03-0 release.
+    - Fix LP: #705689, LP: #695302, LP: #710652, LP: #710623, LP: #721021,
+      LP: #721021, LP: #709453.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 06 Mar 2011 02:58:01 +0100
+
+gcc-4.5 (4.5.2-4) unstable; urgency=low
+
+  * Update to SVN 20110222 (r170382) from the gcc-4_5-branch.
+    - Fix PR target/43653, PR fortran/47775, PR target/47840,
+      PR libfortran/47830.
+
+  [ Matthias Klose ]
+  * Don't apply a patch twice.
+  * Build libgcc_s with -fno-stack-protector, when not building from the
+    Linaro branch.
+  * Backport proposed fix for PR tree-optimization/46723 from the trunk.
+
+  [ Steve Langasek ]
+  * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure
+    Multi-Arch: same doesn't get set for libmudflap when building an
+    Architecture: all cross-compiler package.
+  * debian/rules2: use $libdir for libiberty.a.
+  * debian/patches/gcc-multiarch-*.diff: make sure we're using the same
+    set_multiarch_path definition for all variants.
+
+  [ Sebastian Andrzej Siewior ]
+  * PR target/44364
+  * Remove -many on powerpcspe (__SPE__)
+  * Remove classic FPU opcodes from libgcc if target has no support for them
+    (powerpcspe)
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Feb 2011 00:35:54 +0100
+
+gcc-4.5 (4.5.2-3) experimental; urgency=low
+
+  * Update to SVN 20110215 (r170181) from the gcc-4_5-branch.
+    - Fix PR rtl-optimization/44469, PR tree-optimization/47411,
+      PR bootstrap/44699, PR target/44392, PR fortran/47331, PR fortran/47448,
+      PR pch/14940, PR rtl-optimization/47166, PR target/47272, PR target/47580,
+      PR tree-optimization/47541, PR target/44606, PR boehm-gc/34544,
+      PR fortran/47569, PR libstdc++/47709, PR libstdc++/46914, PR libffi/46661.
+  * Update the Linaro support to the 4.5 2011.02-0 release.
+  * Pass --no-add-needed by default to the linker. See
+    http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols
+    in indirect dependent shared libraries" for more information.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 Feb 2011 15:29:26 +0100
+
+gcc-4.5 (4.5.2-2) experimental; urgency=low
+
+  * Update to SVN 20110123 (r169142) from the gcc-4_5-branch.
+    - Fix PR target/46915, PR target/46729, PR libgcj/46774, PR target/47038,
+      PR target/46685, PR target/45447, PR tree-optimization/46758,
+      PR tree-optimization/45552, PR tree-optimization/43023,
+      PR middle-end/46734, PR fortran/45338, PR preprocessor/39213,
+      PR target/43309, PR fortran/46874, PR tree-optimization/47286,
+      PR tree-optimization/44592, PR target/47201, PR c/47150, PR target/46880,
+      PR middle-end/45852, PR tree-optimization/43655, PR debug/46893,
+      PR rtl-optimization/46804, PR rtl-optimization/46865, PR target/41082,
+      PR tree-optimization/46864, PR fortran/45777, PR tree-optimization/47365,
+      PR tree-optimization/47167, PR target/47318, PR target/46655,
+      PR fortran/47394, PR libstdc++/47354.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.5 2011.01-1 release.
+  * Don't build packages now built from the gcc-4.6 package for architectures
+    with a sucessful gcc-4.6 build.
+
+  [ Kees Cook ]
+  * debian/patches/gcc-default-ssp.patch: do not ignore -fstack-protector-all
+    (LP: #691722).
+
+  [ Marcin Juszkiewicz ]
+  * Fix biarch/triarch cross builds.
+    - dpkg-shlibdeps failed to find libraries for 64 or n32 builds
+    - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 23 Jan 2011 11:54:52 +0100
+
+gcc-4.5 (4.5.2-1) experimental; urgency=low
+
+  * GCC 4.5.2 release.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 18 Dec 2010 14:14:38 +0100
+
+gcc-4.5 (4.5.1-12) experimental; urgency=low
+
+  * Update to SVN 20101129 (r167272) from the gcc-4_5-branch.
+    - Fix PR fortran/45742, PR tree-optimization/46498, PR target/45807,
+      PR target/44266, PR rtl-optimization/46315, PR tree-optimization/44545,
+      PR tree-optimization/46491, PR rtl-optimization/46571, PR target/31100,
+      PR c/46547, PR fortran/46638, PR tree-optimization/46675, PR debug/46258,
+      PR ada/40777.
+
+  [ Matthias Klose ]
+  * Use lib instead of lib64 as the 64bit system dir on biarch
+    architectures defaulting to 64bit. Closes: #603597.
+  * Fix powerpc and s390 builds when biarch is disabled.
+  * Backport PR bootstrap/44768, miscompilation of dpkg on ARM
+    with -O2 (Chung-Lin Tang). LP: #674146.
+  * Update libgcc2 symbols file. Closes: #602099.
+
+  [ Marcin Juszkiewicz ]
+  * Do not depend on target mpfr and zlib -dev packages for cross builds.
+    LP: #676027.
+
+  [ Konstantinos Margaritis ]
+  * Add support for new target architecture `armhf'. Closes: #603948.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 22 Nov 2010 08:12:08 +0100
+
+gcc-4.5 (4.5.1-11) experimental; urgency=low
+
+  * Update to SVN 20101114 (r166728) from the gcc-4_5-branch.
+    - Fix PR fortran/45742.
+  * Don't hardcode debian/patches when referencing patches. Closes: #600502.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 14 Nov 2010 08:36:27 +0100
+
+gcc-4.5 (4.5.1-10) experimental; urgency=low
+
+  * Update to SVN 20101112 (r166653) from the gcc-4_5-branch.
+    - Fix PR rtl-optimization/44691, PR tree-optimization/46355,
+      PR tree-optimization/46177, PR c/44772, PR tree-optimization/46099,
+      PR middle-end/43690, PR tree-optimization/46165, PR middle-end/46419,
+      PR tree-optimization/46107, PR tree-optimization/45314, PR debug/45939,
+      PR rtl-optimization/46237, PR middle-end/44569, PR middle-end/44569,
+      PR tree-optimization/45902, PR target/46153, PR rtl-optimization/46226,
+      PR tree-optimization/46167, PR target/46098, PR target/45946,
+      PR fortran/42169, PR middle-end/46019, PR c/45969, PR c++/45894,
+      PR c++/46160, PR c++/45983, PR fortran/46152, PR fortran/46140,
+      PR libstdc++/45999, PR libgfortran/46373, PR libgfortran/46010,
+      PR fortran/46007, PR c++/46024.
+  * Update the Linaro support to the 4.5 2010.11 release.
+  * Update gcc-4.5 source dependencies. Closes: #600503.
+  * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown),
+    taken from the trunk.
+  * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"),
+    taken from the trunk. Closes: #600888.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 12 Nov 2010 18:34:47 +0100
+
+gcc-4.5 (4.5.1-9) experimental; urgency=low
+
+  * Update to SVN 20101014 (r165474) from the gcc-4_5-branch.
+    - Fix PR target/45820, PR tree-optimization/45854, PR target/45843,
+      PR target/43764, PR rtl-optimization/43358, PR bootstrap/44621,
+      PR libffi/45677, PR middle-end/45869, PR middle-end/45569,
+      PR tree-optimization/45752, PR fortran/45748, PR libstdc++/45403,
+      PR libstdc++/45924, PR libfortran/45710, PR bootstrap/44455,
+      PR java/43839, PR debug/45656, PR debug/44832, PR libstdc++/45711,
+      PR tree-optimization/45982.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.5 2010.10 release.
+  * Just try to build java on mips/mipsel (was disabled in 4.5.0-9, when
+    java was built from the same source package). Addresses: #599976.
+  * Remove the gpc packaging support.
+  * Fix libmudflap.so symlink. Addresses: #600161.
+  * Fix pch test failures with heap randomization on armel (PR pch/45979).
+
+  [ Kees Cook ]
+  * Don't enable -fstack-protector with -ffreestanding.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 14 Oct 2010 19:17:41 +0200
+
+gcc-4.5 (4.5.1-8) experimental; urgency=low
+
+  * Update to SVN 20100925 (r164618) from the gcc-4_5-branch.
+    - Fix PR middle-end/44763, PR java/44095, PR target/35664,
+      PR rtl-optimization/41085, PR rtl-optimization/45051,
+      PR target/45694, PR middle-end/45678, PR middle-end/45678,
+      PR middle-end/45704, PR rtl-optimization/45728, PR libfortran/45532,
+      PR rtl-optimization/45695, PR rtl-optimization/42775, PR target/45726,
+      PR tree-optimization/45623, PR tree-optimization/45709, PR debug/43628,
+      PR tree-optimization/45709, PR rtl-optimization/45593, PR fortran/45081,
+  * Find 32bit system libraries on sparc64, s390x.
+  * Remove README.Debian from the source package to avoid confusion for
+    readers of the packaging.
+  * Don't include info files and man pages in hppa64 and spu builds.
+    Closes: #597435.
+  * Apply proposed patch for PR mudflap/24619 (instrumentation of dlopen)
+    (Brian M. Carlson) Closes: #507514.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 25 Sep 2010 14:11:39 +0200
+
+gcc-4.5 (4.5.1-7) experimental; urgency=low
+
+  * Update to SVN 20100914 (r164279) from the gcc-4_5-branch.
+    - Fix PR target/40959, PR middle-end/45567, PR debug/45660,
+      PR rtl-optimization/41087, PR rtl-optimization/44919, PR target/36502,
+      PR target/42313, PR target/44651.
+  * Add support to build from the Linaro 4.5 2010.09 release.
+  * gcc-4.5-plugin-dev: Install config/arm/arm-cores.def.
+  * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406.
+  * Don't provide c++abi2-dev for g++ cross builds.
+  * Don't pass -mimplicit-it=thumb if -mthumb to as on ARM, rejected upstream.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 14 Sep 2010 12:52:34 +0200
+
+gcc-4.5 (4.5.1-6) experimental; urgency=low
+
+  * Update to SVN 20100909 (r164132) from the gcc-4_5-branch.
+    - Fix PR middle-end/45312, PR bootstrap/43847, PR middle-end/44554,
+      PR middle-end/40386, PR other/45443, PR c++/45200, PR c++/45293,
+      PR c++/45558, PR fortran/45595, PR fortran/45530, PR fortran/45489,
+      PR fortran/45019, PR libstdc++/45398.
+
+  [ Matthias Klose ]
+  * Tighten binutils dependencies to 2.20.1-14.
+
+  [ Marcin Juszkiewicz ]
+  * Fix the gcc-4.5-plugin-dev package name for cross builds. LP: #631474.
+  * Build the gcc-4.5-plugin-dev for stage1 cross builds.
+  * Fix priorities and sections for some cross packages.
+
+  [ Al Viro ]
+  * Fix installation of libgcc_s.so as a linker script for biarch builds.
+
+  [ Kees Cook ]
+  * Push glibc stack traces into stderr when building the package.
+  * debian/patches/gcc-default-ssp.patch: Lower ssp-buffer-size to 4.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 10 Sep 2010 21:25:37 +0200
+
+gcc-4.5 (4.5.1-5) experimental; urgency=low
+
+  * Always add dependencies on multilib library packages in *-multilib
+    packages.
+  * Fix installation of libgcc_s.so on architectures when libgcc_s.so is
+    a linker script, not a symlink (Steve Langasek). Closes: #595474.
+  * Remove the lib32gcc1 preinst script. Closes: #595495.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 04 Sep 2010 12:41:40 +0200
+
+gcc-4.5 (4.5.1-4) experimental; urgency=low
+
+  * Update to SVN 20100903 (r163833) from the gcc-4_5-branch.
+    - Fix PR target/45070, PR middle-end/45458, PR rtl-optimization/45353,
+      PR middle-end/45423, PR c/45079, PR tree-optimization/45393,
+      PR c++/44991, PR middle-end/45484, PR debug/45500, PR lto/45496.
+
+  [ Matthias Klose ]
+  * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package
+    on armel, mipsel and sparc64 too.
+  * Cleanup packaging files in gcc-source package.
+  * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport).
+
+  [ Al Viro ]
+  * Fix builds with disabled biarch library packages.
+  * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch
+    to using them in rules.d/*; as the result, most of the explicit pathnames
+    in there are gone _and_ we get uniformity across different flavours.
+  * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch
+    to using them in rules.d/*; as the result, most of the explicit pathnames
+    in there are gone _and_ we get uniformity across different flavours.
+  * Merge bi-/tri-arch stuff in binary-gcc.mk.
+  * Merge rules for libgcc biarch variants.
+  * Merge rules for libstdc++ biarch variants. Fix n32 variant of
+    libstdc++-dbg removing _pic.a from the wrong place.
+  * Merge libgfortran rules.
+  * Merge rules for cxx-multi and objc-multi packages.
+  * Enable gcc-hppa64 in cross-gcc-to-hppa build.
+
+  [ Marcin Juszkiewicz ]
+  * Create libgcc1 and gcc-*-base packages for stage2 cross builds.
+    LP: #628855.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 03 Sep 2010 18:09:40 +0200
+
+gcc-4.5 (4.5.1-3) experimental; urgency=low
+
+  * Update to SVN 20100829 (r163627) from the gcc-4_5-branch.
+    - Fix PR target/45327, PR middle-end/45292, PR fortran/45344,
+      PR target/41484, PR rtl-optimization/44858, PR rtl-optimization/45400,
+      PR tree-optimization/45260, PR c++/45315.
+
+  [ Matthias Klose ]
+  * Don't run the libstdc++ testsuite on armel on the buildds.
+  * Integrate and extend bi/tri-arch cross builds patches.
+  * Fix dependencies for mips* triarch library packages depend on *both* lib64*
+    and libn32* packages. Closes: #594540.
+  * Tighten binutils dependencies to 2.20.1-13.
+  * Update LAST_UPDATED file when applying upstream updates.
+
+  [ Al Viro ]
+  * Bi/tri-arch cross builds patches.
+  * Fix installation paths in bi/tri-arch libobjc and libmudflap packages.
+  * Merge rules for all flavours of libgomp, libmudflap, libobjc.
+  * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)).
+  * gcc-4.5: libgcc_s.so.1 symlink creation on cross-builds.
+  * Enable gcc-multilib for cross-builds and fix what needs fixing.
+  * Enable g++-multilib for cross-builds, fix pathnames.
+  * Enable gobjc/gobjc++ multilib for cross-builds, fixes.
+  * Enable gfortran multilib for cross-builds, fix paths.
+  * Multilib dependency fixes for cross-builds.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 29 Aug 2010 18:24:37 +0200
+
+gcc-4.5 (4.5.1-2) experimental; urgency=low
+
+  * Update to SVN 20100818 (r163323) from the gcc-4_5-branch.
+    - Fix PR target/41089, PR tree-optimization/44914, PR c++/45112,
+      PR fortran/44929, PR middle-end/45262, PR debug/45259, PR debug/45055,
+      PR target/44805, PR middle-end/45034, PR tree-optimization/45109,
+      PR target/44942, PR fortran/31588, PR fortran/43954, PR fortran/44660,
+      PR fortran/42051, PR fortran/44064, PR fortran/45151, PR libstdc++/44963,
+      PR tree-optimization/45241, PR middle-end/44632 (closes: #585925),
+      PR libstdc++/45283, PR target/45296.
+
+  [ Matthias Klose ]
+  * Allow overwriting of the PF macro used in the build from the environment
+    (Jim Heck). Closes: #588381.
+  * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424.
+  * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk.
+  * Configure with --enable-checking+release. LP: #612822.
+  * Add the complete packaging to the -source package. LP: #608650.
+  * Drop the gcc-ix86-asm-generic32.diff patch.
+  * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2).
+  * Apply proposed patch for PR middle-end/45292.
+  * Re-enable running the libstdc++ testsuite on armel and ia64 on the buildds.
+
+  [ Steve Langasek ]
+  * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current
+    case, but required for us to find the libraries when building for
+    multiarch
+  * Don't append multiarch paths to any multilib paths except for the default;
+    our biarch (multilib) builds need to remain independent of multiarch in
+    the near term, so we want to make sure we can find /usr/lib32 without
+    /usr/lib/i486-linux-gnu being available.
+  * debian/control.m4, debian/rules.conf: conditionally set packages to be
+    Multi-Arch: yes when MULTIARCH is defined.
+
+  [ Marcin Juszkiewicz ]
+  * Allow building intermediate stages for cross builds. LP: #603497.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 18 Aug 2010 07:00:12 +0200
+
+gcc-4.5 (4.5.1-1) experimental; urgency=low
+
+  * GCC-4.5.1 release.
+  * Update to SVN 20100731 (r162781) from the gcc-4_5-branch.
+    - Fix PR tree-optimization/45052, PR target/43698.
+  * Apply proposed fixes for PR c++/45112, PR c/45079.
+  * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package
+    on armel, mips, mipsel, sh4, sparc, sparc64. Closes: #590054.
+  * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS
+    (Jim Heck). Closes: #590102.
+  * Stop building java packages from the gcc-4.5 source package.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 31 Jul 2010 16:30:20 +0200
+
+gcc-4.5 (4.5.0-10) experimental; urgency=low
+
+  * Update to SVN 20100725 (r162508) from the gcc-4_5-branch.
+    - Fix PR tree-optimization/45047, PR c++/43016, PR c++/45008.
+  * Disable building gcj/libjava on mips/mipsel (fails to link libgcj).
+  * Update libstdc++6 symbols files.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 25 Jul 2010 16:39:11 +0200
+
+gcc-4.5 (4.5.0-9) experimental; urgency=low
+
+  * Update to SVN 20100723 (r162448) from the gcc-4_5-branch (post
+    GCC-4.5.1 release candidate 1).
+    - Fix PR debug/45015, PR target/44942, PR tree-optimization/44900,
+      PR tree-optimization/44977, PR c++/44996, PR fortran/44929,
+      PR fortran/30668, PR fortran/31346, PR fortran/34260,
+      PR fortran/40011.
+
+  [ Marcin Juszkiewicz ]
+  * Fix dependencies on cross library packages.
+  * Copy all debian/rules* files to the -source package.
+
+  [ Matthias Klose ]
+  * Fix versioned build dependency on gcc-4.x-source package for cross builds.
+    LP: #609060.
+  * Set Vcs attributes in control file.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 23 Jul 2010 13:08:07 +0200
+
+gcc-4.5 (4.5.0-8) experimental; urgency=low
+
+  * Update to SVN 20100718 (r161892) from the gcc-4_5-branch.
+    - Fixes: PR target/44531, PR bootstrap/44820, PR target/44597,
+      PR target/44705, PR middle-end/44777, PR debug/44694, PR c++/44039,
+      PR tree-optimization/43801, PR target/44575, PR debug/44104,
+      PR middle-end/44671, PR middle-end/44686, PR tree-optimization/44357,
+      PR debug/44694, PR middle-end/43866, PR debug/42278, PR c++/44059,
+      PR tree-optimization/43905, PR middle-end/44133, PR tree-optimize/44063,
+      PR tree-optimization/44683, PR rtl-optimization/43332, PR debug/44610,
+      PR middle-end/44684, PR tree-optimization/44393, PR middle-end/44674,
+      PR c++/44628, PR c++/44587, PR fortran/44582, PR fortran/43841,
+      PR fortran/43843, PR libstdc++/44708, PR tree-optimization/44886,
+      PR target/43888, PR tree-optimization/44284, PR middle-end/44828,
+      PR middle-end/41355, PR c++/44703, PR ada/43731, PR fortran/44773,
+      PR fortran/44847.
+
+  [ Marcin Juszkiewicz ]
+  * debian/rules2: Merge rules.d includes.
+  * Properly -name -dbg packages for cross builds.
+  * Various cross build fixes.
+  * Build libmudflap packages for cross builds.
+  * Fix generation of maintainer scripts for cross packages.
+  * Build a gcc-base package for cross builds.
+
+  [ Kees Cook ]
+  * Fix additional libstdc++ testsuite failures for hardening defaults.
+
+  [ Samuel Thibault ]
+  * Update hurd patch for 4.5, fixing build failure. Closes: #584819.
+
+  [ Matthias Klose ]
+  * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in
+    thumb mode (Andrew Stubbs).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 Jul 2010 10:53:51 +0200
+
+gcc-4.5 (4.5.0-7) experimental; urgency=low
+
+  * Update to SVN 20100625 (r161383) from the gcc-4_5-branch.
+    - Fixes: PR bootstrap/44426, PR target/44546, PR target/44261,
+      PR target/43740, PR libstdc++/44630 (closes: #577458),
+      PR c++/44627 (LP: #503668), PR target/39690, PR target/44615,
+      PR fortran/44556, PR c/44555.
+    - Update libstdc++'s pretty printer for python2.6. Closes: #585202.
+
+  [ Matthias Klose ]
+  * Fix libstdc++ symbols files for powerpc and sparc.
+  * Add maintainer scripts for cross packages.
+
+  [ Samuel Thibault ]
+  * Update hurd patch for 4.5, fixing build failure. Closes: #584454,
+    #584819.
+
+  [ Marcin Juszkiewicz ]
+  * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 25 Jun 2010 15:57:38 +0200
+
+gcc-4.5 (4.5.0-6) experimental; urgency=low
+
+  [ Matthias Klose ]
+
+  * Update to SVN 20100617 (r161901) from the gcc-4_5-branch. Fixes:
+    PR target/44169, PR bootstrap/43170, PR objc/35996, PR objc++/32052,
+    PR objc++/23716, PR lto/44464, PR rtl-optimization/42461, PR fortran/44536,
+    PR tree-optimization/44258, PR tree-optimization/44423, PR target/44534,
+    PR bootstrap/44426, PR tree-optimization/44508, PR tree-optimization/44507,
+    PR lto/42776, PR target/44481, PR debug/41371, PR bootstrap/37304,
+    PR target/44067, PR debug/41371, PR debug/41371, PR target/44075,
+    PR c++/44366, PR c++/44401, PR fortran/44347, PR fortran/44430,
+    PR lto/42776, PR libstdc++/44487, PR other/43838, PR libgcj/44216.
+  * debian/patches/cross-fixes.diff: Update for 4.5 (Marcin Juszkiewicz).
+  * debian/patches/libstdc++-pic.diff: Fix installation for cross builds.
+  * Fix PR bootstrap/43847, --enable-plugin for cross builds.
+  * Export long double versions of "C" math library for arm-linux-gnueabi,
+    m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu
+    (not 32 bit). Merge the libstdc++-*-ldbl-compat.diff patches.
+  * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk
+    (Loic Minier).
+  * Update libgcc and libstdc++ symbols files.
+
+  [ Aurelien Jarno ]
+  
+  * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double
+    versions of "C" math functions in libstdc++ as we need to keep the
+    ABI. Closes: #584610.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 17 Jun 2010 14:56:14 +0200
+
+gcc-4.5 (4.5.0-5) experimental; urgency=low
+
+  * Update to SVN 20100602 (r160097) from the gcc-4_5-branch. Fixes:
+    PR target/44338, PR middle-end/44337, PR tree-optimization/44182,
+    PR target/44161, PR c++/44358, PR fortran/44360, PR lto/44385.
+  * Fix PR target/44261, taken from the trunk. Closes: #582787.
+  * Fix passing the expanded -iplugindir option.
+  * Disable broken profiled bootstrap on alpha.
+  * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when
+    configured for i586-linux-gnu or i686-linux-gnu.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 03 Jun 2010 00:44:37 +0200
+
+gcc-4.5 (4.5.0-4) experimental; urgency=low
+
+  * Update to SVN 20100527 (r160047) from the gcc-4_5-branch. Fixes:
+    PR rtl-optimization/44164, PR middle-end/44069, PR target/44199,
+    PR lto/44196, PR target/43733, PR target/44245, PR target/43869,
+    PR debug/44223, PR tree-optimization/44038, PR tree-optimization/43949,
+    PR debug/44205, PR debug/44178, PR bootstrap/43870, PR target/44202,
+    PR target/44074, PR lto/43455, PR lto/42653, PR lto/42425, PR lto/43080,
+    PR lto/43946, PR c++/43382, PR c++/41510, PR c++/44193, PR c++/44157,
+    PR c++/44158, PR lto/44256, PR libstdc++/44190, PR lto/44312,
+    PR target/43636, PR target/43726, PR c++/43555PR libstdc++/40497.
+
+  [ Matthias Klose ]
+
+  * Enable multilibs again on powerpcspe. Closes: #579780.
+  * Fix setting CC for REVERSE_CROSS build (host ==  target,host != build).
+    Closes: #579779.
+  * Fix setting biarch_cpu macro.
+  * Don't bother with un-normalized paths in .la files, just remove them.
+  * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite.
+  * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3
+    testsuite against the installed lib too.
+  * Configure with --enable-secureplt on powerpcspe.
+
+  [ Aurelien Jarno ]
+
+  * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and
+    sparc64 builds.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 30 May 2010 12:52:02 +0200
+
+gcc-4.5 (4.5.0-3) experimental; urgency=low
+
+  * Update to SVN 20100519 (r159556) from the gcc-4_5-branch. Fixes:
+    PR c++/43704, PR fortran/43339, PR middle-end/43337, PR target/43635,
+    PR tree-optimization/43783, PR tree-optimization/43796, PR middle-end/43570,
+    PR libgomp/43706, PR libgomp/43569, PR middle-end/43835, PR c/43893,
+    PR tree-optimization/43572, PR tree-optimization/43845, PR libgcj/40860,
+    PR target/43744, PR debug/43370, PR c++/43880, PR middle-end/43671,
+    PR debug/43972, PR target/43921, PR c++/38064, PR c++/43953,
+    PR fortran/43985, PR fortran/43592, PR fortran/40539, PR c++/43787,
+    PR middle-end/44085, PR middle-end/44071, PR middle-end/43812,
+    PR debug/44028, PR rtl-optimization/44012, PR target/44046,
+    PR documentation/44016, PR fortran/44036, PR fortran/40728,
+    PR libstdc++/44014, PR lto/44184, PR bootstrap/42347, PR middle-end/44102,
+    PR c++/44127, PR debug/44136, PR target/44088, PR tree-optimization/44124,
+    PR fortran/43591, PR fortran/44135, PR libstdc++/43259.
+
+  [ Matthias Klose ]
+  * Revert gcj-arm-no-merge-exidx-entries patch, fixed by PR libgcj/40860.
+  * Don't run the libstdc++-v3 testsuite on the ia64 buildds. Timeouts.
+  * Backport two libjava fixes from the trunk to run josm with gcj.
+  * Ubuntu only:
+    - Pass --hash-style=gnu instead of --hash-style=both to the linker.
+  * Preliminary architecture port for powerpcspe (Kyle Moffett).
+    Closes: #579780.
+  * Update configury to be able to target i686 instead of i486 on i386.
+
+  [ Aurelien Jarno]
+  * Don't link with --hash-style=both on mips/mipsel as GNU hash is not
+    compatible with the MIPS ABI.
+  * Default to -mplt on mips(el), -march=mips2 and -mtune=mips32 on 32-bit
+    mips(el), -march=mips3 and -mtune=mips64 on 64-bit mips(el).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 19 May 2010 09:48:20 +0200
+
+gcc-4.5 (4.5.0-2) experimental; urgency=low
+
+  * Update to SVN 20100419 from the gcc-4_5-branch.
+    - Fix PR tree-optimization/43627, c++/43641, PR c++/43621, PR c++/43611,
+      PR fortran/31538, PR fortran/30073, PR target/43662,
+      PR tree-optimization/43572, PR tree-optimization/43771.
+  * Install the linker plugin.
+  * Search the linker plugin as a readable, not an executable file.
+  * Link with --hash-style=both on mips/mipsel.
+  * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop
+    is not passed.
+  * Sequel to PR40521, fix -g to generate .eh_frame on ARM.
+  * On ARM, let gcj pass --no-merge-exidx-entries to the linker.
+  * Build-depend/depend on binutils snapshot.
+  * Update NEWS.html and NEWS.gcc.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 19 Apr 2010 15:22:55 +0200
+
+gcc-4.5 (4.5.0-1) experimental; urgency=low
+
+  * GCC 4.5.0 release.
+  * Always apply biarch patches.
+  * Build the lto-linker plugin again. Closes: #575448.
+  * Run the libstdc++v3 testsuite on armel again.
+  * Fix --enable-libstdcxx-time documentation, show configure result.
+  * On linux targets always pass --no-add-needed to the linker.
+  * Update the patch to search for plugins in a default plugin directory.
+  * Fix java installations in snapshot builds.
+  * Configure --with-plugin-ld=ld.gold.
+  * Linker selection: ld is used by default, to use the gold linker,
+    pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr
+    is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld
+    for ld.bfd or /usr/lib/gold-ld for ld.gold.
+  * Don't apply the gold-and-ld patch for now.
+  * Stop building the documentation for dfsg compliant builds. Closes: #571759.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 14 Apr 2010 13:29:20 +0200
+
+gcc-4.5 (4.5-20100404-1) experimental; urgency=low
+
+  * Update to SVN 20100404 from the trunk.
+  * Fix build failures building cross compilers configure --with-ld.
+  * lib32gcc1: Set priority to `extra'.
+  * Apply proposed patch to search for plugins in a default plugin directory.
+  * In snapshot builds, use for javac/ecj1 the jvm provided by the package.
+  * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions
+    of "C" math functions in libstdc++; these are dropped when built
+    against glibc-2.11.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 04 Apr 2010 15:51:25 +0200
+
+gcc-4.5 (4.5-20100321-1) experimental; urgency=low
+
+  * Update to SVN 20100321 from the trunk.
+  * gcj-4.5-jre-headless: Stop providing java-virtual-machine.
+  * gcj-4.5-plugin-dev: Don't suggest mudflap packages.
+  * Apply proposed patch to enable both gold and ld in a single toolchain.
+    New option -fuse-ld=ld.bfd, -fuse-ld=gold.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 21 Mar 2010 11:45:48 +0100
+
+gcc-4.5 (4.5-20100227-1) experimental; urgency=low
+
+  * Update to SVN 20100227 from the trunk.
+  * Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi, when
+    defaulting to thumb mode (Timeouts on the Ubuntu buildd).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 27 Feb 2010 08:29:55 +0100
+
+gcc-4.5 (4.5-20100222-1) experimental; urgency=low
+
+  * Update to SVN 20100222 from the trunk.
+    - Install additional header files needed by plugins. Closes: #562881.
+  * gcc-4.5-plugin-dev: Should depend on libgmp3-dev. Closes: #566366.
+  * Update libstdc++6 symbols files.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 23 Feb 2010 02:16:22 +0100
+
+gcc-4.5 (4.5-20100216-0ubuntu1~ppa1) lucid; urgency=low
+
+  * Update to SVN 20100216 from the trunk.
+  * Don't call dh_makeshlibs with -V for shared libraries with
+    symbol files.
+  * Don't run the libstdc++-v3 testsuite in thumb mode on armel
+    to work around buildd timeout (see PR target/42509).
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 17 Feb 2010 02:06:02 +0100
+
+gcc-4.5 (4.5-20100204-1) experimental; urgency=low
+
+  * Update to SVN 20100204 from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 04 Feb 2010 19:44:19 +0100
+
+gcc-4.5 (4.5-20100202-1) experimental; urgency=low
+
+  * Update to SVN 20100202 from the trunk.
+    - gcc-stack_chk_fail-check.diff: Remove, applied upstream.
+  * Update libstdc++6 symbol files.
+  * Build gnat in snapshot builds on arm.
+  * Configure with --enable-checking=yes for snapshot builds, and for
+    4.5 builds before the release.
+  * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite
+    with -Wno-abi.
+  * When building the hppa64 cross compiler, add $(builddir)/gcc to
+    LD_LIBRARY_PATH to find the just built libgcc6. Closes: #565862.
+  * On sh4-linux, use sh as java architecture name instead of sh4.
+  * On armel, build gnat-4.5 using gcc-snapshot.
+  * Revert the bump of the libgcc soversion on hppa (6 -> 4).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 02 Feb 2010 19:35:25 +0100
+
+gcc-4.5 (4.5-20100107-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20100107 from the trunk.
+  * Revert the workaround for the alpha build (PR bootstrap/42511 is fixed).
+  * testsuite-hardening-format.diff: Add a fix for the libstdc++ testsuite.
+  * Build-depend again on autogen.
+  * Work around PR lto/41569 (installation bug when configured with
+    --enabled-gold).
+  * On armel run the testsuite both in arm and thumb mode, when the
+    distribution is supporthing tumb processors.
+  * Work around PR target/42509 (armel), not setting BOOT_CFLAGS, but
+    applying libcpp-arm-workaround.diff.
+
+  [ Nobuhiro Iwamatsu ]
+  * Update gcc-multiarch patch for sh4.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 07 Jan 2010 16:34:57 +0100
+
+gcc-4.5 (4.5-20100106-0ubuntu1) lucid; urgency=low
+
+  * Update to SVN 20100106 from the trunk.
+  * gcj-4.5-jdk: Include /usr/lib/jvm-exports.
+  * Rename libgcc symbols file for hppa.
+  * On alpha and armel, set BOOT_CFLAGS to -g -O1 to work around bootstrap
+    failures (see PR target/42509 (armel) and PR bootstrap/42511 (alpha)).
+  * Base the source build-dependency on the package version instead of the 
+    gcc version.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 06 Jan 2010 14:17:29 +0100
+
+gcc-4.5 (4.5-20100103-1) experimental; urgency=low
+
+  * Update to SVN 20100103 from the trunk.
+
+  [ Samuel Thibault ]
+  * Update hurd patch for 4.5. Closes: #562802.
+
+  [ Aurelien Jarno ]
+  * Remove patches/kbsd-gnu-ada.diff (merged upstream). 
+
+  [ Matthias Klose ]
+  * libgcj11: Move .so symlinks into gcj-4.5-jdk. Addresses: #563280.
+  * gcc-snapshot: On sparc64, use gcc-snapshot as bootstrap compiler.
+  * Don't use expect-tcl8.3 on hppa anymore.
+  * Merge gnat-4.4 changes back from 4.4.2-5.
+  * Bump libgcc soversion on hppa (4 -> 6).
+  * Default to v9a (ultrasparc) on sparc*-linux.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 03 Jan 2010 17:25:27 +0100
+
+gcc-4.5 (4.5-20091226-1) experimental; urgency=low
+
+  * Update to SVN 20091226 from the trunk.
+  * Fix powerpc spu installation.
+  * Enable multiarch for sh4.
+  * Fix libffi multilib test runs.
+  * Configure the hppa -> hppa64 cross compiler --with-system-zlib.
+  * gcc-4.5-hppa64: Don't ship info dir file.
+  * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 26 Dec 2009 15:38:23 +0100
+
+gcc-4.5 (4.5-20091223-1) experimental; urgency=low
+
+  * Update to SVN 20091223 from the trunk.
+
+  [ Matthias Klose ]
+  * Update hardening patches for 4.5.
+  * Don't call install-info directly, depend on dpkg | install-info instead.
+  * Add conflicts with packages built from GCC 4.4 sources.
+  * On ARM, pass --hash-style=both to ld.
+  * Update libgfortran3 symbols file.
+  * Update libstdc++6 symbols file.
+
+  [ Arthur Loiret ]
+  * debian/rules.conf (gen_no_archs): Handle multiple arm ports.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Dec 2009 18:02:24 +0100
+
+gcc-4.5 (4.5-20091220-1) experimental; urgency=low
+
+  * Update to SVN 20091220 from the trunk.
+    - Remove patches applied upstream: arm-boehm-gc-locks.diff,
+      arm-gcc-gcse.diff, deb-protoize.diff, gcc-arm-thumb2-sched.diff,
+      gcc-atom-doc.diff, gcc-atom.diff, gcc-build-id.diff,
+      gcc-unwind-debug-hook.diff, gcj-use-atomic-builtins-doc.diff,
+      gcj-use-atomic-builtins.diff, libjava-atomic-builtins-eabi.diff,
+      libjava-nobiarch-check-snap.diff, lp432222.diff, pr25509-doc.diff,
+      pr25509.diff, pr39429.diff, pr40133.diff, pr40134.diff, rev146451.diff,
+      s390-biarch-snap.diff, sh4-scheduling.diff, sh4_atomic_update.diff.
+    - Update patches: gcc-multiarch.diff, gcc-textdomain.diff,
+      libjava-nobiarch-check.diff, libjava-subdir.diff, libstdc++-doclink.diff,
+      libstdc++-man-3cxx.diff, libstdc++-pic.diff, note-gnu-stack.diff,
+      rename-info-files.diff, s390-biarch.diff.
+  * Stop building the protoize package, removed from the GCC 4.5 sources.
+  * gcc-4.5: Install lto1, lto-wrapper, and new header files for intrinsics.
+  * libstdc++6-4.5-dbg: Install the python files for use with gdb.
+  * Build java packages from the gcc-4.5 source package.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 Dec 2009 10:56:56 +0100
+
+gcc-4.4 (4.4.2-6) unstable; urgency=low
+
+  * Update to SVN 20091220 from the gcc-4_4-branch (r155367).
+    Fix PR c++/42387, PR c++/41183.
+
+  [ Matthias Klose ]
+  * Apply svn-doc-updates.diff for non DFSG builds.
+  * gcc-snapshot:
+    - Remove patches integrated upstream: pr40133.diff. Closes: #561550.
+
+  [ Nobuhiro Iwamatsu ]
+  * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550.
+  * Backport from trunk: [SH] Not run scheduling before reload as default.
+    Closes: #561429.
+
+  [ Arthur Loiret ]
+  * Apply spu patches independently of the hardening patches; fix build
+    failure on powerpc.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 Dec 2009 10:20:19 +0100
+
+gcc-4.4 (4.4.2-5) unstable; urgency=low
+
+  * Update to SVN 20091212 from the gcc-4_4-branch (r155122).
+    Revert the fix for PR libstdc++/42261, fix PR fortran/42268,
+    PR target/42263, PR target/42263, PR target/41196, PR target/41939,
+    PR rtl-optimization/41574.
+
+  [ Matthias Klose ]
+  * Regenerate svn-updates.diff.
+  * Disable biarch testsuite runs for libffi (broken and unused).
+  * Support xz compression of source tarballs.
+  * Fix typo in PR libstdc++/40133 to do the link tests.
+  * gcc-snapshot:
+    - Remove patches integrated upstream: pr40134-snap.diff.
+    - Update s390-biarch.diff for trunk.
+
+  [ Aurelien Jarno ]
+  * Add sparc64 support: disable multilib and install the libraries
+    in /lib.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 13 Dec 2009 10:28:19 +0100
+
+gcc-4.4 (4.4.2-4) unstable; urgency=low
+
+  * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes:
+    PR target/42165, PR target/42113, PR libgfortran/42090,
+    PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261,
+    PR libstdc++/42273 PR java/41991.
+
+  [ Matthias Klose ]
+  * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2.
+  * PR target/40134: Don't redefine LIB_SPEC on hppa.
+  * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from
+    the trunk.
+  * Pass -mimplicit-it=thumb to as by default on ARM, when configured
+    --with-mode=thumb.
+  * Fix boehm-gc build on ARM --with-mode=thumb.
+  * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk).
+  * Build the spu cross compiler for powerpc from the cell-4_4-branch.
+  * gcj: add option -fuse-atomic-builtins (backport from the trunk).
+
+  [ Arthur Loiret ]
+  * Make svn update interdiffs more readable.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 10 Dec 2009 04:29:36 +0100
+
+gcc-4.4 (4.4.2-3) unstable; urgency=low
+
+  * Update to SVN 20091118 from the gcc-4_4-branch (r154294).
+    Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037,
+    PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754,
+    PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059,
+    PR c++/42061,
+    PR fortran/41772, PR fortran/41850, PR fortran/41909,
+    PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643,
+    PR target/41900, PR rtl-optimization/41917, PR middle-end/41963,
+    PR middle-end/42029.
+  * Snapshot builds:
+    - Patch updates.
+    - Configure with --disable-browser-plugin.
+  * Configure with --disable-libstdcxx-pch on hppa.
+  * Backport armel patches form the trunk:
+    - Fix PR objc/41848 - workaround ObjC and -fsection-anchors.
+    - Enable scheduling for Thumb-2, including the fix for PR target/42031.
+    - Fix PR target/41939, EABI violation in accessing values below the stack.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 18 Nov 2009 08:37:18 -0600
+
+gcc-4.4 (4.4.2-2) unstable; urgency=low
+
+  * Update to SVN 20091031 from the gcc-4_4-branch (r153603).
+    - Fix PR debug/40521, PR target/40913, PR middle-end/22072,
+      PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875,
+      PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826,
+      PR target/41702, PR c/41842, PR target/41762, PR c++/40808,
+      PR fortran/41777, PR libstdc++/40852.
+  * Snapshot builds:
+    - Configure with --enable-plugin, disable the gcjwebplugin by a patch.
+      Addresses: #551200.
+    - Proposed patch for PR lto/41652, compile lto-plugin with
+      -D_FILE_OFFSET_BITS=64
+    - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada.
+  * Fixes for reverse cross builds.
+  * On sparc default to v9 in 32bit mode.
+  * Fix __stack_chk_fail check for cross builds configured --with-headers.
+  * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 31 Oct 2009 14:16:03 +0100
+
+gcc-4.4 (4.4.2-1) unstable; urgency=low
+
+  * GCC 4.4.2 release.
+    - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646,
+      PR c++/39863, PR c++/41038.
+  * Fix setting timeout for testsuite runs.
+  * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled
+    by default.
+  * gcj-4.4: Run the libffi testsuite as well.
+  * Add explicit build dependency on zlib1g-dev.
+  * Fix cross builds, add support for gomp and gfortran (only tested for
+    non-biarch targets).
+  * (Build-)depend on binutils-2.20.
+  * Fix up omp.h for multilibs (taken from Fedora).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 Oct 2009 02:31:32 +0200
+
+gcc-4.4 (4.4.1-6) unstable; urgency=low
+
+  * Snapshot builds:
+    - Add build dependency on libelfg0-dev (>= 0.8.12).
+    - Add build dependency on binutils-gold where available.
+    - Suggest binutils-gold; not perfect, it is required when using
+      -use-linker-plugin.
+    - Work around installation failure in the lto-plugin (PR lto/41569).
+    - Install java home symlinks in /usr/lib/jvm.
+    - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521.
+  * PR debug/40521:
+    - Apply patch for PR debug/40521, taken from the trunk.
+    - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521.
+    - Depend on binutils (>= 2.19.91.20091005).
+  * Update to SVN 20091005 from the gcc-4_4-branch (r152450).
+    - Fixes PR fortran/41479.
+  * In the test summary, add more information about package versions
+    used for the build.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 07 Oct 2009 02:12:56 +0200
+
+gcc-4.4 (4.4.1-5) unstable; urgency=medium
+
+  * Update to SVN 20091003 from the gcc-4_4-branch (r152174).
+    - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, 
+      PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100,
+      PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443,
+      PR fortran/41515.
+  * Updates for snapshot builds:
+    - Fix build dependency on automake for snapshot builds.
+    - Update patches pr40134-snap and libjava-nobiarch-check-snap.
+  * Fix lintian errors in libstdc++ packages and lintian warnings in the
+    source package.
+  * Add debian/README.source.
+  * Don't apply PR libstdc++/39491 for the trunk anymore.
+  * Install java home symlinks for snapshot builds in /usr/lib/jvm,
+    including javac. Depend on ecj. Addresses #536102.
+  * Fix build failure on armel with -mfloat-abi=softfp.
+  * Don't pessimize the code for newer armv6 and armv7 processors.
+  * libjava: Use atomic builtins For Linux ARM/EABI, backported from the
+    trunk.
+  * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222.
+  * Link against -ldl instead of -lcloog -lppl. Exit with an error when using
+    the Graphite loop transformation infrastructure without having the
+    libcloog-ppl0 package installed (patch taken from Fedora). Packages
+    using these optimizations should build-depend on libcloog-ppl0.
+    gcc-4.4: Suggest the cloog runtime libraries.
+  * Install a hook _Unwind_DebugHook, called during unwinding. Intended as
+    a hook for a debugger to intercept exceptions. CFA is the CFA of the
+    target frame.  HANDLER is the PC to which control will be transferred
+    (patch taken from Fedora).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 03 Oct 2009 13:33:05 +0100
+
+gcc-4.4 (4.4.1-4) unstable; urgency=low
+
+  * Update to SVN 20090911 from the gcc-4_4-branch (r151649).
+    - Fixes PR target/34412, PR middle-end/41094, PR target/40718,
+      PR fortran/41062, PR libstdc++/41005, PR target/41184,
+      PR bootstrap/41180, PR c++/41127, PR fortran/41258,
+      PR rtl-optimization/40861, PR target/41315, PR fortran/39876.
+
+  [ Matthias Klose ]
+  * Avoid underscores in doc-base document id's to workaround a
+    dh_installdocs bug.
+  * Update file names for the Ada user's guide.
+  * Set Homepage attribute for packages.
+  * Update the patch for gnat on armel.
+  * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062.
+  * Backport patch for PR tree-optimization/41101 from the trunk.
+    Closes: #541816.
+  * Update libstdc++6.symbols for symbols introduced with the fix
+    for PR libstdc++/41005.
+  * Apply proposed patches for PR libstdc++/40133 and PR target/40134.
+    Add symbols exception propagation support in libstdc++ on armel
+    to the libstdc++6 symbols.
+
+  [ Ludovic Brenta]
+  Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low
+  * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch:
+    better support for architectures that support only one exception
+    handling mechanism (SJLJ or ZCX).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 12 Sep 2009 03:18:17 +0200
+
+gcc-4.4 (4.4.1-3) unstable; urgency=low
+
+  * Update to SVN 20090822 from the gcc-4_4-branch (r151011).
+    - Fixes PR tree-optimization/41016, PR tree-optimization/41011,
+      PR tree-optimization/41008, PR tree-optimization/40991,
+      PR tree-optimization/40964, PR target/8603 (closes: #161432),
+      PR target/41019, PR target/41015, PR target/40957, PR target/40934,
+      PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006,
+      PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990,
+      PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018,
+      PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102,
+      PR libfortran/40962.
+
+  [ Arthur Loiret ]
+  * Only use -fno-stack-protector when known to the stage1 compiler.
+
+  [ Aurelien Jarno ]
+  * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and
+    upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22).
+    Closes: #537466.
+  * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64.
+
+  [ Matthias Klose ]
+  * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot
+    builds good enough to build itself.
+  * Merge enough of the gnat-4.4 changes back to allow a combined build
+    from the gcc-4.4 source.
+  * Build libgnatprj for armel.
+  * On armel build just one version of the ada run-time library.
+  * Update auto* build dependencies for snapshot builds.
+  * Apply proposed patch for PR target/40718.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 23 Aug 2009 11:50:38 +0200
+
+gcc-4.4 (4.4.1-2) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20090808 from the gcc-4_4-branch (r150577).
+    - Fixes PR target/40832, PR rtl-optimization/40710,
+      PR tree-optimization/40321, PR build/40010, PR fortran/40727,
+      PR build/40010, PR rtl-optimization/40924, PR c/39902,
+      PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706,
+      PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878,
+      PR target/40906.
+  * Bump GCC version required in dependencies to 4.4.1.
+  * Enable Ada for snapshot builds on all archs with a gnat package
+    available in the archive.
+  * Build-depend on binutils 2.19.51.20090805, needed at least for armel.
+
+  [ Aurelien Jarno ]
+  * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat, 08 Aug 2009 10:17:39 +0200
+
+gcc-4.4 (4.4.1-1) unstable; urgency=low
+
+  * GCC 4.4.1 release.
+    - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780,
+      PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714,
+      PR tree-optimization/40813 (ICE in OpenJDK build on sparc).
+  * Apply proposed patch for PR target/39429, an ARM wrong-code error.
+  * Fix a typo in the arm back-end (proposed patch).
+  * Build-depend on libmpc-dev for snapshot builds.
+  * Fix build failure in cross builds (Hector Oron). Closes: #522597.
+  * Run the testsuite as part of the build target, not the install target.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Jul 2009 13:24:39 +0200
+
+gcc-4.4 (4.4.0-11) unstable; urgency=medium
+
+  [ Matthias Klose ]
+  * Update to SVN 20090715 from the gcc-4_4-branch (r149690).
+    - Corresponds to the 4.4.1 release candidate.
+    - Fixes PR target/38900, PR debug/40666, PR middle-end/40669,
+      PR middle-end/40328, PR target/40587, PR middle-end/40585,
+      PR c++/40566, PR tree-optimization/40542, PR c/39902,
+      PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684,
+      PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619,
+      PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638,
+      PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740,
+      PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747.
+  * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176.
+  * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package.
+  * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply
+    yet.
+
+  [Emilio Pozuelo Monfort]
+  * Backport build-id support, configure with --enable-linker-build-id.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 14 Jul 2009 16:09:33 -0400
+
+gcc-4.4 (4.4.0-10) unstable; urgency=low
+
+  [ Arthur Loiret ]
+  * debian/rules.patch: Record the auto* calls to run them once only.
+
+  [ Matthias Klose ]
+  * Update to SVN 20090627 from the gcc-4_4-branch (r149023).
+    - Fixes PR other/40024.
+  * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel.
+  * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 28 Jun 2009 10:13:08 +0200
+
+gcc-4.4 (4.4.0-9) unstable; urgency=high
+
+  * Update to SVN 20090624 from the gcc-4_4-branch (r148821).
+    - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342.
+  * Continue the well planned lib32 transition on amd64, adding pre-dependencies
+    on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767.
+  * Enable SSP on arm and armel, run the testsuite with -fstack-protector.
+    LP: #375189.
+  * Fix spu fortran build in gcc-snapshot builds.
+  * Add missing symbols for 64bit libgfortran library.
+  * Update libstdc++ symbol files for sparc 64bit, adding symbols
+    for exception propagation support.
+  * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel.
+    Closes: #533843.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 24 Jun 2009 23:46:02 +0200
+
+gcc-4.4 (4.4.0-8) unstable; urgency=medium
+
+  * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767.
+  * Update to SVN 20090620 from the gcc-4_4-branch (r148747).
+    - Fixes PR fortran/39800, PR fortran/40402.
+  * Work around tar bug on kfreebsd unpacking java class file updates (#533356).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 20 Jun 2009 15:15:22 +0200
+
+gcc-4.4 (4.4.0-7) unstable; urgency=medium
+
+  * Update to SVN 20090618 from the gcc-4_4-branch (r148685).
+    - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460,
+      PR fortran/40168, PR target/40470.
+  * On amd64, install 32bit libraries into /lib32 and /usr/lib32.
+  * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15),
+    libc6-i386 (= 2.9-16).
+  * Handle serialver alternative in -jdk install scripts, not in -jre-headless.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 19 Jun 2009 01:36:00 +0200
+
+gcc-4.4 (4.4.0-6) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20090612 from the gcc-4_4-branch (r148433).
+    - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266,
+      PR bootstrap/40027, PR tree-optimization/40087, PR target/39856,
+      PR rtl-optimization/40105, PR target/39942, PR middle-end/40204,
+      PR debug/40109, PR tree-optimization/39999, PR libfortran/37754,
+      PR fortran/22423, PR libfortran/39667, PR libfortran/39782,
+      PR libfortran/38668, PR libfortran/39665, PR libfortran/39702,
+      PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664,
+      PR fortran/38654, PR libfortran/37754, PR libfortran/37754,
+      PR libfortran/25561, PR libfortran/37754, PR middle-end/40291,
+      PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311,
+      PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373,
+      PR c++/40381, PR fortran/40019, PR fortran/39893.
+  * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java.
+  * Let gjdoc --version use the Configuration class instead of
+    version.properties (Alexander Sack). LP: #385682.
+  * Preserve libgcc_s.so linker scripts. Closes: #532263.
+
+  [Ludovic Brenta]
+  * debian/patches/ppc64-ada.dpatch,
+    debian/patches/ada-mips.dpatch,
+    debian/patches/ada-mipsel.dpatch: remove, merged upstream.
+  * debian/patches/*ada*.dpatch:
+    - rename to *.diff;
+    - remove the dpatch prologue shell script
+    - refresh with quilt -p ab and without time stamps
+    - adjust to GCC 4.4
+  * debian/patches/ada-library-project-files-soname.diff,
+    debian/patches/ada-polyorb-dsa.diff,
+    debian/patches/pr39856.diff: new.
+  * debian/rules.patch: adjust accordingly.
+  * debian/rules.defs: re-enable Ada.
+  * debian/rules2: do a lean bootstrap when building Ada.
+  * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore,
+    removed upstream.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 12 Jun 2009 18:34:13 +0200
+
+gcc-4.4 (4.4.0-5) unstable; urgency=medium
+
+  * Update to SVN 20090517 from the gcc-4_4-branch (r147630).
+    - Fixes PR tree-optimization/40062, PR middle-end/39986,
+      PR middle-end/40057, PR fortran/39879, PR libstdc++/40038,
+      PR middle-end/40035, PR target/37179, PR middle-end/39666,
+      PR tree-optimization/40074, PR fortran/40018, PR fortran/38863,
+      PR middle-end/40147, PR fortran/40018, PR target/40153.
+
+  [ Matthias Klose ]
+  * Update libstdc++ symbols files.
+  * Update libgcc, libobjc, libstdc++ symbols files for armel.
+  * Fix version symlink in gcc_lib_dir. Closes: #527837.
+  * Fix symlinks for javac and header files in /usr/lib/jvm.
+    Closes: #528084.
+  * Don't build the stage1 compiler with -O with recent binutils (trunk).
+  * Revert doing link tests to check for the atomic builtins, disabling
+    exception propagation support in libstdc++ on armel. See PR40133, PR40134.
+  * On mips/mipsel don't run the java testsuite with -mabi=64.
+  * Default to armv4 for the gcc-snapshot package as well. Closes: #523936.
+  * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309.
+  * Remove unneed '..' elements from symlinks in JAVA_HOME.
+  * Fix some lintian warnings for gcc-snapshot.
+
+  [ Arthur Loiret ]
+  * Add missing dir separator to multiarch path.  Closes: #527537.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 17 May 2009 11:15:52 +0200
+
+gcc-4.4 (4.4.0-4) unstable; urgency=medium
+
+  * Update to SVN 20090506 from the gcc-4_4-branch (r147161).
+    - Fixes PR rtl-optimization/39914, PR testsuite/39776,
+      PR tree-optimization/40022, PR libstdc++/39909.
+
+  [ Matthias Klose ]
+  * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt
+    and patchutils.
+  * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc.
+  * Update libgcc and libstdc++ symbol files for mips and mipsel.
+  * Update libstdc++ symbol files for armel and hppa, adding symbols
+    for exception propagation support.
+  * Add ARM EABI symbols to libstdc++ symbol files for armel.
+  * Add libobjc symbols file for armel.
+  * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++.
+  
+  [ Aurelien Jarno ]
+  * Fix libc name for biarch packages on kfreebsd-amd64.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 06 May 2009 15:10:36 +0200
+
+gcc-4.4 (4.4.0-3) unstable; urgency=low
+
+  * libstdc++-doc: Install the man pages again.
+  * Fix build configuration for the GC enabled ObjC runtime library.
+  * Fix thinko in autotools_files, resulting in autoconf not run in
+    some cases.
+  * Do link tests to check for the atomic builtins, enables exception
+    propagation support in libstdc++ on armel and hppa.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 03 May 2009 23:38:56 +0200
+
+gcc-4.4 (4.4.0-2) unstable; urgency=low
+
+  [ Samuel Thibault ]
+  * Enable java build on the hurd.
+
+  [ Matthias Klose ]
+  * libobjc2.symbols.armel: Remove, use the default one.
+  * Address PR libstdc++/39491, removing __signbitl from the libstdc++6
+    symbols file on hppa.
+  * libstdc++6.symbols.armel: Fix error introduced with copy from the
+    arm symbols file.
+  * libstdc++6.symbols.*: Don't assume exception propagation support
+    enabled for all architectures (although it should on armel, hppa,
+    sparc).
+  * Disable the build of the ObjC garbage collection library on mips*,
+    working around a build failure.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 02 May 2009 14:22:35 +0200
+
+gcc-4.4 (4.4.0-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20090429 from the gcc-4_4-branch (r146989).
+  * Configure java enabled builds with --enable-java-home.
+  * Integrate the bits previously found in java-gcj-compat.
+  * Rename the packages using the naming schema used for OpenJDK:
+    gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}.  The packages
+    {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone.
+  * Build the libgcj documentation with the just built gjdoc.
+  * Don't use profiled bootstrap when building the gcj source.
+  * Apply proposed patch for PR target/39856.
+  * Fix some lintian warnings.
+  * Don't include debug symbols for libstdc++.so.6, if the library is
+    built by a newer GCC version.
+  * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414.
+  * Update libgcc, libgfortran, libobjc, libstdc++ symbol files.
+  * gcc-4.4: Include libssp_nonshared.a.
+  * For ix86, set the java architecture directory to i386.
+
+  [ Samuel Thibault ]
+  * Update Hurd changes.
+  * Configure with --enable-clocale=gnu on hurd-i386.
+  * debian/patches/hurd-pthread.diff: Reapply.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 30 Apr 2009 00:30:20 +0200
+
+gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low
+
+  * Update to SVN 20090423 from the gcc-4_4-branch.
+
+  [ Aurelien Jarno ]
+  * kbsd-gnu.diff: remove parts merged upstream.
+
+  [ Matthias Klose ]
+  * Remove conflicts/replaces for *-spu packages.
+  * Configure the spu cross compiler without --with-sysroot and
+    --enable-multiarch.
+  * Fix and reenable the gfortran-spu build.
+  * Work around build failures with missing libstdc++ baseline files.
+  * Install gjdoc man page.
+  * Fix java configuration with --enable-java-home and include symlinks
+    for JAVA_HOME in /usr/lib/jvm.
+  * Apply proposed fix for PR middle-end/39794.
+  * Install libstdc++ man pages with suffix .3cxx instead of .3.
+    Closes: #525244.
+  * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 23 Apr 2009 18:11:49 +0200
+
+gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low
+
+  * Final GCC 4.4.0 release.
+
+  * Don't build the Fortran SPU cross compiler, currently broken.
+  * spu cross build: Build without spucache and spumea64.
+  * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386},
+    --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia.
+  * Build using profiled bootstrap.
+  * Remove the gcc-4.4-base.postinst. Addresses: #524708.
+  * Update debian/copyright: Include runtime library exception, remove
+    D and Phobas license.
+  * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++
+    on hppa.
+  * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828).
+  * Update NEWS files for 4.4.
+  * Build again libgfortran for the non-default multilib configuration.
+  * Restore missing chunks in note-gnu-stack.diff, lost during the conversion
+    to quilt.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Apr 2009 00:53:16 +0200
+
+gcc-4.4 (4.4-20090418-1) experimental; urgency=low
+
+  * Update to SVN 20090418 from the gcc-4_4-branch.
+
+  [ Arthur Loiret ]
+  * Update patches:
+    - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs:
+      Rebase on trunk.
+    - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints:
+      Remove, merged in trunk.
+    - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4
+      branch yet.
+    - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x,
+      gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet.
+    - svn-class-updates, svn-doc-updates, svn-updates: Make empty.
+    - Refresh all others, and convert them all to quilt.
+
+  * Build system improvements:
+    - Partial rewrite/refactor of rules files.
+    - Switch patch system to quilt.
+    - Autogenerate debian/copyright.
+    - Use the autoconf2.59 package.
+
+  * multilib/multiarch support improvements: Closes: #369064, #484589.
+    - mips-triarch.diff: Replace with a newer version (approved upstream).
+    - s390-biarch.diff: Ditto.
+    - debian/rules2: Configure with --enable-targets=all on mips-linux,
+      mipsel-linux and s390-linux.
+    - gcc-multiarch.diff: New, add multiarch include directories and
+      libraries path to the system paths.
+    - debian/rules2: Configure with --enable-multiarch. Configure spu build
+      with --with-multiarch-defaults=spu-elf.
+    - multiarch-include.diff: Remove.
+    - debian/multiarch.inc: Ditto.
+
+  * cross-compilers changes:
+    - Never build a separated -base package, don't symlink any doc dir.
+    - Build gobjc again.
+
+  * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to
+    hopefully fix the massive failure.
+  * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS
+    on those archs due to a kernel bug triggered by lsb_release call.
+    Adresses: #524416.
+  * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is
+    enabled. Remove gpc and gdc patches.
+  * debian/rules.unpack (install_autotools_stamp): Remove.
+  * debian/rules.defs (configure_dependencies): Remove autotools dependency.
+  * debian/rules.conf: Add a copyright-file target.
+  * debian/control.m4: Build-Depends on autoconf2.59 and patchutils.
+    Make gcc-4.4-source Depends on autoconf2.59.
+    Add myself to Uploaders.
+  * debian/rules.d/binary-source.mk: Don't build and install an embedded
+    copy or autoconf2.59 in gcc-4.4-source.
+  * debian/copyright.in: New.
+
+  [ Matthias Klose ]
+  * Build gcj on hppa.
+  * Add support to build vfp optimized runtime libraries on armel.
+  * gcc-4.4-spu: Depend on newlib-spu.
+  * Fix sections of -dbg and java packages.
+  * gcc-default-ssp.dpatch: Set the default as well, when calling the
+    preprocessor. LP: #346126.
+  * Build-depend on quilt.
+  * Keep the copyright file in the archive.
+  * Remove conflict of the gcc-X.Y-source packages.
+  * Update removal of gfdl doc files for 4.4.
+  * Don't re-run the autotools (introduced with the switch to quilt).
+  * On arm and armel, install the arm_neon.h header. LP: #360819.
+  * When hardening options are turned on by default, patch the testsuite
+    to handle the hardening defaults (Kees Cook).
+  * Only run the patch target once. Avoids multiple autotool runs, but
+    doesn't reflect changes in the series file anymore.
+  * libgcj-doc: Fix documentation title.
+  * Fix gcj source build with recent build changes.
+  * Don't check for libraries in DEB_BUILD_OPTIONS/nolang.
+  * gappletviewer: Include missing binary.
+
+  [ Aurelien Jarno ]
+  * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream).
+  * kbsd-gnu.diff: add fix for stuff broken by upstream.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 20 Apr 2009 01:34:26 +0200
+
+gcc-4.4 (4.4-20090317-1) experimental; urgency=low
+
+  * Initial upload of GCC-4.4, based on trunk 20090317 (r144904).
+
+  [Matthias Klose]
+  * Branch from the gcc-4.3 packaging.
+  * Remove *-trunk patches, update remaining patches for the trunk.
+  * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support,
+    libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa,
+    gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts,
+    hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel,
+    gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9.
+  * Update patches for 4.4, mostly using the patches converted for quilt by
+    Arthur Loiret.
+  * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library.
+  * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir.
+  * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included
+    autoconf tarball.
+  * debian/rules.d/binary-{gcc,java}.mk: Install new header files.
+  * debian/libgfortran3.symbols.common: Remove symbol not generated by
+    gfortran (__iso_c_binding_c_f_procpointer@GFORTRAN_1.0), PR38871.
+  * debian/rules.conf: Update for 4.4.
+  * Fix build dependencies and configure options for 4.4, which were applied
+    for snapshot builds only.
+
+  [Arthur Loiret]
+  * Update patches from debian/patches:
+    - Remove backported fixes:
+      PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch,
+      pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch,
+      pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch,
+      pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch,
+      pr34466.dpatch, pr35050.dpatch, pr35792.dpatch.
+      PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch,
+      pr35965.dpatch, pr37661.dpatch.
+      PR libgcj: pr24170.dpatch, pr35020.dpatch.
+      PR gcov-profile: pr38292.dpatch.
+      PR other: pr28322.dpatch.
+  * debian/rules.patch: Update.
+  * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 17 Mar 2009 02:28:01 +0100
+
+gcc-4.3 (4.3.3-5) unstable; urgency=low
+
+  Merge from gnat-4.3 (4.3.3-1):
+
+  [Petr Salinger]
+  * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD.
+    Fixes: #512277.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely
+    successful yet).
+  * New upstream version.  Fixes: #514565.
+
+  [Matthias Klose]
+  * Update to SVN 20090301 from the gcc-4_3-branch.
+    - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006,
+      PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056,
+      PR target/39228, PR middle-end/36578, PR inline-asm/39058,
+      PR middle-end/37861.
+  * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore.
+  * Require binutils-2.19.1.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 01 Mar 2009 14:18:09 +0100
+
+gcc-4.3 (4.3.3-4) unstable; urgency=low
+
+  * Fix Fix PR gcov-profile/38292 (wrong profile information), taken
+    from the trunk.
+  * Update to SVN 20090215 from the gcc-4_3-branch.
+    Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076,
+    PR c/35433, PR tree-optimization/39041, PR target/38988,
+    PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434,
+    PR c/36432, PR target/38991, PR c/39084, PR target/39118.
+  * Reapply the fix for PR middle-end/38615.
+  * Include autoconf-2.59 sources into the source package, and install as
+    part of the gcc-4.3-source package.
+  * Explicitely use autoconf-1.9.
+  * Disable building the gcjwebplugin.
+  * Don't configure with --enable-cld on amd64 and i386.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 15 Feb 2009 23:40:09 +0100
+
+gcc-4.3 (4.3.3-3) unstable; urgency=medium
+
+  * Revert fix for PR middle-end/38615. Closes: #513420.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 29 Jan 2009 07:05:15 +0100
+
+gcc-4.3 (4.3.3-2) unstable; urgency=low
+
+  * Update to SVN 20090127 from the gcc-4_3-branch.
+    - Fix PR tree-optimization/38359. Closes: #492505.
+    - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931
+      (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code),
+      PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code),
+      PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid),
+      PR fortran/38672 (ice-on-valid-code).
+  * Fix PR middle-end/38969, taken from the trunk. Closes: #513007.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 27 Jan 2009 23:42:45 +0100
+
+gcc-4.3 (4.3.3-1) unstable; urgency=low
+
+  * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload).
+  * Fix PR middle-end/38615 (wrong code, taken from the trunk).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 Jan 2009 14:43:09 +0100
+
+gcc-4.3 (4.3.2-4) unstable; urgency=medium
+
+  * Update to SVN 20090119 from the gcc-4_3-branch.
+    - Fix PR tree-optimization/36765 (wrong code).
+  * Remove patch for PR 34571, applied upstream (fix build failure on alpha).
+  * Apply proposed patch for PR middle-end/38902 (wrong code).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 20 Jan 2009 00:22:41 +0100
+
+gcc-4.3 (4.3.2-3) unstable; urgency=low
+
+  * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate).
+    - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194,
+      PR tree-optimization/38529, PR fortran/38763, PR fortran/38765,
+      PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657,
+      PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357,
+      PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396.
+    - debian/patches/libgcj-bc.dpatch: Remove, applied upstream.
+  * Fix PR middle-end/38616 (wrong code with -fstack-protector).
+  * Update backport for PR28322 (Gunther Nikl).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 17 Jan 2009 21:09:35 +0100
+
+gcc-4.3 (4.3.2-2) unstable; urgency=low
+
+  * Update to SVN 20090110 from the gcc-4_3-branch.
+    - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675,
+      PR fortran/37469, PR libstdc++/38000.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Jan 2009 18:32:34 +0100
+
+gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low
+
+  * Adjust build-dependencies for cross builds. Closes: #499998.
+  * Update to SVN 20081231 from the gcc-4_3-branch.
+    - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383,
+      PR target/38402, PR testsuite/35677, PR tree-optimization/38478,
+      PR target/38054, PR middle-end/29056, PR testsuite/28870,
+      PR target/38254.
+    - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080.
+    - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487,
+      PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889.
+  * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217.
+  * debian/patches/libobjc-armel.dpatch: Don't define EH_USES.
+  * Apply the Atomic builtins patch for PARISC.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 18 Dec 2008 00:34:46 +0100
+
+gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low
+
+  * Update to SVN 20081130 from the gcc-4_3-branch.
+    - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809,
+      PR rtl-optimization/37489, PR target/35574, PR c/37924,
+      PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870,
+      PR target/38016, PR target/37939, PR rtl-optimization/37769,
+      PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445,
+      PR fortran/PR35769, PR fortran/37903, PR fortran/37749.
+    - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100,
+      PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030,
+      PR c++/37932, PR c++/38007.
+    - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681,
+      PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526.
+    - Fix PR target/38287. Closes: #506713.
+  * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken
+    from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 01 Dec 2008 01:29:51 +0100
+
+gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low
+
+  * Update to SVN 20081117 from the gcc-4_3-branch.
+  * Add build dependencies on spu packages for snapshot builds.
+  * Add build dependency on libantlr-java for snapshot builds.
+  * Disable fortran on spu for snapshot builds.
+  * Add dependency on binutils-{hppa64,spu} for snapshot builds.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 17 Nov 2008 21:57:51 +0100
+
+gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low
+
+  * Update to SVN 20081023 from the gcc-4_3-branch.
+    - General regression fixes: PR rtl-optimization/37882 (wrong code),
+    - Fortran regression fixes: PR fortran/37787, PR fortran/37723.
+  * Use gij-4.3 for builds in java maintainer mode.
+  * Don't run the testsuite with -fstack-protector for snapshot builds.
+  * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023.
+    Don't disable multilibs, install additional components in the gcc-4.3-spu
+    package.
+  * Enable building the spu cross compiler for powerpc and ppc64 snapshot
+    builds.
+  * Apply proposed patch for PR tree-optimization/37868 (wrong code).
+  * Apply proposed patch to parallelize make check.
+  * For biarch builds, disable the gnat testsuite for the non-default
+    architecture (no biarch support in gnat yet).
+
+ -- Matthias Klose <doko@debian.org>  Thu, 23 Oct 2008 22:06:38 +0200
+
+gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low
+
+  * Update to SVN 20081017 from the gcc-4_3-branch.
+    - General regression fixes: PR rtl-optimization/37408 (wrong code),
+      PR tree-optimization/36630, PR tree-optimization/37102 (wrong code),
+      PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code),
+      PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on
+      valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid
+      code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236
+      (ice on invalid code), PR tree-optimization/36343 (wrong code),
+      PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid
+      code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong
+      code), PR target/37466 (wrong code, AVR).
+    - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on
+      invalid code).
+    - Fortran regression fixes: PR fortran/37199, PR fortran/36214,
+      PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274,
+      PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626,
+      PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680,
+      PR fortran/37794.
+  * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch.
+  * Fix naming of bridge targets in gjavah (wrong header generation).
+  * Fix PR target/37661, SPARC64 int-to-TFmode conversions.
+  * Include the complete test summaries in a binary package, to allow
+    regression checking from the previous build.
+  * Tighten inter-package dependencies to (>= 4.3.2-1).
+  * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 17 Oct 2008 23:26:50 +0200
+
+gcc-4.3 (4.3.2-1) unstable; urgency=medium
+
+  [Matthias Klose]
+  * Final gcc-4.3.2 release (regression fixes).
+    - Remove the generated install docs from the tarball (GFDL licensed).
+    - C++ regression fixes: PR debug/37156.
+    - general regression fixes: PR debug/37156, PR target/37101.
+    - Java regression fixes: PR libgcj/8995.
+  * Update to SVN 20080905 from the gcc-4_3-branch.
+    - C++ regression fixes: PR c++/36741 (wrong diagnostic),
+    - general regression fixes: PR target/37184 (ice on valid code),
+      PR target/37191 (ice on valid code), PR target/37197 (ice on valid code),
+      PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code),
+      PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic),
+      PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code),
+      PR middle-end/37248 (missed optimization), PR target/36332 (wrong code).
+    - Fortran regression fixes: PR fortran/37193 (rejects valid code).
+  * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369.
+  * Don't build-depend on autogen on architectures where it is not installable
+    (needed for the fixincludes testsuite only); don't build-depend on it for
+    source packages not running the fixincludes testsuite.
+
+  [Ludovic Brenta]
+  * Add sdefault.ads to libgnatprj4.3-dev.  Fixes: #492866.
+  * turn gnatvsn.gpr and gnatprj.gpr into proper library project files.
+  * Unconditionally build-depend on gnat when building gnat-4.3.
+    Fixes: #487564.
+  * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to
+    /usr/lib/libgnat-4.3.so in the adalib directory.  Fixes: #493814.
+  * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all
+    adalib directories.
+  * debian/patches/ada-alpha.dpatch: remove, applied upstream.
+
+  [Samuel Tardieu, Ludovic Brenta]
+  * debian/patches/pr16086.dpatch: new; backport from GCC 4.4.
+    Closes: #248172.
+  * debian/patches/pr35792.dpatch: new; backport from GCC 4.4.
+  * debian/patches/pr15808.dpatch (fixes: #246392),
+    debian/patches/pr30827.dpatch: new; backport from the trunk.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 05 Sep 2008 22:52:58 +0200
+
+gcc-4.3 (4.3.1-9) unstable; urgency=low
+
+  * Update to SVN 20080814 from the gcc-4_3-branch.
+    - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999,
+      PR c++/36405, PR c++/36767, PR c++/36852.
+    - general regression fixes: PR target/36613, PR rtl-optimization/36998,
+      PR middle-end/37042, PR middle-end/35432, PR target/35659,
+      PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991,
+      PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419,
+      PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929,
+      PR tree-optimization/36830, PR c/35746, PR middle-end/37014,
+      PR middle-end/37103.
+    - Fortran regression fixes: PR fortran/36132.
+    - Java regression fixes: PR libgcj/31890.
+    - Fixes PR middle-end/37090. Closes: #494815.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 14 Aug 2008 18:02:52 +0000
+
+gcc-4.3 (4.3.1-8) unstable; urgency=low
+
+  * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 25 Jul 2008 21:47:52 +0200
+
+gcc-4.3 (4.3.1-7) unstable; urgency=low
+
+  * Update to SVN 20080722 from the gcc-4_3-branch.
+    - Fix PR middle-end/36811, infinite loop building with -O3.
+    - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963,
+      PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729.
+    - Fortran regression fixes: PR fortran/36366, PR fortran/36824.
+    - general regression fixes: PR middle-end/36877, PR target/36780,
+      PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753,
+      PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369,
+      PR target/36780, PR target/35492, PR middle-end/36811,
+      PR rtl-optimization/36419, PR target/35802, PR target/36736,
+      PR target/34780.
+  * Revert PR tree-optimization/36262 on i386, causing miscompilation of
+    OpenJDK hotspot.
+  * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 22 Jul 2008 23:55:54 +0200
+
+gcc-4.3 (4.3.1-6) unstable; urgency=low
+
+  * Start the logwatch script on alpha as well to avoid timeouts in
+    the testsuite.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 07 Jul 2008 11:31:58 +0200
+
+gcc-4.3 (4.3.1-5) unstable; urgency=low
+
+  * Update to SVN 20080705 from the gcc-4_3-branch.
+    - Fix PR target/36634, wrong-code on powerpc with -msecure-plt.
+  * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517.
+  * Don't run the libjava testsuite with -mabi=n32.
+  * Update patch for PR other/28322, that unknown -Wno-* options do not
+    cause errors, but warnings instead.
+  * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael
+    Casadeval for the m68k port). Closes: #489234.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 06 Jul 2008 01:39:30 +0200
+
+gcc-4.3 (4.3.1-4) unstable; urgency=low
+
+  * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch.
+  * Remove obsolete multiarch-lib patch.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 30 Jun 2008 23:05:17 +0200
+
+gcc-4.3 (4.3.1-3) unstable; urgency=medium
+
+  [Arthur Loiret]
+  * debian/rules2:
+    - configure sh4-linux with --with-multilib-list=m4,m4-nofpu
+      and --with-cpu=sh4.
+    - configure sparc-linux with --enable-targets=all on snapshot builds
+      (change already in 4.3.1-1).
+  * debian/rules.patch: Don't apply sh4-multilib.dpatch.
+
+  [Matthias Klose]
+  * Update to SVN 20080628 from the gcc-4_3-branch.
+    - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand.
+      Closes: #487115.
+  * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault).
+    Closes: #483613.
+  * Do not create a /usr/lib/gcc/<target-arch>/4.3.0 symlink.
+  * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch.
+  * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 28 Jun 2008 16:00:38 +0200
+
+gcc-4.3 (4.3.1-2) unstable; urgency=low
+
+  * Update to SVN 20080610 from the gcc-4_3-branch.
+    - config.gcc: Fix quoting for in the enable_cld test.
+  * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395.
+  * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133.
+  * libjava: On armel apply kludge to fix unwinder infinitely looping 'til
+    it runs out of memory.
+  * Adjust dependencies to require GCC 4.3.1.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 11 Jun 2008 00:35:38 +0200
+
+gcc-4.3 (4.3.1-1) unstable; urgency=high
+
+  [Samuel Tardieu, Ludovic Brenta]
+  * debian/patches/pr16087.dpatch: new. Fixes: #248173.
+  * Correct the patches from the previous upload.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the
+    bootstrap gnat.
+  * debian/rules2: when running the Ada test suite, do not run the multilib
+    tests as gnat does not support multilib yet.
+  * Run the ACATS testsuite again (patch it so it correctly finds gnatmake).
+
+  [Thiemo Seufer]
+  * debian/patches/ada-libgnatprj.dpatch,
+    debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel.
+    Fixes: #482433.
+
+  [Matthias Klose]
+  * GCC-4.3.1 release.
+  * Do not include standard system paths in libgcj pkgconfig file.
+  * Suggest the correct libmudflap0-dbg package.
+  * Fix PR libjava/35020, taken from the trunk.
+  * Apply proposed patch for PR tree-optimization/36343.
+  * On hurd-i386 with -fstack-protector do not link with libssp_nonshared
+    (Samuel Thibault). Closes: #483613.
+  * Apply proposed patch for PR tree-optimization/34244.
+  * Remove debian-revision in symbols files.
+  * Fix installation of all biarch -multilib packages which are not triarch.
+  * Fix some lintian warnings.
+  * Include library symlinks in gobjc and gfortran multilib packages, when
+    not building the library packages.
+  * Fix sections in doc-base files.
+  * Don't apply the sparc-biarch patch when building the gcc-snapshot package.
+  * libjava: Add @file support for gjavah & gjar.
+  * Apply patch for PR rtl-optimization/36111, taken from the trunk.
+
+  * Closing reports reported against gcc-4.0 and fixed in gcc-4.3:
+    - General
+      + Fix PR optimization/3511, inlined strlen() could be smarter.
+        Close: #86251.
+    - C
+      + Fix PR c/9072, Split of -Wconversion in two different flags.
+        Closes: #128950, #226952.
+    - C++/libstdc++
+      + PR libstdc++/24660, implement versioning weak symbols in libstdc++.
+        Closes: #328421.
+    - Architecture specific:
+      - mips
+        + PR target/26560, unable to find a register to spill in class
+          'FP_REGS'. Closes: #354439.
+      - sparc
+        + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951.
+  * Closing reports reported against gcc-4.1 and fixed in gcc-4.2:
+    - General
+      + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484.
+      + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index.
+        Closes: #405065.
+      + Incorrect SSE2 code generation for vector initialization.
+        Closes: #406442.
+      + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv.
+        Closes: #458072.
+      + Fix regression in code size with -Os compared to GCC-3.3.
+        Closes: #348298.
+    - C++
+      + Fix initialization of global variables with non-constant initializer.
+        Closes: #446067.
+      + Fix ICE building muse. Closes: #429385.
+  * Closing reports reported against gcc-4.1 and fixed in gcc-4.3:
+    - C++
+      + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324.
+      + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor.
+        Closes: #356316.
+      + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl.
+        Closes: #327346, #355909.
+    - Fortran
+      + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496.
+    - Java
+      + Fix ICE using gcj with --coverage. Closes: #416326.
+      + PR libgcj/29869, LogManager class loading failure. Closes: #399251
+      + PR swing/29547 setText (String) of JButton does not work
+        with HTML code. Closes: #392791.
+      + PR libgcj/29178, CharsetEncoder.canEncode() gives different results
+        than Sun version. Closes: #388596.
+      + PR java/8923, ICE when modifying a variable decleared "final static".
+        Closes: #351512.
+      + PR java/22507, segfault building Apache Cocoon. Closes: #318534.
+      + PR java/2499, class members should be inherited from implemented
+        interfaces. Closes: #225434.
+      + PR java/10581, ICE compiling freenet. Closes: #186922.
+      + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098.
+      + PR java/32846, build failure on GNU/Hurd. Closes: #408888.
+      + PR java/29194, fails to import package from project. Closes: #369873.
+      + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM.
+        Closes: #426742.
+      + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET.
+        Closes: #433636.
+    - Architecture specific:
+      - alpha
+        + C++, fix segfault in constructor with -Os. Closes: #438436.
+      - hppa
+        + PR target/30131, ICE in propagate_one_insn. Closes: #397341.
+      - m32r
+        + PR target/28508, assembler error (operand out of range).
+          Closes: #417542.
+      - m68k
+        + PR target/34688, ICE in output_operand. Closes: #459429.
+  * Closing reports reported against gcc-4.2 and fixed in gcc-4.3:
+    - General
+      + PR tree-optimization/33826, wrong code generation for infinitely
+        recursive functions. Closes: #445536.
+    - C++
+      + PR c++/24791, ICE on invalid instantiation of template's static member.
+        Closes: #446698.
+
+  [Aurelien Jarno]
+  * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 07 Jun 2008 23:16:21 +0200
+
+gcc-4.3 (4.3.0-5) unstable; urgency=medium
+
+  * Update to SVN 20080523 from the gcc-4_3-branch.
+    - Remove gcc-i386-emit-cld patch.
+    - On Debian amd64 and i386 configure with --enable-cld.
+  * Fix PR tree-optimization/36129, ICE with -fprofile-use.
+  * Add spu build dependencies independent of the architecture.
+  * Move arm -funroll-loops fix to arm-funroll-loops from 
+    gfortran-armel-updates. Apply it on both arm and armel. 
+    Closes: #476460.
+  * Use iceape-dev as a build dependency for Java enabled builds.
+  * Build the sru cross compiler from a separate source dir without applying
+    the hardening patches.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 23 May 2008 10:12:02 +0200
+
+gcc-4.3 (4.3.0-4) unstable; urgency=low
+
+  [ Aurelien Jarno ]
+  * Fix gnat-4.3 build on mips/mipsel. 
+  * Update libgcc1 symbols for hurd-i386.
+
+  [ Arthur Loiret ]
+  * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088
+  * Build depend on spu build dependencies only when building
+    as gcc-4.x source package.
+  * Disable spu for snapshot builds.
+  * Support sh4 targets:
+    - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux
+    - multiarch-include.dpatch: Don't apply on sh4.
+
+  [ Matthias Klose ]
+  * Stop building libffi packages.
+  * Update to SVN 20080501 from the gcc-4_3-branch.
+    - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427.
+    - Fixes mplayer build on powerpc. Closes: #475153.
+  * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560.
+  * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253.
+  * debian/patches/template.dpatch: Remove the `exit 0' line.
+  * Fix alternative names for amd64 cross builds. Addresses: #466422.
+  * debian/copyright: Update to GPLv3, remove the text of the GFDL
+    and reference the copy in common-licenses.
+  * Generate the locale data for the testsuite, if the locales package
+    is installed (not a dependency on all archs).
+  * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips
+    and mipsel.
+  * Do not include a symbols file for libobjc_gc.so.
+  * Add four more symbols to libgcj_bc, patch taken from the trunk.
+  * Adjust names of manual pages in the spu build on powerpc.
+  * ARM EABI (armel) updates (Andrew Jenner, Julian Brown):
+    - Add Objective-C support.
+    - Fortran support patches.
+    - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload.
+  * Build ObjC and Obj-C++ packages on armel.
+  * Reenable running the testsuite on m68k.
+
+  [Samuel Tardieu, Ludovic Brenta]
+  * debian/patches/gnalasup_to_lapack.dpatch: new.
+  * debian/patches/pr34466.dpatch,
+    debian/patches/pr22255.dpatch,
+    debian/patches/pr33688.dpatch,
+    debian/patches/pr10768.dpatch,
+    debian/patches/pr28305.dpatch,
+    debian/patches/pr17985.dpatch (#278685)
+    debian/patches/pr15915.dpatch,
+    debian/patches/pr16098.dpatch,
+    debian/patches/pr18680.dpatch,
+    debian/patches/pr28733.dpatch,
+    debian/patches/pr22387.dpatch,
+    debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4.
+  * debian/patches/rules.patch: apply them.
+  * debian/patches/pr35050.dpatch: update.
+
+  [Andreas Jochens]
+  * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64.
+    (#476868).
+
+  [Ludovic Brenta]
+  * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64.
+  * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to
+    the bootstrap compiler, as the patch breaks the detection of whether
+    the bootstrap compiler supports this option or not.
+    Fixes: #471192.  Works around #471767.
+  * Merge Aur�İlien Jarno's mips patch.  Fixes: #472854.
+
+  [ Samuel Tardieu ]
+  * debian/patches/pr30740.dpatch: new Ada bug fix.
+  * debian/patches/pr35050.dpatch: new Ada bug fix.
+
+  [ Xavier Grave ]
+  * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support
+    into new patches, out of ada-sjlj.dpatch.
+  * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a.
+
+  [Roman Zippel]
+  * PR target/25343, fix gcc.dg/pch/pch for m68k.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 01 May 2008 21:08:09 +0200
+
+gcc-4.3 (4.3.0-3) unstable; urgency=medium
+
+  [ Matthias Klose ]
+  * Update to SVN 20080401 from the gcc-4_3-branch.
+    - Fix PR middle-end/35705 (hppa only).
+  * Update libstdc++6 symbols for hurd-i386. Closes: #472334.
+  * Update symbol files for libgomp (ppc64).
+  * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures.
+  * Update libstdc++ baseline symbols for hppa.
+  * Install powerpc specific header files new in 4.3.
+  * gcc-4.3-hppa64: Don't include the install tools in the package.
+
+  [ Aurelien Jarno ]
+  * Fix gobjc-4.3-multilib dependencies. Closes: #473455.
+  * Fix gnat-4.3 build on mips/mipsel. 
+  * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha.
+    Closes: #472852.
+  * patches/config-ml.dpatch: also check for n32 multidir.
+
+  [ Arthur Loiret ]
+  * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel,
+    required for triarch.
+  * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled.
+
+  [ Andreas Jochens ]
+  * Fix build failures on ppc64. Closes: #472917.
+    - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB
+      variables.
+    - Removed ppc64-biarch.dpatch.
+    - Add debian/lib32gfortan3.symbols.ppc64.
+
+  [ Arthur Loiret, Matthias Klose ]
+  * Build compilers for spu-elf target on powerpc and ppc64.
+    - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages.
+    - Partly based on the work in Ubuntu on the spu toolchain.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 01 Apr 2008 23:29:21 +0000
+
+gcc-4.3 (4.3.0-2) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20080321 from the gcc-4_3-branch.
+    - Remove some broken code that attempts to enforce linker
+      constraints. Closes: #432541.
+  * Temporary fix, will be removed once a fixed kernel is available
+    in testing: Emit cld instruction when stringops are used (i386).
+    Do not expose the -mcld option until added upstream. Closes: #469567.
+  * Update NEWS files.
+  * libjava: Don't leak upon failed realloc (taken from the trunk).
+  * debian/rules2: The build is not yet prepared to take variables from
+    the environment; unexport and unset those.
+
+  [Arthur Loiret/Aurelien Jarno]
+  * MIPS tri-arch support:
+    - mips-triarch.dpatch: new patch to default to o32 and follow the
+      glibc convention for n32 & 64 bit names.
+    - Rename $(biarch) and related vars into $(biarch64).
+    - Fix biarchsubdir to allow triarch.
+    - Add biarchn32 support.
+    - Add mips and mipsel to biarch64 and biarchn32 archs.
+    - Update binary rules for biarchn32 and libn32 targets.
+    - Fix multilib deps for triarch.
+    - control.m4: Add libn32 packages.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 22 Mar 2008 00:06:33 +0100
+
+gcc-4.3 (4.3.0-1) unstable; urgency=low
+
+  [Matthias Klose]
+  * GCC-4.3.0, final release.
+  * Update to SVN 20080309 from the gcc-4_3-branch.
+  * Build from a modified tarball, without GFDL documentation with
+    invariant sections and cover texts.
+  * debian/rules.unpack: Avoid make warnings.
+  * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir.
+  * Stop building treelang (removed upstream).
+  * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1.
+
+  [Aurelien Jarno]
+  * Update libssp-gnu.dpatch and reenable it.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 09 Mar 2008 15:18:08 +0100
+
+gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium
+
+  * Update to SVN 20080301 from the gcc-4_3-branch.
+  * Include the biarch libobjc_gc library in the packages.
+  * Link libobjc_gc with libgcjgc_convenience.la.
+  * Add new symbols to libstdc++6 symbol files, remove the symbols for
+    <system_error> support (reverted upstream for the 4.3 branch).
+  * Disable running the testsuite on m68k.
+  * Update PR other/28322, ignore only unknown -W* options.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 01 Mar 2008 15:09:16 +0100
+
+gcc-4.3 (4.3-20080227-1) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20080227 from the gcc-4_3-branch.
+  * Fix PR other/28322, GCC new warnings and compatibility.
+    Addresses: #367657.
+
+  [Hector Oron]
+  * Fix cross-compile builds. Closes: #467471.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 28 Feb 2008 00:30:38 +0100
+
+gcc-4.3 (4.3-20080219-1) unstable; urgency=medium
+
+  [Matthias Klose]
+  * Update to SVN 20080219 from the gcc-4_3-branch.
+  * Apply proposed patch for PR target/34571 (alpha).
+  * libgcj9-dev: Don't claim that the package contains the static
+    libraries.
+  * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9.
+    Name the alternative xulrunner-1.9-javaplugin.so.
+  * libgcj-doc: Don't include the examples; these cannot be built
+    with the existing Makefile anyway. Addresses: #449608.
+  * Manpages for gc-analyze and grmic are GFDL. Don't include these when
+    building DFSG compliant packages.
+  * Fix build failure building amd64 cross-target libstdc++ packages
+    (Tim Bagot). Addresses: #464365.
+  * Fix typos in rename-info-files patch (Richard Guenther).
+  * Fix PR libgcj/24170.
+
+  [Aurelien Jarno]
+  * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD.
+
+  [Ludovic Brenta]
+  * debian/rules.defs: Temporarily disable the testsuite when building gnat.
+  * debian/patches/libffi-configure.dpatch: run autoconf in the top-level
+    directory, where we've changed configure.ac; not in src/gcc.
+  * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't
+    change configure.ac.
+  * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc.
+    Closes: #464801.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Feb 2008 23:20:45 +0000
+
+gcc-4.3 (4.3-20080202-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20080202 from the trunk.
+    - Fix PR c/35017, pedwarns about valid code. Closes: #450506.
+    - Fix PR target/35045, wrong code generation with -O3 on i386.
+      Closes: #463478.
+  * gcj-4.3: On armel depend on g++-4.3.
+  * Re-enable build of libobjc_gc, using the internal version of boehm-gc.
+    Closes: #212248.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-default-project-path.dpatch,
+    debian/patches/ada-gcc-name.dpatch,
+    debian/patches/ada-symbolic-tracebacks.dpatch,
+    debian/patches/ada-link-lib.dpatch,
+    debian/patches/ada-libgnatvsn.dpatch,
+    debian/patches/ada-libgnatprj.dpatch,
+    debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3.
+  * debian/README.gnat, debian/TODO,
+    debian/rules.d/binary-ada.mk: merge from gnat-4.2.
+  * debian/README.maintainers: add instructions for patching GCC.
+  * debian/patches/ada-driver.dpatch: remove, no longer used.
+  * debian/patches/libffi-configure.dpatch: do not patch the top-level
+    configure anymore; instead, rerun autoconf.  This allows removing the
+    patch cleanly.
+  * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 02 Feb 2008 19:58:48 +0100
+
+gcc-4.3 (4.3-20080127-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20080126 from the trunk.
+  * Tighten build dependency on doxygen.
+  * Update libstdc++ patches to current svn.
+  * gij-4.3: Provide java*-runtime-headless instead of java*-runtime.
+  
+  [ Aurelien Jarno]
+  * debian/multiarch.inc: change mipsel64 into mips64el.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Jan 2008 01:33:35 +0100
+
+gcc-4.3 (4.3-20080116-1) unstable; urgency=medium
+
+  * Update to SVN 20080116 from the trunk.
+  * Update debian/watch.
+  * Build libgomp documentation without building libgomp. Addresses: #460660.
+  * Handle lzma compressed tarballs.
+  * Fix dependency generation for the gcc-snapshot package: Addresses: #454667.
+  * Restore lost chunk in libjava-subdir.dpatch.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 Jan 2008 20:33:50 +0100
+
+gcc-4.3 (4.3-20080112-1) unstable; urgency=low
+
+  * Update to SVN 20080112 from the trunk.
+  * Tighten build-dependency on dpkg-dev (closes: #458894).
+  * Update symbol definitions for alpha.
+  * Build-depend on libmpfr-dev for all source packages.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 13 Jan 2008 00:40:28 +0100
+
+gcc-4.3 (4.3-20080104-1) unstable; urgency=low
+
+  * Update to SVN 20080104 from the trunk.
+  * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc,
+    s390, sparc.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 04 Jan 2008 07:34:15 +0100
+
+gcc-4.3 (4.3-20080102-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20080102 from the trunk.
+    - Fix 64bit biarch builds (addresses: #447443).
+  * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs
+    dependencies right.
+  * Use lib instead of lib64 as multilibdir on amd64 and ppc64.
+  * Build the java plugin always using libxul-dev.
+  * Add libgcj_bc to the libgcj9-0 shlibs file.
+  * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6,
+    lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4,
+    lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3,
+    lib32gfortran3, lib64gfortran3.
+    Adjust build dependencies on dpkg-dev and debhelper.
+  * Do not build the java packages from the gcc-4.3 source package.
+
+  [ Aurelien Jarno ]
+  * Disable amd64-biarch patch on kfreebsd-amd64.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 02 Jan 2008 23:48:14 +0100
+
+gcc-4.3 (4.3-20071124-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20071124 from the trunk.
+  * Fix dependencies of lib*gcc1-dbg packages.
+  * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792.
+  * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282.
+  * Don't run the testsuite on hppa when expect-tcl8.3 is not available.
+  * Fix libgcc1-dbg doc directory symlink. Closes: #447969.
+
+  [ Aurelien Jarno ]
+  * Update kbsd-gnu patch.
+  * Remove kbsd-gnu-ada patch (merged upstream).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 Nov 2007 13:14:29 +0100
+
+gcc-4.3 (4.3-20070930-1) experimental; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20070929 from the trunk.
+  * Update debian patches to the current trunk.
+  * Regenerate the control file.
+  * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit
+    multilib libraries to allow a sucessful build on 32bit kernels
+    (our buildds). Although we won't get 64bit test results this way ...
+  * Remove the build dependency on expect-tcl8.3.
+  * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64.
+  * When -fstack-protector is the default (Ubuntu), do not enable
+    -fstack-protector when -nostdlib is specified. LP: #77865.
+  * Always set STAGE1_CFLAGS to -g -O2, only pass other settings
+    when configuring when required.
+  * Configure --with-bugurl, adjust the bug reporting instructions.
+  * gcc-4.3: Install new cpuid.h header.
+  * Fix installation of the s390 libstdc++ biarch headers.
+  * Install new bmmintrin.h, mmintrin-common.h headers.
+  * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc,
+    libgfortran.
+  * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929.
+
+  [Riku Voipio]
+  * Configure armeabi with --disable-sjlj-exceptions.
+  * armel testsuite takes ages, adjust build accordingly.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 30 Sep 2007 12:06:02 +0200
+
+gcc-4.3 (4.3-20070902-1) experimental; urgency=low
+
+  * Upload to experimental.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  2 Sep 2007 20:51:16 +0200
+
+gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low
+
+  * Update to SVN 20070902 from the trunk.
+  * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch.
+  * Only remove libgcj9's classmap db if no other libgcj9* library is
+    installed.
+  * A lot more updates for 4.3 packaging.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat, 01 Sep 2007 21:01:43 +0200
+
+gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low
+
+  * Update to SVN 20070901 from the trunk.
+  * First gcc-4.3 package build.
+    - Update patches for the *-linux-gnu builds.
+    - Update build files for 4.3.
+  * Add proposed patch for PR middle-end/33029.
+  * gcj-4.3: Install gc-analyze.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat,  1 Sep 2007 20:52:16 +0200
+
+gcc-4.2 (4.2.2-7) unstable; urgency=low
+
+  * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/34762. LP: #182412.
+  * Update debian/watch. Closes: #459259. Addresses: #459391, #459392.
+  * Build libgomp documentation without building libgomp. Closes: #460660.
+  * Restore gomp development files. Closes: #460736.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 14 Jan 2008 23:20:04 +0100
+
+gcc-4.2 (4.2.2-6) unstable; urgency=low
+
+  * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch.
+  * Adjust build-dependency on debhelper, dpkg-dev.
+  * Fix gnat-4.2 build failure (addresses: #456867).
+  * Do not build packages built from the gcc-4.3 source.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 13 Jan 2008 13:48:49 +0100
+
+gcc-4.2 (4.2.2-5) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/32889, ICE in delete_output_reload.
+      Closes: #444873, #445336, #451047.
+    - Fix PR target/34215, ICE in assign_386_stack_local.
+      Closes: #446714, #452451.
+    - Fix PR target/33848, reference to non-existent label at -O1 on
+      mips/mipsel. Closes: #441633.
+  * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling
+    symlink to libgcj_bc.so.1. Remove it temporarily.
+  * Add libgcj_bc to the libgcj8-1 shlibs file.
+  * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent
+    gdc changes.
+  * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6,
+    lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4,
+    lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build
+    dependencies on dpkg-dev and debhelper.
+    Adjust build-dependency on dpkg-dev.
+
+  [Arthur Loiret]
+  * Fix gdc-4.2 build failure.
+  * Update gdc to upstream SVN 20071124.
+    - d-bi-attrs: Support attributes on declarations in other modules.
+    - d-codegen.cc (IRState::attributes): Support constant declarations as
+      string arguments.
+  * Enable libphobos:
+    - gdc-4.2.dpatch: Fix ICEs.
+    - gdc-4.2-build.dpatch: Update, make it cleaner.
+  * Install libphobos in the private gcc lib dir.
+  * gdc-4.2.dpatch: Update from gdc-4.1.dpatch.
+    - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created
+      for anonymous unions.
+    - gcc/predict.c: Add null-pointer check.
+  * debian/rules.defs: Disable phobos on hurd-i386.
+    - gdc-hurd-proc_maps.dpatch: Remove.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 02 Jan 2008 15:49:30 +0100
+
+gcc-4.2 (4.2.2-4) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions.
+      Closes: #452108.
+  * Don't run the testsuite on hppa when expect-tcl8.3 is not available.
+  * Fix libgcc1-dbg doc directory symlink. Closes: #447969.
+  * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib.
+  * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520.
+  * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937.
+
+  [Arthur Loiret]
+  * Merge gdc-4.1 patches and build infrastructure:
+    - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D.
+    - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs.
+    - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib.
+    - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches.
+    - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported.
+    - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported.
+    - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets.
+    - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a
+      struct on non-x86_64 archs by a FormatError.
+    - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm.
+    - gdc-mips-gcc-config.dpatch: Add, fix build on mips.
+    - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 Nov 2007 12:01:06 +0100
+
+gcc-4.2 (4.2.2-3) unstable; urgency=low
+
+  * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch.
+    - Fix build failure in libjava on mips/mipsel.
+  * Make 4.2.2-2 a requirement for frontends built from separate sources.
+    Addresses: #446596.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 14 Oct 2007 14:13:00 +0200
+
+gcc-4.2 (4.2.2-2) unstable; urgency=low
+
+  * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687.
+    - Remove debian/patches/pr31899.dpatch, applied upstream.
+    - Remove debian/patches/pr33381.dpatch, applied upstream.
+  * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 11 Oct 2007 23:41:52 +0200
+
+gcc-4.2 (4.2.2-1) unstable; urgency=low
+
+  * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding
+    to the GCC-4.2.2 release.
+  * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190.
+  * Remove libjava-armeabi patch integrated upstream.
+  * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792.
+  * Apply proposed patch for PR debug/31899. Closes: #445268.
+
+  * Add niagara2 optimization support (David Miller).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 08 Oct 2007 21:12:41 +0200
+
+gcc-4.2 (4.2.1-6) unstable; urgency=high
+
+  [Matthias Klose]
+  * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/33382, ICE (closes: #441481).
+    - Fix PR tree-optimization/28544 (4.2.1, closes: #380482).
+    - Fix PR libffi/28313, port to mips64 (closes: #358235).
+  * Fix PR tree-optimization/33099, PR tree-optimization/33381,
+    wrong code generation with VRP/SCEV. Closes: #440545, #443576.
+  * Update Hurd fixes (Samuel Thibault).
+  * When -fstack-protector is the default (Ubuntu), do not enable
+    -fstack-protector when -nostdlib is specified. LP: #77865.
+  * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass
+    other settings when required.
+  * Fix installation of the s390 libstdc++ biarch headers.
+  * Allow the powerpc build on a 32bit machine (without running the
+    biarch testsuite).
+  * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc,
+    libgfortran.
+  * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems
+    to complete sucessfully with the expect package).
+  * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929.
+
+  * Closing reports reported against gcc-4.1 and fixed in gcc-4.2:
+    - General
+      + PR rtl-optimization/21299, error in invalid asm statement.
+        Closes: #380121.
+    - C++
+      + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility
+        around the declarations (closes: #307207, #324290, #423547).
+      + PR c++/21581, functions in anonymous namespaces default to "hidden"
+        visibility (closes: #278310).
+      + PR c++/4882, specialization of inner template using outer template
+        argument (closes: #269513).
+      + PR c++/6634, wrong parsing of "long long double" (closes: #247112).
+      + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti
+        is used (closes: #188943).
+      + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date.
+        Closes: #178561.
+      + PR libstdc++/31638, string usage leads to warning with -Wcast-align.
+        Closes: #382153.
+      + Fix memory hog seen with g++-4.1. Closes: #411234.
+    - Fortran
+      + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222).
+      + PR fortran/24285, allow dollars everywhere in format (closes: #324600).
+      + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by
+        format(f3.0). Closes: #397671.
+      + Fix ICE in gfc_get_extern_function_decl (closes: #396292).
+    - Architecture specific:
+      - i386
+        + Fix error with -m64 (unable to find a register to spill in class
+          'DIREG'). Closes: #430049.
+      - mips
+        + Fix ICE in tsubst (closes: #422303).
+      - s390
+        + Fix ICE (segmentation fault) building dcmtk (closes: #435736).
+
+  [Roman Zippel]
+  * Update the m68k patches.
+
+  [Riku Voipio]
+  * Configure armeabi with --disable-sjlj-exceptions.
+  * armel testsuite takes ages, adjust build accordingly.
+
+  [Ludovic Brenta and Xavier Grave]
+  * Add a version of the Ada run-time library using the setjump/longjump
+    exception handling mechanism (static library only).  Use with
+    gnatmake --RTS=sjlj.  Particularly useful for distributed (Annex E)
+    programs.
+  * Restore building libgnatvsn-dev and libgnatprj-dev.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 29 Sep 2007 11:19:40 +0200
+
+gcc-4.2 (4.2.1-5) unstable; urgency=low
+
+  * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch.
+    - Fix PR debug/32610, LP: #121911.
+  * Apply proposed patches:
+    - Improve debug info for packed arrays with constant bounds
+      (PR fortran/22244).
+    - Fix ICE in rtl_for_decl_init on const vector initializers
+      (PR debug/32914).
+    - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148).
+    - Fix libgcc.a(tramp.o) on ppc32.
+    - Fix redundant reg/mem stores/moves (PR target/30961).
+  * Update the -fdirectives-only backport.
+  * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114.
+  * Update gpc patches and build support (not yet enabled).
+  * Fix gcc-snapshot hppa64 install target.
+  * Set the priority of the source package to optional.
+  * Remove .la files from the biarch libstdc++ debug packages,
+    conflict with the 3.4 package. Closes: #440490.
+
+  [Arthur Loiret]
+  * Add build support for GDC.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 27 Aug 2007 01:39:32 +0200
+
+gcc-4.2 (4.2.1-4) unstable; urgency=medium
+
+  * gcc-4.2: Include missing std*.h header files.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 14 Aug 2007 11:14:35 +0200
+
+gcc-4.2 (4.2.1-3) unstable; urgency=low
+
+  * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch.
+  * debian/rules.defs: Fix typo, run the checks in biarch mode too.
+  * libgcj8-awt: Loosen dependency on gcj-4.2-base.
+  * Build only needed multilib libraries when building as gcj or gnat.
+  * Always build biarch libgomp in biarch builds.
+  * debian/rules2: Adjust testsuite logs files for logwatch.sh.
+  * Include header files from $/gcc_lib_dir)/include-fixed.
+  * Backport from trunk: -fdirectives-only (when preprocessing, handle
+    directives, but do not expand macros).
+  * Report an ICE to apport (if apport is available and the environment
+    variable GCC_NOAPPORT is not set)
+  * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 12 Aug 2007 21:11:00 +0200
+
+gcc-4.2 (4.2.1-2) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804):
+    - Merge gcc-4_2-branch SVN 20070804.
+    - Imported classpath CVS 20070727.
+    - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4).
+    - Remove patches integrated in the branches: pr32862.
+    - Update patches: libjava-subdir, libjava-jar.
+    - Add regenerated class files: svn-class-updates.
+
+  * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937.
+  * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053.
+  * Period of grace is over, run the testsuite on m68k-linux again.
+  * Update infrastructure for the gcc-source package (Bastian Blank).
+  * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). 
+    Closes: #433539.
+  * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel=<n> to overwrite NJOBS.
+  * Allow lang=<l1>,<l2> nolang=<l3,l4> in DEB_BUILD_OPTIONS; deprecating
+    WITHOUT_LANG, and WITHOUT_CHECK.
+  * debian/rules.defs, debian/rules.conf: Cache some often used macros.
+
+  * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build
+    libffi for armel.
+  * gcj: Don't build the browser plugin in gcc-snapshot builds to get
+    rid of the xulrunner dependency.
+  * gcjwebplugin: Register for more browsers (package currently not built).
+  * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails.
+    Closes: #422469.
+  * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault).
+  * gcj: On arm and armel, use the ecj1 binary built from the ecj package.
+  * gcj: Don't require javac without java maintainer mode, remove build
+    dependencies on gcj and ecj, add build dependency on libecj-java.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 05 Aug 2007 15:56:07 +0200
+
+gcc-4.2 (4.2.1-1) unstable; urgency=medium
+
+  [Ludovic Brenta]
+  * debian/patches/ada-symbolic-tracebacks.c: remove all trace of
+    the function convert_addresses from adaint.c.  Fixes FTBFS on alpha,
+    s390 and possibly other platforms.  Closes: #433633.
+  * debian/control.m4: list myself as uploader if the source package name
+    is gnat.  Relax build-dependency on gnat-4.2-source.
+  * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only
+    if building Fortran.
+
+  [Matthias Klose]
+  * debian/rules.conf: Fix breakage of Fortran build dependencies introduced
+    by merge of the Ada bits.
+  * Don't include the gccbug binary anymore in the gcc package; upstream bug
+    reports should be reported to the upstream bug tracker at
+    http://gcc.gnu.org/bugzilla.
+  * Don't build and test libjava for the biarch architecture.
+  * Install gappletviewer man page. Addresses: #423094.
+  * debian/patches/m68k-java.dpatch: Readd.
+  * gjar: support @ arguments.
+  * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch.
+    - Fix mips/mipsel builds.
+  * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306.
+  * arm/armel doesn't have ssp support. Closes: #433172.
+  * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. 
+  * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files
+    for the binary-indep target.
+  * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160.
+
+  [Arthur Loiret]
+  * Fix cross builds targeting x86_64. Closes: LP: #121834.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 26 Jul 2007 21:46:03 +0200
+
+gcc-4.2 (4.2.1-0) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding
+    to the GCC-4.2.1 release.
+    - debian/patches/arm-gij.dpatch: Remove. Closes: #433714.
+  * Apply proposed patch for PR tree-optimization/32723.
+  * Tighten build dependency on libmpfr-dev.
+  * On ia64, apply proposed patch for PR target/27880. Closes: #433719.
+
+  [Hector Oron]
+  * Fix cross and reverse-cross builds. Closes: #432356.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 19 Jul 2007 17:59:37 +0200
+
+gnat-4.2 (4.2-20070712-1) unstable; urgency=low
+
+  * debian/rules.d/binary-ada.mk, debian/control.m4:
+    disable building libgnatvsn-dev and libgnatprj-dev, as they conflict
+    with packages from gnat-4.1.  Will reenable them for the transition to
+    gnat-4.2.
+  * Upload as gnat-4.2.  Closes: #432525.
+
+ -- Ludovic Brenta <lbrenta@debian.org>  Sat, 14 Jul 2007 15:12:34 +0200
+
+gcc-4.2 (4.2-20070712-1) unstable; urgency=high
+
+  [Matthias Klose]
+  * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch.
+    - 4.2.1 RC2, built from SVN.
+    - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi,
+      libjava, zlib from the trunk.
+    - debian/patches/arm-libffi.dpatch: Remove.
+    - Fixes ICE in update_equiv_regs. Closes: #432604.
+  * debian/control.m4: Restore build dependency on dejagnu.
+  * debian/patches/arm-gij.dpatch: Update.
+  * i386-biarch.dpatch: Update for the backport for PR target/31868.
+    Closes: #432599.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 13 Jul 2007 08:07:51 +0200
+
+gcc-4.2 (4.2-20070707-1) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch.
+    - debian/patches/libjava-soname.dpatch: Remove.
+    - debian/patches/disable-configure-run-check.dpatch: Update.
+  * Only suggest multilib packages on multilib architectures.
+  * Point ICE messages to the 4.2 docdir.
+  * Explicitely use fastjar to build gcj-4.1. Addresses: #416001.
+  * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka).
+  * Include the hppa64 cross compiler on hppa snapshot builds.
+  * debian/patches/arm-libffi.dpatch: Update.
+  * libgcj-doc: Include the generated documentation.
+  * Fix building the libjava/classpath examples.
+  * Support reverse cross builds (Neil Williams). Closes: #431086.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 07 Jul 2007 10:59:26 +0200
+
+gcc-4.2 (4.2-20070627-1) unstable; urgency=high
+
+  [Matthias Klose]
+  * Update to SVN gcc-4_2-branch/20070626.
+  * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc).
+  * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer).
+    Addresses: #428741.
+  * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395.
+  * README.Debian: Point to debian-toolchain for general toolchain topics.
+  * Use the generated locales for the libstdc++ build to fix the setting
+    of the gnu locale model. Closes: #428926, #429660.
+  * For ix86 lpia targets, configure --with-tune=i586.
+  * Make build dependency on gcc-4.1-multilib architecture specific.
+  * Do not ignore bootstrap comparision failure on ia64.
+
+  [Ludovic Brenta]
+  * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2.
+  * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2.  Reenable in rules.patch.
+  * rules.conf: do not build libgomp as part of gnat-4.2.
+  * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or
+    lib64-dev only when building Java.
+  * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only.
+  * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends
+    on gcc-4.2-base anymore.
+  * TODO: rewrite.
+  * README.gnat: include in gnat-4.2-base.  Remove outdated information.
+  * README.maintainers: new.  Include in gnat-4.2-base.
+
+  [Hector Oron]
+  * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS.
+  * Disables libssp0 for arm and armel targets when cross compiling.
+  * Updates README.cross.
+  * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 27 Jun 2007 21:54:08 +0200
+
+gcc-4.2 (4.2-20070609-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070609.
+    - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls.
+  * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc).
+    - Remove patches integrated upstream: libjava-qt-peer,
+      classpath-config-guess.
+  * Do not build with --enable-java-maintainer-mode.
+  * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift.
+  * Add target to apply patches up to a specific patch (Wouter Verhelst).
+    Closes: #424855.
+  * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511.
+  * Apply proposed fix for PR target/28102. Closes: #426905.
+  * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897.
+  * Update build macros for kfreebsd-amd64. Closes: #424693.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat,  9 Jun 2007 06:54:13 +0200
+
+gcc-4.2 (4.2-20070528-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070528.
+  * Add backport for PR middle-end/20218.
+  * Add proposed PTA solver backport, PR tree-optimization/30052.
+  * Add backport for PR target/31868.
+  * Reenable the testsuite for arm, mips, mipsel.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 28 May 2007 09:03:04 +0200
+
+gcc-4.2 (4.2-20070525-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070525.
+  * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc).
+  * Do not explicitely configure for __cxa_atexit.
+  * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896.
+  * Update m68k patches:
+    - Remove patches applied upstream: m68k-jumptable, m68k-gc, 
+    - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload,
+      m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind,
+      m68k-align-code m68k-align-stack, m68k-symbolic-operand,
+      m68k-bitfield-offset.
+    - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move
+      m68k-secondary-addr-reload, m68k-notice-move.
+    - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare.
+  * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011.
+  * Temporarily disable the testsuite on slow architectures to get the
+    package built soon.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 25 May 2007 07:14:36 +0200
+
+gcc-4.2 (4.2-20070516-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070516.
+  * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc).
+  * Merge changes from gcc-4.1_4.1.2-7.
+  * Update NEWS files.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 May 2007 02:33:57 +0200
+
+gcc-4.2 (4.2-20070502-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070502.
+    - Remove pr11953 patch, integrated upstream.
+  * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc).
+  * Adjust tetex/tex-live build dependency.
+  * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2.
+  * Tighten (build) dependency on binutils. Addresses: #421197.
+  * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so
+    symlink. Adresses: #421362.
+  * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc].
+  * (Build-) depend on glibc (>= 2.5) for all architectures.
+  * Remove libssp packages from the control file.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  2 May 2007 18:46:57 +0200
+
+gcc-4.2 (4.2-20070405-1) experimental; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070405.
+  * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc).
+  * gcc-4.2-hppa64: Don't depend on libc6-dev.
+  * Robustify setting of make's -j flag. Closes: #410919.
+  * gcc-snapshot: Use the install_snap_stamp target for installation.
+
+ -- Matthias Klose <doko@debian.org>  Thu,  5 Apr 2007 23:56:35 +0200
+
+gcc-4.2 (4.2-20070307-1) experimental; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070307.
+  * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc).
+  * Build gnat from separate sources.
+  * Merge changes from gcc-4.1-4.1.2-1.
+  * Install into /usr/lib/gcc/<target_alias>/4.2, to ease upgrades
+    between subminor versions.
+  * Configure --with-gxx-include-dir=/usr/include/c++/4.2
+
+ -- Matthias Klose <doko@debian.org>  Thu,  8 Mar 2007 02:52:00 +0100
+
+gcc-4.2 (4.2-20070210-1) experimental; urgency=low
+
+  * Merge Java backport from Ubuntu:
+    - Update to SVN gcc-4_2-branch/20070210.
+    - Update to SVN trunk/20070210 (gcc/java, libjava).
+    - Backout trunk specific gcc/java changes.
+    - Build-depend on gcj-4.1 and ecj-bootstrap.
+    - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj.
+    - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers
+      are disabled by upstream again.
+    - Generate manual pages for the classpath tools from the classpath
+      documentation.
+    - Adopt packaging for the merged libjava.
+    - Update patches for the merged libjava: libjava-lib32-properties,
+      i386-biarch, reporting, libjava-soname, libjava-subdir,
+      libjava-lib32subdir.
+    - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix,
+      libstdc++-docfixes.
+
+  * Set priority of development packages to optional.
+  * debian/libgcjGCJ.postrm: Don't fail on purge when directories
+    don't exist anymore. Closes: #406017.
+  * debian/patches/gcc-textdomain.dpatch: Update for 4.2.
+  * Generate and install libgomp docs into gcc-4.2-doc.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Feb 2007 16:53:11 +0100
+
+gcc-4.2 (4.2-20070105-1) experimental; urgency=low
+
+  * Update to SVN 20070105.
+  * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs),
+    fix doxygen build (libstdc++-docfixes.dpatch).
+  * Enable parallel build by default on SMP machines.
+
+ -- Matthias Klose <doko@debian.org>  Fri,  5 Jan 2007 22:42:18 +0100
+
+gcc-4.2 (4.2-20061217-1) experimental; urgency=low
+
+  * Update to SVN 20061217.
+  * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21.
+  * Update patches to the current branch.
+  * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran.
+  * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64,
+    s390, sparc).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 17 Dec 2006 15:54:54 +0100
+
+gcc-4.2 (4.2-20061003-1) experimental; urgency=low
+
+  * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal.
+  * Don't install backup files in the doc directory, only one gcc-4.1
+    upgrade was broken. Closes: #389366.
+  * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch.
+  * Update link-libs.dpatch.
+  * Merge libgfortran2-dev into gfortran-4.2.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  3 Oct 2006 16:26:38 +0000
+
+gcc-4.2 (4.2-20060923-1) experimental; urgency=low
+
+  * Update to SVN 20060923.
+  * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 23 Sep 2006 15:11:36 +0200
+
+gcc-4.2 (4.2-20060905-1) experimental; urgency=low
+
+  * Update to SVN 20060905.
+  * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12).
+  * Move gomp development files into gcc and gfortran.
+  * Build-depend on binutils (>= 2.17).
+
+ -- Matthias Klose <doko@debian.org>  Tue,  5 Sep 2006 03:33:00 +0200
+
+gcc-4.2 (4.2-20060818-1) experimental; urgency=low
+
+  * Update to SVN 20060818.
+    - libjava-libgcjbc.dpatch: Remove, applied upstream. 
+  * Merge changes from the Ubuntu gcj-4.2 package:
+    - libjava-soname.dpatch: Remove, applied upstream.
+    - libjava-native-libdir.dpatch: update.
+    - libffi-without-libgcj.dpatch: Remove, new libffi-configure to
+      enable --disable-libffi.
+    - Changes required for the classpath-0.92 update:
+      - New packages gappletviewer-4.2, gcjwebplugin-4.2.
+      - gij-4.2: Add keytool alternative.
+      - gcj-4.2: Add jarsigner alternative.
+    - libgcj8-dev: Remove conflicts with older libgcjX-dev packages.
+    - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory.
+    - libjava-library-path.dpatch:
+      - When running the i386 binaries on amd64, look in
+        /usr/lib32/gcj-x.y and /usr/lib32/jni instead.
+      - Add /usr/lib/jni to java.library.path. Adresses: #364820.
+    - Add more debugging symbols to libgcj8-dbg. Adresses: #383705.
+    - Fix and renable the biarch build for sparc.
+  * Disable gnat for alpha, fails to build.
+  * Configure without --enable-objc-gc, fails to build.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 19 Aug 2006 18:25:50 +0200
+
+gcc-4.2 (4.2-20060709-1) experimental; urgency=low
+
+  * Test build, SVN trunk 20060709.
+  * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option).
+  * Rename libmudflap0-dev to libmudflap0-4.2-dev.
+  * Ignore compiler warnings when checking whether compiler driver understands
+    Ada fails.
+  * Merge changes from the gcc-4.1 package.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  9 Jul 2006 14:28:03 +0200
+
+gcc-4.2 (4.2-20060617-1) experimental; urgency=low
+
+  * Test build, SVN trunk 20060617.
+
+  [Matthias Klose]
+  * Configure using --enable-objc-gc, using the internal boehm-gc.
+  * Build-depend on bison (>= 1:2.3).
+  * Build the QT based awt peer library, not yet the same functionality
+    as the GTK based peer library.
+  * Update libjava-* patches.
+
+  [Ludovic Brenta]
+  * Do not provide the symbolic link /usr/bin/gnatgcc; this will now
+    be provided by package gnat from the source package gcc-defaults.
+  * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1),
+    not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1)
+    which depends on gnat-4.1.
+
+  [Bastian Blank]
+  * Make it possible to overwrite arch per DEB_TARGET_ARCH and
+    DEB_TARGET_GNU_TYPE.
+  * Disable biarch only on request for cross builds.
+  * Use correct source directory for tarballs.
+  * Produce correct multiarch.inc for source builds.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 17 Jun 2006 19:02:01 +0200
+
+gcc-4.2 (4.2-20060606-1) experimental; urgency=low
+
+  * Test build, SVN trunk 20060606.
+  * Remove obsolete patches, update patches for 4.2.
+  * Update the biarch-include patches to work with mips-triarch.
+  * Disable Ada, not yet updated.
+  * New packages: libgomp*.
+  * Remove fastjar, not included upstream anymore.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  6 Jun 2006 10:52:28 +0200
+
+gcc-4.1 (4.1.2-12) unstable; urgency=high
+
+  * i386-biarch.dpatch: Update for the backport for PR target/31868.
+    Closes: #427185.
+  * m68k-libffi2.dpatch: Update. Closes: #425399.
+
+ -- Matthias Klose <doko@debian.org>  Mon,  4 Jun 2007 23:53:23 +0200
+
+gcc-4.1 (4.1.2-11) unstable; urgency=low
+
+  * Update to SVN 20070601.
+  * Build the libmudflap0-dev package again.
+  * Don't build libffi, when the packages are not built.
+
+ -- Matthias Klose <doko@debian.org>  Fri,  1 Jun 2007 23:55:22 +0200
+
+gcc-4.1 (4.1.2-10) unstable; urgency=low
+
+  * Regenerate the control file.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 30 May 2007 00:29:29 +0200
+
+gcc-4.1 (4.1.2-9) unstable; urgency=low
+
+  * Update to SVN 20070528.
+  * Don't build packages now built from the gcc-4.2 source (arm, m68k,
+    mips, mipsel).
+  * Add backport for PR middle-end/20218.
+  * Add backport for PR target/31868.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 29 May 2007 00:01:12 +0200
+
+gcc-4.1 (4.1.2-8) unstable; urgency=low
+
+  * Update to SVN 20070518.
+  * Don't build packages now built from the gcc-4.2 source.
+
+  [ Aurelian Jarno ]
+  * Update libffi patch for ARM. Closes: #425011.
+  * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New.
+  * Disable FFI, Java, ObjC for armel.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 May 2007 10:31:24 +0200
+
+gcc-4.1 (4.1.2-7) unstable; urgency=low
+
+  * Update to SVN 20070514.
+  * Link using --hash-style=both on supported architectures. Addresses: #421790.
+  * On hppa, build ecjx as a native binary.
+  * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz).
+    Closes: #422978.
+  * Add build dependency on libxul-dev for *-freebsd. Closes: #422995.
+  * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD
+    (Aurelian Jarno). Closes: #422995.
+  * Disable ssp on hurd-i386. Closes: #423757.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 14 May 2007 08:40:08 +0200
+
+gcc-4.1 (4.1.2-6) unstable; urgency=low
+
+  * Update libjava from the gcc-4.1 Fedora branch 20070504.
+  * gfortran-4.1: Fix the target of the libgfortran.so symlink.
+    Closes: #421362.
+  * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc].
+  * Readd build dependency on binutils on arm.
+  * (Build-) depend on glibc (>= 2.5) for all architectures.
+  * Remove libssp packages from the control file.
+  * Fix wrong code generation on hppa when TLS variables are used.
+    Closes: #422421.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  6 May 2007 10:00:23 +0200
+
+gcc-4.1 (4.1.2-5) unstable; urgency=low
+
+  * Update to SVN 20070429.
+  * Update libjava from the gcc-4.1 Fedora branch 20070428.
+  * Update m68k patches:
+    - Remove pr25514, pr27736, applied upstream.
+    - Update m68k-java.
+  * Link using --hash-style=gnu/both.
+  * Tighten (build) dependency on binutils. Closes: #421197.
+  * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69).
+  * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so
+    symlink. Closes: #421362.
+  * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382.
+  * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel.
+  * Temporarily remove build dependency on binutils on arm.
+  * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423.
+  * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 30 Apr 2007 08:13:32 +0200
+
+gcc-4.1 (4.1.2-4) unstable; urgency=medium
+
+  * Update to SVN 20070423.
+    - Remove pr11953, applied upstream.
+    - Fix ld version detection in libstdc++v3.
+  * Update libjava from the gcc-4.1 Fedora branch 20070423.
+  * Merge libgfortran1-dev into gfortran-4.1.
+  * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran.
+  * Don't link using --hash-style=gnu/both; loosen dependency on binutils.
+  * Don't revert the patch to fix PR c++/27227.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 23 Apr 2007 23:13:14 +0200
+
+gcc-4.1 (4.1.2-3) experimental; urgency=low
+
+  * Update to SVN 20070405.
+  * Update libjava from the gcc-4.1 Fedora branch 20070405.
+  * Robustify setting of make's -j flag. Closes: #414316.
+  * Only build the libssp packages, when building the common libraries.
+  * gcc-4.1-hppa64: Don't depend on libc6-dev.
+
+ -- Matthias Klose <doko@debian.org>  Fri,  6 Apr 2007 00:28:29 +0200
+
+gcc-4.1 (4.1.2-2) experimental; urgency=low
+
+  * Update to SVN 20070306.
+  * Update libjava from the gcc-4.1 Fedora branch 20070306.
+
+  [Matthias Klose]
+  * Don't install gij-wrapper anymore, directly register gij as a java
+    alternative.
+  * Don't install gcjh-wrapper anymore.
+  * Don't use exact versioned dependencies on gcj-base for libgcj and
+    libgcj-awt.
+  * Fix glibc build dependency for alpha.
+  * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342.
+  * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015.
+  * gij: Consistently use $(dbexecdir) to reference the gcj sub dir.
+  * Install into /usr/lib/gcc/<target_alias>/4.1, to ease upgrades
+    between minor versions.
+    Add compatibility symlinks in <target_alias>/4.1.2 to build gnat-4.1
+    and gcj-4.1 from separate sources.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  7 Mar 2007 03:51:47 +0100
+
+gcc-4.1 (4.1.2-1) experimental; urgency=low
+
+  [Matthias Klose]
+  * Update to gcc-4.1.2.
+  * Update libjava backport patches, split out boehm-gc-backport patch.
+  * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2.
+  * Correct mfctl instruction syntax (hppa), backport from the trunk.
+  * Backport PR java/9861 (name mangling updates).
+  * gcc.c (main): Call expandargv (backport from 4.2).
+  * Apply gcc dwarf2 unwinding patches from the trunk.
+  * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390.
+  * Apply patches from the 4.1 branch for PR rtl-optimization/28772,
+    PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189,
+    PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823,
+    PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test,
+    PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400,
+    PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441,
+    PR target/30634.
+  * Update NEWS files.
+  * Include a backport of the ecj+generics java updates as
+    gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package.
+  * Do not build fastjar anymore from this source.
+  * debian/control.m4: Move expect-tcl8.3 before dejagnu.
+  * Work around firefox/icewhatever dropping plugin dependencies on xpcom.
+  * Refactor naming of libgcj packages in the build files.
+  * Make libstdc++-doc's build dependencies depending on the source package.
+  * Do not build packages on architectures, which are already built by gcc-4.2.
+
+  * Merge the gcj generics backport from Ubuntu:
+
+    - Merge the Java bits (eclipse based compiler, 1.5 compatibility,
+      classpath generics) from the gcc-4.1 Fedora branch.
+    - Drop all previous patches from the classpath-0.93 merge, keep
+      the boehm-gc backport (splitted out as a separate patch).
+    - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava,
+      config/unwind_ipinfo.m4, taken from the Fedora branch.
+    - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches
+      integrated in the backport.
+    - Update patches for the merge: reporting, libjava-subdir, i386-biarch,
+      classpath-tooldoc, pr26885
+    - Add libjava-dropped, libjava-install; dropped chunks from the merge.
+    - Add pr9861-nojava mangling changes, non-java parts for PR 9861.
+    - Add gcc-expandv, expand `@' parameters on the commandline; backport
+      from the trunk.
+    - Disable the m68k-gc patch, needs update for the merge.
+    - Configure --with-java-home set for 1.5.0.
+    - Configure with --enable-java-maintainer-mode to build the header
+      and class files on the fly.
+    - Add build dependency on ecj-bootstrap, configure --with-ecj-jar.
+    - Build an empty libgcj-doc package; gjdoc currently cannot handle
+      generics.
+    - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events
+      testcase to pass.
+      - Tighten dependencies on shared libraries.
+    - Use /usr/lib/gcj-4-1-71 as private gcj subdir.
+    - Bump the libgcj soversion to 71, rename the libgcj7-0 package
+      to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt.
+    - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver.
+    - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih.
+    - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii,
+      tnameserv.
+    - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar,
+      ecj-bootstrap-gcj.
+    - Add build dependency on ecj-bootstrap version providing the GCCMain
+      class.
+    - libgcj7-1: Recommend libgcj7-1-awt.
+    - Add build dependency on libmagic-dev.
+    - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before
+      starting the build.
+    - Make ecj1 available when running the testsuite.
+    - Fix build failure on sparc-linux.
+    - Fix gjavah compatibility problems (PR cp-tools/3070[67]).
+    - Fixed driver issue source files (PR driver/30714).
+    - Add (rudimentary) manual pages for classpath tools.
+
+  [Kevin Brown]
+  * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages
+    containing debugging symbols for Ada libraries: libgnat-4.1-dbg,
+    libgnatprj4.1-dbg, and libgnatvsn4.1-dbg.  Adresses: #401385.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  3 Mar 2007 23:12:08 +0100
+
+gcc-4.1 (4.1.1ds2-30) experimental; urgency=low
+
+  * Update to SVN 20070106.
+  * Do not revert the fixes for PR 25878, PR 29138, PR 29408.
+  * Don't build the packages built by gcc-4.2 source.
+  * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections
+    for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741.
+  * Merge from Ubuntu:
+    - Backport g++ visibility patches from the FC gcc-4_1-branch.
+    - Update the long-double patches; require glibc-2.4 as a build dependency
+      on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to
+      require 4.1.1-21.
+    - On powerpc-linux configure using --enable-secureplt. Closes: #382748.
+    - When using the cpu-default-generic patch, build for generic x86-64
+      on amd64 and i386 biarch.
+    - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64,
+      s390, sparc).
+  * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917.
+  * Split the gcc-long-double patch into a code and doc part.
+  * Set priority of development packages to optional.
+  * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  6 Jan 2007 10:35:42 +0100
+
+gcc-4.1 (4.1.1ds2-22) unstable; urgency=high
+
+  * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031.
+  * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 10 Dec 2006 12:35:06 +0100
+
+gcc-4.1 (4.1.1ds2-20) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20061115.
+    - Fix PR tree-optimization/27891, ICE in tree_split_edge.
+      Closes: #370248, #391657, #394630.
+    - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797.
+      Closes: #181096.
+  * Apply the libjava/net backport from the redhat/gcc-4_1-branch.
+  * Apply proposed patch for PR java/29805.
+
+  [Roman Zippel]
+  * Build the ObjC and ObjC++ compilers in cross builds.
+  * debian/patches/m68k-symbolic-operand.dpatch: Better recognize
+    symbolic operands in addresses.
+  * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset
+    for register bitfields (combine expects shifts, but does a rotate).
+  * debian/patches/m68k-bitfield-offset.dpatch: Update and apply.
+
+  [Daniel Jacobowitz]
+  * Don't try to use _Unwind_Backtrace on SJLJ targets.
+    See bug #387875, #388505, GCC PR 29206.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 15 Nov 2006 08:59:53 -0800
+
+gcc-4.1 (4.1.1ds2-19) unstable; urgency=low
+
+  * Fix typo in arm-pragma-pack.dpatch.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 28 Oct 2006 11:04:00 +0200
+
+gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium
+
+  [Matthias Klose]
+  * Update to SVN 20061028.
+  * Fix #pragma pack on ARM (Paul Brook). Closes: #394703.
+  * Revert PR c++/29138, PR c++/29408. Closes: #392559.
+  * Revert PR c++/25878. Addresses: #387989.
+  * fastjar: Provide jar. Closes: #395397.
+
+  [Ludovic Brenta]
+  * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev.
+    debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 26 Oct 2006 23:51:10 +0200
+
+gcc-4.1 (4.1.1ds2-17) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20061020.
+    - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613.
+    - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010.
+    - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071.
+    - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620.
+    - Fix 3.4/4.0 backwards compatibility problem in libstdc++.
+  * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch.
+  * Remove the INSTALL directory from the source tarball. Closes: #392974.
+  * Disable building the static libgcj; non-functional, and cutting
+    down build times.
+  * libgcj7-0: Tighten dependency on libgcj-common.
+  * libgcj7-dev: Install .pc file as libgcj-4.1.pc.
+  * README.cross: Updated (Hector Oron). Addresses: #380251.
+  * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034.
+
+  [Nikita V. Youshchenko]
+  * Fix typo in the cross build scripts.  Closes: #391445.
+
+  [Falk Hueffner]
+  * alpha-no-ev4-directive.dpatch: Fix kernel build failure.
+
+  [Roman Zippel]
+  * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance
+    within code.
+  * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned.
+  * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset
+    and register with -fomit-frame-pointer.
+  * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its
+    desired form to relieve reload. Closes: #390879.
+  * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands
+    during reloads.
+  * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting
+    an instruction.
+  * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads
+    to allow reload to get byte values into addr regs. Closes: #385327.
+  * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic
+    operands in addresses.
+  * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by
+    m68k-secondary-addr-reload.dpatch.
+  * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16.
+  * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment
+    the register, if it's used multiple times in the instruction .
+
+ -- Matthias Klose <doko@debian.org>  Sat, 21 Oct 2006 00:25:05 +0200
+
+gcc-4.1 (4.1.1ds1-16) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20061008.
+    - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263.
+  * libgcj7-0: Fix package removal. Closes: #390874.
+  * Configure with --disable-libssp on architectures that don't
+    support it (alpha, hppa, ia64, m68k, mips, mipsel).
+  * On hppa, remove build-dependency on dash.
+  * gij/gcj: Do not install slave links for the non DFSG manpages.
+    Closes: #390425, #390532.
+  * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap
+    files are found. Closes: #390966.
+  * Fix PR libstdc++/11953, extended for all linux architectures.
+    Closes: #391268.
+  * libffi4-dev: Conflict with libffi. Closes: #387561.
+  * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey.
+    Closes: #390693.
+  * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++.
+  * Add a README.ssp with minimal documentation about stack smashing
+    protection. Closes: #366094.
+  * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore.
+
+  [Roman Zippel]
+  * debian/patches/m68k-notice-move.dpatch: Don't set cc_status
+    for fp move without fp register.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  8 Oct 2006 02:21:49 +0200
+
+gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium
+
+  * Update to SVN 20060927.
+    - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042.
+    - Fix typo in gcc documentation. Closes: #386180.
+    - Fix PR target/29230, wrong code generation on arm. Closes: #385505.
+  * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on
+    arm, m68k, hppa. Adresses: #388505.
+  * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat.
+    Closes: #389539.
+  * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs.
+  * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27;
+    remove libjava-str2double.dpatch, pr28661.dpatch.
+  * Disable ssp on hppa, not supported.
+  * i386-biarch.dpatch: Avoid warnings about macro redefinitions.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 29 Sep 2006 22:32:41 +0200
+
+gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium
+	
+  [Matthias Klose]
+  * Update to SVN 20060920.
+    - Fix PR c++/26957. Closes: #373257, #386910.
+    - Fix PR rtl-optimization/28243. Closes: #378325.
+  * Remove patch for PR rtl-optimization/28634, applied upstream.
+  * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92).
+    (Petr Salinger). Closes: #385974.
+  * Merge from Ubuntu:
+    - Do not encode the subminor version in the jar files.
+    - Fix typo for the versioned gcj subdirectory in lib32gcj-0.
+    - When running the i386 binaries on amd64, adjust the properties
+      java.home, gnu.classpath.home.url, sun.boot.class.path,
+      gnu.gcj.precompiled.db.path.
+    - Configure the 32bit build on amd64 
+      --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre.
+    - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64,
+      s390, s390x, sparc, sparc64.
+    - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20.
+      - Fix PR java/29013, invalid byte code generation. Closes: #386926.
+    - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the
+      backport of PR 28946 from the trunk (H.J. Lu).
+  * Backport PR classpath/28661 from the trunk.
+  * Don't ship the .la files for the java modules. Closes: #386228.
+  * gcj-4.1: Remove dangling symlink. Closes: #386430.
+  * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev.
+    Closes: #361942.
+  * Fix infinite loop in string-to-double conversion on 64bit targets.
+    Closes: #348792.
+  * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505.
+  * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common.
+  * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory
+    accesses. Works around buildd configurations enabling this check by
+    default. Addresses: #364819.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of
+    mlib-tgt.adb.  Closes: #387826.
+  * debian/patches/ada-pr15802.dpatch: Backport from the trunk.
+    Closes: #246384.
+  * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by
+    gcc-defaults instead); conflict with gnat-4.2 which will soon be in
+    unstable.
+
+  [Roman Zippel]
+  * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also
+    in the src of an instruction.
+  * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when
+    accessing the jumptable, gas can generate the correct offset size instead.
+  * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl
+    peepholes, so the correct DWARF2 information can be generated for stack
+    manipulations (Keep a few peepholes temporarily disabled).
+  * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while
+    reinserting REG_EH_REGION notes.
+  * debian/patches/m68k-return.dpatch: Don't use single return if fp register
+    have to be restored. Closes: #386864.
+  * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over
+    signal frames.
+  * Fix PR rtl-optimization/27736, backport from the trunk.
+  * Add java support for m68k. Closes: #312830, #340874, #381022.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 24 Sep 2006 19:36:31 +0200
+
+gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium
+
+  * Update to SVN 20060901; remove patches applied upstream:
+    - PR target/24367.
+    - PR c++/26670.
+  * Apply proposed patch for PR fortran/28908.
+  * Fix biarch symlinks in lib64stdc++ for cross builds.
+  * Fix biarch symlinks in lib32objc on amd64.
+
+ -- Matthias Klose <doko@debian.org>  Fri,  1 Sep 2006 00:04:05 +0200
+
+gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium
+
+  [Matthias Klose]
+  * Update to SVN 20060830.
+  * Add backport of PR other/26208, bump libgcc1 shlibs dependency.
+  * Add backport of PR c++/26670. Closes: #356548.
+  * Apply proposed patch for PR target/24367 (s390).
+  * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820.
+  * Build without GFDL licensed docs. Closes: #384036.
+    - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch:
+      Split out -doc specific patches.
+    - debian/*.texi, debian/porting.html: Add dummy documentation.
+    - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build.
+    - fastjar.texi: Directly define the gcctabopt and gccoptlist macros.
+
+  * Merge from Ubuntu:
+    - Backport the classpath-0.92, libjava, gcc/java merge from the
+      redhat/gcc-4_1-branch branch.
+    - Apply the proposed patch for PR libgcj/28698.
+    - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0.
+    - Do not remove the rpath from libjvm.so and libjawt.so. Some
+      configure scripts rely on being able to link that libraries
+      directly.
+    - When running the i386 binaries on amd64, look in
+      /usr/lib32/gcj-x.y and /usr/lib32/jni instead.
+    - Add /usr/lib/jni to java.library.path. Closes: #364820.
+    - Add debugging symbols for more binary packages to libgcj7-dbg.
+      Closes: #383705.
+    - libgcj7-dev: Remove conflicts with older libgcjX-dev packages.
+    - Do not build the libgcj-bc and lib32gcj-bc packages anymore from
+      the gcj-4.1 source.
+
+  [Roman Zippel]
+  * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class.
+    Closes: #375522.
+  * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long
+    shifts and use more splits. Closes: #381572.
+  * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating
+    a byte push on the stack (invalid on m68k). Closes: #385021.
+  * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities.
+  * debian/patches/pr25514.dpatch: Backport from the trunk.
+  * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM
+    so it works with 2.6 kernels.
+  * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12:
+    Closes: #378599, #345574, #344041, #323426, #340293.
+  * Build the stage1 compiler using -g -O2; saves a few hours build time
+    and apparently is working at the moment.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 29 Aug 2006 21:37:28 +0200
+
+gcc-4.1 (4.1.1-11) unstable; urgency=low
+
+  * The "Our priority are our users, remove the documentation!" release.
+
+  [Matthias Klose]
+  * Fix build failure building the hppa->hppa64 cross compiler.
+  * Update to SVN 20060814.
+    - Fix directory traversal vulnerability in fastjar. Closes: #368397.
+      CVE-2006-3619.
+    - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc.
+      Closes: #321215.
+    - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID.
+      Closes: #356569.
+  * Remove patch for PR rtl-optimization/28075, applied upstream.
+  * Apply proposed patch for PR rtl-optimization/28634, rounding problem with
+    -fdelayed-branch on hppa/mips. Closes: #381710.
+  * Fixed at least in 4.1.1-10: boost::date_time build failure.
+    Closes: #382352.
+  * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to
+    gcc-4.1-source. Closes: #381117.
+  * Backport of libffi from the trunk; needed for the java backport in
+    experimental.
+  * libffi4-dev: Install the libffi_convenience library as libffi_pic.a.
+  * When building a package without the GFDL'd documentation, don't create
+    the alternative's slave links for manual pages for the java tools.
+  * Do not build the -doc packages and derived manual pages licensed under
+    the GFDL with invariant sections or cover texts.
+  * Only build the libssp package, if the target libc doesn't provide
+    ssp support.
+  * Run the complete testsuite, when building a standalone gcj package.
+
+  [Roman Zippel]
+  * debian/patches/m68k-fjump.dpatch:
+    Always use as fjcc pseudo op, we rely heavily on as to generate the
+    right size for the jump instructions. Closes: #359281.
+  * debian/patches/m68k-gc.dpatch:
+    The thread suspend handler has to save all registers.
+    Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug.
+  * debian/patches/m68k-save_pic.dpatch:
+    Correctly save the pic register, when not done by reload().
+    (fixes _Unwind_RaiseException and thus exception handling).
+  * debian/patches/m68k-libffi.dpatch: Add support for closures.
+  * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression
+    past a zero_extract lvalue.
+  * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information,
+    but preserve compatibility.
+
+  [Christian Aichinger]
+  * Fix building a cross compiler targeted for ia64. Closes: #382627.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 15 Aug 2006 00:41:00 +0200
+
+gcc-4.1 (4.1.1-10) unstable; urgency=low
+
+  * Update to SVN 20060729.
+    - Fix PR c++/28225, segfault in type_dependent_expression_p.
+      Closes: #376148.
+  * Apply proposed patch for PR rtl-optimization/28075.
+    Closes: #373820.
+  * Apply proposed backport and proposed patch for PR rtl-optimization/28221.
+    Closes: #376084.
+  * libgcj7-jar: Loosen dependency on gcj-4.1-base.
+  * Add ssp header files to the private gcc includedir.
+  * Do not build the Ada packages from the gcc-4.1 source, introducing
+    a new gnat-4.1 source package.
+  * Build libgnat on alpha and s390 as well.
+  * Do not build the gnat-4.1-doc package (GFDL with invariant sections or
+    cover texts).
+  * Remove references to the stl-manual package. Closes: #378698.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 29 Jul 2006 22:08:59 +0200
+
+gcc-4.1 (4.1.1-9) unstable; urgency=low
+
+  * Update to SVN 20060715.
+    - Fix PR c++/28016, do not emit uninstantiated static data members.
+      Closes: #373895, #376871.
+  * Revert the patch to fix PR c++/27227. Closes: #378321.
+  * multiarch-include.dpatch: Renamed from biarch-include.dpatch;
+    apply for all architectures.
+  * Do not build the java compiler in gcc-4.1 package, just include the
+    options and specs in the gcc driver.
+  * Remove gnat-4.0 as an alternative build dependency.
+  * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++.
+    The patch is disabled by default.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 15 Jul 2006 17:07:29 +0200
+
+gcc-4.1 (4.1.1-8) unstable; urgency=medium
+
+  * Update to SVN 20060708.
+    - Fix typo in gcov documentation. Closes: #375140.
+    - Fix typo in gccint documentation. Closes: #376412.
+    - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to
+      static method. PR target/27082. Closes: #369642.
+
+  * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535.
+  * Fix conflict, replace and provide libssp0-dev for cross compilers.
+    Closes: #377012.
+  * Ignore compiler warnings when checking whether compiler driver understands
+    Ada fails. Closes: #376660.
+  * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864.
+  * README.C++: Remove non-existing URL. Closes: #347601.
+  * gij-4.1: Provide java2-runtime. Closes: #360906.
+
+  * Closed reports reported against gcc-3.0 and fixed in gcc-4.1:
+    - C++
+      + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous.
+        Closes: #228645.
+    - Java
+      + Fixed segmentation fault on compiling bad program. Closes: #165635
+  * Closed reports reported against gcc-3.3 and fixed in gcc-4.1:
+    - Stack protector available. Closes: #213994, #233208.
+    - Better documentation of -finline-limit option. Closes: #296047.
+  * Closed reports reported against gcc-3.4 and fixed in gcc-4.1:
+    - General
+      + Fixed [unit-at-a-time] Using -O2 cannot detect missing return
+        statement in a function. Closes: #276843.
+    - C++
+      + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645.
+      + PR c++/21280, #pragma interface, templates, and "inline function used
+        but never defined". Closes: #364412.
+    - Architecture specific:
+      - m68k
+        + Segfault building glibc. Closes: #353618.
+        + ICE when trying to build boost. Closes: #321486.
+  * Closed reports reported against gcc-4.0 and fixed in gcc-4.1:
+    - General
+      + Handling of #pragma GCC visibility for builtin functions.
+        Closes: #330279.
+      + gettext interpretation the two conditional strings as one.
+        Closes: #227193.
+      + ICE due to if-conversion. Closes: #335078.
+      + Fix unaligned accesses with __attribute__(packed) and memcpy.
+        Closes: #355297.
+      + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817.
+    - Ada
+      + Link error not finding -laddr2line. Closes: #322849.
+      + ICE on invalid code. Closes: #333564.
+    - C++
+      + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786.
+      + The Compiler uses less memory than 4.0. Closes: #336225.
+      + Fix "fails to compare reverse map iterators". Closes: #362840.
+      + Fix "fail to generate code for base destructor defined inline with
+        pragma interface". Closes: #356435.
+      + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455.
+      + Fix wrong warning: control may reach end of non-void function.
+        Closes: #319309.
+      + Fix bogus warning "statement has no effect" with template and
+        statement-expression. Closes: #336915.
+      + Fixed segfault on syntax error. Closes: #349087.
+      + Fix ICE with __builtin_constant_p in template argument.
+        Closes: #353366.
+      + Implement DR280 (fixing "no operator!= for const_reverse_iterator").
+        Closes: #244894.
+    - Fortran
+      + Fix wrong behaviour in unformatted writing. Closes: #369547.
+    - Java
+      + Fixed segfault on -fdump-tree-all-all. Closes: #344265.
+      + Fixed ant code completion in eclipse generating a nullpointer
+        exception. Closes: #337510.
+      + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112.
+      + Fixed assertion failure in gij with rhdb-explain. Closes: #335650.
+      + Fixed assertion failure when calling JTabbedPane.addTab(null, ...).
+        Closes: #314704.
+      + Fixed error when displaying empty window with bound larger than the
+        displayed content. Closes: #324502.
+      + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706.
+      + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c.
+        Closes: #333733.
+    - libmudflap
+      + PR libmudflap/23170, libmudflap should not use functions marked
+        obsolescent by POSIX/SUS. Closes: #320398.
+    - Architecture specific:
+      - m68k
+        + FTBFS building tin. Closes: #323016.
+        + ICE with -g -fomit-frame-pointer. Closes: #331150.
+        + ICE in instantiate_virtual_regs_lossage. Closes: #333536.
+        + Wrong code generation with loop unrolling. Closes: #342121.
+        + ICEs while building gst-ffmpeg. Closes: #343692.
+      - mips
+        + Fix gjdoc build failure. Closes: #344986.
+        + Fix link failure for static libs and object files when xgot
+          needs to be used. Closes: #274942.
+  * gnat bug reports fixed since gnat-3.15p:
+    - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175.
+    - Bug box from "with Text_IO" when compiling optimized. Closes: #243795.
+    - Nonconforming parameter lists not detected. Closes: #243796.
+    - Illegal use clause not detected. Closes: #243797.
+    - Compiler enters infinite loop on illegal program with tagged records.
+      Closes: #243799.
+    - Compiler crashes on illegal program (missing discriminant, unconstrained
+      parent). Closes: #243800.
+    - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801.
+    - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802.
+    - Illegal program not detected (entry families). Closes: #243803.
+    - Illegal program not detected, RM 10.1.1(14). Closes: #243807.
+    - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812.
+    - Illegal program not detected, RM 4.1.4(14). Closes: #243816.
+    - Bug box in Gigi, code=116, on legal program. Closes: #244225.
+    - Illegal program not detected, 12.7(10) (generic parameter is visible,
+      shouldn't be). Closes: #244483.
+    - Illegal program not detected, ambiguous aggregate. Closes: #244496.
+    - Bug box at sem_ch3.adb:8003. Closes: #244940.
+    - Bug box in Gigi, code=103, on illegal program. Closes: #244945.
+    - Legal program rejected, overloaded procedures. Closes: #246188.
+    - Bug box in Gigi, code=999, on legal program. Closes: #246388.
+    - Illegal program not detected, RM 10.1.6(3). Closes: #246389.
+    - Illegal program not detected, RM 3.10.2(24). Closes: #247014.
+    - Illegal program not detected, RM 3.9(17). Closes: #247015.
+    - Legal program rejected. Closes: #247016.
+    - Legal program rejected. Closes: #247021.
+    - Illegal program not detected, RM 4.7(3). Closes: #247022.
+    - Illegal program not detected, RM 3.10.2(27). Closes: #247562.
+    - Legal program rejected, "limited type has no stream attributes".
+      Closes: #247563.
+    - Wrong output from legal program. Closes: #247565.
+    - Compiler enters infinite loop on illegal program. Closes: #247567.
+    - Illegal program not detected, RM 8.6(31). Closes: #247568.
+    - Legal program rejected, visible declaration not seen. Closes: #247572.
+    - Illegal program not detected, RM 8.2(9). Closes: #247573.
+    - Wrong output from legal program, dereferencing access all T'Class.
+      Closes: #248171.
+    - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174.
+    - Cannot find generic package body, RM 1.1.3(4). Closes: #248677.
+    - Illegal program not detected, RM 3.4.1(5). Closes: #248679.
+    - Compiler ignores legal override of abstract subprogram. Closes: #248686.
+    - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program.
+      Closes: #251266.
+    - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN.
+      Closes: #263498.
+    - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102
+      with -gnat -gnatc. Closes: #267788.
+    - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected
+      subprogram. Closes: #269775.
+    - Stack overflow on illegal program, AI-306. Closes: #276225.
+    - Illegal program not detected, RM B.1(24). Closes: #276226.
+    - Wrong code generated with -O -fPIC. Closes: #306833.
+    - Obsolete: bashism's in debian/rules file. Closes: #370681.
+    - Supports more debian architectures. Closes: #171477.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  8 Jul 2006 16:24:47 +0200
+
+gcc-4.1 (4.1.1-7) unstable; urgency=low
+
+  * Prefer gnat-4.1 over gnat-4.0 as a build dependency.
+  * libssp0: Set priority to standard.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  2 Jul 2006 10:22:50 +0000
+
+gcc-4.1 (4.1.1-6) unstable; urgency=low
+
+  [Ludovic Brenta]
+  * Do not provide the symbolic link /usr/bin/gnatgcc; this will now
+    be provided by package gnat from the source package gcc-defaults.
+  * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1),
+    not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1)
+    which depends on gnat-4.1.
+
+  [Matthias Klose]
+  * libjava: Change the default for enable_hash_synchronization_default
+    on PA-RISC. Tighten the libgcj7 shlibs version on hppa.
+  * Update to SVN 20060630.
+  * Apply proposed patch for PR 26991.
+  * Don't use the version for the libstdc++ shlibs dependency for the libgcj
+    shlibs dependency.
+  * Merge from Ubuntu edgy:
+    - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build
+      failure on sparc (Fabio M. Di Nitto).
+    - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option).
+    - Run the testsuite with -fstack-protector as well.
+
+  [Bastian Blank]
+  * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE.
+  * Disable biarch only on request for cross builds.
+  * Use correct source directory for tarballs.
+  * Produce correct multiarch.inc for source builds.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  1 Jul 2006 01:49:55 +0200
+
+gcc-4.1 (4.1.1-5) unstable; urgency=low
+
+  * Fix build error running with dpkg-buildpackage -rsudo.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 14 Jun 2006 01:54:13 +0200
+
+gcc-4.1 (4.1.1-4) unstable; urgency=low
+
+  * Really do not backout the fix for PR c++/26068.
+    Closes: #372152, #372559.
+  * Update fastjar version string to 4.1.
+  * Disable pascal again.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 12 Jun 2006 20:29:57 +0200
+
+gcc-4.1 (4.1.1-3) unstable; urgency=low
+
+  * Update to SVN 20060608, do not revert the fix for PR c++/26068.
+    Closes: #372152, #372559.
+  * Fix build failures for Pascal, enable Pascal on all architectures.
+  * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno).
+    Closes: #370661.
+  * Fix build fauilure in gcc/p with parallel make.
+  * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649.
+  * Only build the gcc-4.1-source package, when building from the gcc-4.1
+    source.
+  * Fix upgrade problem from standalone gcj-4.1.
+  * Fix build error using bison-2.2, build-depend on bison (>= 2.3).
+    Closes: #372605.
+  * Backport PR libstdc++/25524 from the trunk, update the biarch-include
+    patch. mips triarch support can be added more easily.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 12 Jun 2006 00:23:45 +0200
+
+gcc-4.1 (4.1.1-2) unstable; urgency=low
+
+  * Update to SVN 20060604.
+    - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID.
+      Closes: #356569.
+    - Fix PR target/27158, ICE in extract_insn with -maltivec.
+      Closes: #362307.
+  * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr).
+    Closes: #370308.
+  * Mention Ada in copyright, update copyright file (Ludovic Brenta).
+    Closes: #366744.
+  * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320.
+  * Don't include version control files in gcc-4.1-source.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  4 Jun 2006 19:13:37 +0000
+
+gcc-4.1 (4.1.1-1) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20060601.
+  * Reenable the gpc build.
+  * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk.
+  * Disable Ada for m32r targets. Closes: #367595.
+  * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999.
+  * gcc-4.1: Add a conflict to the gcj-4.1 version with a different
+    gcc_libdir.
+  * Build gij/gcj for GNU/k*BSD. Closes: #367166.
+  * Update hurd-changes patch (Michael Banck). Closes: #369690.
+  * debian/copyright: Add exception for the gpc runtime library.
+  * Update gpc/gpc-doc package descriptions.
+
+  [Ludovic Brenta]
+  * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs]
+    to libgnatprj; remove them from gnatmake.
+
+ -- Matthias Klose <doko@debian.org>  Thu,  1 Jun 2006 20:35:54 +0200
+
+gcc-4.1 (4.1.0-4) unstable; urgency=low
+
+  [Ludovic Brenta]
+  * Fix a stupid bug whereby fname.ad{b,s} would be included in both
+    libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr.
+    Closes: #366733.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 11 May 2006 04:34:50 +0200
+
+gcc-4.1 (4.1.0-3) unstable; urgency=low
+
+  * Update to SVN 20060507.
+  * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388.
+  * Always configure hppa64-linux-gnu with
+    --includedir=/usr/hppa64-linux-gnu/include.
+  * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900.
+  * Call autoconf2.13 explicitely in the Ada patches, build-depend on
+    autoconf2.13. Closes: #365780.
+  * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared
+    libraries.
+  * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov).
+  * Update proposed patch for PR26885 (May 2 version).
+  * Build the libxxstdc++-dbg packages, when not building the library pacakges.
+  * Do not include the _pic library in the libxxstdc++-dbg packages.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  7 May 2006 15:29:53 +0200
+
+gcc-4.1 (4.1.0-2) unstable; urgency=medium
+
+  * Update to SVN 20060428.
+  * Apply proposed patches for PR26885.
+
+  * Keep libffi doc files in its own directory. Closes: #360466.
+  * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498.
+  * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch.
+    Closes: #356896. CVE-2006-1902.
+  * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743,
+    PR target/11254, PR target/10274, backport from trunk (Randolph Chung).
+  * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov).
+    Closes: #363289.
+  * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904.
+  * Fix a pedantic report about a package description. Add a hint that
+    we do not like bug reports with locales other than "C". Closes: #361409.
+  * Enable the libjava interpreter on mips/mipsel.
+  * gcc-4.1-source: Depend on gcc-4.1-base.
+  * gnat-4.1: Fix permissions of .ali files.
+  * Build lib32gcj7 on amd64.
+  * debian/patches/ada-gnatvsn.dpatch: New.  Apply proposed fix for
+    PR27194.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-default-project-path.dpatch: new.  Change the
+    default search path for project files to the one specified
+    by the Debian Policy for Ada: /usr/share/ada/adainclude.
+  * debian/patches/ada-symbolic-tracebacks.dpatch: new.  Enable support for
+    symbolic tracebacks in exceptions.
+  * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above.
+  * debian/patches/ada-link-lib.dpatch: changed.
+    - Instead of building libada as a target library only, build it as
+      both a host and, if different, target library.
+    - Build the GNAT tools in their top-level directory; do not use
+      recursive makefiles.
+    - Link the GNAT tools dynamically against libgnat.
+    - Apply proposed fix for PR27300.
+    - Rerun autoconf (Matthias Klose).
+  * debian/patches/ada-libgnatvsn.dpatch: new.
+    - Introduce a new shared library named libgnatvsn, containing
+      common components of GNAT under the GNAT-Modified GPL, for
+      use in GNAT tools, ASIS, GLADE and GPS.
+    - Link the gnat tools against this new library.
+    - Rerun autoconf (Matthias Klose).
+  * debian/patches/ada-libgnatprj.dpatch: new.
+    - Introduce a new shared library named libgnatprj, containing the
+      GNAT Project Manager, i.e. the parts of GNAT that parses project
+      files (*.gpr).  Licensed under pure GPL; for use in GLADE and GPS.
+    - Link the gnat tools against this new library.
+    - Rerun autoconf (Matthias Klose).
+  * debian/patches/ada-acats.dpatch: new.
+     - When running the ACATS, look for the gnat tools in their new
+       directory (build/gnattools), and for the shared libraries in
+       build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj.
+  * debian/gnatvsn.gpr, debian/gnatprj.gpr: new.
+  * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages:
+    libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place
+    the *.gpr files in their respective -dev packages.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 29 Apr 2006 00:32:09 +0200
+
+gcc-4.1 (4.1.0-1) unstable; urgency=low
+
+  * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0).
+  * libgcj-common: Move removal of docdir from preinst into postinst.
+  * libgcj7: Move removal of docdir from preinst into postinst.
+  * Drop alternative build dependency on gnat-3.4, not built anymore.
+  * Fix PR libgcj/26103, wrong exception thrown (4.1 branch).
+  * debian/patches/libjava-stacktrace.dpatch: Add support to print file names
+    and line numbers in stacktraces.
+  * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk
+    in the libgcj7-dbg and lib32gcj7-dbg packages.
+  * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages,
+    add recommendations on binutils and libgcj-dev. Mention the requirement
+    of binutils for the stacktraces.
+  * Fix upgrade from version 4.0.2-9, loosing the Debian changelog.
+    Closes: #355439.
+  * gij/gcj: Install one alternative for each command, do not use slave
+    links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557.
+  * Fix for PR tree-optimization/26587, taken from the 4.1 branch.
+  * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined).
+  * Configure with --enable-clocale=gnu, even if not building C++ packages.
+  * Remove runtime path from biarch libraries as well.
+  * PR middle-end/26557 (ice-on-vaild-code, regression), taken from
+    the gcc-4_1-branch. Closes: #349083.
+  * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from
+    the gcc-4_1-branch. Closes: #356231.
+  * PR middle-end/26004 (rejects-vaild-code, regression), taken from
+    the gcc-4_1-branch.
+  * When building as standalone gcj, build libgcc4 (hppa only) and fastjar.
+  * Configure --with-cpu=v8 on sparc.
+  * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h
+    (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined.
+    (John David Anglin). Closes: #353346.
+  * Point to the 4.1 version of README.Bugs (closes: #356230).
+  * Disable the libmudflap testsuite on alpha (getting killed).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 18 Mar 2006 23:00:39 +0100
+
+gcc-4.1 (4.1.0-0) experimental; urgency=low
+
+  * GCC 4.1.0 final release.
+  * Build the packages for the Java language from a separate source.
+  * Update NEWS.html, NEWS.gcc.
+  * libgcj-doc: Auto generated API documentation for libgcj7, classpath
+    example programs.
+  * Add gjdoc to Build-Depends-Indep.
+  * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev.
+  * Internal ssp headers now installed in the gcc libdir.
+  * Do not build gcj-4.1-base when building the gcc-4.1 packages.
+  * When building as gcj-4.1, use the tarball from the gcc-4.1-source
+    package.
+
+  [Ludovic Brenta]
+  * Allow to enable and disable NLS and bootstrapping from the environment.
+    - Adding "nls" to WITHOUT_LANG disables NLS support.
+    - If WITH_BOOTSTRAP is set, debian/rules2 calls configure
+      --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make".  If
+      WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping
+      option and calls "make profiledbootstrap" or "make bootstrap-lean"
+      depending on the target CPU.
+      Currently overwritten to default to "bootstrap".
+
+ -- Matthias Klose <doko@debian.org>  Thu,  2 Mar 2006 00:03:45 +0100
+
+gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low
+
+  * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball).
+  * Update gcc-version patch for gcc-4.1.
+  * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks.
+  * libjava awt & swing update, taken from trunk 2006-02-16.
+  * libgcj7-dev: Suggest libgcj-doc, built from a separate source package.
+  * Shorten build-dependency line (work around buildd problems
+    on arm* and mips*).
+  * New patch gcc-ice-hack (saving the preprocessed source on an ICE),
+    taken from Fedora.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 20 Feb 2006 10:07:23 +0100
+
+gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low
+
+  * Update to SVN 20060212, taken from the 4.1 release branch.
+  * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 12 Feb 2006 19:48:31 +0000
+
+gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low
+
+  * Update to SVN 20060127, taken from the 4.1 release branch.
+    - On hppa, bump the libgcc soversion to 4.
+  * Add an option not to depend on the system -base package for cross compiler
+    (Ian Wienand). Closes: #347484.
+  * Remove workaround increasing the stack size limit for some architectures,
+    not needed anymore on ia64.
+  * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where
+    available.
+  * libstdc++6: Properly upgrade the doc directory. Closes: #346171.
+  * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313.
+  * Set default 32bit ix86 architecture to i486.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 27 Jan 2006 22:23:22 +0100
+
+gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low
+
+  * Update to SVN 20060107, taken from the 4.1 release branch.
+    - Remove fix for PR ada/22533, fixed by patch for PR c++/23171.
+  * Remove binary packages from the control file, which aren't built
+    yet on any architecture.
+  * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc
+    headers, tighten glibc (build-)dependency.
+  * libffi [arm]: Add support for closures, libjava [arm]: enable the gij
+    interpreter (Phil Blundell). Addresses: #337263.
+  * For the gcj standalone build, include cc1 into the gcj-4.1 package,
+    needed for linking java programs compiled to native code.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  7 Jan 2006 03:36:33 +0100
+
+gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low
+
+  * Update to SVN 20051210, taken from the 4.1 release branch.
+  * Prepare to build the java packages from it's own source (merged
+    from Ubuntu).
+    - Build the java packages from the gcc-4.1 source, as long as packages
+      are prepared for experimental.
+    - When built as gcj, run only the libjava testsuite, don't build the
+      libstdc++ debug packages, don't package the gcc source.
+    - Loosen package dependencies, when java packages are built from
+      separate sources.
+    - Fix gcj hppa build, when java packages are built from separate sources.
+    - gij-4.1: Install test-summary, when doing separate builds.
+    - Allow java packages be installed independent from other packages built
+      from the source package.
+    - Rename libgcj7-common to libgcj7-jar.
+    - Introduce a gcj-4.1-base package to completely separate the two and not
+      duplicate the changelog in each gcj/gij package.
+  * Java related changes:
+    - libjava-xml-transform: Update from classpath trunk, needed for
+      eclipse (Michael Koch), applied upstream.
+    - Fix java wrapper scripts to point to 4.1 (closes: #341710).
+    - Reenable java on mips and mipsel.
+    - Fix libgcj6 dependency. Ubuntu #19935.
+    - Add libxt-dev as a java build dependency. autoconf explicitely checks
+      for X11/Intrinsic.h.
+  * Ada related changes:
+    - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc,
+      mips, mipsel and s390.
+    - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356.
+    - Remove ada bootstrap workaround for alpha.
+  * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922.
+  * Remove obsolete patch: libstdc++-automake.
+  * Remove patch integrated upstream: libffi-mips.
+  * Fix the installation of the hppa64 compiler in snapshot builds.
+  * Rename libgfortran0* to libgfortran1* (upstream soversion change).
+  * Add a dependency on libc-dev for all compilers / -dev packages except
+    gcc (which can be used for kernel builds without libc-dev).
+  * libffi4-dev: Fix package description.
+  * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib.
+    Addresses: #341147.
+  * Fix installation of biarch libstdc++ headers on amd64.
+  * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with
+    -mtune=pentium4). Remove the cpu-default-* patches.
+  * debian/control.m4: Fix libxxgcc package names.
+  * Update the build infrastructure to build cross compilers
+    (Nikita V. Youshchenko).
+  * Tighten binutils (build-)dependency. Closes: #342484.
+  * Symlink more doc directories.
+  * debian/control.m4: Explicitely set Architecture for biarch packages.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Dec 2005 16:56:45 +0100
+
+gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low
+
+  * Build Java packages only.
+  * Update to SVN 20051121, taken from the 4.1 release branch.
+    - Remove libjava-saxdriver-fix patch, applied upstream.
+    - Remove ada-gnat-version patch, applied upstream.
+  * Fix FTBFS in biarch builds on 32bit kernels.
+  * Update libstdc++-doc doc-base file (closes: #339046).
+  * Remove obsolete patch: gcc-alpha-ada_fix.
+  * Fix installation of biarch libstdc++ headers (Ubuntu #19655).
+  * Fix sparc and s390 biarch patches to build the 64bit libffi.
+  * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa.
+  * Install spe.h header on powerpc.
+  * Add libasound build dependencies.
+  * libgcj: Fix installation of libgjsmalsa library.
+  * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf,
+    libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled,
+    gpc-no-gpidump, libgpc-shared, acats-expect.
+  * Fix references to manuals in gnat(1). Ubuntu #19772.
+  * Remove build dependency on xlibs-dev, add libxtst-dev.
+  * Do not configure with --disable-werror.
+  * Merge *-config-ml patches into one config-ml patch, configure the biarch
+    libs in debian/rules.defs.
+  * debian/gcj-wrapper: Accept -Xss.
+  * Do not build biarch java on Debian (missing biarch libasound).
+  * Do not build the java packages from this source package, avoiding
+    dependencies on X.
+
+ -- Matthias Klose <doko@ubuntu.com>  Mon, 21 Nov 2005 20:29:43 +0100
+
+gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low
+
+  * Configure libstdc++ using the default allocator.
+  * Update to 20051112, taken from the svn trunk.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 12 Nov 2005 23:47:01 +0100
+
+gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low
+
+  * UNRELEASED
+  * First snapshot of gcc-4.1 (CVS 20051019).
+    - adds SSP support (closes: #213994, #233208).
+  * Remove patches applied upstream/not needed anymore.
+  * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path,
+    rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch,
+    libjava-biarch-awt, ada-gcc-name.
+  * Disable patches:
+    - 323016, m68k, necessary for 4.1?
+  * debian/copyright: Update for 4.1.
+  * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf:
+    Update for 4.1, add support for Obj-C++ and SSP.
+  * Fix generation of Ada docs in info format.
+  * Set Ada library version to 4.1.
+  * Drop gnat-3.3 as an alternative build dependency.
+  * Use fortran instead of f95 for the build files.
+  * Update build support for awt peer libs.
+  * Add packaging support for SSP library.
+  * Add packaging support for Obj-C++.
+  * Run the testsuite for -march=i686 on i386 and amd64 as well.
+  * Fix generation of Pascal docs in html format.
+  * Update config-ml patches to build libssp biarch.
+  * Disable libssp for hppa64 build.
+  * libgcj7-dev: Install jni_md.h.
+  * Disable gnat for powerpc, currently fails to build.
+  * Add biarch runtime lib packages for ssp, mudflap, ffi.
+  * Do not explicitely configure with --enable-java-gc=boehm, which is the
+    default.
+  * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser.
+  * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885.
+  * Build-depend on expect-tcl8.3 on all architectures.
+  * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on
+    amd64-libs.
+  * Disable ada on alpha mips mipsel powerpc s390, currently broken.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 19 Oct 2005 11:02:31 +0200
+
+gcc-4.0 (4.0.2-3) unstable; urgency=low
+
+  * Update to CVS 20051015, taken from the gcc-4_0-branch.
+    - gcc man page fixes (closes: #327254, #330099).
+    - PR java/19870, PR java/20338, PR java/21844, PR java/21540:
+      Remove Debian patches.
+    - Applied libjava-echo-fix patch.
+    - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux.
+      Closes: #329840.
+    - Fix PR c++/23797, ICE on typename outside template. Closes: #325545.
+    - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932.
+  * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol).
+  * Update generated Ada files.
+  * Fix logic to disable mudflap and Obj-C++ via the environment.
+  * Remove f77 build bits.
+  * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800).
+  * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is
+    not necessary for byte-code compilations, but for compilations to native
+    code. For compilations to byte-code, use a better compiler like ecj
+    for now (found in the ecj-bootstrap package).
+  * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952.
+  * Fix with_libnof logic for cross-compilations (Josh Triplett).
+    Closes: #333951.
+  * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture.
+    Closes: #333954.
+  * On i386, build-depend on libc6-dev-amd64. Closes: #329108.
+  * (Build-)depend on glibc 2.3.5-5.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  2 Oct 2005 14:25:54 +0200
+
+gcc-4.0 (4.0.2-2) unstable; urgency=low
+
+  * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the
+    changes between 4.0.2 RC3 and the final 4.0.2 release, missing from
+    the upstream tarball. Remove patches applied upstream (gcc-c-decl,
+    pr23182, pr23043, pr23367, pr23891, pr21418, pr24018).
+  * On ix86 architectures run the testsuite for -march=i686 as well.
+  * Build libffi on the Hurd (closes: #328705).
+  * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730.
+  * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch).
+  * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826.
+  * Add workaround not to make libmudflap _start/_end not small data on
+    mips/mipsel, taken from CVS HEAD.
+  * Don't build the nof libraries on powerpc.
+  * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  1 Oct 2005 15:42:10 +0200
+
+gcc-4.0 (4.0.2-1) unstable; urgency=low
+
+  * GCC 4.0.2 release.
+  * lib64stdc++6: Set priority to optional.
+  * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744).
+    Backport from CVS HEAD, Michael Koch.
+  * Apply java patches, proposed for the 4.0 branch: PR java/24018,
+    PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367,
+    PR java/20338.
+  * Update the expect/pty test to actually call expect directly, rather
+    than test for the existence of PTYs, since a working expect is what
+    we really care about, not random device files (Adam Conrad).
+    Closes: #329715.
+  * Add build dependencies on lib64z1-dev.
+  * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from
+    4.0.1
+
+ -- Matthias Klose <doko@debian.org>  Thu, 29 Sep 2005 19:50:08 +0200
+
+gcc-4.0 (4.0.1-9) unstable; urgency=low
+
+  * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3).
+  * Apply patches:
+    - Fix PR java/21418: Order of source files matters when compiling,
+      backported from mainline.
+    - Fix for PR 23043, backported form mainline.
+    - Proposed patch for #323016 (m68k only). Patch by Roman Zippel.
+  * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol).
+  * Fail the build early, if the system doesn't have any pty devices
+    created in /dev. Needed for running the testsuite.
+  * Update hurd changes again (closes: #328973).
+
+ -- Matthias Klose <doko@debian.org>  Thu, 22 Sep 2005 07:28:18 +0200
+
+gcc-4.0 (4.0.1-8) unstable; urgency=medium
+
+  * Update to CVS 20050917, taken from the gcc-4_0-branch.
+    - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684).
+  * Fix PR java/23891, eclipse bootstrap.
+  * Set priority of gcc-4.0-hppa64 package to standard.
+  * Bump standards version to 3.6.2.
+  * Fix java wrapper script, mishandles command line options with arguments.
+    Patch from Olly Betts. Closes: #296456.
+  * Bump epoch of the lib32gcc1 package to the same epoch as for the the
+    libgcc1 and lib64gcc1 packages.
+  * Fix some lintian warnings.
+  * Build libffi on the Hurd (closes: #328705).
+  * For biarch builds, disable the testsuite for the non-default architecture
+    for runtime libraries, which are not built by default (libjava).
+  * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen.
+  * Install Ada .ali files read-only.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 17 Sep 2005 10:35:23 +0200
+
+gcc-4.0 (4.0.1-7) unstable; urgency=low
+
+  * Update to CVS 20050913, taken from the gcc-4_0-branch.
+    - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777).
+    - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc.
+      Closes: #321215.
+    - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean.
+      Closes: ##322170.
+  * Install 'altivec.h' on ppc64 (closes: #323945).
+  * Install locale data with the versioned package name (closes: #321591).
+  * Fix fastjar build without building libjava.
+  * On hppa, don't build using gcc-3.3 when ada is disabled.
+  * On m68k, don't build the stage1 compiler using -O.
+
+  * Ludovic Brenta <ludovic@ludovic-brenta.org>
+    - Allow the choice whether or not to build with NLS.
+    - Fix a typo whereby libffi was always enabled on i386.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 13 Sep 2005 23:23:11 +0200
+
+gcc-4.0 (4.0.1-6) unstable; urgency=low
+
+  * Update to CVS 20050821, taken from the gcc-4_0-branch.
+    - debian/patches/pr21562.dpatch: Removed, applied upstream.
+    - debian/patches/libjava-awt-name.dpatch: Updated.
+    - debian/patches/classpath-20050618.dpatch: Updated.
+  * Use all available CPU's for the check target, unless USE_NJOBS == no.
+  * debian/patches/biarch-include.dpatch: Include
+    /usr/local/include/<arch>-linux-gnu before including /usr/local/include.
+  * Fix biarch system include directories for the non-default architecture.
+  * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 18 Aug 2005 18:36:23 +0200
+
+gcc-4.0 (4.0.1-5) unstable; urgency=low
+
+  * Update to CVS 20050816, taken from the gcc-4_0-branch.
+    - Fix PR middle-end/23369, wrong code generation for funcptr comparison
+      on hppa. Closes: #321785.
+    - Fix PR fortran/23368 ICE with NAG routines (closes: #322912).
+  * Build-depend on libcairo2-dev (they say, that's the final package name ...)
+  * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy
+    of the .la files in the libgcj6 package into this directory.
+    Closes: #322576.
+  * Tighten the dependencies between the compiler packages to the same
+    version and release. Use some substitution variables for control file
+    generation.
+  * Remove build dependencies for gpc.
+  * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890).
+  * Synchronize with Ubuntu.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 16 Aug 2005 22:45:47 +0200
+
+gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low
+
+  * Jeff Bailey <jbailey@ubuntu.com>
+
+    Enable i386 biarch using biarch glibc (not yet enabled for unstable).
+    - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on
+      libc6-amd64
+    - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs.
+    - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386]
+      Build-Dep on binutils >= 2.16.1-2ubuntu3
+    - debian/rules2: Enable biarch build in Ubuntu.
+
+  * Matthias Klose <doko@ubuntu.com>
+
+    - Add shlibs file and dependency information for the lib32gcc1 package.
+    - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591).
+    - Set priority of gcc-4.0-base and libstdc++6 packages to `required'.
+      Closes: #321016.
+    - libffi-hppa.dpatch: Remove, applied upstream.
+
+ -- Matthias Klose <doko@debian.org>  Mon,  8 Aug 2005 19:39:02 +0200
+
+gcc-4.0 (4.0.1-4) unstable; urgency=low
+
+  * Enable the biarch compiler for powerpc (closes: #268023).
+  * Update to CVS 20050806, taken from the gcc-4_0-branch.
+  * Build depend on libcairo0.6.0-dev (closes: #321540).
+  * Fix Ada build on the hurd (closes: #321350).
+  * Update libffi for mips (Thiemo Seufer). Closes: #321100.
+  * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier).
+    Closes: #320915.
+  * Add libXXgcc1 build dependencies for biarch builds.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  7 Aug 2005 07:01:59 +0000
+
+gcc-4.0 (4.0.1-3) unstable; urgency=medium
+
+  * Update to CVS 20050725, taken from the gcc-4_0-branch.
+    - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087).
+  * Synchronize with Ubuntu.
+  * Fix applying hurd specific patches for the hurd build (closes: #318443).
+  * Do not build-depend on libmpfr-dev on architectures, where fortran
+    is not built.
+  * Apply biarch include patch on ppc64 as well (closes: #318603).
+  * Correct libstdc++-dev package description (closes: #319082).
+  * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU.
+  * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc.
+    Closes: #319818.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 25 Jul 2005 10:43:06 +0200
+
+gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low
+
+  * Update to CVS 20050720, taken from the gcc-4_0-branch.
+    - Fix PR22278, volatile issues, seen when building xorg.
+  * Build against new libcairo1-dev (0.5.2).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 20 Jul 2005 12:29:50 +0200
+
+gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low
+
+  * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5.
+
+ -- Matthias Klose <doko@ubuntu.com>  Tue, 19 Jul 2005 08:29:30 +0000
+
+gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low
+
+  * Synchronize with Debian.
+  * Update to CVS 20050718, taken from the gcc-4_0-branch.
+    - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer
+      to struct the class derives from generates wrong code.
+  * Build biarch runtime libraries for Fortran and ObjC.
+  * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++
+    is dlclosed). Closes: #293466.
+
+ -- Matthias Klose <doko@ubuntu.com>  Mon, 18 Jul 2005 17:10:18 +0200
+
+gcc-4.0 (4.0.1-2) unstable; urgency=low
+
+  * Don't apply the patch to make -mieee the default on alpha-linux-gnu.
+    Causes the bootstrap to fail on alpha-linux-gnu.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 12 Jul 2005 00:14:12 +0200
+
+gcc-4.0 (4.0.1-1) unstable; urgency=high
+
+  * GCC 4.0.1 final release.  See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}.
+  * Build fastjar on mips/mipsel, fix fastjar build without building java.
+  * Disable the comparision check on unstable/ia64. adaint.o differs,
+    currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1.
+  * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns.
+  * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32.
+  * On powerpc, don't build with -j >1, apparently doesn't succeeds
+    on the Debian buildd.
+  * Apply revised patch to make -mieee the default on alpha-linux,
+    and add -mieee-disable switch to turn the default off (Tyson Whitehead).
+  * Disable multiarch-includes; redo biarch-includes to include the paths
+    for the non-default biarch, when called with -m32/-m64.
+  * Move new java headers from libstdc++-dev to libgcj-dev, add replaces
+    line.
+  * Update classpath patch to work with cairo-0.5.1. Patch provided by
+    Michael Koch.
+  * Further classpath updates for gnu.xml and javax.swing.text.html.
+    Patch provided by Michael Koch.
+  * Require binutils (>= 2.16.1) as a build dependency and a dependency.
+  * On i386, require amd64-libs-dev (>= 1.2).
+  * Update debian/NEWS.{html,gcc}.
+
+  * Closing bug reports reported against older gcc versions (some of them
+    still present in Debian, but not anymore as the default compiler).
+    Usually, forwarded bug reports are linked to
+        http://gcc.gnu.org/PR<upstream bug number>
+    The upstream bug number usually can be found in the Debian reports.
+
+  * Closed reports reported against gcc-3.3 and fixed in gcc-3.4:
+    - General:
+      + PR rtl-optimization/2960: Duplicate loop conditions even with -Os
+        Closes: #94701.
+      + PR optimization/3995: i386 optimisation: joining tests.
+        Closes: #105309.
+      + PR rtl-optimization/11635: Unnecessary store onto stack, more
+        curefully expand union cast (closes: #202016).
+      + PR target/7618: vararg disallowed in virtual function. Closes: #205404.
+      + Large array problem on 64 bit platforms (closes: #209152).
+      + Mark more strings as translatable (closes: #227129).
+      + PR gcc/14711: ICE when compiling a huge source file Closes: #234711.
+      + Better code generation for if(!p) return NULL;return p;
+        Closes: #242318.
+      + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux.
+        Closes: #255801.
+      + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206).
+      + Link error building memtest (closes: #281445).
+    - Ada:
+      + PR ada/12450: Constraint error for valid input (closes: #210844).
+      + PR ada/13620: miscompilation of array initializer with
+        -O3 -fprofile-arcs. Closes: #226244.
+    - C:
+      + PR c/6897: Code produced with -fPIC reserves EBX, but compiles
+        bad __asm__ anyway (closes: #73065).
+      + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm.
+        Closes: #121282.
+      + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode.
+        Closes: #177303.
+      + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091.
+      + PR other/11370: -Wunreachable-code gives false complaints.
+        Closes: #196600.
+      + PR c/11369: Too relaxed checking with -Wstrict-prototypes.
+        Closes: #197504.
+      + PR c/11445: False positive warning with -Wunreachable-code.
+        Closes: #200140.
+      + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long
+         support when in C99 mode. Closes: #200392.
+      + PR c/456: Handling of constant expressions. Closes: #225935.
+      + ICE on invalid #define with -traditional (closes: #242916).
+      + No warning when initializing a variable with itself, new option
+        -Winit-self (closes: #293957).
+    - C++:
+      + C++ parse error (closes: #42946).
+      + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3
+        debug mode). Closes: #128993.
+      + Parse errors in nested constructor calls (closes: #138561).
+      + PR optimization/1823: -ftrapv aborts with pointer difference due to
+        division optimization. Closes: #169862.
+      + ICE on invalid code (closes: #176101).
+      + PR c++/10199: ICE handling method parametrized by template.
+        Closes: #185604.
+      + High memory usage building packages OpenOffice.org and MythTV.
+        Closes: #194345, #194513.
+      + Improved documentation of std::lower_bound (closes: #196380).
+      + ICE in regenerate_decl_from_template (closes: #197674).
+      + PR c++/11444: Function fails to propagate up class tree
+        (template-related).  Closes: #198042.
+      + ICE when using namespaced typedef of primitive type as struct.
+        Closes: #198261.
+      + Bug using streambuf / iostream to read from a named pipe.
+        Closes: #216105.
+      + PR c++/11437: ICE in lookup_name_real (closes: #200011).
+      + Add large file support (LFS) in libstdc++ (closes: #220000).
+      + PR c++/13621: ICE compiling a statement expression returning type
+        string (closes: #224413).
+      + g++ doesn't find inherited inner class after template instantiation.
+        Closes: #227518.
+      + PR libstdc++/13928: Add whatis info in man pages generated by doxygen.
+        Closes: #229642.
+      + Missing symbol _M_setstate in libstdc++ (closes: #232709).
+      + Unable to parse declaration of inline constructor explicit
+        specialization (closes: #234709).
+      + ICE (segfault) on invalid C++ code (closes: #246031).
+      + ICE in lookup_tempate_function (closes: #262441).
+      + Undefined symbols in libstdc++, when using specials char_traits.
+        Closes: #266110.
+      + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE
+        causes infinite recursion (closes: #270795).
+      + ICE in tree_low_cst (closes: #276291).
+      + ICE in in expand_call (closes: #283503).
+      + typeof operator is misparsed in a template function (closes: #288555).
+      + ICE in tree_low_cs (closes: #291374).
+      + Improve uninformative error messages (closes: #292961, #293076).
+      + ICE on array initialization (closes: #294560).
+      + Failure to build xine-lib with -finline-functions (closes: #306854).
+    - Java:
+      + Fix error finding files in subdirectories (closes: #195480).
+      + Implement java.text.CollationElementIterator lacks getOffset().
+        Closes: #259789.
+    - Treelang:
+      + Pointer truncation on 64bit architectures (closes: #308367).
+    - Architecture specific:
+      - alpha
+        + PR debug/10695: ICE on alpha while building agistudio.
+          Closes: #192568.
+        + ICE when building fceu (closes: #228018, #252764).
+      - amd64
+        + Miscompilation of Objective-C code (closes: #250174).
+        + g++ hangs compiling k3d on amd64 (closes: #285364).
+      - arm
+        + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining.
+          Closes: #285238.
+      - i386
+        + PR target/4106: i386 -fPIC asm ebx clobber no error.
+          Closes: #153472.
+        + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940.
+        + Wrong code generation on at least ix86 (closes: #275655).
+      - m68k
+        + PR target/9201: ICE compiling octave-2.1 (closes: #175478).
+        + ICE in verify_initial_elim_offsets (closes: #204407, #257012).
+        + g77 generates invalid assembly code (closes: #225621).
+        + ICE in verify_local_live_at_start (closes #245584).
+      - powerpc
+        + PR optimization/12828: -floop-optimize is unstable on PowerPC (float
+          to int conversion problem). Closes: #218219.
+        + PR target/13619: ICE building altivec code in ffmpeg.
+          Closes: #226148.
+        + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958.
+      - sparc
+        + ICE (segfault) while building atlas3 on sparc32 (closes: #249108).
+        + Wrong optimization on sparc32 when building linux kernel.
+          Closes: #254626.
+
+  * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0:
+    - General:
+      + PR rtl-optimization/6901: Optimizer improvement (removing unused
+        local variables). Closes: #67206.
+      + PR middle-end/179: Failure to detect use of unitialized variable
+        with -O -Wall. Closes: #117765.
+      + ICE building glibc's nptl on amd64 (closes: #260710, #307993).
+      + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854.
+      + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344.
+    - Ada:
+      + PR ada/10889: Convention Fortran matrices mishandled in generics.
+        Closes: #192135.
+      + PR ada/13897: Implement tasking on powerpc. Closes: #225346.
+    - C:
+      + PR c/13072: Bogus warning with VLA in switch. Closes: #218803.
+      + PR c/13519: typeof(nonconst+const) is const. Closes: #208981.
+      + PR c/12867: Incorrect warning message (void format, should be void*
+        format). Closes: #217360.
+      + PR c/16066: PR 16066] i386 loop strength reduction bug.
+        Closes: #254659.
+    - C++:
+      + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260.
+      + PR translation/16025: ICE with unsupported locale(closes: #242158).
+      + PR c++/15125: -Wformat doesn't warn for different types in fprintf.
+        Closes: #243507.
+      + PR c++/15214: Warn only if the dtor is non-private or the class has
+        friends. (closes: #246639).
+      + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages.
+        Closes: #262934.
+      + PR libstdc++/17223: Missing .so references in generated libstdc++
+        manpages. Closes: #262956.
+      + libstdc++-doc: Improve man pages (closes: #280910).
+      + PR c++/19006: ICE in tree_low_cst. Closes: #285692.
+      + g++ does not check arguments to fprintf. Closes: #281847.
+    - Java:
+      + PR java/7304: gcj ICE (closes: #152501).
+      + PR libgcj/7305: Installation of headers not directly in /usr/include.
+        Closes: #195483.
+      + PR libgcj/11941: libgcj timezone handling (closes: #203212).
+      + PR java/14709: gcj fails to wait for its child processes on exec().
+        Closes: #238432.
+      + PR libgcj/21703: gcj hangs when rapidly calling String.intern().
+        Closes: #275547.
+      + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602.
+      + PR java/19711: gcj segfaults instead of reporting the ambiguous
+        expression. Closes: #286715.
+      + Static libgcj contains repeated archive members (closes: #298263).
+    - Architecture specific:
+      - alpha
+        + Unaligned accesses with ?-operator (closes: #301983).
+      - arm
+        + Compilation error of glibc-2.3.4 on arm (closes: #298508).
+      - m68k
+        + ICE in add_insn_before (closes: #248432).
+      - mips
+        + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620).
+      - powerpc
+        + ICE in extract_insn (closes: #311128).
+
+  * Closing bug reports as wontfix:
+    - g++ defines _GNU_SOURCE when using the libstdc++ header files.
+      Behaviour did change since 3.0. Closes: #126703, #164872.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  9 Jul 2005 17:10:54 +0000
+
+gcc-4.0 (4.0.0ds2-12) unstable; urgency=high
+
+  * Update to CVS 20050701, taken from the gcc-4_0-branch.
+  * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport
+    from mainline.
+  * Disable Fortran on m68k. Currently FTBFS.
+  * Split multiarch-include/lib patches. Update multiarch-include patch.
+  * Fix FTBFS of the hppa64-linux cross compiler. Don't add the
+    multiarch include dirs when cross compiling.
+  * Configure --with-java-home, as used by java-gcj-compat.
+    Closes: #315646.
+  * Make libgcj-dbg packages priority extra.
+  * Set the path of classmap.db to /var/lib/gcj-@gcc_version@.
+  * On m68k, do not create the default classmap.db in the gcj postinst.
+    See #312830.
+  * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib.
+    Restore the /usr/lib32 symlink.
+  * On amd64, don't reference lib64, but instead lib (lib64 is a symlink
+    to lib). Closes: #293050.
+  * Remove references to build directories from the .la files.
+  * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y,
+    gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in
+    the gcc library path changes (i.e. version or target alias).
+  * Disable Ada for sh3 sh3eb sh4 sh4eb.
+  * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev.
+    Closes: #316499.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  2 Jul 2005 11:04:35 +0200
+
+gcc-4.0 (4.0.0ds1-11) unstable; urgency=low
+
+  * debian/rules.defs: Disable Ada for alpha.
+  * debian/rules.conf: Fix typo in type-handling replacement code.
+  * Don't ship an empty libgcj6-dbg package.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 23 Jun 2005 09:03:21 +0200
+
+gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium
+
+  * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch
+    to fix libstdc++ 3.4.5/4.0 compatibility.
+  * type-handling output became insane. Don't use it anymore.
+  * Drop the reference to the stl-manual package (closes: #314983).
+  * Disable java on GNU/kFreeBSD targets, requested by Robert Millan.
+    Closes: #315140.
+  * Terminate the acats-killer process, even if the build is aborted
+    by the user (closes: #314405).
+  * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}.
+  * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build
+    files.
+  * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop
+    build dependency on libcairo-dev.
+  * Fix setting of the system header directory for the hurd (Michael Banck).
+    Closes: #315386.
+  * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Jun 2005 19:45:50 +0200
+
+gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low
+
+  * Fix version number in libgcj shlibs file.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sun, 19 Jun 2005 10:34:02 +0200
+
+gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low
+
+  * Update to 4.0.1, release candidate 2.
+  * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version.
+  * Rename libawt to libgcjawt to avoid conflicts with other
+    libawt implementations (backport from HEAD).
+  * Update classpath awt, swing and xml parser for HTML support in swing.
+    Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch.
+  * Remove the libgcj-buffer-strategy path, part of the classpath update.
+  * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version.
+  * Require cairo-0.5 as build dependency.
+  * gij-4.0: Provide java1-runtime.
+  * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0).
+  * gcj-4.0: Provide an rmic alternative (using grmic-4.0).
+  * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6.
+    Closes: #312741.
+  * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel.
+  * Apply proposed patch for PR 18421 and PR 18719 (m68k only).
+  * Apply proposed path for PR 21562.
+  * Add build dependency on dpkg (>= 1.13.7).
+  * On linux systems, configure for <cpu>-linux-gnu.
+  * Configure the hppa64 cross compiler to target hppa64-linux-gnu.
+  * (Build-)depend on binutils-2.16.1.
+  * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev.
+  * gnat-4.0: only depend on libgnat, when a shared libgnat is built.
+  * gfortran-4.0: Depend on libgmp3c2 | libgmp3.
+  * On hppa, explicitely use gcc-3.3 as a build dependency in the case
+    that Ada is disabled.
+  * libmudflap: Always build the library for the non-default biarch
+    architecture, or else the test results show link failures.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat, 18 Jun 2005 00:42:55 +0000
+
+gcc-4.0 (4.0.0-9) unstable; urgency=low
+
+  * Upload to unstable.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 25 May 2005 19:02:20 +0200
+
+gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low
+
+  * debian/control: Regenerate.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat,  4 Jun 2005 10:56:27 +0200
+
+gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low
+
+  * Fix powerpc-config-ml patch.
+
+ -- Matthias Klose <doko@ubuntu.com>  Fri,  3 Jun 2005 15:47:52 +0200
+
+gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low
+
+  * powerpc biarch support:
+    - Enable powerpc biarch support, build lib64gcc1 on powerpc.
+    - Add patch to disable libstdc++'s configure checking, if it can't run
+      64bit binaries on 32bit kernels (Sven Luther).
+    - Apply the same patch to the other runtime librararies as well.
+    - Run the testsuite with -m64, if we can execute 64bit binaries.
+    - Add libc6-dev-ppc64 as build dependency for powerpc.
+  * 32bit gcj libs for amd64.
+  * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested
+    by Ryan Murray).
+  * Update to CVS 20050603, taken from the gcc-4_0-branch.
+  * g++-4.0 provides c++abi2-dev.
+  * Loosen dependencies on packages of architecture `all' to not break
+    binary only uploads.
+  * Build libgfortran for biarch as well, else the testsuite will fail.
+
+ -- Matthias Klose <doko@ubuntu.com>  Fri,  3 Jun 2005 13:38:19 +0200
+
+gcc-4.0 (4.0.0-8) experimental; urgency=low
+
+  * Synchronize with Ubuntu.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 23 May 2005 01:56:28 +0000
+
+gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low
+
+  * Fix build failures for builds with disabled testsuite.
+  * Adjust debian/rules conditionals to work with all dpkg versions.
+  * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages.
+  * Add the debugging symbols of the optimzed libstdc++ build in the
+    lib*stdc++6-dbg packages as well.
+  * Build a libgcj6-dbg package.
+  * Update to CVS 20050522, taken from the gcc-4_0-branch.
+  * Add Ada support for the ppc64 architecture (Andreas Jochens):
+    * debian/patches/ppc64-ada.dpatch
+      - Add gcc/ada/system-linux-ppc64.ads, which has been copied from
+        gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64
+        instead of 32.
+      - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64.
+    * debian/rules.patch
+      - Use ppc64-ada patch on ppc64.
+    * debian/rules.d/binary-ada.mk
+      Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so,
+      libgnarl-4.0.so in '/usr/lib' instead of '<gcc_lib_dir>/adalib'.
+    Closes: #308948.
+  * Add libc6-dev-i386 as an alternative build dependency for amd64.
+    Closes: #305690.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sun, 22 May 2005 22:14:20 +0200
+
+gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low
+
+  * Don't trust dpkg-architecture (1.13.4), it "hurds" ...
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 18 May 2005 11:36:38 +0200
+
+gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low
+
+  * libgcj6-dev: Don't provide libgcj-dev.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 18 May 2005 00:30:32 +0000
+
+gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low
+
+  * Update to CVS 20050517, taken from the gcc-4_0-branch.
+  * Apply proposed patch for PR21293.
+
+ -- Matthias Klose <doko@ubuntu.com>  Tue, 17 May 2005 23:05:40 +0000
+
+gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low
+
+  * Update to CVS 20050515, taken from the gcc-4_0-branch.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sun, 15 May 2005 23:48:00 +0200
+
+gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low
+
+  * Synchronize with Debian.
+
+ -- Matthias Klose <doko@ubuntu.com>  Mon,  9 May 2005 19:35:29 +0200
+
+gcc-4.0 (4.0.0-7) experimental; urgency=low
+
+  * Update to CVS 20050509, taken from the gcc-4_0-branch.
+  * Remove the note from the fastjar package description, stating, that
+    fastjar is incomplete compared to the "standard" jar utility.
+  * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma
+    inside [].
+  * Tighten shlibs dependencies to require the current version.
+
+ -- Matthias Klose <doko@debian.org>  Mon,  9 May 2005 19:02:03 +0200
+
+gcc-4.0 (4.0.0-6) experimental; urgency=low
+
+  * Update to CVS 20050508, taken from the gcc-4_0-branch.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  8 May 2005 14:08:28 +0200
+
+gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low
+
+  * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev
+    build dependency, add (build-)conflict (<= 1.1ubuntu1).
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat,  7 May 2005 16:56:21 +0200
+
+gcc-4.0 (4.0.0-5) breezy; urgency=low
+
+  * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002).
+  * Update to CVS 20050507, taken from the gcc-4_0-branch.
+  * gcj-4.0: Install gjnih.
+  * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2.
+    Backport from 4.1.
+  * Fix all lintian errors and most of the warnings.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sat,  7 May 2005 12:26:15 +0200
+
+gcc-4.0 (4.0.0-4) breezy; urgency=low
+
+  * Still prefer gnat-3.3 over gnat-4.0 as a build dependency.
+
+ -- Matthias Klose <doko@ubuntu.com>  Fri,  6 May 2005 22:30:43 +0200
+
+gcc-4.0 (4.0.0-3) breezy; urgency=low
+
+  * Update to CVS 20050506, taken from the gcc-4_0-branch.
+  * Update priority of java alternatives to 40.
+  * Move gcj-dbtool to gij package, move the default classmap.db to
+    /var/lib/gcj-4.0/classmap.db. Create it in the postinst.
+  * Fix gcc-4.0-hppa64 postinst (closes: #307762).
+  * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors
+    from update-alternatives.
+  * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm,
+    to not ignore errors from update-alternatives.
+
+ -- Matthias Klose <doko@ubuntu.com>  Fri,  6 May 2005 17:50:58 +0200
+
+gcc-4.0 (4.0.0-2) experimental; urgency=low
+
+  * GCC 4.0.0 release.
+  * Update to CVS 20050503, taken from the gcc-4_0-branch.
+  * Add gnat-4.0 as an alternative build dependency (closes: #305690).
+
+ -- Matthias Klose <doko@debian.org>  Tue,  3 May 2005 15:41:26 +0200
+
+gcc-4.0 (4.0.0-1) experimental; urgency=low
+
+  * GCC 4.0.0 release.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 24 Apr 2005 11:28:42 +0200
+
+gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low
+
+  * CVS 20050413, taken from the gcc-4_0-branch.
+  * Add proposed patches for PR20126, PR20490, PR20929.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 13 Apr 2005 09:43:00 +0200
+
+gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low
+
+  * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball.
+    - C++ fix for "optimizer breaks function inlining". Closes: #302989.
+  * Append the GCC version to the fastjar/grepjar version string.
+  * Use short file names in the libstdc++ docs (closes: #301140).
+  * Fix libstdc++-dbg dependencies (closes: #303866).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 11 Apr 2005 13:16:01 +0200
+
+gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low
+
+  * CVS 20050326, taken from the gcc-4_0-branch.
+  * Reenable Ada on ia64.
+  * Build libgnat on hppa, sparc, s390 again.
+  * ppc64 support (Andreas Jochens):
+    * debian/control.m4
+      - Add libc6-dev-powerpc [ppc64] to the Build-Depends.
+      - Change the Description for lib32gcc1: s/ia32/32 bit Version/
+    * debian/rules.defs
+      - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib
+        facilities as amd64.
+    * debian/rules.d/binary-gcc.mk
+      - Correct an error in the 'files_gcc' definition for biarch_ia32
+        (replace '64' by '32').
+    * debian/rules2
+      - Do not use '--disable-multilib' on powerpc64-linux.
+        Use '--disable-nof --disable-softfloat' instead.
+    * debian/rules.d/binary-libstdcxx.mk
+      - Put the 32 bit libstdc++ files in '/usr/lib32'.
+    * debian/rules.patch
+      - Apply 'ppc64-biarch' patch on ppc64.
+    * debian/patches/ppc64-biarch.dpatch
+      - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and
+        /lib32 for 32 bit libraries.
+      - Add multilib handling to src/config-ml.in (taken from
+        amd64-biarch.dpatch).
+  * Rename biarch_ia32 to biarch32, as suggsted by Andreas.
+  * Use /bin/dash on hppa.
+  * Reenable the build of the hppa64 compiler.
+  * Enable parallel builds by defaults (set environment variale USE_NJOBS=no
+    or USE_NJOBS=<number> to modify the default, which is to use the
+    number of available processors).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 26 Mar 2005 19:07:30 +0100
+
+gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low
+
+  * CVS 20050322, taken from the gcc-4_0-branch.
+    - Add proposed fix for PR19406.
+  * Configure --with-gtk-cairo only if version 0.3.0 is found.
+  * Split out gcc-4.0-locales package. Better chance of getting
+    bug reports in english language.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 22 Mar 2005 14:20:24 +0100
+
+gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low
+
+  * CVS 20050304, taken from the gcc-4_0-branch.
+  * Build the treelang compiler.
+
+ -- Matthias Klose <doko@debian.org>  Fri,  4 Mar 2005 21:29:56 +0100
+
+gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low
+
+  * Fix lib32gcc1 symlink on amd64. Ubuntu #7099.
+
+ -- Matthias Klose <doko@ubuntu.com>  Thu,  3 Mar 2005 00:17:26 +0100
+
+gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low
+
+  * Add patch from PR20160, avoid creating archives with components
+    that have duplicate basenames.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed,  2 Mar 2005 14:22:04 +0100
+
+gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low
+
+  * CVS 20050301, taken from the gcc-4_0-branch.
+    Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1.
+  * Add fastjar-4.0 binary and manpage. Some java packages append it
+    for all java related tools.
+  * Add libgcj6-src package for source code availability in IDE's.
+  * On hppa, disable the build of the hppa64 cross compiler, disable
+    java, disable running the testsuite (request by Lamont).
+  * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3).
+  * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo.
+    Work around libtool problems install libjawt.
+    Install jawt header files in libgcj6-dev.
+  * Add workaround for PR debug/19769.
+
+ -- Matthias Klose <doko@ubuntu.com>  Tue,  1 Mar 2005 11:26:19 +0100
+
+gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low
+
+  * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency.
+
+ -- Matthias Klose <doko@ubuntu.com>  Thu, 10 Feb 2005 15:16:27 +0100
+
+gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low
+
+  * Disable Ada for powerpc.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed,  9 Feb 2005 16:47:07 +0100
+
+gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low
+
+  * Avoid build dependency on type-handling.
+  * Install 32bit libs on amd64 in /lib32 and /usr/lib32.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed,  9 Feb 2005 08:27:21 +0100
+
+gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208.
+  * Build-depend on graphviz (moved to main), remove the pregenerated
+    libstdc++ docs from the diff.
+  * Fix PR19162, libobjc build failure on arm-linux (closes: #291497).
+
+ -- Matthias Klose <doko@debian.org>  Tue,  8 Feb 2005 11:47:31 +0000
+
+gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125.
+  * Call the 4.0 gcx versions in the java wrappers (closes: #291075).
+  * Correctly install libgij (closes: #291077).
+  * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 24 Jan 2005 23:59:54 +0100
+
+gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115.
+  * Update cross build patches (Nikita V. Youshchenko).
+  * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390.
+    Doesn't yet bootstrap on alpha, hppa, ia64.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 15 Jan 2005 18:44:03 +0100
+
+gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Dec 2004 00:31:44 +0100
+
+gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205.
+  * Lot's of merges and updates from the gcc-3.4 packages.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 04 Dec 2004 12:14:51 +0100
+
+gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114.
+    - Addresses many issues with the libstdc++ man pages (closes: #278549).
+  * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least
+    these are known to be broken at the time of the snapshot.
+  * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004.
+  * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package.
+    (Andreas Jochens). Fixes: #274362.
+  * Update libffi-mips patch (closes: #274096).
+  * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE.
+  * Update sparc biarch patch.
+  * Fix symlinks for gfortran manpage (closes: #278548).
+  * Update cross build patches (Nikita V. Youshchenko).
+  * Update Ada patches (Ludovic Brenta).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 13 Nov 2004 10:38:25 +0100
+
+gcc-4.0 (4.0-0pre0) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912.
+
+  * Matthias Klose <doko@debian.org>
+
+    - Integrate accumulated packaging patches from gcc-3.4.
+    - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693).
+    - libffi4-dev: conflict with libffi3-dev (closes: #265939).
+
+  * Robert Millan <rmh@debian.org>
+
+    * control.m4: 
+      - s/locale_no_archs !hurd-i386/locale_no_archs/g 
+        (This is now handled in rules.defs. [1]) 
+      - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] 
+      - Add type-handling to build-deps. [3] 
+    * rules.conf: 
+      - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] 
+      - Generate *_no_archs variables with type-handling and use them for 
+        for m4's -D parameters. [3] 
+    * rules.defs: 
+      - use filter instead of findstring [1]. 
+      - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. 
+      - enable java for kfreebsd-gnu [6] 
+      - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] 
+      - enable libgc for kfreebsd-gnu [6] 
+      - enable checks for kfreebsd-gnu and knetbsd-gnu [7] 
+      - enable locales for kfreebsd-gnu and gnu [1] [8]. 
+    * Closes: #264025.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 12 Sep 2004 12:52:56 +0200
+
+gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low
+
+  * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724.
+  * Install locale data with versioned package name (closes: #260497).
+  * Fix libgnat symlinks.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 Jul 2004 21:26:23 +0200
+
+gcc-3.5 (3.5-0pre0) experimental; urgency=low
+
+  * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 Jul 2004 12:26:00 +0200
+
+gcc-3.4 (3.4.1-1) experimental; urgency=low
+
+  * gcc-3.4.1 final release.
+    - configured wth --enable-libstdcxx-allocator=mt.
+  * Fixes for generating cross compiler packages (Jeff Bailey).
+
+ -- Matthias Klose <doko@debian.org>  Fri,  2 Jul 2004 22:49:05 +0200
+
+gcc-3.4 (3.4.0-4) experimental; urgency=low
+
+  * gcc-3.4.1 release candidate 1.
+  * Add logic to build biarch compiler on powerpc (disabled, needs lib64c).
+  * Don't build the libg2c0 package on mipsel-linux (no clear answer on
+    debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible
+    (post-sarge issue).
+  * Don't use gcc-2.95 as bootstrap compiler on m68k anymore.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 26 Jun 2004 22:40:20 +0200
+
+gcc-3.4 (3.4.0-3) experimental; urgency=low
+
+  * Update to gcc-3.4 CVS 20040613.
+  * On sparc, set the the build target to sparc64-linux, build with
+    switch defaulting to code generation for v7. To generate code for
+    sparc64, use the -m64 switch.
+  * Add missing doc-base files to -doc packages.
+  * Add portability patches and kbsd-gnu patch (Robert Millan).
+    Closes: #251293, #251294.
+  * Apply fixes for cross build (Nikita V. Youshchenko).
+  * Do not include the precompiled libstdc++ header files into the -dev
+    package (still experimental). Closes: #251707.
+  * Reflect renaming of Ada user's guide.
+  * Move AWT peer libraries for libgcj into it's own package (fixes: #247791).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 14 Jun 2004 00:03:18 +0200
+
+gcc-3.4 (3.4.0-2) experimental; urgency=low
+
+  * Update to gcc-3.4 CVS 20040516.
+  * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package,
+    migrated to libc6-dev. Adjust dependencies.
+  * Integrate gpc test results into the GCC test summary.
+  * gnatchop calls gcc-3.4 (closes: #245438).
+  * debian/locale-gen.sh: Update for recent libstdc+++ testsuite.
+  * debian/copyright: Add libstdc++-v3's exception clause.
+  * Add libffi update for mips (Thiemo Seufer).
+  * Reference Debian specific bug reporting instructions.
+  * Update README.Bugs.
+  * Fix FTBFS for libstdc++-doc.
+  * Update libjava patch for hppa (Randolph Chung).
+  * Fix installation of ffitarget.h header file.
+  * On amd64-linux, configure --without-multilib, disable Ada.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 16 May 2004 07:53:39 +0200
+
+gcc-3.4 (3.4.0-1) experimental; urgency=low
+
+  * gcc-3.4.0 final release.
+
+  * Why experimental?
+    - Do not interfer with packages currently built from gcc-3.3 sources,
+      i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0.
+    - Biarch sparc compiler doesn't built yet.
+    - Use of configure flags affecting binary ABI's not yet determined.
+    - Several ABI bugs have been fixed. Unfortunately, these changes will break
+      binary compatibility with earlier releases on several architectures:
+      alpha, mips, sparc, 
+    - hppa and m68k changed sjlj based exception handling to dwarf2 based
+      exception handling.
+
+      See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more
+      specific information.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 20 Apr 2004 20:54:56 +0200
+
+gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low
+
+  * Update to gcc-3.4 CVS 20040403.
+  * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch).
+  * Reenable sparc-biarch patches (closes: #239856).
+  * Build the shared libgnat library, needed to fix FTBFS for some
+    Ada library packages (Ludovic Brenta).
+    Currently enabled for hppa, i386, ia64.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  3 Apr 2004 08:47:55 +0200
+
+gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low
+
+  * Update to gcc-3.4 CVS 20040320.
+  * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560).
+  * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798).
+  * Reenable s390-biarch patches.
+  * Update the cross compiler build files (Nikita V. Youshchenko).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 20 Mar 2004 09:15:10 +0100
+
+gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low
+
+  * Start gcc-3.4 packaging, get rid of the epoch for most of the
+    packages.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 22 Feb 2004 16:00:03 +0100
+
+gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium
+
+  * Update to gcc-3_3-branch CVS 20040401.
+    - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215).
+    - Fix PR 14755, miscompilation of loops with bitfield counter.
+      Closes: #241255.
+    - Fix PR 16040, crash in function initializing const data with
+      reinterpret_cast-ed pointer-to-member function crashes (closes: #238621).
+    - Remove patches integrated upstream.
+  * Reenable build of gpidump on powerpc and s390.
+
+ -- Matthias Klose <doko@debian.org>  Thu,  1 Apr 2004 23:51:54 +0200
+
+gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium
+
+  * Update to gcc-3_3-branch CVS 20040321.
+    - Fix PR target/13889 (ICE on valid code on m68k).
+  * Fix FTFBS on s390. Do not build gpc's gpidump on s390.
+  * Reenable gpc on arm.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 22 Mar 2004 07:37:26 +0100
+
+gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low
+
+  * Update to gcc-3_3-branch CVS 20040320.
+    - Revert patch for PR14640 (with this, at least mozilla-firefox was
+      miscompiled on x86 (closes: #238621).
+  * Update the gpc tarball (there were two releases with the same name ...).
+  * Reenable gpc on alpha and ia64.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 20 Mar 2004 07:39:24 +0100
+
+gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low
+
+  * Update to gcc-3_3-branch CVS 20040314.
+    - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567).
+    - Fix ICE in dwarf-2 on code using altivec (closes: #203835).
+  * Update hurd-changes patch.
+  * Add libgcj4-dev as a recommendation for gcj (closes: #236547).
+  * debian/copyright: Added exemption to static linking of libgcc.
+
+  * Phil Blundell:
+    - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 14 Mar 2004 09:56:06 +0100
+
+gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low
+
+  * Update to gcc-3_3-branch CVS 20040306.
+    - Fixes bootstrap comparision error on ia64.
+    - Allows ghc build with gcc-3.3.
+    - On amd64, don't imply 3DNow! for -m64 by default.
+    - Some arm specific changes
+    - Fix C++/13944: exception in constructor of a class to be thrown is not
+      caught. Closes: #228099.
+  * Enable the build of gcc-3.3-hppa64 on hppa.
+    Add symlinks for as and ld to point to hppa64-linux-{as,ld}.
+  * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3.
+  * Fix libgc2c-pic compatibility links (closes: #234333).
+    The link will be removed for gcc-3.4.
+  * g77-3.3: Conflict with other g77-x.y packages.
+  * Tighten shlibs dependencies to latest released versions.
+
+  * Phil Blundell:
+    - debian/patches/arm-233633.dpatch: New  Fixes problems with half-word
+      loads on ARMv3 architecture.  (Closes: #233633)
+    - debian/patches/arm-ldm.dpatch: New.  Avoids inefficient epilogue for
+      leaf functions in PIC code on ARM.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  6 Mar 2004 10:57:14 +0100
+
+gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium
+
+  * gcc-3.3.3 final release.
+    See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 16 Feb 2004 08:59:52 +0100
+
+gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low
+
+  * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease).
+  * Fix title of libstdc++'s html main index (closes: #196381).
+  * Move libg2c libraray files out of the gcc specific libdir to /usr/lib.
+    For g77-3.3 add conflicts to other g77 packages. Closes: #224848.
+  * Update the stack protector patch to 3.3-7, but don't apply it by default.
+    Closes: #230338.
+  * On arm, use arm6 as the cpu default (backport from mainline, PR12527).
+  * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 14 Feb 2004 09:26:15 +0100
+
+gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low
+
+  * Update to gcc-3.3.3 CVS 20040125.
+    - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911).
+    - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835).
+    - Fixed PR13544, removed backport for PR12862.
+    - Integrated backport for PR12441.
+  * Fixed since 3.3: java: not implemented interface methods of abstract
+    classes not found (closes: #225438).
+  * Disable pascal on arm architecture (currently broken).
+  * Update the build files to build a cross compiler (Nikita V. Youshchenko).
+    See debian/README.cross in the source package.
+  * Apply revised patch to make -mieee the default on alpha-linux,
+    and add -mieee-disable switch to turn the default off (closes: #212912).
+    (Tyson Whitehead)
+
+ -- Matthias Klose <doko@debian.org>  Sun, 25 Jan 2004 17:41:04 +0100
+
+gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium
+
+  * Update to gcc-3.3.3 CVS 20040110.
+    - Fixes compilation not terminating at -O1 on hppa (closes: #207516).
+  * Add backport to fix PR12441 (closes: #224576).
+  * Revert backport to 3.3 branch to fix PR12862, which introduced another
+    regression (PR13544). Closes: #225663.
+  * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273).
+  * Disable treelang build for cross compiler build.
+  * Disable pascal on alpha and ia64 architectures (currently broken).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 10 Jan 2004 12:33:59 +0100
+
+gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low
+
+  * Update to gcc-3.3.3 CVS 20031229.
+    - Fixes bootstrap error on ia64-linux.
+    - Fix -pthread on mips{,el}-linux (closes: #224875).
+    - Fix -Wformat for C++ (closes: #217075).
+  * Backport from mainline: Preserve inline-ness when redeclaring
+    a function template (closes: #195264).
+  * Add missing intrinsics headers on ix86 (closes: #224593).
+  * Fix location of libg2c libdir in libg2c.la file (closes: #224848).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 29 Dec 2003 10:36:29 +0100
+
+gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high
+
+   * NMU
+   * Fixed mips(el) spec file for -pthread: (Closes: #224875)
+   * [debian/patches/mips-pthread.dpatch] New.
+   * [debian/rules.patch] Added it to debian_patches.
+
+ -- J.H.M. Dassen (Ray) <jdassen@debian.org>  Sat, 27 Dec 2003 15:51:47 +0100
+
+gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low
+
+  * Update to gcc-3.3.3 CVS 20031206.
+    - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550.
+    - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c.
+      Closes: #219949.
+  * Add missing unwind.h to gcc package (closes: #220846).
+  * Regenerate control file to fix build dependencies for m68k.
+  * More gpc only patches to fix test failures on m68k.
+  * Reenable gpc for the Hurd (closes: #189851).
+
+ -- Matthias Klose <doko@debian.org>  Sat,  6 Dec 2003 10:29:07 +0100
+
+gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low
+
+  * Update libffi-dev package description (closes: #219508).
+  * For gij and libgcj fix dependency on the libstdc++ package, if
+    the latter isn't installed during the build.
+  * Apply patch to emit .note.GNU-stack section on linux arches
+    which by default need executable stack.
+  * Prefer gnat-3.3 over gnat-3.2 as a build dependency.
+  * Update the pascal tarball (different version released with the
+    same name).
+  * Add pascal patches to address various gpc testsuite failures.
+    On alpha and ia64, build gpc from the 20030830 version. Reenable
+    the build on m68k.
+    Remove the 20030507 gpc version from the tarball.
+  * Apply patch to build the shared ada libs and link the ada tools
+    against the shared libs. Not enabled by default, because gnat
+    and gnatlib are rebuilt during install. (Ludovic Brenta)
+
+ -- Matthias Klose <doko@debian.org>  Sun,  9 Nov 2003 22:34:33 +0100
+
+gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low
+
+  * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  2 Nov 2003 14:29:59 +0100
+
+gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium
+
+  * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240).
+    (Gerhard Tonn)
+  * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1.
+  * Fix a wrong code generation bug on alpha.
+    (Falk Hueffner)
+  * Update NEWS files.
+  * Add Falk Hueffner to the Debian GCC maintainers.
+  * Enable ada on mips and mipsel, but don't build the gnatpsta tool.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 29 Oct 2003 00:12:37 +0100
+
+gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium
+
+  * Update to gcc-3.3.2.
+  * Update NEWS files.
+  * Miscompilation in the pari package at -O3 fixed (closes: #198172).
+  * On alpha-linux, revert -mieee as the default (Falk Hueffner).
+    Reopens: #212912.
+  * Add ia64-unwind patch (Jeff Bailey).
+  * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3:
+    - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404).
+    - Compilation failure of stlport (closes: #135224).
+    - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390).
+    - Added missing some string::compare() members (closes: #141199).
+    - <cmath> header declares std::pow (closes: #161853).
+    - <vector> does have at() method (closes: #59776).
+    - Fixed error in stl_deque.h (closes: #69530).
+    - Fixed problem with bastring (closes: #75759, #96539).
+    - bad_alloc and std:: namespace problem (closes: #75120).
+    - Excessive warnings from headers with -Weffc++ (closes: #76827).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 17 Oct 2003 08:07:01 +0200
+
+gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low
+
+  * Update to gcc-3.3.2 CVS 20031005.
+    - Fixes cpp inserting a spurious newline (closes: #210478, #210482).
+    - Fixes generation of unrecognizable insn compiling kernel source
+      on alpha (closes: #202762).
+    - Fixes ICE in add_abstract_origin_attribute (closes: #212406).
+    - Fixes forward declaration in libstdc++ (closes: #209386).
+    - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564).
+  * Make libgcj-common architecture all (closes: #211909).
+  * Build depend on: flex-old | flex (<< 2.5.31).
+  * Fix spec linking libraries with -pthread on powerpc (closes: #211054).
+  * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage.
+    (Phil Blundell)
+  * debian/patches/arm-common.dpatch: fix excessive alignment of common
+    blocks causing binutils testsuite failures.
+    (Phil Blundell)
+  * Update priorities in debian/control to match the archive.
+    (Ryan Murray)
+  * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. 
+    (Gerhard Tonn)
+  * On alpha-linux, make -mieee default and add -mieee-disable switch
+    to turn default off (closes: #212912).
+    (Tyson Whitehead)
+  * Add gpc upstream patch for memory corruption fix.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  5 Oct 2003 19:53:49 +0200
+
+gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low
+
+  * Add gcc-unsharing_lhs patch (closes: #210848)
+
+ -- Ryan Murray <rmurray@debian.org>  Fri, 19 Sep 2003 22:51:19 -0600
+
+gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low
+
+  * Update to gcc-3.3.2 CVS 20030908.
+  * PR11716 (Michael Eager, Dan Jacobowitz):
+    Make GCC think that the maximum length of a short branch is
+    64K instead of 128K.  It's a big hammer, but it works.
+    Closes: #207915.
+  * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717).
+
+ -- Matthias Klose <doko@debian.org>  Mon,  8 Sep 2003 21:49:52 +0200
+
+gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low
+
+  * Update to gcc-3.3.2 CVS 20030831.
+    - Fix java NullPointerException detection with 2.6 kernels.
+      Closes: #206377.
+    - Fix bug in C++ typedef handling (closes: #205402).
+    - Fix -Wunreachable-code giving false complaints (closes: #196600).
+  * Update to gpc-20030830.
+  * Don't include /usr/share/java/repository into the class path according
+    to the new version of th Debian Java policy (closes: #205643).
+  * Build-Depend/Depend on libgc-dev.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 31 Aug 2003 08:56:53 +0200
+
+gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low
+
+  * Remove the build dependency on locales for now.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 15 Aug 2003 07:48:18 +0200
+
+gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium
+
+  * Update to gcc-3.3.2 CVS 20030812.
+    - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation
+      and/or validation. Closes: #196090.
+  * Update NEWS files.
+  * Change ix86 default CPU type for code generation:
+    - i386-linux       -> i486-linux
+    - i386-gnu         -> i586-gnu
+    - i386-freebsd-gnu -> i486-freebsd-gnu
+    Use -march=i386 to target i386 CPUs.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 12 Aug 2003 10:31:28 +0200
+
+gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low
+
+  * gcc-3.3.1 (taken from CVS 20030805).
+    - C++: Fix declaration conflicts (closes: #203351).
+    - Fix ICE on ia64 (closes: #203840).
+
+ -- Matthias Klose <doko@debian.org>  Tue,  5 Aug 2003 20:38:02 +0200
+
+gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low
+
+  * Update to gcc-3.3.1 CVS 20030728.
+    - Fix ICE in extract_insn, at recog.c:2148 on m68k.
+      Closes: #177840, #180375, #190818.
+    - Fix ICE while building libquicktime on alpha (closes: #192576).
+    - Fix failure to deal with using and private inheritance (closes: #202696).
+  * On sparc, /usr/lib was added to the library search path. Fix it.
+  * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3:
+    - Fix error building the gcl package on arm (closes: #199835).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 28 Jul 2003 20:39:07 +0200
+
+gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low
+
+  * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1).
+    - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365).
+    - Remove documentation about multi-line strings (closes: #194391).
+    - Correctly document -falign-* parameters (closes: #198269).
+    - out-of-class specialization of a private nested template class.
+      Closes: #193830.
+    - Tighten shlibs dependency due to new symbols in libgcc.
+  * README.Debian for libg2c0, describing the need for g77-x.y when
+    working with the g2c header and library (closes: #189059).
+  * Call make with -j<number of CPU's>, if USE_NJOBS is set and non-empty
+    in the environment.
+  * Add another two m68k patches, partly replacing the workarounds provided
+    by Roman Zippel.
+  * Add the stack protector patch, but don't apply it by default. Edit
+    debian/rules.patch to apply it (closes: #171699, #189494).
+  * Remove wrong symlinks from gnat package (closes: #201882).
+  * Closed reports reported against gcc-2.95 and fixed in newer versions:
+    - SMP kernel compilation on alpha (closes: #134197, #146883).
+    - ICE on arm while building imagemagick (closes: #173475).
+  * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3:
+    - Miscompilation of octave2.1 on hppa (closes: #192296, #193804).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 13 Jul 2003 10:26:30 +0200
+
+gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium
+
+  * Update to gcc-3.3.1 CVS 20030626.
+    - Fix ICE on arm compiling xfree86 (closes: #195424).
+    - Fix ICE on arm compiling fftw (closes: #186185).
+    - Fix ICE on arm in change_address_1, affecting a few packages.
+      Closes: #197099.
+    - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c.
+      Closes: #195237.
+    - Do not warn about failing to inline functions declared in system headers.
+      Closes: #193049.
+    - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091).
+    - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749).
+    - Build crtbeginT.o on m68k (closes: #197613).
+  * Fix g++ man page symlink (closes: #196271).
+  * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744.
+  * Disable treelang on powerpc (again). Closes: #196915.
+  * Pass -encoding in gcj-wrapper.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 27 Jun 2003 00:14:43 +0200
+
+gcc-3.3 (1:3.3ds9-3) unstable; urgency=low
+
+  * Closing more reports, fixed in 3.2/3.3:
+    - ICE building texmacs on m68k (closes: #177433).
+    - libstdc++: <cmath> doesn't define trunc(...) (closes: #105285).
+    - libstdc++: setw is ignored for strings output (closes: #52382, #76645).
+  * Add build support to omit the manual pages and info docs from the
+    packages, disabled by default. Wait for a Debian statement, which can
+    be cited. Adresses: #193787.
+  * Reenable the m68k-const patch, don't run the g77 testsuite on m68k.
+    Addresses ICEs (#177840, #190818).
+  * Update arm-xscale patch.
+  * libstdc++: use __attribute__(__unknown__), instead of (unknown).
+    Closes: #195796.
+  * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody.
+    Request from Adrian Bunk.
+  * Add treelang-update patch (Tim Josling), reenable treelang on powerpc.
+  * Add <GNU_TYPE>-{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466).
+  * Make sure not to build using binutils-2.14.90.0.[12].
+
+ -- Matthias Klose <doko@debian.org>  Mon,  2 Jun 2003 22:35:45 +0200
+
+gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium
+
+  * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell).
+  * Correct libgcc1 dependency (closes: #193689).
+  * Work around ldd/dpkg-shlibs failure on s390x.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 May 2003 09:40:15 +0200
+
+gcc-3.3 (1:3.3ds9-1) unstable; urgency=low
+
+  * gcc-3.3 final release.
+    See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}.
+  * First merge of i386/x86-64 biarch support (Arnd Bergmann).
+    Disabled by default. Closes: #190066.
+  * New gpc-20030507 version.
+  * Upstream gpc update to fix netbsd build failure (closes: #191407).
+  * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied
+    from gcc-3.2 (Phil Blundell).
+  * Closing bug reports reported against older gcc versions (some of them
+    still present in Debian, but not anymore as the default compiler).
+    Usually, forwarded bug reports are linked to
+        http://gcc.gnu.org/PR<upstream bug number>
+    The upstream bug number usually can be found in the Debian reports.
+
+  * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3:
+    - General:
+      + GCC accepts multi-line strings without \ or " " &c (closes: #2910).
+      + -print-file-name sometimes fails (closes: #161615).
+      + ICE: reporting routines re-entered (closes: #179597, #180937).
+      + Misplaced paragraph in gcc documentation (closes: #179363).
+      + Error: suffix or operands invalid for `div' (closes: #150558).
+      + builtin memcmp() could be optimised (closes: #85535).
+    - Ada:
+      + Preelaborate, exceptions, and -gnatN (closes: #181679).
+    - C:
+      + Duplicate loop conditions even with -Os (closes: #94701).
+      + ICE (signal 11) (closes: #65686).
+    - C++:
+      + C++ error on virtual function which uses ... (closes: #165829).
+      + ICE when warning about cleanup nastiness in switch statements
+        (closes: #184108).
+      + Fails to compile virtual inheritance with variable number of
+        argument method (closes: #151357).
+      + xmmintrin.h broken for c++ (closes: #168310).
+      + Stack corruption with variable-length automatic arrays and virtual
+        destructors (closes: #188527).
+      + ICE on illegal code (closes: #184862).
+      + _attribute__((unused)) is ignored in C++ (closes: #45440).
+      + g++ handles &(void *)foo bizzarely (closes: #79225).
+      + ICE (with wrong code, though) (closes: #81122).
+    - Java:
+      + Broken zip file handling (closes: #180567).
+    - ObjC:
+      + @protocol forward definitions do not work (closes: #80468).
+    - Architecture specific:
+      - alpha
+        + va_start is off by one (closes: #186139).
+        + ICE while building kseg/ddd (closes: #184753).
+        + g++ -O2 optimization error (closes: #70743).
+      - arm
+        + ICE with -O2 in change_address_1 (closes: #180750).
+        + gcc optimization error with -O2, affecting bison (closes: #185903).
+      - hppa
+        + ICE in insn_default_length (closes: #186447).
+      - ia64
+        + gcc-3.2 fails w/ optimization (closes: #178830).
+      - i386
+        + unnecessary generation of instruction cwtl (closes: #95318).
+        + {athlon} ICE building mplayer (closes: #184800).
+        + {pentium4} ICE while compiling mozilla with -march=pentium4
+          (closes: #187910).
+        + i386 optimisation: joining tests (closes: #105309).
+      - m68k
+        + ICE in instantiate_virtual_regs_1 (closes: #180493).
+        + gcc optimizer bug on m68k (closes: #64832).
+      - powerpc
+        + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299).
+        + ICE with -O -Wunreachable-code (closes: #189702).
+      - s390
+        + Operand out of range at assembly time when using -O2
+          (closes: #178596).
+      - sparc
+        + gcc-3.2 regression (wrong code) (closes: #176387).
+        + ICE in mem_loc_descriptor when optimizing (closes: #178909).
+        + ICE in gen_reg_rtx when optimizing (closes: #178965).
+        + Optimisation leads to unaligned access in memcpy (closes: #136659).
+
+  * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x:
+    - General:
+      + Use mkstemp instead of mktemp (closed: #127802).
+    - Preprocessor:
+      + Fix redundant error message from cpp (closed: #100722).
+    - C:
+      + Optimization issue on ix86 (pointless moving) (closed: #97904).
+      + Miscompilation of allegro on ix86 (closed: #105741).
+      + Fix generation of ..ng references for static aliases (alpha-linux).
+        (closed: #108036).
+      + ICE compiling pari on hppa (closed: #111613).
+      + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668).
+      + ICE in c-typeck.c (closed: #123687).
+      + ICE in gen_subprogram_die on alpha (closed: #127890).
+      + SEGV in initialization of flexible char array member (closed: #131399).
+      + ICE on arm compiling lapack (closed: #135967).
+      + ICE in incomplete_type_error (closed: #140606).
+      + Fix -Wswitch (also part of -Wall) (closed: #140995).
+      + Wrong code in mke2fs on hppa (closed: #150232).
+      + sin(a) * sin(b) gives wrong result (closed: #164135).
+    - C++:
+      + Error in std library headers on arm (closed: #107633).
+      + ICE nr. 19970302 (closed: #119635).
+      + std::wcout does not perform encoding conversions (closed: #128026).
+      + SEGV, when compiling iostream.h with -fPIC (closed: #134315).
+      + Fixed segmentation fault in included code for <rope> (closed: #137017).
+      + Fix with exception handling and -O (closed: #144232).
+      + Fix octave-2.1 build failure on ia64 (closed: #144584).
+      + nonstandard overloads in num_get facet (closed: #155900).
+      + ICE in expand_end_loop with -O (closed: #158371).
+    - Fortran:
+      + Fix blas build failure on arm (closed: #137959).
+    - Java:
+      + Interface members are public by default (closed: #94974).
+      + Strange message with -fno-bounds-check in combination with -W.
+        (closed: #102353).
+      + Crash in FileWriter using IOException (closed: #116128).
+      + Fix ObjectInputStream.readObject() calling constructors.
+        (closed: #121636).
+      + gij: better error reporting on `class not found' (closed: #125649).
+      + Lockup during .java->.class compilation (closed: #141899).
+      + Compile breaks using temporary inner class instance (closed: #141900).
+      + Default constructor for inner class causes broken bytecode.
+        (closed: #141902).
+      + gij-3.2 linked against libgcc1 (closed: #165180).
+      + gij-wrapper understands -classpath parameter (closed: #146634).
+      + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673).
+    - ObjC:
+      + ICE on alpha (closed: #172353).
+
+  * Closed reports reported against gcc-2.95 and fixed in newer versions:
+    - General:
+      + Undocumented option -pthread (closes: #165110).
+      + stdbool.h broken (closes: #167439).
+      + regparm/profiling breakage (closes: #20695).
+      + another gcc optimization error (closes: #51456).
+      + ICE in `output_fix_trunc' (closes: #55967).
+      + Fix "Unable to generate reloads for" (closes: #58219, #131890).
+      + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232).
+      + Compiler error with -O2 (closes: #67631).
+      + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969).
+      + Another ICE (closes: #90666).
+      + man versus info inconsistency (-W and -Wall) (closes: #93708).
+      + ICE on invalid extended asm (closes: #136630).
+      + ICE in `emit_no_conflict_block' compiling perl (closes: #154599).
+      + ICE in `gen_tagged_type_instantiation_die'(closes: #166766).
+      + ICE on __builtin_memset(s, 0, -1) (closes: #170994).
+      + -Q option to gcc appears twice in the documentation (closes: #137382).
+      + New options for specifying targets:- -MQ and -MT (closes: #27878).
+      + Configure using --enable-nls (closes: #51651).
+      + gcc -dumpspecs undocumented (closes: #65406).
+    - Preprocessor:
+      + cpp fails to parse macros with varargs correctly(closes: #154767).
+      + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is
+        empty (closes: #152709).
+      + gcc doesn't handle empty args in macro function if there is only
+        one arg(closes: #156450).
+    - C:
+      + Uncaught floating point exception causes ICE (closes: #33786).
+      + gcc -fpack-struct doesn't pack structs (closes: #64628).
+      + ICE in kernel (matroxfb) code (closes: #151196).
+      + gcc doesn't warn about unreachable code (closes: #158704).
+      + Fix docs for __builtin_return_address(closes: #165992).
+      + C99 symbols in limits.h not defined (closes: #168346).
+      + %zd printf spec generates warning, even in c9x mode (closes: #94891).
+      + Update GCC attribute syntax (closes: #12253, #43119).
+    - C++ & libstdc++-v3:
+      + template and virtual inheritance bug (closes: #152315).
+      + g++ has some troubles with nested templates (closes: #21255).
+      + vtable thunks implementation is broken (closes: #34876, #35477).
+      + ICE for templated friend (closes: #42662).
+      + ICE compiling mnemonic (closes: #42989).
+      + Deprecated: result naming doesn't work for functions defined in a
+        class (closes: #43170).
+      + volatile undefined ... (closes: #50529).
+      + ICE concerning templates (closes: #53698).
+      + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream
+        (closes: #56867).
+      + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806).
+      + Another ICE (closes: #65687).
+      + ICE in `const_hash' (closes: #72933).
+      + ICE on illegal code (closes: #83221).
+      + Wrong code with -O2 (closes: #83363).
+      + ICE on template class (closes: #85934).
+      + No warning for missing return in non-void member func (closes: #88260).
+      + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by
+        shared libraries (closes: #118670).
+      + ICE using nested templates (closes: #118781).
+      + Another ICE with templates (closes: #127489).
+      + More ICEs (closes: #140427, #141797).
+      + ICE when template declared after use(closes: #148603).
+      + template function default arguments are not handled (closes: #157292).
+      + Warning when including stl.h (closes: #162074).
+      + g++ -pedantic-errors -D_GNU_SOURCE cannot #include <complex>
+        (closes: #151671).
+      + c++ error message improvement suggestion (closes: #46181).
+      + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005).
+      + libstdc++ has no method at() in stl_= (closes: #68963).
+    - Fortran:
+      + g77 crash (closes: #130415).
+    - ObjC:
+      + ICE: program cc1obj got fatal signal 11 (closes: #62309).
+      + Interface to garbage collector is undocumented. (closes: #68987).
+    - Architecture specific:
+      - alpha
+        + Can't compile with define gnu_source with stdio and curses
+          (closes: #97603).
+        + Header conflicts on alpha (closes: #134558).
+        + lapack-dev: cannot link on alpha (closes: #144602).
+        + ICE `fixup_var_refs_1' (closes: #43001).
+        + Mutt segv on viewing list of attachments (closes: #47981).
+        + ICE building open-amulet (closes: #48530).
+        + ICE compiling hatman (closes: #55291).
+        + dead code removal in switch() broken (closes: #142844).
+      - arm
+        + Miscompilation using -fPIC on arm (closes: #90363).
+        + infinite loop with -O on arm (closes: #151675).
+      - i386
+        + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540).
+      - m68k
+        + Optimization (-O2) broken on m68k (closes: #146006).
+      - mips
+        + g++ exception catching does not work... (closes: #105569).
+        + update-menus gets Bus Error (closes: #120333).
+      - mipsel
+        + aspell: triggers ICE on mipsel (closes: #128367).
+      - powerpc
+        + -O2 produces wrong code (gnuchess example) (closes: #131454).
+      - sparc
+        + Misleading documentation for -malign-{jump,loop,function}s
+          (closes: #114029).
+        + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956).
+        + flightgear: build failure on sparc (closes: #88694).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 16 May 2003 07:13:57 +0200
+
+gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high
+
+  * gcc-3.3 second prerelease.
+    - Fixing exception handling on s390 (urgency high).
+  * Reenabled gpc build (I had it disabled ...). Closes: #192347.
+
+ -- Matthias Klose <doko@debian.org>  Fri,  9 May 2003 07:32:14 +0200
+
+gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low
+
+  * gcc-3.3 prerelease.
+    - Fixes gcj ICE (closes: #189545).
+  * For libstdc++ use the i486 atomicity implementation, introduced with
+    0pre6, left out in 0pre7 (closes: #191684).
+  * Add README.Debian for treelang (closes: #190812).
+  * Apply NetBSD changes (Joel Baker). Closes: #191551.
+  * New symbols in libgcc1, tighten the shlibs dependency.
+  * Disable testsuite run on mips/mipsel because of an outdated libc-dev
+    package.
+  * Do not build libffi with debug information, although configuring
+    with --enable-debug.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  6 May 2003 06:53:49 +0200
+
+gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429).
+  * Revert upstream libstdc++ change (closes: #191145, #191147, #191148,
+    #191149, #149159, #149151, and other reports).
+    Sorry for not detecting this before the upload, seems to be
+    broken on i386 "only".
+  * hurd-i386: Use /usr/include, not /include.
+  * Disable gpc on hurd-i386 (closes: #189851).
+  * Disable building the debug version of libstdc++ on powerpc-linux
+    (fixes about 200 java test cases).
+  * Install libstdc++v3 man pages (closes: #127263).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 29 Apr 2003 23:28:44 +0200
+
+gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426).
+  * libstdc++-doc: Fix index.html link (closes: #189424).
+  * Revert back to the i486 atomicity implementation, that was used
+    for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983.
+    For this reason, tighten the libstdc++5 shlibs dependency. See
+    http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html
+    Don't build the ix86 specfic libstdc++ libs anymore.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Apr 2003 19:47:54 +0200
+
+gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415).
+  * Disable treelang on powerpc.
+  * Disable gpc on m68k.
+  * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8).
+  * Fix generated bits/atomicity.h (closes: #189183).
+  * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 16 Apr 2003 00:37:05 +0200
+
+gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412).
+  * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams).
+  * Make the default sparc 32bit target v8 instead of v7. This mainly
+    enables hardmul, which should speed up v8 and v9 systems by a large
+    margin (Ben Collins).
+  * Tighten binutils dependency for sparc.
+  * On i386, build libstdc++ optimized for i486 and above. The library
+    in /usr/lib is built for i386. Closes: #184446, #185662.
+  * Add gpc build (from gcc-snapshot package).
+  * debian/control: Include all packages, that _can_ be built from
+    this source package (except the cross packages).
+  * Add m68k patches: m68k-const, m68k-subreg, m68k-loop.
+  * Run the 3.3 testsuite a second time with the installed gcc-3.2
+    to check for regressions (promised, only this time, and for the
+    final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 12 Apr 2003 10:11:11 +0200
+
+gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331).
+  * Reenable java on arm.
+  * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all
+    bprob/gcov testsuite failures.
+  * Enable C++ build on arm.
+  * Enable the sparc64 build.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 31 Mar 2003 23:24:54 +0200
+
+gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317).
+  * Disable building the gcc-3.3-nof package.
+  * Disable Ada on mips and mipsel.
+  * Remove the workaround to build Ada on powerpc.
+  * Add GNU Free documentation license to copyright file.
+  * Update the sparc64 build patches (Clint Adams). Not yet enabled.
+  * Disable C++ on arm (Not yet tested).
+  * Add fix for ICE on powerpc (see: #184684).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 16 Mar 2003 21:40:57 +0100
+
+gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310).
+  * Add gccbug manpage.
+  * Don't build libgnat package (no shared library).
+  * Configure with --enable-sjlj-exceptions on hppa and m68k for
+    binary compatibility with libstdc++ built with gcc-3.2.
+  * Disable Java on arm-linux (never seen it sucessfully bootstrap).
+  * Install non-conflicting baseline README.
+  * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several
+    compiler versions can be installed concurrently.
+  * Remove libstdc++-incdir patch applied upstream.
+  * libstdc++ 64 bit development files now handled in -dev target.
+    (Gerhard Tonn)
+  * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev).
+  * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3).
+  * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps,
+    while gcc-3.2 doesn't.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 10 Mar 2003 23:41:00 +0100
+
+gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low
+
+  * First gcc-3.3 package, built for s390 only. All other architectures
+    build the gcc-3.3-base package only.
+    To build the package on other architectures, edit debian/rules.defs
+    (macro no_dummy_archs).
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301).
+  * Don't include the gcc locale files (would conflict with 3.2).
+  * Remove libffi-install-fix patch.
+  * Fix netbsd-i386 patches.
+  * Change priority of libstdc++5 and gcc-3.2-base to important.
+  * Install gcjh-wrapper for javah.
+  * gij suggests fastjar, gcj recommends fastjar.
+  * Allow builds using automake1.4 | automake (<< 1.5).
+  * Backport fix for to output more correct line numbers.
+  * Add help2man to build dependencies needed for some gpc man pages.
+  * gpc: Install binobj and gpidump binaries and man pages.
+  * Apply cross compilation patches submitted by Bastian Blank.
+  * Replace s390-biarch patch and copy s390-config-ml patch from 3.2
+    (Gerhard Tonn).
+  * Configure using --enable-debug.
+  * Add infrastructure to only build a subset of binary packages.
+  * Rename libstdc++-{dev,dbg,pic,doc} packages.
+  * Build treelang compiler.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  1 Mar 2003 12:56:42 +0100
+
+gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low
+
+  * gcc-3.2.3 prerelease (CVS 20030228)
+    - Fixes bootstrap failure on alpha-linux.
+    - Fixes ICE on m68k (closes: #177016).
+  * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and
+    sparc (due to wrong code generation for fwrite in glibc,
+    see PR optimization/9279).
+  * Apply cross compilation patches submitted by Bastian Blank.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 28 Feb 2003 20:26:30 +0100
+
+gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium
+
+  * gcc-3.2.3 prerelease (CVS 20030221)
+    - Fixes ICE on hppa (closes: #181813).
+  * Patch for ffitest in s390-java.dpatch deleted, since already fixed
+    upstream. (Gerhard Tonn)
+  * Build crtbeginT.o on m68k-linux (closes: #179807).
+  * Install gcjh-wrapper for javah (closes: #180218).
+  * gij suggests fastjar, gcj recommends fastjar (closes: #179298).
+  * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048).
+  * Backport fix for to output more correct line numbers (closes: #153965).
+  * Add help2man to build dependencies needed for some gpc man pages.
+  * gpc: Install binobj and gpidump binaries and man pages.
+  * Disable gpc on arm due to wrong code generation for fwrite in
+    glibc (see PR optimization/9279).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 22 Feb 2003 19:58:20 +0100
+
+gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low
+
+  * gcc-3.2.3 prerelease (CVS 20030210)
+    - Fixes long millicode calls on hppa (closes: #180520)
+  * New gpc-20030209 version.  Remove gpc-update.dpatch and gpc-testsuite.dptch
+    as they are no longer needed.
+  * Fix netbsd-i386 patches (closes: #180129, #179931)
+  * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2
+  * Change priority of libstdc++5 and gcc-3.2-base to important.
+
+ -- Ryan Murray <rmurray@debian.org>  Tue, 11 Feb 2003 06:18:09 -0700
+
+gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low
+
+  * gcc-3.2.2 release.
+    - Fixes ICE, regression from 2.95 (closes: #176117).
+    - Fixes ICE, regression from 2.95 (closes: #179161).
+  * libstdc++ for biarch installs now upstream to usr/lib64,
+    therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn)
+
+ -- Ryan Murray <rmurray@debian.org>  Wed,  5 Feb 2003 01:35:29 -0700
+
+gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low
+
+  * gcc-3.2.2 prerelease (CVS 20030130).
+  * update s390 libffi patch
+  * debian/control: add myself to uploaders and change libc12-dev depends to
+    libc-dev on i386 (closes: #179128)
+  * Build-Depend on procps so that ps is available for logwatch
+
+ -- Ryan Murray <rmurray@debian.org>  Fri, 31 Jan 2003 04:00:15 -0700
+
+gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low
+
+  * gcc-3.2.2 prerelease (CVS 20030128).
+    - Update needed for hppa.
+    - Fixes ICE on arm, regression from 2.95.x (closes: #168086).
+    - Can use default bison (1.875).
+  * Apply netbsd build patches (closes: #177674, #178328, #178325,
+    #178326, #178327).
+  * Run the logwatch script on "slow" architectures (arm, m68k) only.
+  * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually
+    than libtool 1.4 (Ryan Murray).
+  * Apply autoreconf patch universally (Ryan Murray).
+  * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default
+    JNI search path (Ben Burton). Closes: #167932.
+  * Build crtbeginT.o on m68k (closes: #177036).
+  * Fixed libc-dev source dependency (closes: #178602).
+  * Tighten shlib dependency to the current package version; should be
+    1:3.2.2-1 for the final release (closes: #178867).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 28 Jan 2003 21:59:30 +0100
+
+gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low
+
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123).
+  * Build locales needed by the libstdc++ testsuite.
+  * Update config.{guess,sub} files from autotools-dev (closes: #177674).
+  * Disable Ada and Java on netbsd-i386 (closes: #177679).
+  * gnat: Add suggests for gnat-doc and ada-reference-manual.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 23 Jan 2003 22:16:53 +0100
+
+gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low
+
+  * Readd build dependency `locales' on arm.  locales is now installable
+  * Add autoreconf patch for mips{,el}. (closes: #176311)
+
+ -- Ryan Murray <rmurray@debian.org>  Wed, 22 Jan 2003 14:31:14 -0800
+
+gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low
+
+  * Remove build dependency `libc6-dev-sparc64 [sparc]' for now.
+  * Remove build dependency `locales' on arm. locales is uninstallable
+    on arm due to the missing glibc-2.3.
+  * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce
+    conflict in objc-parse.y.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 10 Jan 2003 10:10:43 +0100
+
+gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low
+
+  * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2
+    does not work for me. m68k-linux doesn't look good at all ...
+  * Fix s390 build error.
+  * Add locales to build dependencies. A still unsolved issue is the
+    presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT,
+    or else some tests in the libstdc++ testsuite will fail.
+  * Put all -nof files in the -nof package (closes: #175253).
+  * Correctly exit logwatch script (closes: #175251).
+  * Install linker-map.gnu file for libstdc++_pic (closes: #175144).
+  * Install versioned gpcs docs only (closes: #173844).
+  * Include gpc test results in gpc package.
+  * Link local libstdc++ documentation to local source-level documentation.
+  * Clarify libstdc++ description (so version and library version).
+    Closes: #175799.
+  * Include library in libstdc++-dbg package (closes: #176005).
+
+ -- Matthias Klose <doko@debian.org>  Wed,  8 Jan 2003 23:39:50 +0100
+
+gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low
+
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231).
+    - Fix loop count computation for preconditioned unrolled loops.
+      Closes: #162919.
+    - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647).
+    - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201.
+      Closes: #166143.
+  * Watch the log files, which are written during the testsuite runs and print
+    out a message, if there is still activity. No more buildd timeouts on arm
+    and m68k ...
+  * Remove gpc's reference to librx1g-dev package (closes: #172953).
+  * Remove trailing dots on package descriptions.
+  * Fix external reference to cpp.info in gcc.info (closes: #174598).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 31 Dec 2002 13:47:52 +0100
+
+gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium
+
+  * Friday, 13th upload, so what do you expect ...
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212).
+  * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2
+    (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building
+    gnatlib and gnattools).
+  * Really disable sparc64 support.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 13 Dec 2002 00:26:37 +0100
+
+gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low
+
+  * A candidate for the transition ...
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210).
+    - doc/invoke.texi: Remove last reference to -a (closes: #171748).
+  * Disable sparc64 support. For now please use egcs64 to build sparc64
+    kernels.
+  * Disable Pascal on the sparc architecture (doesn't bootstrap).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 10 Dec 2002 22:33:13 +0100
+
+gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low
+
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202).
+    - Should fix _Pragma expansion within macros (closes: #157416).
+  * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0
+  * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  3 Dec 2002 08:22:33 +0100
+
+gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low
+
+  * gcc-3.2.1 final release.
+  * Build gpc-20021111 for all architectures. hppa and i386 are
+    known to work. For the other architectures, send the usual FTBFS ...
+    WARNING: this gpc version is an alpha version, especially debug info
+    doesn't work well, so use -g0 for compiling. If you need a stable
+    gpc compiler, use gpc-2.95.
+  * Encode the gpc upstream version in the package name, the gpc release
+    date in the version number (requested by gpc upstream).
+  * Added libncurses5-dev and libgmp3-dev as build dependencies for the
+    gpc tests and runtime.
+  * Clean CVS files as well (closes: #169101).
+  * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn).
+  * s390-config-ml.dpatch added, disables biarch for java,
+    libffi and boehm-gc on s390. They need a 64 bit runtime
+    during build which is not yet available on s390 (Gerhard Tonn).
+  * Biarch support for packaging adapted (Gerhard Tonn).
+    biarch variable added and with-sparc64 variable substituted in
+    most places by biarch.
+    dh_shlibdeps is applied only to 32 bit libraries on s390, since
+    ldd for 64 bit libraries don't work on 32 bit runtime.
+    Build dependency to libc6-dev-s390x added.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 20 Nov 2002 00:20:58 +0100
+
+gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium
+
+  * gcc-3.2.1 prerelease.
+  * Removed arm patch integrated upstream.
+  * Adjust gnat build dependency (closes: #167116).
+  * Always configure with --enable-clocale=gnu. The autobuilders do have
+    locales installed, but not generated the "de_DE" locale needed for
+    the autoconf test in libstdcc++-v3/aclocal.m4.
+  * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 12 Nov 2002 07:19:44 +0100
+
+gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium
+
+  * gcc-3.2.1 snapshot (CVS 20021103).
+  * sparc64-build.dpatch: Updated. Lets sparc boostrap again.
+  * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn).
+  * bison.dpatch: Removed, patch submitted upstream.
+  * backport-java-6865.dpatch: Apply again during build.
+  * Tighten glibc dependency (closes: #166703).
+
+ -- Matthias Klose <doko@debian.org>  Sun,  3 Nov 2002 12:22:02 +0100
+
+gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high
+
+  * gcc-3.2.1 snapshot (CVS 20021020).
+    - Expansion of _Pragma within macros fixed (closes: #157416).
+  * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from
+    source on Debian unstable systems. This is fixed in gcc HEAD, but not on
+    the current release branch.
+    HELP NEEDED:
+    - check what is missing from the patches in debian/patches/bison.dpatch.
+      This is a backport of the bison related patches, but showing regressions
+      in the gcc testsuite, so it cannot be applied.
+    - build gcc using byacc (bootstrap currently fails using byacc).
+    - build bison-1.35 in it's own package (the current 1.35-3 package fails
+      to build form source).
+    - and finally ask upstream to backport the patch to the branch. It's not
+      helpful not beeing able to follow the stable branch. Maybe we should
+      just switch to gcc HEAD as BSD does ...
+    As a terrible workaround, build the sources from CVS first on a machine,
+    with bison-1.35 installed, then package the tarball, so the bison
+    generated files are not rebuilt.
+
+  * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422),
+    Therefore urgency high.
+  * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172,
+    #164009).
+  * Point g++ manpage to correct g++ version (closes: #162843).
+  * Support for i386-freebsd-gnu (closes: #163883).
+  * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn).
+  * Disable the testsuite run on the Hurd (closes: #159650).
+  * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn).
+  * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility.
+    Don't use it due to regressions.
+  * debian/patches/backport-java-6865.dpatch: Directly applied in the
+    included tarball because of bison problems.
+  * Make fixincludes priority optional, so linda can depend on it.
+  * Tighten binutils dependency.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 Oct 2002 10:52:49 +0200
+
+gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low
+
+  * gcc-3.2.1 snapshot (CVS 20020923).
+  * Run the libstdc++ check-abi script. Results are put into the file
+    /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev
+    package. This file contains a new baseline, if no baseline for this
+    architecture is included in the gcc sources.
+  * gcj-wrapper: Accept files starting with an underscore, accept
+    path names (closes: #160859, #161517).
+  * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438).
+  * Let installed fixincludes script find files in /usr/lib/fixincludes.
+  * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are
+    applied sequentially (closes: #159395).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 24 Sep 2002 07:36:56 +0200
+
+gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low
+
+  * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land!
+  * Fix arm-tune.dpatch (closes: #159354).
+  * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459).
+  * --disable-__cxa_atexit on NetBSD (closes: #159620).
+  * Reenable installation of message catalogs (disabled in 3.2-0pre2).
+    Closes: #160175.
+  * Ben Collins
+    - Re-enable sparc64 build. This time, it's part of the default compiler.
+      I have disabled 64/alt libraries as they are too much overhead. All
+      libraries build 64bit, but currently only libgcc/libstdc++ include the
+      64bit libraries.
+    Closes: #160404.
+  * Depend on autoconf2.13, instead of autoconf.
+  * Phil Blundell
+    - debian/patches/arm-update.dpatch: Fix python2.2 build failure.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  7 Sep 2002 08:05:02 +0200
+
+gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium
+
+  * gcc-3.2.1 snapshot (CVS 20020829).
+    New g++ option -Wabi:
+      Warn when G++ generates code that is probably not compatible with the
+      vendor-neutral C++ ABI.  Although an effort has been made to warn about
+      all such cases, there are probably some cases that are not warned about,
+      even though G++ is generating incompatible code.  There may also be
+      cases where warnings are emitted even though the code that is generated
+      will be compatible.
+    The current version of the ABI is 102, defined by the __GXX_ABI_VERSION
+    macro.
+  * debian/NEWS.*: Updated.
+  * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004).
+  * Add versioned expect build dependency.
+  * Tighten binutils dependency to 2.13.90.0.4.
+  * debian/patches/arm-tune.dpatch: Increase stack limit for configure.
+  * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend
+    on gnat-3.2 now (closes: #156734).
+  * Remove bashism's in gcj-wrapper (closes: #157982).
+  * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634).
+  * Add fastjar documentation.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 30 Aug 2002 10:35:00 +0200
+
+gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low
+
+  * Correct build dependency on gnat-3.1.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 12 Aug 2002 01:21:58 +0200
+
+gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low
+
+  * gcc-3.2 upstream prerelease.
+  * Disable all configure options, which are standard:
+    --enable-threads=posix --enable-long-long, --enable-clocale=gnu
+
+ -- Matthias Klose <doko@debian.org>  Fri,  9 Aug 2002 21:59:08 +0200
+
+gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low
+
+  * gcc-3.2 snapshot (CVS 20020802).
+  * Fix g++-include dir.
+  * Don't install the locale files (temporarily, until we don't build
+    gcc-3.1 anymore).
+  * New package libgcj-common to avoid conflict with classpath package.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  3 Aug 2002 09:08:34 +0200
+
+gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low
+
+  * gcc-3.2 snapshot (CVS 20020729).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 29 Jul 2002 20:36:54 +0200
+
+gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low
+
+  * gcc-3.1.1 release. Following this release we will have a gcc-3.2
+    release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once
+    gcc-3.2 hits the archives, gcc-3.1.1 will go away.
+  * Don't build the sparc64 compiler. The packaging/patches are
+    currently broken.
+  * Add missing headers on m68k and powerpc.
+  * Install libgcc_s_nof on powerpc.
+  * Install libffi's copyright and doc files (closes: #152198).
+  * Remove dangling symlink (closes: #149002).
+  * libgcj3: Add a conflict to the classpath package (closes: #148664).
+  * README.C++: Fix URLs.
+  * libstdc++-dbg: Install into /usr/lib/debug, document it.
+  * backport-java-6865.dpatch: backport from HEAD.
+  * Fix typo in gcj docs (closes: #148890).
+  * Change libstdc++ include dir: /usr/include/c++/3.1.
+  * libstdc++-codecvt.dpatch: New patch (closes: #149776).
+  * Build libstdc++-pic package.
+  * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249).
+  * Tighten glibc dependency.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 29 Jul 2002 00:34:49 +0200
+
+gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low
+
+  * Updated to CVS 2002-06-06 (gcc-3_1-branch).
+  * Updated s390-java patch (Gerhard Tonn).
+  * Don't use -O in STAGE1_FLAGS on m68k.
+  * Fix `-classpath' option in gcj-wrapper script (closes: #150142).
+  * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  3 Jul 2002 23:52:58 +0200
+
+gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low
+
+  * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression.
+  * Welcome m68k to bootstrap land (thanks to Andreas Schwab).
+  * Add javac wrapper for gcj-3.1 (Michael Koch).
+  * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002).
+
+ -- Matthias Klose <doko@debian.org>  Fri,  7 Jun 2002 00:26:05 +0200
+
+gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low
+
+  * Updated to CVS 2002-05-31 (gcc-3_1-branch).
+  * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31.
+  * Update arm-tune patch.
+  * Install xmmintrin.h header on i386 (closes: #148181).
+  * Install altivec.h header on powerpc.
+  * Call correct gij in gij-wrapper (closes: #148662, #148682).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 29 May 2002 22:47:40 +0200
+
+gcc-3.1 (1:3.1ds2-2) unstable; urgency=low
+
+  * Tighten binutils dependency.
+  * Fix libstdc include dir for multilibs (Dan Jacobowitz).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 21 May 2002 08:03:49 +0200
+
+gcc-3.1 (1:3.1ds2-1) unstable; urgency=low
+
+  * GCC 3.1 release.
+  * Ada cannot be built by the autobuilders for the first time. Do it by hand.
+    gnatgcc and gnatbind need to be in the PATH.
+  * Build with CC=gnatgcc, when building the Ada compiler.
+  * Hurd fixes.
+  * Don't build the sparc64 compiler; the hack isn't up to date and glibc
+    isn't converted to use /lib64 and /usr/lib64.
+  * m68k-linux shows bootstrap comparision failures. If you want to build
+    the compiler anyway and ignore the bootstrap comparision failure, edit
+    debian/rules.patch and uncomment the patch to ignore the failure. See
+    /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 15 May 2002 09:53:00 +0200
+
+gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low
+
+  * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz).
+  * Build gnat-3.1-doc package.
+  * Build fastjar package without building java packages.
+  * Hurd fixes.
+  * Updated sparc64-build patch.
+  * Add s390-ada patch (Gerhard Tonn).
+  * Undo the dwarf2 support for hppa from -0pre5.
+
+ -- Matthias Klose <doko@debian.org>  Thu,  9 May 2002 17:21:09 +0200
+
+gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low
+
+  * Use /usr/include/g++-v3-3.1 as C++ include dir.
+  * Update s390-java patch (Gerhard Tonn).
+  * Tighten binutils dependency (gas patch for m68k-linux).
+  * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads).
+  * dwarf2 support hppa: a snapshot of the gcc/config/pa directory
+    from the trunk dated 2002-05-02.
+
+ -- Matthias Klose <doko@debian.org>  Fri,  3 May 2002 22:51:37 +0200
+
+gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low
+
+  * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads).
+  * Don't build the shared libgnat library. It assumes an existing shared
+    libiberty library.
+  * Don't install the libgcjgc library.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 25 Apr 2002 08:48:04 +0200
+
+gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low
+
+  * Build fastjar on all architectures.
+  * Update m68k patches.
+  * Update s390-java patch (Gerhard Tonn).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 14 Apr 2002 15:34:47 +0200
+
+gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low
+
+  * Add Ada support. To successfully build, a working gnatbind and gcc
+    driver with Ada support is needed.
+  * Apply needed arm patches from 3.0.4.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  6 Apr 2002 13:17:08 +0200
+
+gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low
+
+  * First try for gcc-3.1.
+
+ -- Matthias Klose <doko@debian.org>  Mon,  1 Apr 2002 23:39:30 +0200
+
+gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium
+
+  * Second try at fixing sparc build problems.
+
+ -- Phil Blundell <pb@debian.org>  Sun, 24 Mar 2002 14:49:26 +0000
+
+gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium
+
+  * Enable java on ARM.
+  * Create missing directory to fix sparc build.
+
+ -- Phil Blundell <pb@debian.org>  Fri, 22 Mar 2002 20:21:59 +0000
+
+gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low
+
+  * Link with system zlib (closes: #136359).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 12 Mar 2002 20:47:59 +0100
+
+gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low
+
+  * Build libf2c (pic and non-pic) with -mieee on alpha-linux.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 10 Mar 2002 00:37:24 +0100
+
+gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium
+
+  * Apply hppa-build patch (Randolph Chung). Closes: #136731.
+  * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709.
+  * gij-3.0 provides the `java' command. Closes: #128947.
+  * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a
+    again. Closes: #99307.
+  * Update README.cross pointing to the README of the toolchain-source
+    package.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  6 Mar 2002 21:53:34 +0100
+
+gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low
+
+  * Final gcc-3.0.4 release.
+  * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the
+    duplicate libgcj dependency and adding the gij-3.0 package.
+    Closes: #134005.
+  * New patch by Phil Blundell to fix scalapack build error on m68k.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 20 Feb 2002 23:59:43 +0100
+
+gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low
+
+  * Make the base package dependent on the binary-arch target. Closes: #133433.
+  * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 11 Feb 2002 20:31:12 +0100
+
+gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high
+
+  * Update to CVS sources (20020209 gcc-3_0-branch).
+  * Apply patch to fix bootstrap error on arm-linux (submitted upstream
+    by Phil Blundell). Closes: #130422.
+  * Make base package architecture any.
+  * Decouple versioned shlib dependencies from release number for
+    libobjc as well.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  9 Feb 2002 01:30:11 +0100
+
+gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium
+
+  * One release critical bug outstanding:
+    - bootstrap error on arm.
+  * Update to CVS sources (20020203 gcc-3_0-branch).
+  * Fixed upstream: PR c/3504: Correct documentation of __alignof__.
+    Closes: #85445.
+  * Remove libgcc-powerpc patch, integrated upstream (closes: #131977).
+  * Tighten binutils build dependency (to address #126162).
+  * Move jv-convert to gcj package (closes: #131985).
+
+ -- Matthias Klose <doko@debian.org>  Sun,  3 Feb 2002 14:47:14 +0100
+
+gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low
+
+  * Two release critical bugs outstanding:
+    - bootstrap error on arm.
+    - bus errors for C++ and java executables on sparc (see the testsuite
+      results).
+  * Update to CVS sources (20020125 gcc-3_0-branch).
+  * Enable java support for s390 architecture (patch from Gerhard Tonn).
+  * Updated NEWS file for 3.0.3.
+  * Disable building the gcc-sparc64, but build a multilibbed compiler
+    for sparc as the default.
+  * Disabled the subreg-byte patch for sparc (request from Ben Collins).
+  * Fixed reference to libgcc1 package in README (closes: #126218).
+  * Do recommend libc-dev, not depend on it. For low-end or embedded systems
+    the dependency on libc-dev can make the difference between
+    having enough or having too little space to build a kernel.
+  * README.cross: Updated by Hakan Ardo.
+  * Decouple versioned shlib dependencies from release number. Closes: #118391.
+  * Fix diversions for gcc-3.0-sparc64 package (closes: #128178),
+    unconditionally remove `sparc64-linux-gcc' alternative.
+  * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next
+    g77 version (3.1) does build a static and shared library (closes: #104250).
+  * Fix formatting errors in the synopsis of the java man pages. Maybe the
+    reason for #127571. Closes: #127571.
+  * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145.
+    Add alternative for `jar' using priority 30 (closes: #118648).
+  * jv-convert: Add --help option and man page. Backport from HEAD branch.
+  * libgcj2-dev: Remove duplicate dependency (closes: #127805).
+  * Giving up and make just another new package gij-X.Y with only the gij-X.Y
+    binary for policy conformance (closes: #127111).
+  * gij: Provides an alternative for `java' (priority 30) using a wrapper
+    script (Stephen Zander) (closes: #128974). Added simple manpage.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 Jan 2002 13:33:41 +0100
+
+gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low
+
+  * Final gcc-3.0.3 release.
+  * Do not compress .txt files in libstdc++ docs referenced from html
+    pages (closes: #124136).
+  * libstdc++-dev suggests libstdc++-doc.
+  * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 21 Dec 2001 02:54:11 +0100
+
+gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low
+
+  * Update to CVS sources (011215).
+  * libstdc++ documentation updated upstream (closes: #123790).
+  * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error
+    on ia64 (#123685).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 15 Dec 2001 14:43:21 +0100
+
+gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium
+
+  * Update to CVS sources (011208).
+  * Supposed to fix powerpc build error (closes: #123155).
+
+ -- Matthias Klose <doko@debian.org>  Thu, 13 Dec 2001 07:26:05 +0100
+
+gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium
+
+  * Update to CVS sources (011208). Frozen for upstream 3.0.3 release.
+  * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to
+    fix PR c++/3145, the infamous "virtual inheritance" bug. This affected
+    especially KDE2 (eg. artsd). Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+  * cc1plus segfault in strength reduction fixed upstream. Closes: #122547.
+  * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can
+    cause miscompiled userapps to crash the kernel. Closes: #121924.
+  * Reenable shared libgcc for powerpc. Fixed upstream.
+    http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html
+    debian/patches/libgcc-powerpc.dpatch: New patch.
+  * Add upstream changelogs.
+  * Remove gij alternative. Move to gij package.
+
+ -- Matthias Klose <doko@debian.org>  Sun,  9 Dec 2001 09:36:48 +0100
+
+gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium
+
+  * Disable building of libffi on mips and mipsel.
+    (closes: #117503).
+  * Enable building of shared libgcc on s390
+    (closes: #120452).
+
+ -- Christopher C. Chimelis <chris@debian.org>  Sat, 1 Dec 2001 06:15:29 -0500
+
+gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium
+
+  * Fix logic to build libffi without java (closes: #117503).
+
+ -- Matthias Klose <doko@debian.org>  Sun,  4 Nov 2001 14:34:50 +0100
+
+gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium
+
+  * Enable java for ia64 (Jeff Licquia). Closes: #116798.
+  * Allow building of libffi without gcj (Jeff Licquia).
+    New libffi packages for arm hurd-i386 mips mipsel,
+    still missing: hppa, s390.
+  * debian/NEWS.gcc: Add 3.0.2 release notes.
+  * debian/patches/hppa-align.dpatch: New patch from Alan Modra,
+    submitted by Randolph Tausq.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 25 Oct 2001 23:59:31 +0200
+
+gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium
+
+  * Final gcc-3.0.2 release. The source tarball is not the released
+    tarball, but taken from CVS 011024).
+  * Remove patch for s390, included upstream.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 24 Oct 2001 00:49:40 +0200
+
+gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low
+
+  * Update to CVS sources (011014). Frozen for upstream 3.0.2 release.
+    Closes: #109351, #114099, #114216, #105741 (allegro3938).
+  * Added debian/patches/fastjar.dpatch, which makes fastjar extract
+    filenames correctly (previously, some had incorrect names on extract).
+    Closes: #113236.
+  * Priorities fixed in the past (closes: #94404).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 14 Oct 2001 13:19:43 +0200
+
+gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low
+
+  * Bootstraps on powerpc again (closes: #112777).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 23 Sep 2001 01:32:11 +0200
+
+gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low
+
+  * Update to CVS sources (010922).
+  * Fixed upstream (closes: #111801). #105569 on hppa.
+  * Update hppa patch (Matt Taggart).
+  * Fix libstdc++-dev package description (closes: #112758).
+  * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462).
+  * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 22 Sep 2001 09:34:49 +0200
+
+gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low
+
+  * Update to CVS sources (010908).
+  * Update hppa patch (Matt Taggart).
+  * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during
+    the freeze ...). However adds s390 support (closes: #110189).
+  * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel).
+    Fixes #89023.
+  * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller").
+    Fixes libstdc++ testsuite failures on sparc.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 8 Sep 2001 14:26:20 +0200
+
+gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low
+
+  * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory.
+  * debian/patches/gcj-without-rpath: New patch.
+  * Remove self dependency on libgcj package.
+  * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2
+    in gcc-3.0-sparc64 package.
+  * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a.
+    Link with this library to avoid linking with non-pic code.
+    Use this library when building dynamically loadable objects (python
+    modules, gimp plugins, ...), which need to be linked against g2c or
+    a library which is linked against g2c (i.e. lapack).
+    Packages needing '-lg2c-pic' must have a build dependency on
+    'g77-3.0 (>= 1:3.0.2-0pre010826).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 26 Aug 2001 13:59:03 +0200
+
+gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low
+
+  * Update to CVS sources (010825).
+  * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies.
+  * Remove conflicts on egcc package (closes: #109718).
+  * Fix gcc-3.0-nof dependency.
+  * s390 patches against gcc-3.0.1 (Gerhard Tonn).
+  * debian/control: Require binutils (>= 2.11.90.0.27)
+
+ -- Matthias Klose <doko@debian.org>  Sat, 25 Aug 2001 10:59:15 +0200
+
+gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low
+
+  * Final gcc-3.0.1 release.
+  * Changed upstream: default of -flimit-inline is 600 (closes: #106716).
+  * Add fastjar man page (submitted by "The Missing Man Pages Project",
+    http://www.netmeister.org/misc/m2p2i/) (closes: #103051).
+  * Fixed in last upload as well: #105246.
+  * debian/patches/cpp-memory-leak.dpatch: New patch
+  * Disable installation of shared libgcc on s390 (Gerhard Tonn).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 20 Aug 2001 20:47:13 +0200
+
+gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high
+
+  * Update to CVS sources (010811). Includes s390 support.
+  * Add xlibs-dev to Build-Depends (libgcj).
+  * Enable java for powerpc, disable java for ia64.
+  * Enable ObjC garbage collection for all archs, which have a libgc5-dev
+    package.
+  * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614).
+  * Don't strip static libgcj library (work around binutils bug #107812).
+  * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package
+    (closes: #107569).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 11 Aug 2001 20:42:15 +0200
+
+gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high
+
+  * Update to CVS sources (010801). (closes: #107012).
+  * Remove build dependency on non-free graphviz and include pregenerated
+    docs (closes: #107124).
+  * Fixed in 3.0.1 (closes: #99307).
+  * Updated m68k-updates patch (Roman Zippel).
+  * Another fix for ia64 packaging bits (Randolph Chung).
+
+ -- Matthias Klose <doko@debian.org>  Tue, 31 Jul 2001 21:52:55 +0200
+
+gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high
+
+  * Update to CVS sources (010727).
+  * Add epoch to source version. Change '.dsx' to 'dsx', so that
+    3.1.1ds0 gt 3.1ds7 (closes: #106538).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 28 Jul 2001 09:56:29 +0200
+
+gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high
+
+  * ia64 packaging bits (Randolph Chung) (closes: #106252).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 23 Jul 2001 23:02:03 +0200
+
+gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high
+
+  * Update to CVS sources (010721).
+    - Remove patches applied upstream: libstdc++-limits.dpatch,
+      objc-data-references
+    - Updated other patches.
+  * Fix gij alternative (closes: #103468, #103883).
+  * Patch to fix bootstrap on sparc (closes: #103568).
+  * Corrected (closes: #105371) and updated README.Debian.
+  * m68k patches for sucessful bootstrap (Roman Zippel).
+  * Add libstdc++v3 porting hints to README.Debian and README.C++.
+  * m68k md fix (#105622) (Roman Zippel).
+  * debian/rules2: Disable non-functional ulimit on Hurd (#105884).
+  * debian/control: Require binutils (>= 2.11.90.0.24)
+  * Java is enabled for alpha (closes: #87300).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 22 Jul 2001 08:24:04 +0200
+
+gcc-3.0 (3.0.ds9-4) unstable; urgency=high
+
+  * Move this version to testing ASAP. testing still has a prerelease
+    version with now incompatible ABI's. If sparc doesn't build,
+    then IMHO it's better to remove it from testing.
+  * debian/control.m4: Set uploaders field. Adjust description of
+    gcc-3.0 (binary) package (closes: #102271, #102620).
+  * Separate gij.1 in it's own pseudo man page (closes: #99523).
+  * debian/patches/java-manpages.dpatch: New patch.
+  * libgcj: Install unversioned gij.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  3 Jul 2001 07:38:08 +0200
+
+gcc-3.0 (3.0.ds9-3) unstable; urgency=high
+
+  * Reenable configuration with posix threads on i386 (lost in hurd-i386
+    merge).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 24 Jun 2001 22:21:45 +0200
+
+gcc-3.0 (3.0.ds9-2) unstable; urgency=medium
+
+  * Move this version to testing ASAP. testing still has a prerelease
+    version with now incompatible ABI's.
+  * Add libgcc0 and libgcc300 to the build conflicts (#102041).
+  * debian/README.FIRST: Removed (#101534).
+  * Updated subreg-byte patch (doc files).
+  * Disable java for the Hurd, mips and mipsel (#101570).
+  * Patch for building on the Hurd (#101708) (Jeff Bailey <jbailey@nisa.net>).
+  * Packaging fixes for the Hurd (#101711) (Jeff Bailey <jbailey@nisa.net>).
+  * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557).
+    The current doxygen-1.2.8.1 segaults.
+  * C++: Enable -fuse-cxa-atexit by default (#101901).
+  * Correct mail address in gccbug (#101743).
+  * Make rules resumable after failure in binary-xxx targets (#101637).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 24 Jun 2001 16:04:53 +0200
+
+gcc-3.0 (3.0.ds9-1) unstable; urgency=low
+
+  * Final 3.0 release.
+  * Update libgcc version number (#100983, #100988, #101069, #101115, #101328).
+  * Updated hppa-build patch (Matt Taggart <taggart@carmen.fc.hp.com>).
+  * Disable java for hppa.
+  * Updated subreg-byte patch for sparc (Ben Collins).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 18 Jun 2001 18:26:04 +0200
+
+gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low
+
+  * Update patches for recent (010613 23:13 +0200) CVS sources.
+  * Fix packaging bugs (#100459, #100447, #100483).
+  * Build-Depend on gawk, mawk doesn't work well with test_summary.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 13 Jun 2001 23:13:38 +0200
+
+gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low
+
+  * Fix build dependency for the hurd (#99164).
+  * Update patches for recent (010609) CVS sources.
+  * Disable java on powerpc (link error in libjava).
+  * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 10 Jun 2001 09:45:57 +0200
+
+gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high
+
+  * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which
+    now are incompatile due to the changed ABIs.
+  * Upstream begins tagging with "gcc-3_0_pre_2001mmdd".
+  * Tighten dependencies to install only binary packages derived from
+    one source (#98851). Tighten libc6-dev dependency to match libc6.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 27 May 2001 11:35:31 +0200
+
+gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low
+
+  * ATTENTION: The ABI (exception handling) changed. No upgrade path from
+    earlier snapshots (you had been warned in the postinst ...)
+    Closing #93597, #94576, #96448, #96461.
+    You have to rebuild
+  * HELP is appreciated for scanning the Debian BTS and sending followups
+    to bug reports!!!
+  * Should we name debian gcc uploads? What about a "still seeking
+    g++ maintainer" upload?
+  * Fixed in gcc-3.0: #97030
+  * Update patches for recent (010525) CVS sources.
+  * Make check depend on build target (fakeroot problmes).
+  * debian/rules.d/binary-libgcc.mk: new file, build first.
+  * Free memory detection on the hurd for running the testsuite.
+  * Update debhelper build dependency.
+  * libstdc++-doc: Include doxygen generated docs.
+  * Fix boring packaging bugs, too tired for appropriate changelogs ...
+    #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157
+  * Fixed bugs: #87000.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 26 May 2001 23:10:42 +0200
+
+gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low
+
+  * Update patches for recent (010506) CVS sources.
+  * New version of source, as of 2001-05-10
+  * New version of gpc source, as of 2001-05-06 (disabled by default).
+  * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc,
+    since it can build kernels just fine (it seems)
+  * Add hppa patch from Matt Taggart
+  * Fix objc info inclusion...now merged with gcc info
+  * Do not install the .la for libstdc++, since it confuses libtool linked
+    applications when libstdc++3-dev and libstdc++2.10-dev are both
+    installed (closes #97905).
+  * Fixed gcc-base and libgcc section/prio to match overrides
+
+ -- Ben Collins <bcollins@debian.org>  Mon,  7 May 2001 00:08:52 +0200
+
+gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low
+
+  * Fixed priority for fastjar from optional to extra
+  * New version of source, as of 2001-04-27
+  * Fix description of libgcj-dev
+  * libffi-install: Make libffi installable
+  * Add libffi and libffi-dev packages. libffi is only enabled for java
+    targets right now. Perhaps more will be enabled later.
+  * Fixes to build cross compiler package (for avr)
+    (Hakan Ardo <hakan@debian.org>).
+  * Better fixincludes description (#93157).
+  * Remove all remnants of libg++
+  * Remove all hacks around libstdc++ version. Since we are strictly v3 now,
+    we can treat it like a normal shared lib, and not worry about all those
+    ABI changes.
+  * Remove all cruft control scripts. Note, debhelper will create scripts
+    that it needs to. It will do the doc link stuff and the ldconfig stuff
+    explicitly.
+  * Clean up the SONAME parsing stuff, make it a little more cleaner over
+    all the lib packages
+  * Make libffi install when built (IOW, whenever java is enabled). This
+    should obsolete the libffi package, which is old and broken
+  * Revert to normal sonames, except for ia64 (for now)
+  * Remove all references to dh_testversion, since they are deprecated for
+    Build-Depends
+  * Fix powerpc nof build
+  * Remove all references to the MULTILIB stuff, since the arches are
+    using specialized builds anyway (nof, softfloat).
+  * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64)
+  * Removed obsolete shlibs.local file
+
+ -- Ben Collins <bcollins@debian.org>  Sun, 15 Apr 2001 21:33:15 -0400
+
+gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low
+
+  * debian/README: Updated for gcc-3.0
+  * debian/rules.patch: Added subreg-byte patch for sparc
+  * debian/rules.unpack: Update to current CVS for gcc tarball name
+  * debian/patches/subreg-byte.dpatch: sparc subreg-byte support
+  * debian/patches/gcc-rawhide.dpatch: Removed
+    debian/patches/gpc-2.95.dpatch: Removed
+    debian/patches/sparc32-rfi.dpatch: Removed
+    debian/patches/temporary.dpatch: Removed
+  * Moving to unstable now
+  * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch,
+    disables shared libgcc for powerpc target, since it isn't compatible
+    with the EABI objects.
+  * Create $(with_shared_libgcc) var
+  * debian/rules.d/binary-gcc.mk: Use this new variable to determine if
+    the libgcc package actually has any files
+
+ -- Ben Collins <bcollins@debian.org>  Tue,  3 Apr 2001 23:00:55 -0400
+
+gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low
+
+  * New snapshot. Use distinct shared object names for shared libraries:
+    we don't know if binary API's still change until the final release.
+  * Versioned package names.
+  * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1,
+    libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages.
+    Remove gcc-docs package.
+  * debian/gcov.1: Remove.
+  * debian/*: Remove 2.95.x support. Prepare for 3.0.
+  * debian/patches: Remove 2.95.x patches.
+  * Changed source package name. It's not allowed anymore to overwrite
+    source packages with different content. Introducing a 'debian source
+    element' (.ds<num>), which is stripped again from the version number
+    for the binary packages.
+  * Fixed bugs and added functionality:
+    #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989,
+    #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698,
+    #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628,
+    #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120,
+    #75759, #76645, #76827, #83221, #87540
+  * libgcj fixes: 42894, #51266, #68560, #71187, #79984
+
+ -- Matthias Klose <doko@debian.org>  Sat, 24 Feb 2001 13:41:11 +0100
+
+gcc-2.95 (2.95.3-2.001222) experimental; urgency=low
+
+  * New upstream version 2.95.3 experimental (CVS 20001222).
+  * debian/control.in: Versioned package names, removal of snapshot logic.
+    Remove fake gcc-docs package.
+  * Reserve -1 release numbers for woody.
+  * Updated to gpc-20001218.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 22 Dec 2000 19:53:03 +0100
+
+gcc (2.95.2-20) unstable; urgency=low
+
+    * Apply patch from gcc-2_95-branch; remove ulimit for make check.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 10 Dec 2000 17:01:13 +0100
+
+gcc (2.95.2-19) unstable; urgency=low
+
+  * Added testsuite-20001207 from current snapshots. We'll need results
+    for 2.95.2 to make sure there are no regressions against that release.
+    Dear build daemons and porters to other architectures, please send an
+    email to gcc-testresults@gcc.gnu.org.
+    You can do this by running "debian/rules mail-summary".
+  * Updated to gpc-20001206.
+  * Added S/390 patch prepared by Chu-yeon Park <kokids@debian.org> (#78983).
+  * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647).
+  * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542).
+  * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which
+    fixes a problem in "long long" on i[345]86 (i686 was not affected).
+
+ -- Matthias Klose <doko@debian.org>  Sat,  9 Dec 2000 12:30:32 +0100
+
+gcc (2.95.2-18) unstable; urgency=low
+
+  * debian/control.in: Fix syntax errors (fixes #76146, #76458).
+    Disable gpc on the hurd by request (#75686).
+  * debian/patches/arm-various.dpatch: Patches from Philip Blundell
+    for ARM arch (fixes #75801).
+  * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis
+    for alpha arch.
+  * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594).
+  * Update gpc to gpc-20001118.
+  * Reenable gpc for alpha.
+  * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information
+    provided by Matt Zimmermann.
+  * Build gcj only on architectures, where libgcj-2.95.1 can be built as well.
+    Probably needs some adjustments ...
+  * Conditionalize for chill, fortran, java, objc and chill.
+
+  * NOT APPLIED:
+    debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 19 Nov 2000 10:40:41 +0100
+
+gcc (2.95.2-17) unstable; urgency=low
+
+  * Disable gpc for alpha.
+  * Include gpc-cpp in gpc package (fixes #74492).
+  * Don't build gcc-docs compatibility package anymore.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 11 Oct 2000 06:16:53 +0200
+
+gcc (2.95.2-16) unstable; urgency=low
+
+  * Applied the emdebian/cross compiler patch and documentation
+    (Frank Smith <smith@amirix.com>).
+  * Applied patch for avr target (Hakan Ardo <hakan@debian.org>).
+  * debian/control.in: Add awk to Build-Depends.
+    Tighten libc6-dev dependency for libstdc++-dev (fixes #73031,
+    #72531, #72534).
+  * Disable libobjc_gc for m68k again (fixes #74380).
+  * debian/patches/arm-namespace.dpatch: Apply patch from Philip
+    Blundell <pb@futuretv.com> to fix name space pollution on arm
+    (fixes #70937).
+  * Fix more warnings in STL headers (fixes #69352, #71943).
+
+ -- Matthias Klose <doko@debian.org>  Mon,  9 Oct 2000 21:51:41 +0200
+
+gcc (2.95.2-15) unstable; urgency=low
+
+  * debian/control.in: Add libgc5-dev to build depends (fixes #67015).
+  * debian/rules.def: Build GC enabled ObjC runtime for sparc.
+  * Bug #58741 fixed (in some version since 2.95.2-5).
+  * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev
+    (unit dependencies).
+  * Patches from Marcus Brinkmann for the hurd (fixes #67763):
+    - debian/rules.defs: Disable objc_gc on hurd-i386.
+      Disable libg++ on GNU systems.
+    - debian/rules2: Set correct names of libstdc++/libg++
+      libraries on GNU systems.
+      Write out correct shlibs and shlibs.local file content.
+    - Keep _G_config.h for the Hurd.
+  * Apply patch for ObjC linker warnings.
+  * Don't apply gcj backport patch for sparc.
+  * Apply libio compatability patch
+  * debian/glibcver.sh: generate appropriate version for glibc
+  * debian/rules.conf: for everything after glibc 2.1, we always append
+    "-glibc$(ver)" to the C++ libs for linux.
+  * Back down gpc to -13 version (-14 wont compile on anything but i386
+    and m68k becuase of gpc).
+  * Remove extraneous and obsolete sparc64 patches/files from debian/*
+
+ -- Ben Collins <bcollins@debian.org>  Thu, 21 Sep 2000 08:08:35 -0400
+
+gcc-snapshot (20000901-2.2) experimental; urgency=low
+
+  * New snapshot.
+  * debian/rules2: Move tradcpp0 to cpp package.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  2 Sep 2000 01:14:28 +0200
+
+gcc-snapshot (20000802-2.1) experimental; urgency=low
+
+  * New snapshot.
+  * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp.
+
+ -- Matthias Klose <doko@debian.org>  Thu,  3 Aug 2000 07:40:05 +0200
+
+gcc-snapshot (20000720-2) experimental; urgency=low
+
+  * New snapshot.
+  * Enable libstdc++-v3.
+  * debian/rules2: Don't use -D for /usr/bin/install.
+
+ -- Matthias Klose <doko@debian.org>  Thu, 20 Jul 2000 22:33:37 +0200
+
+gcc (2.95.2-14) unstable; urgency=low
+
+  * Update gpc patch.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  5 Jul 2000 20:51:16 +0200
+
+gcc (2.95.2-13) frozen unstable; urgency=low
+
+  * Update debian/README: document how to compile 2.0.xx kernels; don't
+    register gcc272 as an alternative for gcc (closes #62419).
+    Clarify compiler setup (closes #65548).
+  * debian/control.in: Make libstdc++-dev depend on current version of g++.
+  * Undo CVS update from release -8 (problems on alpha, #55263).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 19 Jun 2000 23:06:48 +0200
+
+gcc (2.95.2-12) frozen unstable; urgency=low
+
+  * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193).
+  * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 21 May 2000 15:56:05 +0200
+
+gcc (2.95.2-11) frozen unstable; urgency=medium
+
+  * Upload to unstable again (fixes critical #63784).
+  * Fix doc-base files (fixes important #63810).
+  * gpc wasn't built in -10 (fixes #63977).
+  * Make /usr/bin/pc an alternative (fixes #63888).
+  * Add SYSCALLS.c.X to gcc package.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 14 May 2000 22:17:44 +0200
+
+gcc (2.95.2-10) frozen; urgency=low
+
+  * debian/control.in: make gcc conflict on any version of egcc
+    (slink to potato upgrade problem, fixes grave #62084).
+  * Build protoize programs, separate out in new package (fixes #59436,
+    #62911).
+  * Create dummy gcc-docs package for smooth update from slink (fixes #62537).
+  * Add doc-base support for all -doc packages (fixes #63380).
+
+ -- Matthias Klose <doko@debian.org>  Mon,  1 May 2000 22:24:28 +0200
+
+gcc (2.95.2-9) frozen unstable; urgency=low
+
+  * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built
+    for sparc as NMU 8.1) (fixes critical #61529 and #61511).
+    "Seems that when you compile gcc 2.95.x for sparc64-linux and compile
+     sparc32 programs, the code is not the same as sparc-linux compile for
+     sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)."
+  * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for
+    encoding of input files. Patch from Tom Tromey  <tromey@cygnus.com>
+    backported to 2.95.2 (fixes #42895).
+    Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'.
+  * debian/control.in: gcc, g++ and gobjc suggest their corresponding
+    task packages (fixes #59623).
+
+ -- Matthias Klose <doko@debian.org>  Sat,  8 Apr 2000 20:19:15 +0200
+
+gcc (2.95.2-8) frozen unstable; urgency=low
+
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313.
+  * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes
+    gcj side of #60535.
+  * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but
+    alpha. Disable g++-is-tree patch ("just for 2.95.1").
+  * debian/README: Update for gcc-2.95.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 27 Mar 2000 00:03:16 +0200
+
+gcc (2.95.2-7) frozen unstable; urgency=low
+
+  * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from
+    http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes
+    compilation of 2.3.4x kernels.
+  * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines
+    <dhuggins@linuxcare.com> (backport from 2.96 CVS to fix #55263).
+  * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon
+    <kingdon@redhat.com> (backport from 2.96 CVS to fix #54951).
+
+ -- Matthias Klose <doko@debian.org>  Thu,  2 Mar 2000 23:16:43 +0100
+
+gcc (2.95.2-6) frozen unstable; urgency=low
+
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220.
+  * Remove dangling symlink probably left over from libstdc++2.9
+    package (fixes #53661).
+  * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by
+    David Huggins-Daines (fixes #58486).
+  * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration
+    (fixes #58253).
+  * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108).
+  * debian/rules2: Include some fixed headers (asm, bits, linux, ...).
+  * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove.
+    Applied upstream.
+  * debian/patches/libstdc++-bastring.dpatch: Add patch from
+    sicard@bigruth.solsoft.fr (fixes #56715).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 20 Feb 2000 15:08:13 +0100
+
+gcc (2.95.2-5) frozen unstable; urgency=low
+
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116.
+  * Add more build dependencies (fixes #53204).
+  * debian/patches/gcc-alpha-complex-float.dpatch: Patch from
+    Joel Klecker <jk@espy.org> to compile glibc correctly on alpha.
+    "Should fix the g77 problems too."
+  * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches
+    applied upstream.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 16 Jan 2000 19:16:54 +0100
+
+gcc (2.95.2-4) unstable; urgency=low
+
+  * debian/patches/libio.dpatch: Patch from Martin v. Loewis.
+    (fixes: #35628).
+  * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis.
+    (fixes: #52689).
+  * debian/control.in: Updated Build-Depends, removed outdated README.build.
+    Fixes #51246.
+  * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294).
+  * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch.
+    Fixes #51636.
+  * Apply updated sparc-bi-arch.dpatch from Ben Collins.
+  * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request
+    from the author of the War FTP Daemon for Linux ("Jarle Aase"
+    <jgaa@jgaa.com>).
+  * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 19 Dec 1999 21:53:48 +0100
+
+gcc (2.95.2-3) unstable; urgency=low
+
+  * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are
+    headers fixed for glibc-1.x (closes: #49434).
+  * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without
+    following LF (closes: #49186).
+  * Bug #37358 (internal compiler errors when building vdk_0.6.0-5)
+    fixed in gcc-2.95.? (closes: #37358).
+  * Apply patch gcc-alpha-ev5-fix from Richard Henderson <rth@cygnus.com>
+    (should fix #48527 and #46963).
+  * debian/README.Bugs: Documented non bug #44554.
+  * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha.
+    Reenabled gpc on all architectures.
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108.
+  * Explicitely generate postinst/prerm chunks for usr/doc transition.
+    debhelper currently doesn't handle generation for packages with
+    symlinked directories.
+  * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h
+    and stl_rope.h (closes: #46444, #46720).
+  * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 10 Nov 1999 18:58:45 +0100
+
+gcc (2.95.2-2) unstable; urgency=low
+
+  * New gpc-19991030 snapshot.
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103.
+  * Reintegrated sparc patches (bcollins@debian.org), which were lost
+    in 2.95.2-1.
+  * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing.
+  * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop
+    initialization in stor-layout.c.
+  * debian/NEWS.gcc: Updated for gcc-2.95.2.
+  * debian/bugs/bug-...: Removed testcases for fixed bugs.
+  * debian/patches/...dpatch: Removed patches applied upstream.
+  * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative.
+  * debian/changelog: Merged gcc272, egcs and snapshot changelogs.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  2 Nov 1999 23:09:23 +0200
+
+gcc (2.95.2-1.1) unstable; urgency=low
+
+  * Most of the powerpc patches have been applied upstream.  Remove all
+    but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions.
+  * mulilib-install.dpatch was definitely a bad idea.  Fix it properly
+    by using install -D.
+  * Also, don't make directories before installing any more.  Simplifies
+    rules a (tiny) bit.
+  * Do not build with LDFLAGS=-s.  Everything gets stripped out anyway by
+    dh_strip -a -X_debug; so leave the binaries in the build tree with
+    debugging symbols for simplified debugging of the packages.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Sat, 30 Oct 1999 12:40:12 -0400
+
+gcc (2.95.2-1) unstable; urgency=low
+
+  * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing
+    is disabled upstream.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 25 Oct 1999 10:26:19 +0200
+
+gcc (2.95.2-0pre4) unstable; urgency=low
+
+  * Updated to cvs updates of the gcc-2_95-branch until 19991021.
+  * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453).
+    Enable gpc for all architectures ...
+  * Document gcc exit codes (closes: #43863).
+  * According to the bug submitter (Sergey V Kovalyov <sqk0316@scires.nyu.edu>)
+    the original source of these CERN librarties is outdated now. The latest
+    version of cernlibs compiles and works fine with slink (closes #31546).
+  * According to the bug submitter (Gergely Madarasz <gorgo@sztaki.hu>),
+    the problem triggered on i386 cannot be reproduced with the current
+    jade and php3 versions anymore (closes: #35215).
+  * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab
+    <Roman.Hodek@informatik.uni-erlangen.de> <schwab@suse.de> and apply to
+    all architectures (closes: #48011).
+  * According to the bug submitter (Herbert Xu <herbert@gondor.apana.org.au>)
+    this bug "probably has been fixed". Setting it to severity "fixed"
+    (fixes: #39616), will close it later ...
+  * debian/README.Bugs: Document throwing C++ exceptions "through" C
+    libraries (closes: #22769).
+
+ -- Matthias Klose <doko@debian.org>  Fri, 22 Oct 1999 20:33:00 +0200
+
+gcc (2.95.2-0pre3) unstable; urgency=low
+
+  * Updated to cvs updates of the gcc-2_95-branch until 19991019.
+  * Apply NMU patches (closes: #46217).
+  * debian/control.in: Fix egcs64 conflict-dependency for sparc
+    architecture (closes: #47088).
+  * debian/rules2: dbg-packages share doc dir with lib packages
+    (closes #45067).
+  * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane
+    Bortzmeyer to conform to Debian policy (closes: #44463).
+  * debian/bugs/bug-*: Added test cases for new bug reports.
+  * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell
+    (closes #46550).
+  * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609).
+  * debian/README: Fix typo (closes: #45253).
+  * debian/control.in: Remove primary/secondary distinction;
+    dbg-packages don't provide their normal counterparts (closes #45206).
+  * debian/rules.patch: gcc-combine patch applied upstream.
+  * debian/rules2: Only use mail if with_check is set (off by default).
+  * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Oct 1999 20:33:00 +0200
+
+gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k)
+
+  * Binary-only NMU for m68k as quick fix for another bug; the patch
+    is in CVS already, too.
+  * Applied another patch by Andreas Schwab to fix %a5 restauration in
+    some cases.
+
+ -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Thu, 30 Sep 1999 16:09:15 +0200
+
+gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k)
+
+  * Binary-only NMU for m68k as quick fix for serious bugs; the patches
+    are already checked into gcc CVS and should be in the next official
+    version, too.
+  * Applied two patches by Andreas Schwab to fix -fpic and loop optimization.
+
+ -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Mon, 27 Sep 1999 15:32:49 +0200
+
+gcc (2.95.2-0pre2) unstable; urgency=low
+
+  * Fixed in 2.95.2 (closes: #43478).
+  * Previous version had Pascal examples missing in doc directory.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 8 Sep 1999 22:18:17 +0200
+
+gcc (2.95.2-0pre1) unstable; urgency=low
+
+  * Updated to cvs updates of the gcc-2_95-branch until 19990828.
+  * Apply work around memory corruption (just for 2.95.1)  by
+    Daniel Jacobowitz <dan@debian.org>.
+  * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard
+    <sicard@miniruth.solsoft.fr> to fix some warnings (closes: #44670).
+  * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani
+    <fjtani@flab.fujitsu.co.jp> to fix a bug in valarray_array.h.
+  * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches
+    already in the gcc-2_95-branch (closes: #44690).
+  * Conform to debian-java policy (closes: #44463).
+  * Move docs to /usr/share/doc (closes: #44782).
+  * Remove debian/patches/gcc-align.dpatch applied upstream.
+  * debian/*.postinst: Call install-info only, when configuring.
+  * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle
+    /usr/doc -> /usr/share/doc transition.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  8 Sep 1999 22:18:17 +0200
+
+gcc (2.95.1-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * ARM platform no longer needs library-prefix patch.
+  * Updated patches from Philip Blundell.
+
+ -- Jim Pick <jim@jimpick.com>  Wed,  8 Sep 1999 20:14:07 -0700
+
+gcc (2.95.1-2) unstable; urgency=low
+
+  * debian/gcc.{postinst,prerm}: gcc provides an alternative for
+    sparc64-linux-gcc.
+  * Applied patch from Ben Collins to enable bi-architecture (32/64)
+    support for sparc.
+  * Rebuild debian/control and debian/rules.parameters after unpacking.
+  * debian/rules2: binary-indep. Conditionalize on with_pascal.
+
+ -- Matthias Klose <doko@debian.org>  Sat,  4 Sep 1999 13:47:30 +0200
+
+gcc (2.95.1-1) unstable; urgency=low
+
+  * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch
+    until 19990828.
+  * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news.
+  * debian/README.java: New file.
+  * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC
+    for alpha.
+  * debian/rules [clean]: Remove debian/rules.parameters.
+  * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set
+    to installation dir of libstdc++. Why isn't this the default?
+  * debian/control.in: *-dev packages do not longer conflict with
+    libg++272-dev package.
+  * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html.
+  * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462).
+  * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4.
+  * New version of 68060 build patch.
+  * debian/rules.conf: For m68k, depend on binutils version 2.9.1.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 28 Aug 1999 18:16:31 +0200
+
+gcc (2.95.1-0pre2) unstable; urgency=medium
+
+  * gpc is back again (fixes grave #43022).
+  * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors.
+  * Work around the fatal dependtry assertion failure bug in dpkg (hint
+    from "Antti-Juhani Kaijanaho" <ajk@debian.org>, fixes important #43072).
+
+ -- Matthias Klose <doko@debian.org>  Mon, 16 Aug 1999 19:34:14 +0200
+
+gcc (2.95.1-0pre1) unstable; urgency=low
+
+  * Updated to cvs 19990815 gcc-2_95-branch; included install docs and
+    FAQ from 2.95 release; upload source package as well.
+  * Source package contains tarballs only (gcc, libg++, installdocs).
+  * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}.
+  * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from
+    pre 2.95 version; reference /usr/doc, not /usr/share/doc.
+  * Checked syntax for attributes of functions; checked for #35068;
+    checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and
+    binutils 2.9.1.0.25-2 the problem doesn't show up anymore).
+  * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi.
+  * gcc is primary compiler for all platforms but m68k. Setting
+    severity of #22513 to fixed.
+  * debian/patches/gcc-default-arch.dpatch: New patch to enable generation
+    of i386 instruction as default (fixes #42743).
+  * debian/rules: Removed outdated gcc NEWS file (fixes #42742).
+  * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead
+    of aborting when out of memory (fixes #42622).
+  * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after
+    DOS newlines (fixes #29240).
+  * Fixed in gcc-2.95.1: #43001.
+  * Bugs closed in this version:
+    Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585,
+    #42602, #42622, #42742 #42743, #43001, #43002.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 15 Aug 1999 10:31:50 +0200
+
+gcc (2.95-3) unstable; urgency=high
+
+  * Provide /lib/cpp again (fixes important bug #42524).
+  * Updated to cvs 19990805 gcc-2_95-branch.
+  * Build with the default scheduler.
+  * Apply install-multilib patch from Dan Jacobowitz.
+  * Apply revised cpp-A- patch from Dan Jacobowitz.
+
+ -- Matthias Klose <doko@debian.org>  Fri,  6 Aug 1999 07:25:19 +0200
+
+gcc (2.95-2) unstable; urgency=low
+
+  * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway.
+  * The following bugs are fixed (compared to egcs-1.1.2).
+    Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261,
+    #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117,
+    #41290, #41302, #41313.
+  * The following by Joel Klecker:
+    - Adopt dpkg-architecture variables.
+    - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash.
+    - Disabled the testsuite, it is not included in the gcc 2.95 release.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 31 Jul 1999 18:00:42 +0200
+
+gcc (2.95-1) unstable; urgency=low
+
+  * Update for official gcc-2.95 release.
+  * Built without gpc.
+  * debian/rules: Remove g++FAQ from rules, which is outdated.
+    For ix86, build for i386, not i486.
+  * Apply patch from Jim Pick for building multilib package on arm.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 31 Jul 1999 16:38:21 +0200
+
+gcc (2.95-0pre10) unstable; urgency=low
+
+  * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream
+    strongly advises configuring outside of the source tree, and it makes
+    some things much easier.
+  * Add patch to prevent @local branches to weak symbols on powerpc (fixes
+    apt compilation).
+  * Add patch to make cpp -A- work as expected.
+  * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch;
+    apply on all architectures.
+  * debian/control.in: Remove snapshot dependencies.
+  * debian/*.postinst: Reflect use of /usr/share/{info,man}.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Thu, 22 Jul 1999 19:27:12 -0400
+
+gcc (2.95-0pre9) unstable; urgency=low
+
+  * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889,
+    #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659,
+    #40991, #41117, #41290.
+  * Updated to CVS gcc-19990718 snapshot.
+  * debian/control.in: Removed references to egcs in descriptions.
+    Changed gcj's Recommends libgcj-dev to Depends.
+  * debian/rules: Apply ppc-library-prefix for alpha as well.
+  * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 18 Jul 1999 12:21:07 +0200
+
+gcc (2.95-0pre8) unstable; urgency=low
+
+  * Updated CVS.
+  * debian/copyright: s%doc/copyright%share/common-licenses%
+  * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/
+  * debian/patches/reporting.dpatch: Remake diff for current sources.
+  * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info.
+  * debian/rules: Current dejagnu snapshot reports a framework version
+    of 1.3.1.
+
+ -- Joel Klecker <espy@debian.org>  Sun, 18 Jul 1999 02:09:57 -0700
+
+gcc-snapshot (19990714-0pre6) experimental; urgency=low
+
+  * Updated to CVS gcc-19990714 snapshot.
+  * Applied ARM patch (#40515).
+  * Converted DOS style linefeeds in debian/patches/ppc-* files.
+  * debian/rules: Reflect change in gcc/version.c; use sh -e as shell:
+    for some obscure reason, bash -e doesn't work.
+  * Reflect version change for libstdc++ (2.10). Remove libg++-name
+    patch; libg++ now has version 2.8.1.3. Removed libc version from
+    the package name.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 14 Jul 1999 18:43:57 +0200
+
+gcc-snapshot (19990625-0pre5.1) experimental; urgency=low
+
+  * Non-maintainer upload.
+  * Added ARM specific patch.
+
+ -- Jim Pick <jim@jimpick.com>  Tue, 29 Jun 1999 22:36:08 -0700
+
+gcc-snapshot (19990625-0pre5) experimental; urgency=low
+
+  * Updated to CVS gcc-19990625 snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 25 Jun 1999 16:11:53 +0200
+
+gcc-snapshot (19990609-0pre4.1) experimental; urgency=low
+
+  * Added and re-added a few last PPC patches.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Sat, 12 Jun 1999 16:48:01 -0500
+
+gcc-snapshot (19990609-0pre4) experimental; urgency=low
+
+  * Updated to CVS egcs-19990611 snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 11 Jun 1999 10:20:09 +0200
+
+gcc-snapshot (19990609-0pre3) experimental; urgency=low
+
+  * CVS gcc-19990609 snapshot.
+  * New gpc-19990607 snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  9 Jun 1999 19:40:44 +0200
+
+gcc-snapshot (19990524-0pre1) experimental; urgency=low
+
+  * egcs-19990524 snapshot.
+  * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95,
+    which is now the "official" successor to gcc-2.8.1. The full version
+    name is: gcc-2.95 19990521 (prerelease).
+  * debian/control.in: Changed maintainers to `Debian GCC maintainers'.
+  * Moved all version numbers to epoch 1.
+  * debian/rules: Major changes. The support for secondary compilers
+    was already removed for the egcs-1.2 snapshots. Many fixes by
+    Joel Klecker <espy@debian.org>.
+    - Send mail to Debian maintainers for successful builds.
+    - Fix VER and VERNO sed expressions.
+    - Replace remaining GNUARCH occurrences.
+  * New gpc snapshot (but don't build).
+  * debian/patches/valarray.dpatch: Backport from libstdc++-v3.
+  * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker <espy@debian.org>).
+  * Use cpp driver provided by the package.
+  * New script c89 (fixes #28261).
+
+ -- Matthias Klose <doko@debian.org>  Sat, 22 May 1999 16:10:36 +0200
+
+egcs (1.1.2-2) unstable; urgency=low
+
+  * Integrate NMU's for arm and sparc (fixes #37582, #36857).
+  * Apply patch for the Hurd (fixes #37753).
+  * Describe open bugs in TODO.Debian. Please have a look if you can help.
+  * Update README / math functions section (fixes #35906).
+  * Done by J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>:
+    - At Richard Braakman's request, made -dbg packages for libstdc++
+      and libg++.
+    - Provide egcc(1) (fixes lintian error).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 16 May 1999 14:30:56 +0200
+
+egcs-snapshot (19990502-1) experimental; urgency=low
+
+  * New snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Thu,  6 May 1999 11:51:02 +0200
+
+egcs-snapshot (19990418-2) experimental; urgency=low
+
+  * Merged Rays changes to build debug packages.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 21 Apr 1999 16:54:56 +0200
+
+egcs-snapshot (19990418-1) experimental; urgency=low
+
+  * New snapshot.
+  * Disable cpplib.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 19 Apr 1999 11:32:19 +0200
+
+egcs (1.1.2-1.2) unstable; urgency=low
+
+  * NMU for arm
+  * Added arm-optimizer.dpatch with optimizer workaround for ARM
+
+ -- Jim Pick <jim@jimpick.com>  Mon, 19 Apr 1999 06:17:13 -0700
+
+egcs (1.1.2-1.1) unstable; urgency=low
+
+  * NMU for sparc
+  * Included dpatch to modify the references to gcc/crtstuff.c so that
+    __register_frame_info is not a weak reference. This allows potato to
+    remain binary compatible with slink, while still retaining compatibility
+    with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has
+    been sent to the maintainer with a note it may not be needed for 1.1.3.
+
+ -- Ben Collins <bcollins@debian.org>  Tue, 27 Apr 1999 10:15:03 -0600
+
+egcs (1.1.2-1) unstable; urgency=low
+
+  * Final egcs-1.1.2 release built for potato as primary compiler
+    for all architectures except m68k.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Thu,  8 Apr 1999 13:14:29 +0200
+
+egcs-snapshot (19990321-1) experimental; urgency=low
+
+  * New snapshot.
+  * Disable gpc.
+  * debian/rules: Simplified (no secondary compiler, bumped all versions
+    to same epoch, libapi patch is included upstream).
+  * Separated out cpp documentation to cpp-doc package.
+  * Fixed in this version: #28417.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 23 Mar 1999 02:11:18 +0100
+
+egcs (1.1.2-0slink2) stable; urgency=low
+
+  * Applied H.J.Lu's egcs-19990315.linux patch.
+  * Install faq.html and egcs-1.1.2 announcment.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 23 Mar 1999 01:14:54 +0100
+
+egcs (1.1.2-0slink1) stable; urgency=low
+
+  * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386.
+  * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined.
+  * Fixes #30767, #32278, #34252, #34352.
+  * Don't build the libstdc++.so.2.9 library on architectures, which have
+    switched to glibc-2.1.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 17 Mar 1999 12:55:59 +0100
+
+egcs (1.1.1.63-2.2) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Incorporate patch from Joel Klecker to fix snapshot packages
+    by moving/removing the application of libapi.
+  * Disable the new libstdc++-dev-config and the postinst message in
+    glibc 2.1 versions.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Mon, 12 Mar 1999 14:16:02 -0500
+
+egcs (1.1.1.63-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Compile with glibc 2.1 release version.
+  * New upstream version egcs-1.1.2 pre3.
+  * Miscellaneous rules updates (see changelog.snapshot).
+  * New set of powerpc-related patches from Franz Sirl,
+    <fsirl@kernel.crashing.org>.
+  * Disable libgcc.dpatch (new solution implemented upstream).  Remove it.
+  * Also pass $target to config.if.
+  * Enable Dwarf2 EH for powerpc.  Bump the C++ binary version.  No
+    loss in -backwards- compatibility as far as I can tell, so add a
+    compatibility symlink, and add to shlibs file.
+  * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files,
+    to prevent bogus .orig's in diffs.
+  * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from
+    Matthias Klose <doko@debian.org>.
+  * Stop adding a backwards compatibility link for egcs-nof on powerpc.
+    To my knowledge, nothing uses it.  Do add the libstdc++ API change
+    link, though.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Mon, 8 Mar 1999 14:24:01 -0500
+
+egcs (1.1.1.63-2) stable; urgency=low
+
+  * Provide a libstdc++ with a shared object name, which is compatible
+    to other distributions. Documented the change in README.Debian,
+    the libstdc++-2.9.postinst and the libstdc++-dev-config script.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 12 Mar 1999 00:36:20 +0100
+
+egcs (1.1.1.63-1.1) unstable; urgency=low
+
+  * Non-Maintainer release.
+  * Build against glibc 2.1.
+  * Make egcs the primary compiler on i386.
+  * Also confilct with egcc (<< FIRST_PRIMARY)
+    if FIRST_PRIMARY is defined.
+    (this tells dpkg that gcc completely obsoletes egcc)
+  * Remove hjl-12 patch again, HJL says it should not be
+    necessary with egcs 1.1.2.
+    (as per forwarded reply from Christopher Chimelis)
+  * Apply libapi patch in clean target before regenerating debian/control
+    and remove the patch afterward. Otherwise, the libstdc++ and libg++
+    package names are generated wrong on a glibc 2.1 system.
+
+ -- Joel Klecker <espy@debian.org>  Tue,  9 Mar 1999 15:31:02 -0800
+
+egcs (1.1.1.63-1) unstable; urgency=low
+
+  * New upstream version egcs-1.1.1-pre3.
+  * Applied improved libstdc++ warning patch from Rob Browning.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  9 Mar 1999 16:14:07 +0100
+
+egcs (1.1.1.62-1) unstable; urgency=low
+
+  * New upstream version egcs-1.1.1-pre2.
+  * New upstream version libg++-2.8.1.3.
+  * Readded ARM support
+  * Readded hjl-12 per request from Christopher C Chimelis
+    <chris@classnet.med.miami.edu>
+
+ -- Matthias Klose <doko@debian.org>  Fri, 26 Feb 1999 09:54:01 +0100
+
+egcs-snapshot (19990224-0.1) experimental; urgency=low
+
+  * New snapshot.
+  * Add the ability to disable CPPLIB by setting CPPLIB=no in
+    the environment.
+  * Disable gpc for powerpc; I spent a long time getting it to
+    make correctly, and then it goes and ICEs.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Tue, 24 Feb 1999 23:34:12 -0500
+
+egcs (1.1.1.61-1) unstable; urgency=low
+
+  * New upstream version egcs-1.1.1-pre1.
+  * debian/control.in: Applied patch from bug report #32987.
+  * Split up H.J.Lu's hjl-19990115-linux patch into several small
+    chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux
+    aren't included in the separate chunks. Please refer to the
+    unmodified hjl-19990115-linux patch file in the egcs source pkg.
+  * Apply warning patch to fix the annoying spew you get if you try to
+    use ropes or deques with -Wall (which makes -Wall mostly useless for
+    spotting errors in your own code). Fixes #32996.
+  * debian/rules: Unapply patches in the exact reverse order they were
+    applied.
+
+ -- Matthias Klose <doko@debian.org>  Sat, 20 Feb 1999 22:06:21 +0100
+
+egcs (1.1.1-5) frozen unstable; urgency=medium
+
+  * Move libgcc.map file to g++ package, where gcc is the secondary
+    compiler (fixes #32329, #32605, #32631).
+  * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148).
+  * Apply NMU patch for arm architecure (fixes #32367).
+  * Don't apply hjl-12 patch for alpha architectures (requested by the
+    alpha developers, Christopher C Chimelis <chris@classnet.med.miami.edu>).
+  * Call makeinfo with --no-validate to fix obscure build failure on alpha.
+  * Build gpc info files in doc subdirectory.
+  * Remove c++filt diversion (C++ name demangling patch is now in binutils,
+    fixes #30820 and #32502).
+
+ -- Matthias Klose <doko@debian.org>  Sun, 31 Jan 1999 23:19:35 +0100
+
+egcs (1.1.1-4.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Pascal doesn't build for ARM.
+
+ -- Jim Pick <jim@jimpick.com>  Sun, 24 Jan 1999 16:13:34 -0800
+
+egcs (1.1.1-4) frozen unstable; urgency=high
+
+  * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a
+  * Move Pascal examples to the right place (fixes #32149, part 1).
+  * Add dependencies for switching from secondary to primary compiler,
+    if FIRST_PRIMARY is defined (fixes #32149, part 2).
+
+ -- Matthias Klose <doko@debian.org>  Wed, 20 Jan 1999 16:51:30 +0100
+
+egcs (1.1.1-3) frozen unstable; urgency=low
+
+  * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the
+    __register_frame_info problems, mips and arm port included).
+  * Update gpc to 19990118 (beta release candidate).
+  * Strip static libraries (fixes #31247 and #31248).
+  * Changed maintainer address.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 19 Jan 1999 16:34:28 +0100
+
+egcs (1.1.1-2) frozen unstable; urgency=low
+
+  * Moved egcs-docs, g77-doc and gpc-doc packages to doc section.
+  * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies
+    (for archs, where egcs is the primary compiler).
+  * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev.
+  * Applied one more alpha patch:
+    ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz
+  * Applied PPro optimization patch.
+  * Apply emit-rtl-nan patch.
+  * Upgraded to libg++-2.8.1.2a-19981218.tar.gz.
+  * Upgraded to gpc-19981218.
+  * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 23 Dec 1998 18:04:53 +0200
+
+egcs-snapshot (19981211-1) experimental; urgency=low
+
+  * New snapshot.
+  * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g).
+  * New libg++-2.8.1.2a-19981209.tar.gz.
+  * debian/rules: new target mail-summary.
+
+ -- Matthias Klose <doko@debian.org>  Fri, 11 Dec 1998 18:14:53 +0200
+
+egcs (1.1.1-1) frozen unstable; urgency=high
+
+  * Final egcs-1.1.1 release.
+  * The last version depended on a versioned libc6 again.
+  * Add lost dependency for libg++ on libstdc++.
+  * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux
+    system, which doesn't use the libapi patch.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Wed,  2 Dec 1998 12:06:15 +0200
+
+egcs (1.1.0.91.59-2) frozen unstable; urgency=high
+
+  * Fixes bugs from libc6 2.0.7u-6 upload without dependency line
+    Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078.
+  * debian/copyright: Updated URLs.
+  * gcc --help now mentions /usr/doc/debian/bug-reporting.txt.
+  * Install README.Debian and include information about patches applied.
+  * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used
+    on a hamm system.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Fri, 27 Nov 1998 18:32:02 +0200
+
+egcs (1.1.0.91.59-1) frozen unstable; urgency=low
+
+  * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6.
+  * Added dependency for libstdc++2.9-dev on g++ (fixes #29631).
+  * Package g77 provides f77 (fixes #29817).
+  * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620.
+  * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc:
+    #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100.
+  * Upgraded libg++ to libg++-2.8.1.2a-19981114.
+  * Upgraded gpc to gpc-19981124.
+  * Close #25869: egcs and splay maintainers are unable to reproduce this
+    bug with the current Debian packages. Bug submitter doesn't respond.
+  * Close #25407: egcs maintainer cannot reproduce this bug with the current
+    Debian compiler. Bug submitter doesn't respond.
+  * Use debhelper 1.2.7 for building.
+  * Replace the libstdc++ and libg++ compatibility links with fake libraries.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Wed, 25 Nov 1998 12:11:42 +0200
+
+egcs (1.1.0.91.58-5) frozen unstable; urgency=low
+
+  * Applied patch to build on the m68060.
+  * Added c++filt and c++filt.1 to the g++ package.
+  * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1.
+  * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc.
+  * Closed bugs (#22158).
+  * Close #20248; on platforms where gas and gld are the default versions,
+    it makes no difference to configure with or without enable-ld.
+  * Close #24349. The bugs are in the amulet source.
+    See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x
+  * Rename gcc.info* files to egcs.info* (fixes #24088).
+  * Documented known bugs (and workarounds) in BUGS.Debian.
+  * Fixed demangling of C++ names (fixes #28787).
+  * Applied patch form aspell to libstdc++/stl/stl_rope.h.
+  * Updated from cvs 16 Nov 1998.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Tue, 17 Nov 1998 09:41:24 +0200
+
+egcs-snapshot (19981115-2) experimental; urgency=low
+
+  * New snapshot. Disabled gpc.
+  * New packages g77-doc and gpc-doc.
+
+ -- Matthias Klose <doko@debian.org>  Mon, 16 Nov 1998 12:48:09 +0200
+
+egcs (1.1.0.91.58-3) frozen unstable; urgency=low
+
+  * Previous version installed in potato, not slink.
+  * Updated from cvs 3 Nov 1998.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Tue, 3 Nov 1998 18:34:44 +0200
+
+egcs (1.1.0.91.58-2) unstable; urgency=low
+
+  * [debian/rules]: added targets to apply and unapply patches.
+  * [debian/README.patches]: New file.
+  * Moved patches dir to debian/patches. debian/rules has to select
+    the patches to apply.
+  * Manual pages for genclass and gcov (fixes #5995, #20950, #22196).
+  * Apply egcs-1.1-reload patch needed for powerpc architecture.
+  * Fixed bugs (#17768, #20252, #25508, #27788).
+  * Reapplied alpha patch (#20875).
+  * Fixes first part of #22513, extended README.Debian (combining C & C++).
+  * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524,
+    #20640, #22450, #24244, #24288, #28520.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Fri, 30 Oct 1998 13:41:45 +0200
+
+egcs (1.1.0.91.58-1) experimental; urgency=low
+
+  * New upstream version. That's the egcs-1.1.1 prerelease plus patches from
+    the cvs archive upto 29 Oct 1998.
+  * Merged files from the egcs and snapshot packages.
+  * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still
+    2.8.2).
+  * Moved patches dir to patches-1.1.
+  * Dan Jacobowitz:
+    * This is a snapshot from the egcs_1_1_branch, with
+      libapi, reload, builtin-apply, and egcs patches from
+      the debian/patches/ dir applied, along with the egcs-gpc-patches
+      and gcc/p/diffs/gcc-egcs-2.91.55.diff.
+    * Conditionalize gcj and chill (since they aren't in this branch).
+    * Fake snapshots drop the -snap-main.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Thu, 29 Oct 1998 15:15:19 +0200
+
+egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low
+
+  * This is a snapshot from the egcs_1_1_branch, with
+    libapi, reload, builtin-apply, and egcs patches from
+    the debian/patches/ dir applied, along with the egcs-gpc-patches
+    and gcc/p/diffs/gcc-egcs-2.91.55.diff.
+  * Conditionalize gcj and chill (since they aren't in this
+    branch).
+  * Fake snapshots drop the -snap-main.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Mon, 19 Oct 1998 22:19:23 -0400
+
+egcs (1.1b-5) unstable; urgency=low
+
+  * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092).
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sun, 18 Oct 1998 22:56:51 +0200
+
+egcs (1.1b-4) unstable; urgency=low
+
+  * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from
+    `Recommends' to `Depends'.
+  * Updated README.Debian for egcs-1.1.
+  * Updated TODO.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Thu, 15 Oct 1998 12:38:47 +0200
+
+egcs-snapshot (19981005-0.1) experimental; urgency=low
+
+  * Make libstdc++2.9-snap-main and libg++-snap-main provide
+    their mainstream equivalents and put those equivalents into
+    their shlibs file.
+  * Package gcj, the GNU Compiler for Java(TM).
+
+  * New upstream version of egcs (The -regcs_latest_snapshot branch).
+  * Build without libg++ entirely.
+  * Leave out gpc for now - the internals are sufficiently different
+    that it does not trivially compile.
+  * Include an experimental reload patch for powerpc - this is,
+    in the words of its author, not release quality, but it allows
+    powerpc linuxthreads to function.
+  * On architectures where we are the primary compiler, let snapshots
+    build with --prefix=/usr and conflict with the stable versions.
+  * Package chill, a front end for the language Chill.
+  * Other applied patches from debian/patches/: egcs-patches and
+    builtin-apply-patch.
+  * Use reload.c revision 1.43 to avoid a nasty bug.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Wed,  7 Oct 1998 00:27:42 -0400
+
+egcs (1.1b-3.1) unstable; urgency=low
+
+  * NMU to fix the egcc -> gcc link once and for all
+
+ -- Christopher C. Chimelis <chris@classnet.med.miami.edu>  Tue, 22 Sep 1998 16:11:19 -0500
+
+egcs (1.1b-3) unstable; urgency=low
+
+  * Oops. The egcc -> gcc link on archs where gcc is egcc was broken.
+    Thanks to Chris Chimelis for pointing this out.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Mon, 21 Sep 1998 20:51:35 +0200
+
+egcs (1.1b-2) unstable; urgency=low
+
+  * New upstream spellfix release (Debian revision is 2 as the internal
+    version numbers didn't change).
+  * Added egcc -> gcc symlink on architectures where egcc is the primary C
+    compiler. Thus, maintainers of packages that require egcc, can now
+    simply use "egcc" without conditionals.
+  * Porters: we hope/plan to make egcs's gcc the default C compiler on all
+    platforms once the 2.2.x kernels are available. Please test this version
+    thoroughly, and give us a GO / NO GO for your architecture.
+  * Some symbols cpp used to predefine were removed upstream in order to clean
+    up the cpp namespace, but imake requires them for determining the proper
+    settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf),
+    thus we put them back. Thanks to Paul Slootman for reporting his imake
+    problems on Alpha.
+    * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES .
+      Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed
+      this already.
+    * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES .
+    * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES .
+    * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES .
+    * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES .
+    * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES .
+    * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES .
+    * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES .
+  * Small fixes and updates in README.
+  * Changes affecting the source package only:
+    * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in]
+      Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get
+      properly regenerated with multilib.
+    * [debian/TODO] Created.
+    * [INSTALL/index.html] Fixed broken link.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sun, 20 Sep 1998 14:05:15 +0200
+
+egcs (1.1a-1) unstable; urgency=low
+
+  * New upstream release.
+  * Added README.libstdc++ .
+  * Updated Standards-Version.
+  * Matthias:
+    * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: .
+    * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Wed,  2 Sep 1998 19:57:43 +0200
+
+egcs (1.1-1) unstable; urgency=low
+
+  * egcs-1.1 prerelease (from the last Debian package only the version file
+    changed).
+  * "Final" gpc Beta 2.1 gpc-19980830.
+  * Included libg++ and gpc in the .orig tarball. so that diffs are getting
+    smaller.
+  * debian/control.in: Changed maintainer address to galenh-egcs@debian.org.
+  * debian/copyright: Updated URLs.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Mon, 31 Aug 1998 12:43:13 +0200
+
+egcs (1.0.99.56-0.1) unstable; urgency=low
+
+  * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830).
+  * New libg++ snapshot 980828.
+  * Put all patches patches subdirectory; see patches/README in the source.
+  * debian/control.in: readded for libg++2.8.2-dev:
+    Replaces: libstdc++2.8-dev (<= 2.90.29-0.5)
+  * Renamed libg++2.9 package to libg++2.8.2.
+  * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors.
+  * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors.
+  * debian/rules: New configuration flag for building with and without
+    libstdc++api patch; untested without ...
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Sun, 30 Aug 1998 12:04:22 +0200
+
+egcs (1.0.99-0.6) unstable; urgency=low
+
+  * PowerPC fixes.
+  * On powerpc, generate the -msoft-float libs and package them
+    as egcs-nof.
+  * Fix signed char error in gpc.
+  * Create a libg++.so.2.9 compatibility symlink.
+
+ -- Daniel Jacobowitz <dan@debian.org>  Tue, 25 Aug 1998 11:44:09 -0400
+
+egcs (1.0.99-0.5) unstable; urgency=low
+
+  * New upstream snapshot 19980824.
+  * New gpc snapshot gpc-980822; reenabled gpc for alpha.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Tue, 25 Aug 1998 01:21:08 +0200
+
+egcs (1.0.99-0.4) unstable; urgency=low
+
+  * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Wed, 19 Aug 1998 14:18:07 +0200
+
+egcs (1.0.99-0.3) unstable; urgency=low
+
+  * New upstream snapshot 19980816.
+  * debian/rules: build correct debian/control and debian/*.shlibs
+  * Enabled Haifa scheduler for ix86.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Mon, 17 Aug 1998 16:29:35 +0200
+
+egcs (1.0.99-0.2) unstable; urgency=low
+
+  * New upstream snapshot: egcs-19980812, minor changes only.
+  * Fixes for building on `primary' targets.
+  * Disabled gpc on `alpha' architecture.
+  * Uses debhelper 1.1.6
+  * debian/control.in: Replace older snapshot versions in favor of newer
+    normal versions.
+  * debian/rules: Fixes building of binary-arch target only.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Thu, 13 Aug 1998 11:59:41 +0200
+
+egcs (1.0.99-0.1) unstable; urgency=low
+
+  * New upstream version: pre egcs-1.1 version.
+  * Many changes ... for details see debian/changelog.snapshot in the
+    source package.
+  * New packages libstdc++2.9 and libstdc++2.9-dev.
+  * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev.
+  * New gpc snapshot gpc-980729: new package gpc.
+  * Uses debhelper 1.1
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Mon, 10 Aug 1998 13:00:27 +0200
+
+egcs-snapshot (19980803-4) experimental; urgency=low
+
+  * rebuilt debian/control.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  5 Aug 1998 08:51:47 +0200
+
+egcs-snapshot (19980803-3) experimental; urgency=low
+
+  * debian/rules: fix installation locations of NEWS, header and
+    `undocumented' files.
+  * man pages aren't compressed for the snapshot package.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  4 Aug 1998 17:34:31 +0200
+
+egcs-snapshot (19980803-2) experimental; urgency=low
+
+  * debian/rules: Uses debhelper. Old in debian/rules.old.
+    renamed postinst, prerm files for use with debhelper.
+  * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only,
+    when called for configure.
+  * egcs-docs is architecture independent package.
+  * new libg++ snapshot 980731.
+  * installed libstdc++ api patch (still buggy).
+
+ -- Matthias Klose <doko@debian.org>  Mon,  3 Aug 1998 13:20:59 +0200
+
+egcs-snapshot (19980729-1) experimental; urgency=low
+
+  * New snapshot version 19980729 from CVS archive.
+  * New gpc snapshot gpc-980729.
+  * Let gcc/configure decide about using the Haifa scheduler.
+  * Remove -DDEBIAN. That was needed for the security improvements with
+    regard to the /tmp problem. egcs-1.1 chooses another approach.
+  * Save test-protocol and extract gpc errors to gpc-test-summary.
+  * Tighten binutils dependency to 2.9.1.
+  * debian/rules: new build-info target
+  * debian/{control.in,rules}: _SO_ and BINUTILSV substitution.
+  * debian/rules: add dependency for debian/control.
+  * debian/rules: remove bin/c++filt
+  * TODO: next version will use debhelper; the unorganized moving of
+    files becomes unmanageable ...
+  * TODO: g++ headers in stdc++ package? check!
+
+ -- Matthias Klose <doko@debian.org>  Thu, 30 Jul 1998 12:10:20 +0200
+
+egcs-snapshot (19980721-1) experimental; urgency=low
+
+  * Unreleased. Infinite loops in executables made by gpc.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 22 Jul 1998 18:07:20 +0200
+
+egcs-snapshot (19980715-1) experimental; urgency=low
+
+  * New snapshot version from CVS archive.
+  * New gpc snapshot gpc-980715.
+  * New libg++ version libg++-2.8.2-980708. Changed versioning
+    schema for library. The major versions of libc, libstdc++ and the
+    g++ interface are coded in the library name. Use this new schema,
+    but provide a symlink to our previous schema, since the library
+    seems to be binary compatible.
+  * [debian/rules]: Fixed bug in build target, when bootstrap returns
+    with an error
+
+ -- Matthias Klose <doko@debian.org>  Wed, 15 Jul 1998 10:55:05 +0200
+
+egcs-snapshot (19980701-1) experimental; urgency=low
+
+  * New snapshot version from CVS archive.
+    Two check programs in libg++ had to be manually killed to finish the
+    testsuite (tBag and tSet).
+  * New gpc snapshot gpc-980629.
+  * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove
+    gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c
+    gcc/objc/objc-parse.y, since these files are part of the release).
+  * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the
+    snapshot. egcs-1.1 will have another solution.
+  * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler
+    error :-(
+  * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and
+    have moved again into the gcc-lib dir. They are installed under
+    libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ?
+  * debian/rules: reflect change of build dir of libraries.
+
+ -- Matthias Klose <doko@debian.org>  Wed,  2 Jul 1998 13:15:28 +0200
+
+egcs-snapshot (19980628-0.1) experimental; urgency=low
+
+  * New upstream snapshot version.
+  * Non-maintainer upload; Matthias appears to be absent currently.
+  * Updated shlibs.
+  * Merged changes from regular egcs:
+    * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or
+      newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc)
+      need this.
+    * [debian/rules] Clean up some generated files outside builddir,
+      so the .diff.gz becomes smaller.
+    * [debian/rules] Partial sync/update with the one for the regular egcs
+      version.
+  * [debian/rules] Make gcc/p/configure executable.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Wed,  1 Jul 1998 07:12:15 +0200
+
+egcs (1.0.3a-0.6) frozen unstable; urgency=low
+
+  * Some libg++ development files were in libstdc++2.8-dev rather than
+    libg++2.8-dev. Fixed this and dealt with upgrading from the earlier
+    versions (fixes #23908; this bug is not marked release-critical, but
+    is annoying and can be quite confusing for users. Therefore, I think
+    this fix should go in 2.0).
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Tue, 30 Jun 1998 11:10:14 +0200
+
+egcs (1.0.3a-0.5) frozen unstable; urgency=low
+
+  * Fixed location of .hP files (Fixes #23448).
+  * [debian/rules] simplified extraction of the files for libg++2.8-dev.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Wed, 17 Jun 1998 09:33:41 +0200
+
+egcs (1.0.3a-0.4) frozen unstable; urgency=low
+
+  * [gcc/gcc.c] There is one call to choose_temp_base for determining the
+    tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created
+    as a side effect. (fixes #23123 for egcs).
+  * [gcc/collect2.c] There's still a vulnerability here; I don't see how
+    I can fix it without leaving behind tempfiles though.
+  * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or
+    newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc)
+    need this.
+  * [debian/rules] Clean up some generated files outside builddir, so the
+    .diff.gz becomes smaller.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sat, 13 Jun 1998 09:06:52 +0200
+
+egcs-snapshot (19980608-1) experimental; urgency=low
+
+  * New snapshot version.
+
+ -- Matthias Klose <doko@debian.org>  Tue,  9 Jun 1998 14:07:44 +0200
+
+egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes)
+
+  * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher.
+    This works around #17768 which is considered release-critical.
+  * Changes by Matthias:
+    * [debian/README] Documentation of the compiler situation for Objective C.
+    * [debian/rules, debian/control.*] Generate control file from a master
+      file.
+    * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync
+      with the one for the egcs snapshots.
+  * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'.
+  * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453
+    for egcs).
+  * [gcc/gcc.c] A couple of temp files weren't marked for deletion.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sun, 31 May 1998 22:56:22 +0200
+
+egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes)
+
+  * Security improvements with regard to the /tmp problem
+    (gcc opens predictably named files in TMPDIR which can be abused via
+    symlinks)  (Fixes #19453 for egcs).
+    * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly
+      every time; affects gcc/gcc.c .
+    * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled
+      -DUSE_MKSTEMP .
+    * Security improvements: don't use the result of choose_temp_base in a
+      predictable fashion.
+      [gcc/gcc.c]:
+      * @c, @objective-c: use random name rather then tempbasename.i for
+        intermediate preprocessor output (%g.i -> %d%u).
+      * @c, @objective-c: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @c, @objective-c, @assembler-with-cpp: use previous random name
+        (cc1|cpp output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U)
+      [gcc/f/lang-specs.h]:
+      * @f77-cpp-input: use random name rather then tempbasename.i for
+        intermediate cpp output (%g.i -> %d%u).
+      * @f77-cpp-input: use previous random name (cpp output) rather than
+        tempbasename.i for f771 input (%g.i -> %U).
+      * @f77-cpp-input: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @f77-cpp-input: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: use random name rather then tempbasename.i for
+        intermediate ratfor output (%g.f -> %d%u).
+      * @ratfor: use previous random name (ratfor output) rather than
+        tempbasename.i for f771 input (%g.f -> %U).
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use previous random name
+        (ratfor output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U).
+      * @f77: use random name rather then tempbasename.s for
+        intermediate ratfor output (%g.f -> %d%u).
+      * @ratfor: use previous random name (ratfor output) rather than
+        tempbasename.i for f771 input (%g.f -> %U).
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use previous random name
+        (ratfor output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U).
+      * @f77: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @f77: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %U).
+  * Run the testsuite (this requires the dejagnu package in experimental;
+    unfortunately, it is difficult to distinguish this version from the one
+    in frozen).
+    if possible, and log the results in warn_summary and bootstrap-summary.
+  * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in
+    comment.
+  * Added notes on the Debian compiler setup [debian/README] to the
+    development packages.
+  * Matthias:
+    * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses".
+    * [debian/rules] Updated so it can be used for both egcs releases and
+      snapshots easily; added support for the GNU Pascal Compiler gpc.
+    * [contrib/test_summary, contrib/warn_summary] Added from CVS.
+    * Run compiler checks and include results in /usr/doc/<package>.
+    * Updates to the README.
+    * [debian/rules] Use assignments to speed up startup.
+  * [debian/rules] Show the important variables at the start of the build
+    process.
+  * [debian/control.secondary] Added a dependency of gobjc on egcc on
+    architectures where egcs provides the secondary compiler, as
+    /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829).
+  * [debian/control.*] Bumped Standards-Version; used shorter version
+    numbers in the dependency relationships (esthetic difference only);
+    fixed typo.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Tue, 26 May 1998 21:47:41 +0200
+
+egcs-snapshot (19980525-1) experimental; urgency=low
+
+  * New snapshot version.
+
+ -- Matthias Klose <doko@debian.org>  Tue, 26 May 1998 18:04:06 +0200
+
+egcs-snapshot (19980517-1) experimental; urgency=low
+
+  * "Initial" release of the egcs-snapshot package; many debian/* files
+    derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood
+    <galenh@micron.net>, NMU's by J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>)
+  * The egcs-snapshot packages can coexist with the packages of the
+    egcs release. Package names have a '-ss' appended.
+  * All packages are installed in a separate tree (/usr/lib/egcs-ss following
+    the FHSS).
+  * Made all snapshot packages extra, all snapshot packages conflict
+    with correspondent egcs packages, which are newer than the snapshot.
+  * Included libg++-2.8.1-980505.
+  * Included GNU Pascal (gpc-980511).
+  * Haifa scheduler enabled for all snapshot packages.
+  * Run compiler checks and include results in /usr/doc/<package>.
+  * Further information in /usr/doc/<package>/README.snapshot.
+
+ -- Matthias Klose <doko@debian.org>  Wed, 20 May 1998 11:14:06 +0200
+
+egcs (1.0.3a-0.1) frozen unstable; urgency=low
+
+  * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release)
+    (we were using 1.0.3-prerelease).  This includes the Haifa patches
+    we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had
+    since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches
+    we had is negligable.
+  * iostream info documentation was in the wrong package (libg++2.8-dev).
+    Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing
+    this to my attention). As 1.0.3-0.3 didn't make it out of Incoming,
+    I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed
+    already know enough to use --force-overwrite.
+  * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that
+    demangles Objective C method names in gcc error messages.
+  * Explicitly disable Haifa scheduling on Alpha, to make it easier to use
+    this package's diff with egcs snapshots, which may turn on Haifa
+    scheduling even though it is still unstable. (Requested by Chris Chimelis)
+  * Don't run "configure" again if builddir already exists (makes it faster
+    to restart builds in case one is hacking internals). Requested by
+    Johnnie Ingram.
+  * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1
+    and higher (the prototype has probably changed; having the declaration
+    broke Sparc compiles).
+  * [debian/rules] Determine all version number automatically (from the
+    version string in gcc/version.c).
+  * [debian/copyright] Updated FTP locations; added text about libg++ (fixes
+    #22465).
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sat, 16 May 1998 17:41:44 +0200
+
+egcs (1.0.3-0.3) frozen unstable; urgency=low
+
+  * Made an "egcs-doc" package containing documentation for egcs (e)gcc,
+    g++, gobjc, so that administrators can choose whether to have this
+    documenation or the documentation that comes with the GNU gcc package.
+    Dependency on this is Recommends: on architectures where egcs provides
+    the primary C compiler; Suggests: on the others (where GNU gcc is still
+    the primary C compiler).
+  * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more
+    up to date.
+  * Added iostream info documentation to libstdc++2.8-dev.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Wed, 13 May 1998 08:46:10 +0200
+
+egcs (1.0.3-0.2) frozen unstable; urgency=low
+
+  * Added libg++ that works with egcs, found at
+    ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz
+    (fixes #20587 (Severity: important)).
+  * The "libg++" and "libg++-dev" virtual packages now refer to the GNU
+    extensions.
+  * Added the g++ FAQ that comes with libg++ to the g++ package.
+  * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it
+    builds OK in builddir.
+  * Added -D__i386__ to the cpp predefines on intel.
+  * Patches Matthias supplied me with:
+    * Further 1.0.3 prerelease patches from CVS.
+      This includes patches to the Haifa scheduler. Alpha porters, please
+      check if this makes the Haifa scheduler OK again.
+    * Objective C patches from CVS.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Fri,  8 May 1998 14:43:20 +0200
+
+egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc)
+
+  * bug fixes only in new upstream version
+  * Applied patches from egcs CVS archive (egcs_1_03_prerelease)
+    (see gcc/ChangeLog in the egcs source package).
+  * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153).
+  * libstdc++2.8-dev now Conflicts: libg++27-dev (bo),
+    libg++272-dev (hamm) [regular packages] rather than
+    Conflicts: libg++-dev [virtual package] to prepare the way for "libg++"
+    to be used as a virtual package for a new libg++ package (i.e. an up to
+    date one, which not longer contains libstdc++, but only the GNU
+    extensions) that is compatible with the egcs g++ packages. Such a package
+    isn't available yet. Joel Klecker tried building libg++2.8.1.1a within
+    egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 .
+  * Filed Severity: important bugs against wxxt1-dev (#21707) because these
+    still depend on libg++-dev, which is removed in this version.
+    A fixed libsidplay1-dev has already been uploaded.
+  * libstdc++2.8 is now Section: base and Priority: required (as dselect is
+    linked against it).
+  * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported
+    that this caused problems on some machines.
+  * [gcc/extend.texi]
+    ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available;
+    use http://master.debian.org/~karlheg/Usenix88-lexic.pdf .
+    (fixes the egcs part of #20002).
+  * Updated Standards-Version.
+  * Changed chmod in debian/rules at Johnie Ingram's request.
+  * Rather than hardwire the Debian part of the packages' version number,
+    extract it from debian/changelog .
+  * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work.
+    (Fixes #21192).
+  * Applied workaround for the GNUstep packages on sparc systems.
+    See README.sparc (on sparc packages only) in the doc directory.
+    This affects the other compilers as well.
+  * Already done in 1.0.2-0.7: the gobjc package now provides a virtual
+    package objc-compiler.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Tue, 28 Apr 1998 12:05:28 +0200
+
+egcs (1.0.2-0.7) frozen unstable; urgency=low
+
+  * Separated out Objective-C compiler.
+  * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html
+
+ -- Matthias Klose <doko@debian.org>  Fri, 17 Apr 1998 10:25:48 +0200
+
+egcs (1.0.2-0.6) frozen unstable; urgency=low
+
+  * Due to upstream changes (libg++ is now only the GNU specific C++
+    classes, and is no longer maintained; libstdc++ contains the C++
+    standard library, including STL), the virtual "libg++-dev"
+    package's meaning has become confusing. Therefore, new or updated
+    packages should no longer use the virtual "libg++-dev" package.
+  * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1).
+    The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1)
+    which doesn't work, as libstc++-dev is a virtual package.
+  * Bumped Standards-Version.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Tue, 14 Apr 1998 11:52:08 +0200
+
+egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++)
+
+  * Modified shlibs file for libstdc++ to generate versioned dependencies,
+    as it is not link compatible with the 1.0.1-x versions in
+    project/experimental. (Fixes #20247, #20033)
+    Packages depending on libstd++ should be recompiled to fix their
+    dependencies.
+  * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or
+    newer.
+  * Fixed problems with the unknown(7) symlink for gcov.
+  * Reordering links now works.
+
+ -- Adam Heath <adam.heath@usa.net>  Sun, 12 Apr 1998 13:09:30 -0400
+
+egcs (1.0.2-0.4) frozen unstable; urgency=low
+
+  * Unreleased. This is the version Adam Heath received from me.
+  * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc
+    packages (including bo's gcc_2.7.2.1-8) is handled properly
+    (fixes #19931, #19672, #20217, #20593).
+  * Alpha architecture (fixes #20875):
+    * Patched gcc/config/alpha/linux.h for the gmon functions to operate
+      properly.
+    * Made egcs the primary C compiler.
+    * Enabled Hafia scheduling.
+  * Lintian-detected problems:
+    * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8
+    * E: egcc: binary-without-manpage gcov
+      Reported as wishlist bug; added link to undocumented(7).
+    * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555
+    * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Fri, 10 Apr 1998 14:46:46 +0200
+
+egcs (1.0.2-0.3) frozen unstable; urgency=low
+
+  * Really fixed dependencies.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Mon, 30 Mar 1998 11:30:26 +0200
+
+egcs (1.0.2-0.2) frozen unstable; urgency=low
+
+  * Fixed dependencies.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sat, 28 Mar 1998 13:58:58 +0100
+
+egcs (1.0.2-0.1) frozen unstable; urgency=low
+
+  * New upstream version; it now has -Di386 in CPP_PREDEFINES.
+  * Only used the debian/* patches from 1.0.1-2; the rest of it appears
+    to be in 1.0.2 already.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Fri, 27 Mar 1998 11:47:14 +0100
+
+egcs (1.0.1-2) unstable; urgency=low
+
+  * Integrated pre-release 1.0.2 patches
+  * Split out g++
+  * egcs may now provide either the primary or secondary C compiler
+
+ -- Galen Hazelwood <galenh@micron.net>  Sat, 14 Mar 1998 14:15:32 -0700
+
+egcs (1.0.1-1) unstable; urgency=low
+
+  * New upstream version
+  * egcs is now the standard Debian gcc!
+  * gcc now provides c-compiler (#15248 et al.)
+  * g77 now provides fortran77-compiler
+  * g77 dependencies now correct (#16991)
+  * /usr/doc/gcc/changelog.gz now has correct permissions (#16139)
+
+ -- Galen Hazelwood <galenh@micron.net>  Sat,  7 Feb 1998 19:22:30 -0700
+
+egcs (1.0-1) experimental; urgency=low
+
+  * First official release
+
+ -- Galen Hazelwood <galenh@micron.net>  Thu,  4 Dec 1997 16:30:11 -0700
+
+egcs (970917-1) experimental; urgency=low
+
+  * New upstream snapshot (There's a lot of stuff here as well, including
+    a new libstdc++, but it _still_ won't build...)
+  * eg77 driver now works properly
+
+ -- Galen Hazelwood <galenh@micron.net>  Wed, 17 Sep 1997 20:44:29 -0600
+
+egcs (970904-1) experimental; urgency=low
+
+  * New upstream snapshot
+
+ -- Galen Hazelwood <galenh@micron.net>  Sun,  7 Sep 1997 18:25:06 -0600
+
+egcs (ss-970814-1) experimental; urgency=low
+
+  * Initial packaging (of initial snapshot!)
+
+ -- Galen Hazelwood <galenh@micron.net>  Wed, 20 Aug 1997 00:36:28 +0000
+
+gcc272 (2.7.2.3-12) unstable; urgency=low
+
+  * Compiled on a glibc-2.0 based system.
+  * Reflect move of manpage to /usr/share in gcc.postinst as well.
+  * Moved gcc272-docs to section doc, priority optional.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Sat, 28 Aug 1999 13:42:13 +0200
+
+gcc272 (2.7.2.3-11) unstable; urgency=low
+
+  * Follow Debian policy for GNU system type (fixes #42657).
+  * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95
+    complaining about obsolete spec operators (using gcc -V 2.7.2.3).
+    Patch suggested by Zack Weinberg <zack@bitmover.com>.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Sun, 15 Aug 1999 20:12:21 +0200
+
+gcc272 (2.7.2.3-10) unstable; urgency=low
+
+  * Renamed source package to gcc272. The egcs source package is renamed
+    to gcc, because it's now the "official" GNU C compiler.
+  * Changed maintainer address to "Debian GCC maintainers".
+  * Install info and man stuff to /usr/share.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Thu, 27 May 1999 12:29:23 +0200
+
+gcc (2.7.2.3-9) unstable; urgency=low
+
+  * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info.
+    Fixes #36306.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Tue, 20 Apr 1999 07:32:58 +0200
+
+gcc (2.7.2.3-8) unstable; urgency=low
+
+  * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272.
+    On i386, sparc and m68k, this package is compiled against glibc2.0.
+  * The cpp package is built from the egcs source package.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Mon, 29 Mar 1999 22:48:50 +0200
+
+gcc (2.7.2.3-7) frozen unstable; urgency=low
+
+  * Separated out ObjC compiler to gobjc27 package.
+  * Changed maintainer address.
+  * Synchronized README.Debian with egcs-1.1.1-3.
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Tue, 29 Dec 1998 19:05:26 +0100
+
+gcc (2.7.2.3-6) frozen unstable; urgency=low
+
+  * Link with -lc on i386, m68k, sparc, when building shared libraries
+    (fixes #25122).
+
+ -- Matthias Klose <doko@cs.tu-berlin.de>  Thu,  3 Dec 1998 12:12:12 +0200
+
+gcc (2.7.2.3-5) frozen unstable; urgency=low
+
+  * Updated maintainer info.
+  * Updated Standards-Version; made lintian-clean.
+  * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to
+    the Conflicts.
+  * Updated the README and renamed it to README.Debian .
+  * Put a reference to /usr/doc/gcc/README.Debian in the info docs.
+  * Updated description of g++272 .
+  * Clean up generated info files, to keep the diff small.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Tue, 17 Nov 1998 20:05:59 +0100
+
+gcc (2.7.2.3-4.8) frozen unstable; urgency=high
+
+  * Non-maintainer release
+  * Fix type in extended description
+  * Removed wrong test in postinst
+  * Add preinst to clean up some stuff from an older gcc package properly
+    and stop man complaining about dangling symlinks
+
+ -- Wichert Akkerman <wakkerma@debian.org>  Fri, 17 Jul 1998 18:48:32 +0200
+
+gcc (2.7.2.3-4.7) frozen unstable; urgency=high
+
+  * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs'
+    becomes installable.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Mon, 15 Jun 1998 07:53:40 +0200
+
+gcc (2.7.2.3-4.6) frozen unstable; urgency=high
+
+  * [gcc.c] There is one call to choose_temp_base for determining the
+    tempdir to be used only;
+    #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect.
+    (fixes #23123 for gcc).
+  * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401).
+  * [debian/control] description for gcc-docs said `egcs' where it should have
+    said `gcc' (fixes #23396).
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Thu, 11 Jun 1998 12:48:50 +0200
+
+gcc (2.7.2.3-4.5) frozen unstable; urgency=high
+
+  * The previous version left temporary files behind, as they were not
+    marked for deletion afterwards.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sun, 31 May 1998 22:49:14 +0200
+
+gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes)
+
+  * Security improvements with regard to the /tmp problem
+    (gcc opens predictably named files in TMPDIR which can be abused via
+    symlinks)  (Fixes #19453 for gcc):
+    * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly
+      every time; affects gcc/gcc.c .
+    * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3)
+      rather than mktemp(3).
+    * Security improvements: don't use the result of choose_temp_base in a
+      predictable fashion.
+      [gcc.c]:
+      * @c, @objective-c: use random name rather then tempbasename.i for
+        intermediate preprocessor output (%g.i -> %d%u).
+      * @c, @objective-c: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @c, @objective-c, @assembler-with-cpp: use previous random name
+        (cc1|cpp output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U)
+      [f/lang-specs.h]:
+      * @f77-cpp-input: use random name rather then tempbasename.i for
+        intermediate cpp output (%g.i -> %d%u).
+      * @f77-cpp-input: use previous random name (cpp output) rather than
+        tempbasename.i for f771 input (%g.i -> %U).
+      * @f77-cpp-input: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @f77-cpp-input: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: use random name rather then tempbasename.i for
+        intermediate ratfor output (%g.f -> %d%u).
+      * @ratfor: use previous random name (ratfor output) rather than
+        tempbasename.i for f771 input (%g.f -> %U).
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use previous random name
+        (ratfor output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U).
+      * @f77: use random name rather then tempbasename.s for
+        intermediate ratfor output (%g.f -> %d%u).
+      * @ratfor: use previous random name (ratfor output) rather than
+        tempbasename.i for f771 input (%g.f -> %U).
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use previous random name
+        (ratfor output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U).
+      * @f77: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @f77: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %U).
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Sat, 30 May 1998 17:27:03 +0200
+
+gcc (2.7.2.3-4.3) frozen unstable; urgency=high
+
+  * The "alpha" patches from -4 affected a lot more than alpha support,
+    and in all likeliness broke compilation of libc6 2.0.7pre3-1
+    and 2.0.7pre1-4 . I removed them by selective application of the
+    diff between -4 and -4. (should fix #22292).
+  * Fixed reference to the trampolines paper (fixes #20002 for Debian;
+    this still needs to be forwarded).
+  * This is for frozen too. (obsoletes #22390 (request to move -4.2 to
+    frozen)).
+  * Split of gcc-docs package, so that the gcc can be succesfully installed
+    on systems that have egcs-docs installed.
+  * Added the README on the compiler situation that's already in the egcs
+    packages.
+  * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Thu, 28 May 1998 20:03:59 +0200
+
+gcc (2.7.2.3-4.2) unstable; urgency=low
+
+  * Still for unstable, as I have received no feedback about the g++272
+    package yet.
+  * gcc now Provides: objc-compiler .
+  * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling.
+    (fixes #19765, #20563)
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Wed, 22 Apr 1998 12:40:45 +0200
+
+gcc (2.7.2.3-4.1) unstable; urgency=low
+
+  * Bumped Standards-Version.
+  * Forked off a g++272 package (e.g. for code that uses the GNU extensions
+    in libg++); for now this is in "unstable" only; feedback appreciated.
+  * Some cleanup (lintian): permissions, absolute link, gzip manpage.
+
+ -- J.H.M. Dassen (Ray) <jdassen@wi.LeidenUniv.nl>  Fri, 17 Apr 1998 13:05:25 +0200
+
+gcc (2.7.2.3-4) unstable; urgency=low
+
+  * Added alpha patches
+  * Only build C and objective-c compilers, split off g++
+
+ -- Galen Hazelwood <galenh@micron.net>  Sun,  8 Mar 1998 21:16:39 -0700
+
+gcc (2.7.2.3-3) unstable; urgency=low
+
+  * Added patches for m68k
+  * Added patches for sparc (#13968)
+
+ -- Galen Hazelwood <galenh@micron.net>  Fri, 17 Oct 1997 18:25:21 -0600
+
+gcc (2.7.2.3-2) unstable; urgency=low
+
+  * Added g77 support (g77 0.5.21)
+
+ -- Galen Hazelwood <galenh@micron.net>  Wed, 10 Sep 1997 18:44:54 -0600
+
+gcc (2.7.2.3-1) unstable; urgency=low
+
+  * New upstream version
+  * Now using pristine source
+  * Removed misplaced paragraph in cpp.texi (#10877)
+  * Fix security bug for temporary files (#5298)
+  * Added Suggests: libg++-dev (#12335)
+  * Patched objc/thr-posix.c to support conditions (#12502)
+
+ -- Galen Hazelwood <galenh@micron.net>  Mon,  8 Sep 1997 12:20:07 -0600
+
+gcc (2.7.2.2-7) unstable; urgency=low
+
+  * Made cc and c++ managed through alternates mechanism (for egcs)
+
+ -- Galen Hazelwood <galenh@micron.net>  Tue, 19 Aug 1997 22:37:03 +0000
+
+gcc (2.7.2.2-6) unstable; urgency=low
+
+  * Tweaked Objective-C thread support (#11069)
+
+ -- Galen Hazelwood <galenh@micron.net>  Wed,  9 Jul 1997 11:56:57 -0600
+
+gcc (2.7.2.2-5) unstable; urgency=low
+
+  * More updated m68k patches
+  * Now conflicts with libc5-dev (#10006, #10112)
+  * More strict Depends: cpp, prevents version mismatch (#9954)
+
+ -- Galen Hazelwood <galenh@micron.net>  Thu, 19 Jun 1997 01:29:02 -0600
+
+gcc (2.7.2.2-4) unstable; urgency=low
+
+  * Moved to unstable
+  * Temporarily removed fortran support (waiting for new g77)
+  * Updated m68k patches
+
+ -- Galen Hazelwood <galenh@micron.net>  Fri,  9 May 1997 13:35:14 -0600
+
+gcc (2.7.2.2-3) experimental; urgency=low
+
+  * Built against libc6 (fixes bug #8511)
+
+ -- Galen Hazelwood <galenh@micron.net>  Fri, 4 Apr 1997 13:30:10 -0700
+
+gcc (2.7.2.2-2) experimental; urgency=low
+
+  * Fixed configure to build crt{begin,end}S.o on i386
+
+ -- Galen Hazelwood <galenh@micron.net>  Tue, 11 Mar 1997 16:15:02 -0700
+
+gcc (2.7.2.2-1) experimental; urgency=low
+
+  * Built for use with libc6-dev (experimental purposes only!)
+  * Added m68k patches from Andreas Schwab
+
+ -- Galen Hazelwood <galenh@micron.net>  Fri, 7 Mar 1997 12:44:17 -0700
+
+gcc (2.7.2.1-7) unstable; urgency=low
+
+  * Patched to support g77 0.5.20
+
+ -- Galen Hazelwood <galenh@micron.net>  Thu, 6 Mar 1997 22:20:23 -0700
+
+gcc (2.7.2.1-6) unstable; urgency=low
+
+  * Added (small) manpage for protoize/unprotoize (fixes bug #6904)
+  * Removed -lieee from specs file (fixes bug #7741)
+  * No longer builds aout-gcc
+
+ -- Galen Hazelwood <galenh@micron.net>  Mon, 3 Mar 1997 11:10:20 -0700
+
+gcc (2.7.2.1-5) unstable; urgency=low
+
+  * debian/control now lists cpp in section "interpreters"
+  * Re-added Objective-c patches for unstable
+
+ -- Galen Hazelwood <galenh@micron.net>  Wed, 22 Jan 1997 10:27:52 -0700
+
+gcc (2.7.2.1-4) stable unstable; urgency=low
+
+  * Changed original source file so dpkg-source -x works
+  * Removed Objective-c patches (unsafe for stable)
+  * Built against rex's libc, so fixes placed in -3 are available to
+    those still using rex
+
+ -- Galen Hazelwood <galenh@micron.net>  Tue, 21 Jan 1997 11:11:53 -0700
+
+gcc (2.7.2.1-3) unstable; urgency=low
+
+  * New (temporary) maintainer
+  * Updated to new standards and source format
+  * Integrated aout-gcc into gcc source package
+  * Demoted aout-gcc to Priority "extra"
+  * cpp package description more clear (fixes bug #5428)
+  * Removed cpp "Replaces: gcc" (fixes bug #5762)
+  * Minor fix to invoke.texi (fixes bug #2909)
+  * Added latest Objective-C patches for GNUstep people (fixes bug #4657)
+
+ -- Galen Hazelwood <galenh@micron.net>  Sun, 5 Jan 1997 09:57:36 -0700
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.powerpcspe
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.powerpcspe
@@ -0,0 +1,8 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/compat
+++ gcc-4.6-4.6.3/debian/compat
@@ -0,0 +1 @@
+5
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.ppc64
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.ppc64
@@ -0,0 +1,5 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/lib32stdc++6.symbols.kfreebsd-amd64
+++ gcc-4.6-4.6.3/debian/lib32stdc++6.symbols.kfreebsd-amd64
@@ -0,0 +1,6 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/gij-wrapper-BV.1
+++ gcc-4.6-4.6.3/debian/gij-wrapper-BV.1
@@ -0,0 +1,22 @@
+.TH GIJ-WRAPPER 1 "August 11, 2001" gij-wrapper "Java User's Manual"
+.SH NAME
+gij-wrapper \- a wrapper around gij
+
+.SH SYNOPSIS
+gij-wrapper [\fB\s-1OPTION\s0\fR] ... \fI\s-1JARFILE\s0\fR [\fI\s-1ARGS\s0\fR...]
+.PP
+gij-wrapper [\fB\-jar\fR] [\fB\s-1OPTION\s0\fR] ... \fI\s-1CLASS\s0\fR [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fBgij-wrapper\fR is a wrapper around gij(1) to be called as the java
+interpreter. Options different for java(1) and gij(1) are translated,
+options unknown to gij(1) are silently ignored.
+
+.SH OPTIONS
+See gij-@BV@(1) for a list of options that gij understands.
+
+.SH "SEE ALSO"
+.BR gij-@BV@(1)
+,
+.BR java(1)
--- gcc-4.6-4.6.3.orig/debian/gcjh-wrapper-BV
+++ gcc-4.6-4.6.3/debian/gcjh-wrapper-BV
@@ -0,0 +1,86 @@
+#!/usr/bin/perl -w
+#
+# Starts the GNU Java header generator.
+#
+# Command-line arguments should be in the style of Sun's javah command;
+# these will be converted to gcjh arguments before being passed to the
+# gcjh itself.
+#
+# Copyright (C) 2003 by Peter Hawkins <peterh@debian.org>
+# Haphazardly hacked up based on the gcj-wrapper perl script.
+# Copyright (C) 2002-2003 by Ben Burton <bab@debian.org>
+# Based on the original gcj-wrapper-3.2 shell script.
+
+use strict;
+
+# The real Java header generator:
+my $javaHeaderGen = '/usr/bin/gcjh-@BV@';
+
+# The command-line arguments to pass to the real Java compiler:
+my @commandLine;
+
+# Build the command-line from the arguments given.
+my $parsingOptions = 1;
+my $copyNextArg = 0;
+my $ignoreNextArg = 0;
+my $appendNextArg = '';
+foreach my $arg (@ARGV) {
+    # See if we already know what to do with this argument.
+    if ($ignoreNextArg) {
+        # Throw it away.
+        $ignoreNextArg = 0;
+        next;
+    } elsif ($copyNextArg or not $parsingOptions) {
+        # Copy it directly.
+        push @commandLine, $arg;
+        $copyNextArg = 0;
+        next;
+    } elsif ($appendNextArg) {
+        # Append it to $appendNextArg and then copy directly.
+        push @commandLine, ($appendNextArg . $arg);
+        $appendNextArg = '';
+        next;
+    }
+
+    # Try to interpret Sun-style options.
+    if ($arg eq '-version') {
+        push @commandLine, '--version';
+    } elsif ($arg eq '-h' or $arg eq '-help') {
+        push @commandLine, '--help';
+    } elsif ($arg eq '-verbose') {
+        push @commandLine, '--verbose';
+    } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') {
+        $appendNextArg = '--classpath=';
+    } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or
+             $arg eq '-extdirs') {
+        $appendNextArg = "-".$arg . '=';
+    } elsif ($arg eq '-d') {
+        push @commandLine, '-d';
+        $copyNextArg = 1;
+    } elsif ($arg eq '-o') {
+        push @commandLine, '-o';
+        $copyNextArg = 1;
+    } elsif ($arg eq '-stubs') {
+        push @commandLine, '-stubs';
+    } elsif ($arg eq '-jni') {
+        push @commandLine, '-jni';
+    } elsif ($arg =~ /^-old/) {
+        # An extended Sun option (which we don't support).
+        push @commandLine, '--help' if ($arg eq '-old');
+    } elsif ($arg =~ /^-/) {
+        # An unsupported standalone option.
+    } else {
+        # Some non-option argument has been given.
+        # Stop parsing options at this point.
+        push @commandLine, $arg;
+        $parsingOptions = 0;
+    }
+}
+
+# Was there a partial argument that was never completed?
+push @commandLine, $appendNextArg if ($appendNextArg);
+
+# Call the real Java header generator.
+my @fullCommandLine = ( $javaHeaderGen );
+push @fullCommandLine, @commandLine;
+exec @fullCommandLine or exit(1);
--- gcc-4.6-4.6.3.orig/debian/control.m4
+++ gcc-4.6-4.6.3/debian/control.m4
@@ -0,0 +1,2472 @@
+divert(-1)
+
+define(`checkdef',`ifdef($1, , `errprint(`error: undefined macro $1
+')m4exit(1)')')
+define(`errexit',`errprint(`error: undefined macro `$1'
+')m4exit(1)')
+
+dnl The following macros must be defined, when called:
+dnl ifdef(`SRCNAME',	, errexit(`SRCNAME'))
+dnl ifdef(`PV',		, errexit(`PV'))
+dnl ifdef(`ARCH',		, errexit(`ARCH'))
+
+dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.)
+
+define(`PN', `$1')
+ifdef(`PRI', `', `
+    define(`PRI', `$1')
+')
+define(`MAINTAINER', `Debian GCC Maintainers <debian-gcc@lists.debian.org>')
+
+define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')')
+
+divert`'dnl
+dnl --------------------------------------------------------------------------
+Source: SRCNAME
+Section: devel
+Priority: PRI(optional)
+ifelse(DIST,`Ubuntu',`dnl
+ifelse(regexp(SRCNAME, `gnat\|gdc-'),0,`dnl
+Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
+', `dnl
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+')dnl SRCNAME
+XSBC-Original-Maintainer: MAINTAINER
+', `dnl
+Maintainer: MAINTAINER
+')dnl DIST
+ifelse(regexp(SRCNAME, `gnat'),0,`dnl
+Uploaders: Ludovic Brenta <lbrenta@debian.org>
+', regexp(SRCNAME, `gdc'),0,`dnl
+Uploaders: Iain Buclaw <ibuclaw@ubuntu.com>
+', `dnl
+Uploaders: Matthias Klose <doko@debian.org>
+')dnl SRCNAME
+Standards-Version: 3.9.3
+ifdef(`TARGET',`dnl cross
+Build-Depends: DPKG_BUILD_DEP debhelper (>= 5.0.62), LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTOGEN_BUILD_DEP AUTO_BUILD_DEP SOURCE_BUILD_DEP CROSS_BUILD_DEP CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP ELF_BUILD_DEP, zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, make (>= 3.81), quilt
+',`dnl native
+Build-Depends: DPKG_BUILD_DEP debhelper (>= 5.0.62), GCC_MULTILIB_BUILD_DEP LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP AUTO_BUILD_DEP AUTOGEN_BUILD_DEP libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSV) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), FORTRAN_BUILD_DEP locales, procps, sharutils, JAVA_BUILD_DEP GNAT_BUILD_DEP GDC_BUILD_DEP SPU_BUILD_DEP CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP ELF_BUILD_DEP CHECK_BUILD_DEP realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81), quilt
+Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP JAVA_BUILD_INDEP
+')dnl
+Build-Conflicts: binutils-gold
+ifelse(regexp(SRCNAME, `gnat'),0,`dnl
+Homepage: http://gcc.gnu.org/
+', regexp(SRCNAME, `gdc'),0,`dnl
+Homepage: http://bitbucket.org/goshawk/gdc/
+', `dnl
+Homepage: http://gcc.gnu.org/
+')dnl SRCNAME
+XS-Vcs-Browser: http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc`'PV/
+XS-Vcs-Svn: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc`'PV
+
+ifelse(regexp(SRCNAME, `gcc-snapshot'),0,`dnl
+Package: gcc-snapshot`'TS
+Architecture: any
+Section: devel
+Priority: extra
+Depends: binutils`'TS (>= ${binutils:Version}), ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, ${snap:depends}, ${shlibs:Depends}, ${dep:ecj}, python, ${misc:Depends}
+Recommends: ${snap:recommends}
+Suggests: ${dep:gold}
+Provides: c++-compiler`'TS`'ifdef(`TARGET',`',`, c++abi2-dev')
+Description: A SNAPSHOT of the GNU Compiler Collection
+ This package contains a recent development SNAPSHOT of all files
+ contained in the GNU Compiler Collection (GCC).
+ .
+ The source code for this package has been exported from SVN trunk.
+ .
+ DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES!
+ .
+ This package will NEVER hit the testing distribution. It is used for
+ tracking gcc bugs submitted to the Debian BTS in recent development
+ versions of gcc.
+',`dnl gcc-X.Y
+
+dnl default base package dependencies
+define(`BASETARGET', `')
+define(`BASEDEP', `gcc`'PV-base (= ${gcc:Version})')
+define(`SOFTBASEDEP', `gcc`'PV-base (>= ${gcc:SoftVersion})')
+
+dnl base, when building libgcc out of the gcj source; needed if new symbols
+dnl in libgcc are used in libgcj.
+ifelse(index(SRCNAME, `gcj'), 0, `
+define(`BASEDEP', `gcj`'PV-base (= ${gcj:Version})')
+define(`SOFTBASEDEP', `gcj`'PV-base (>= ${gcj:SoftVersion})')
+')
+
+ifdef(`TARGET', `', `
+ifenabled(`gccbase',`
+
+Package: gcc`'PV-base
+Architecture: any
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Section: libs
+Priority: PRI(required)
+Depends: ${misc:Depends}
+Replaces: ${base:Replaces}
+Breaks: gcj-4.6-base (<< 4.6.1-4~), gnat-4.6 (<< 4.6.1-5~), dehydra (<= 0.9.hg20110609-2)
+Description: GCC, the GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+ifdef(`BASE_ONLY', `dnl
+ .
+ This version of GCC is not yet available for this architecture.
+ Please use the compilers from the gcc-snapshot package for testing.
+')`'dnl
+')`'dnl
+')`'dnl native
+
+ifenabled(`gccxbase',`
+dnl override default base package dependencies to cross version
+dnl This creates a toolchain that doesnt depend on the system -base packages
+define(`BASETARGET', `PV`'TS')
+define(`BASEDEP', `gcc`'BASETARGET-base (= ${gcc:Version})')
+define(`SOFTBASEDEP', `gcc`'BASETARGET-base (>= ${gcc:SoftVersion})')
+
+Package: gcc`'BASETARGET-base
+Architecture: any
+Section: devel
+Priority: PRI(extra)
+Depends: ${misc:Depends}
+Description: GCC, the GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+')`'dnl
+
+ifenabled(`java',`
+Package: gcj`'PV-base
+Architecture: any
+Section: libs
+Priority: PRI(optional)
+Depends: ${misc:Depends}
+Description: GCC, the GNU Compiler Collection (gcj base package)
+ This package contains files common to all java related packages
+ built from the GNU Compiler Collection (GCC).
+')`'dnl java
+
+ifenabled(`ada',`
+Package: gnat`'PV-base
+Architecture: any
+Section: libs
+Priority: PRI(optional)
+Depends: ${misc:Depends}
+Breaks: gcc-4.6 (<< 4.6.1-8~)
+Description: GNU Ada compiler (common files)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ This package contains files common to all GNAT related packages.
+')`'dnl ada
+
+ifenabled(`libgcc',`
+Package: libgcc1`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',required)
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libgcc1-TARGET-dcv1',
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+Breaks: ${multiarch:breaks}
+')`Provides: libgcc1-armel [armel], libgcc1-armhf [armhf]')
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libgcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libgcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same'))
+ifdef(`TARGET',`dnl',`Provides: libgcc1-dbg-armel [armel], libgcc1-dbg-armhf [armhf]')
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libgcc2`'LS
+Architecture: ifdef(`TARGET',`all',`m68k')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',required)
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libgcc2-TARGET-dcv1
+',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+Breaks: ${multiarch:breaks}
+'))`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libgcc2-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`m68k')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libgcc2`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same
+'))`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libgcc
+
+ifenabled(`lib4gcc',`
+Package: libgcc4`'LS
+Architecture: ifdef(`TARGET',`all',`hppa')
+ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+Breaks: ${multiarch:breaks}
+'))`'dnl
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',required)
+Depends: ifdef(`STANDALONEJAVA',`gcj`'PV-base (>= ${gcj:Version})',`BASEDEP'), ${shlibs:Depends}, ${misc:Depends}
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libgcc4-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`hppa')
+ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same
+'))`'dnl
+Section: debug
+Priority: extra
+Depends: BASEDEP, libgcc4`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib4gcc
+
+ifenabled(`lib64gcc',`
+Package: lib64gcc1`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends}
+ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1
+',`')`'dnl
+Conflicts: libgcc`'GCC_SO`'LS (<= 1:3.3-0pre9)
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (64bit)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib64gcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib64gcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends}
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib64gcc
+
+ifenabled(`lib32gcc',`
+Package: lib32gcc1`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: extra
+Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1
+',`')`'dnl
+Description: GCC support library (32 bit Version)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib32gcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib32gcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends}
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib32gcc1
+
+ifenabled(`libneongcc',`
+Package: libgcc1-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC support library [neon optimized]
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneongcc1
+
+ifenabled(`libhfgcc',`
+Package: libhfgcc1`'LS
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libhfgcc1-TARGET-dcv1
+',`Conflicts: libgcc1-armhf [biarchhf_archs]
+')`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (hard float ABI)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libhfgcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libhfgcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armhf [biarchhf_archs]')
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libhfgcc
+
+ifenabled(`libsfgcc',`
+Package: libsfgcc1`'LS
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libsfgcc1-TARGET-dcv1
+',`Conflicts: libgcc1-armel [biarchsf_archs]
+')`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (soft float ABI)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libsfgcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libsfgcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armel [biarchsf_archs]')
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libsfgcc
+
+ifenabled(`libn32gcc',`
+Package: libn32gcc1`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libn32gcc1-TARGET-dcv1
+',`')`'dnl
+Conflicts: libgcc`'GCC_SO`'LS (<= 1:3.3-0pre9)
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (n32)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libn32gcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libn32gcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends}
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libn32gcc
+
+ifdef(`TARGET', `', `
+ifenabled(`libgmath',`
+Package: libgccmath`'GCCMATH_SO`'LS
+Architecture: i386
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+')`'dnl
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC math support library
+ Support library for GCC.
+
+Package: lib32gccmath`'GCCMATH_SO`'LS
+Architecture: amd64
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC math support library (32bit)
+ Support library for GCC.
+
+Package: lib64gccmath`'GCCMATH_SO`'LS
+Architecture: i386
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC math support library (64bit)
+ Support library for GCC.
+')`'dnl
+')`'dnl native
+
+ifenabled(`cdev',`
+Package: gcc`'PV`'TS
+Architecture: any
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, cpp`'PV`'TS (= ${gcc:Version}), binutils`'TS (>= ${binutils:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends}
+Recommends: ${dep:libcdev}
+Suggests: ${gcc:multilib}, libmudflap`'MF_SO`'PV-dev`'LS (>= ${gcc:Version}), gcc`'PV-doc (>= ${gcc:SoftVersion}), gcc`'PV-locales (>= ${gcc:SoftVersion}), libgcc`'GCC_SO-dbg`'LS, libgomp`'GOMP_SO-dbg`'LS, libquadmath`'QMATH_SO-dbg`'LS, libmudflap`'MF_SO-dbg`'LS, ${dep:libcloog}, ${dep:gold}
+Provides: c-compiler`'TS
+Description: GNU C compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+ifdef(`TARGET', `dnl
+ .
+ This package contains C cross-compiler for TARGET architecture.
+')`'dnl
+
+ifenabled(`multilib',`
+Package: gcc`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarch}, ${dep:libsspbiarch}, ${dep:libgompbiarch}, ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libmudflapbiarch}
+Description: GNU C compiler (multilib files)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+')`'dnl multilib
+
+ifenabled(`plugindev',`
+Package: gcc`'PV-plugin-dev`'TS
+Architecture: any
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), GMP_BUILD_DEP ${shlibs:Depends}, ${misc:Depends}
+Description: Files for GNU GCC plugin development.
+ This package contains (header) files for GNU GCC plugin development. It
+ is only used for the development of GCC plugins, but not needed to run
+ plugins.
+')`'dnl plugindev
+')`'dnl cdev
+
+ifenabled(`cdev',`
+Package: gcc`'PV-hppa64
+Architecture: ifdef(`TARGET',`any',hppa)
+Section: devel
+Priority: PRI(optional)
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3)
+Description: GNU C compiler (cross compiler for hppa64)
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+
+ifdef(`TARGET', `', `
+Package: gcc`'PV-spu
+Architecture: powerpc ppc64
+Section: devel
+Priority: PRI(optional)
+Depends: BASEDEP, binutils-spu (>= 2.18.1~cvs20080103-3), newlib-spu, ${shlibs:Depends}, ${misc:Depends}
+Provides: spu-gcc
+Description: SPU cross-compiler (preprocessor and C compiler)
+ GNU Compiler Collection for the Cell Broadband Engine SPU (preprocessor
+ and C compiler).
+
+Package: g++`'PV-spu
+Architecture: powerpc ppc64
+Section: devel
+Priority: PRI(optional)
+Depends: BASEDEP, gcc`'PV-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: spu-g++
+Description: SPU cross-compiler (C++ compiler)
+ GNU Compiler Collection for the Cell Broadband Engine SPU (C++ compiler).
+
+Package: gfortran`'PV-spu
+Architecture: powerpc ppc64
+Section: devel
+Priority: PRI(optional)
+Depends: BASEDEP, gcc`'PV-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: spu-gfortran
+Description: SPU cross-compiler (Fortran compiler)
+ GNU Compiler Collection for the Cell Broadband Engine SPU (Fortran compiler).
+
+')`'dnl native
+')`'dnl cdev
+
+ifenabled(`cdev',`
+Package: cpp`'PV`'TS
+Architecture: any
+Section: ifdef(`TARGET',`devel',`interpreters')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion})
+Replaces: gcc-4.6 (<< 4.6.1-9)
+Description: GNU C preprocessor
+ A macro processor that is used automatically by the GNU C compiler
+ to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor but not the compiler.
+ifdef(`TARGET', `dnl
+ .
+ This package contains preprocessor configured for TARGET architecture.
+')`'dnl
+
+ifdef(`TARGET', `', `
+ifenabled(`gfdldoc',`
+Package: cpp`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Description: Documentation for the GNU C preprocessor (cpp)
+ Documentation for the GNU C preprocessor in info `format'.
+')`'dnl gfdldoc
+')`'dnl native
+
+ifdef(`TARGET', `', `
+Package: gcc`'PV-locales
+Architecture: all
+Section: devel
+Priority: PRI(optional)
+Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:SoftVersion}), ${misc:Depends}
+Recommends: gcc`'PV (>= ${gcc:SoftVersion})
+Description: GCC, the GNU compiler collection (native language support files)
+ Native language support for GCC. Lets GCC speak your language,
+ if translations are available.
+ .
+ Please do NOT submit bug reports in other languages than "C".
+ Always reset your language settings to use the "C" locales.
+')`'dnl native
+')`'dnl cdev
+
+ifenabled(`c++',`
+ifenabled(`c++dev',`
+Package: g++`'PV`'TS
+Architecture: any
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: c++-compiler`'TS`'ifdef(`TARGET)',`',`, c++abi2-dev')
+Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libstdc++CXX_SO`'PV-dbg`'LS
+Description: GNU C++ compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+ifdef(`TARGET', `dnl
+ .
+ This package contains C++ cross-compiler for TARGET architecture.
+')`'dnl
+
+ifenabled(`multilib',`
+Package: g++`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libcxxbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libcxxbiarchdbg}
+Description: GNU C++ compiler (multilib files)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+')`'dnl multilib
+')`'dnl c++dev
+')`'dnl c++
+
+ifenabled(`mudflap',`
+ifenabled(`libmudf',`
+Package: libmudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+Breaks: ${multiarch:breaks}
+')`Provides: libmudflap'MF_SO`-armel [armel], libmudflap'MF_SO`-armhf [armhf]')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC mudflap shared support libraries
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: libmudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+')`Provides: libmudflap'MF_SO`-dbg-armel [armel], libmudflap'MF_SO`-dbg-armhf [armhf]')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libmudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC mudflap shared support libraries (debug symbols)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: lib32mudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libmudflap0 (<< 4.1)
+Conflicts: ${confl:lib32}
+Description: GCC mudflap shared support libraries (32bit)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: lib32mudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib32mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC mudflap shared support libraries (32 bit debug symbols)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: lib64mudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libmudflap0 (<< 4.1)
+Description: GCC mudflap shared support libraries (64bit)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: lib64mudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib64mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC mudflap shared support libraries (64 bit debug symbols)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: libn32mudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libmudflap0 (<< 4.1)
+Description: GCC mudflap shared support libraries (n32)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: libn32mudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libn32mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC mudflap shared support libraries (n32 debug symbols)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+ifenabled(`libhfmudflap',`
+Package: libhfmudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+ifdef(`TARGET',`dnl',`Conflicts: libmudflap`'MF_SO`'-armhf [biarchhf_archs]')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC mudflap shared support libraries (hard float)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: libhfmudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libhfmudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libmudflap`'MF_SO`'-dbg-armhf [biarchhf_archs]')
+Description: GCC mudflap shared support libraries (hard float debug symbols)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+')`'dnl libhfmudflap
+
+ifenabled(`libsfmudflap',`
+Package: libsfmudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libmudflap`'MF_SO`'-armel [biarchsf_archs]')
+Description: GCC mudflap shared support libraries (soft float)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+
+Package: libsfmudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libsfmudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libmudflap`'MF_SO`'-dbg-armel [biarchsf_archs]')
+Description: GCC mudflap shared support libraries (soft float debug symbols)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+')`'dnl libsfmudflap
+')`'dnl libmudf
+
+Package: libmudflap`'MF_SO`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, libmudflap`'MF_SO`'LS (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${sug:libmudflapdev}
+Conflicts: libmudflap0-dev
+Description: GCC mudflap support libraries (development files)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+ .
+ This package contains the headers and the static libraries.
+')`'dnl mudflap
+
+ifdef(`TARGET', `', `
+ifenabled(`ssp',`
+Package: libssp`'SSP_SO`'LS
+Architecture: any
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+')`'dnl
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC stack smashing protection library
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: lib32ssp`'SSP_SO`'LS
+Architecture: biarch32_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libssp0 (<< 4.1)
+Conflicts: ${confl:lib32}
+Description: GCC stack smashing protection library (32bit)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: lib64ssp`'SSP_SO`'LS
+Architecture: biarch64_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libssp0 (<< 4.1)
+Description: GCC stack smashing protection library (64bit)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: libn32ssp`'SSP_SO`'LS
+Architecture: biarchn32_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libssp0 (<< 4.1)
+Description: GCC stack smashing protection library (n32)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: libhfssp`'SSP_SO`'LS
+Architecture: biarchhf_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC stack smashing protection library (hard float ABI)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: libsfssp`'SSP_SO`'LS
+Architecture: biarchsf_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC stack smashing protection library (soft float ABI)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+')`'dnl
+')`'dnl native
+
+ifenabled(`libgomp',`
+Package: libgomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+Breaks: ${multiarch:breaks}
+')`Provides: libgomp'GOMP_SO`-armel [armel], libgomp'GOMP_SO`-armhf [armhf]')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libgomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libgomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+')`Provides: libgomp'GOMP_SO`-dbg-armel [armel], libgomp'GOMP_SO`-dbg-armhf [armhf]')
+Description: GCC OpenMP (GOMP) support library (debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib32gomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: GCC OpenMP (GOMP) support library (32bit)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib32gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib32gomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (32 bit debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib64gomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (64bit)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib64gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib64gomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (64bit debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libn32gomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (n32)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libn32gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libn32gomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (n32 debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+
+ifenabled(`libhfgomp',`
+Package: libhfgomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armhf [biarchhf_archs]')
+Description: GCC OpenMP (GOMP) support library (hard float ABI)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libhfgomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libhfgomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armhf [biarchhf_archs]')
+Description: GCC OpenMP (GOMP) support library (hard float ABI debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+')`'dnl libhfgomp
+
+ifenabled(`libsfgomp',`
+Package: libsfgomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armel [biarchsf_archs]')
+Description: GCC OpenMP (GOMP) support library (soft float ABI)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libsfgomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libsfgomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armel [biarchsf_archs]')
+Description: GCC OpenMP (GOMP) support library (soft float ABI debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+')`'dnl libsfgomp
+
+ifenabled(`libneongomp',`
+Package: libgomp`'GOMP_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library [neon optimized]
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneongomp
+')`'dnl libgomp
+
+ifenabled(`libqmath',`
+Package: libquadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+'))`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC Quad-Precision Math Library
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libquadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libquadmath`'QMATH_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+'))`'dnl
+Description: GCC Quad-Precision Math Library (debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+Package: lib32quadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: GCC Quad-Precision Math Library (32bit)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: lib32quadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib32quadmath`'QMATH_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC Quad-Precision Math Library (32 bit debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+Package: lib64quadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC Quad-Precision Math Library  (64bit)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: lib64quadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib64quadmath`'QMATH_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC Quad-Precision Math Library  (64bit debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+Package: libn32quadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC Quad-Precision Math Library (n32)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libn32quadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libn32quadmath`'QMATH_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC Quad-Precision Math Library (n32 debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+ifenabled(`libhfqmath',`
+Package: libhfquadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC Quad-Precision Math Library (hard float ABI)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libhfquadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libhfquadmath`'QMATH_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC Quad-Precision Math Library (hard float ABI debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+')`'dnl libhfqmath
+
+ifenabled(`libsfqmath',`
+Package: libsfquadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC Quad-Precision Math Library (soft float ABI)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libsfquadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libsfquadmath`'QMATH_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: GCC Quad-Precision Math Library (hard float ABI debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+')`'dnl libsfqmath
+')`'dnl libqmath
+
+ifenabled(`objpp',`
+ifenabled(`objppdev',`
+Package: gobjc++`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), ${shlibs:Depends}, libobjc`'OBJC_SO`'LS (>= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+Provides: objc++-compiler`'TS
+Description: GNU Objective-C++ compiler
+ This is the GNU Objective-C++ compiler, which compiles
+ Objective-C++ on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+')`'dnl obcppdev
+
+ifenabled(`multilib',`
+Package: gobjc++`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Objective-C++ compiler (multilib files)
+ This is the GNU Objective-C++ compiler, which compiles Objective-C++ on
+ platforms supported by the gcc compiler.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+')`'dnl multilib
+')`'dnl obcpp
+
+ifenabled(`objc',`
+ifenabled(`objcdev',`
+Package: gobjc`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc`'OBJC_SO`'LS (>= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libobjc`'OBJC_SO-dbg`'LS
+Provides: objc-compiler`'TS
+ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `dnl')
+Description: GNU Objective-C compiler
+ This is the GNU Objective-C compiler, which compiles
+ Objective-C on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+ifenabled(`multilib',`
+Package: gobjc`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Objective-C compiler (multilib files)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU Objective-C compiler, which compiles Objective-C on platforms
+ supported by the gcc compiler.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+')`'dnl multilib
+')`'dnl objcdev
+
+ifenabled(`libobjc',`
+Package: libobjc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+ifelse(OBJC_SO,`2',`Breaks: ${multiarch:breaks}
+',`')')`Provides: libobjc'OBJC_SO`-armel [armel], libobjc'OBJC_SO`-armhf [armhf]')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libobjc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+')`Provides: libobjc'OBJC_SO`-dbg-armel [armel], libobjc'OBJC_SO`-dbg-armhf [armhf]')
+Priority: extra
+Depends: BASEDEP, libobjc`'OBJC_SO`'LS (= ${gcc:Version}), libgcc`'GCC_SO-dbg`'LS, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl libobjc
+
+ifenabled(`lib64objc',`
+Package: lib64objc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (64bit)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib64objc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Priority: extra
+Depends: BASEDEP, lib64objc`'OBJC_SO`'LS (= ${gcc:Version}), lib64gcc`'GCC_SO-dbg`'LS, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (64 bit debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl lib64objc
+
+ifenabled(`lib32objc',`
+Package: lib32objc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: Runtime library for GNU Objective-C applications (32bit)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib32objc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Priority: extra
+Depends: BASEDEP, lib32objc`'OBJC_SO`'LS (= ${gcc:Version}), lib32gcc`'GCC_SO-dbg`'LS, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (32 bit debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl lib32objc
+
+ifenabled(`libn32objc',`
+Package: libn32objc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (n32)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libn32objc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Priority: extra
+Depends: BASEDEP, libn32objc`'OBJC_SO`'LS (= ${gcc:Version}), libn32gcc`'GCC_SO-dbg`'LS, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (n32 debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl libn32objc
+
+ifenabled(`libhfobjc',`
+Package: libhfobjc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armhf [biarchhf_archs]')
+Description: Runtime library for GNU Objective-C applications (hard float ABI)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libhfobjc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Priority: extra
+Depends: BASEDEP, libhfobjc`'OBJC_SO`'LS (= ${gcc:Version}), libhfgcc`'GCC_SO-dbg`'LS, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armhf [biarchhf_archs]')
+Description: Runtime library for GNU Objective-C applications (hard float ABI debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl libhfobjc
+
+ifenabled(`libsfobjc',`
+Package: libsfobjc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armel [biarchsf_archs]')
+Description: Runtime library for GNU Objective-C applications (soft float ABI)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libsfobjc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Priority: extra
+Depends: BASEDEP, libsfobjc`'OBJC_SO`'LS (= ${gcc:Version}), libsfgcc`'GCC_SO-dbg`'LS, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armel [biarchsf_archs]')
+Description: Runtime library for GNU Objective-C applications (soft float ABI debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl libsfobjc
+
+ifenabled(`libneonobjc',`
+Package: libobjc`'OBJC_SO-neon`'LS
+Section: libs
+Architecture: NEON_ARCHS
+Priority: PRI(optional)
+Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications  [NEON version]
+ Library needed for GNU ObjC applications linked against the shared library.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonobjc
+')`'dnl objc
+
+ifenabled(`fortran',`
+ifenabled(`fdev',`
+Package: gfortran`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libgfortran`'FORTRAN_SO`'LS (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: fortran95-compiler
+Suggests: ${gfortran:multilib}, gfortran`'PV-doc, libgfortran`'FORTRAN_SO-dbg`'LS
+Replaces: libgfortran`'FORTRAN_SO-dev
+Description: GNU Fortran compiler
+ This is the GNU Fortran compiler, which compiles
+ Fortran on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+ifenabled(`multilib',`
+Package: gfortran`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Fortran compiler (multilib files)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU Fortran compiler, which compiles Fortran on platforms
+ supported by the gcc compiler.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+')`'dnl multilib
+
+ifenabled(`gfdldoc',`
+Package: gfortran`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Description: Documentation for the GNU Fortran compiler (gfortran)
+ Documentation for the GNU Fortran compiler in info `format'.
+')`'dnl gfdldoc
+')`'dnl fdev
+
+ifenabled(`libgfortran',`
+Package: libgfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+Breaks: ${multiarch:breaks}
+')`Provides: libgfortran'FORTRAN_SO`-armel [armel], libgfortran'FORTRAN_SO`-armhf [armhf]')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libgfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+')`Provides: libgfortran'FORTRAN_SO`-dbg-armel [armel], libgfortran'FORTRAN_SO`-dbg-armhf [armhf]')
+Priority: extra
+Depends: BASEDEP, libgfortran`'FORTRAN_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl libgfortran
+
+ifenabled(`lib64gfortran',`
+Package: lib64gfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (64bit)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: lib64gfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Priority: extra
+Depends: BASEDEP, lib64gfortran`'FORTRAN_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (64bit debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl lib64gfortran
+
+ifenabled(`lib32gfortran',`
+Package: lib32gfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: Runtime library for GNU Fortran applications (32bit)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: lib32gfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Priority: extra
+Depends: BASEDEP, lib32gfortran`'FORTRAN_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (32 bit debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl lib32gfortran
+
+ifenabled(`libn32gfortran',`
+Package: libn32gfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (n32)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libn32gfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Priority: extra
+Depends: BASEDEP, libn32gfortran`'FORTRAN_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (n32 debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl libn32gfortran
+
+ifenabled(`libhfgfortran',`
+Package: libhfgfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armhf [biarchhf_archs]')
+Description: Runtime library for GNU Fortran applications (hard float ABI)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libhfgfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Priority: extra
+Depends: BASEDEP, libhfgfortran`'FORTRAN_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armhf [biarchhf_archs]')
+Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl libhfgfortran
+
+ifenabled(`libsfgfortran',`
+Package: libsfgfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armel [biarchsf_archs]')
+Description: Runtime library for GNU Fortran applications (soft float ABI)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libsfgfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Priority: extra
+Depends: BASEDEP, libsfgfortran`'FORTRAN_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armel [biarchsf_archs]')
+Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl libsfgfortran
+
+ifenabled(`libneongfortran',`
+Package: libgfortran`'FORTRAN_SO-neon`'LS
+Section: libs
+Architecture: NEON_ARCHS
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+Breaks: ${multiarch:breaks}
+')`'dnl
+Priority: extra
+Depends: BASEDEP, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications [NEON version]
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneongfortran
+')`'dnl fortran
+
+ifenabled(`ggo',`
+ifenabled(`godev',`
+Package: gccgo`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libgo`'GO_SO`'LS (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: go-compiler
+Suggests: ${go:multilib}, gccgo`'PV-doc, libgo`'GO_SO-dbg`'LS
+Description: GNU Go compiler
+ This is the GNU Go compiler, which compiles Go on platforms supported
+ by the gcc compiler. It uses the gcc backend to generate optimized code.
+
+ifenabled(`multilib',`
+Package: gccgo`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gccgo`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgobiarch}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libgobiarchdbg}
+Description: GNU Go compiler (multilib files)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU Go compiler, which compiles Go on platforms supported
+ by the gcc compiler.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+')`'dnl multilib
+
+ifenabled(`gfdldoc',`
+Package: gccgo`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Description: Documentation for the GNU Go compiler (gccgo)
+ Documentation for the GNU Go compiler in info `format'.
+')`'dnl gfdldoc
+')`'dnl fdev
+
+ifenabled(`libggo',`
+Package: libgo`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+')`Provides: libgo'GO_SO`-armel [armel], libgo'GO_SO`-armhf [armhf]')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Go applications
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: libgo`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`any')
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+')`Provides: libgo'GO_SO`-dbg-armel [armel], libgo'GO_SO`-dbg-armhf [armhf]')
+Priority: extra
+Depends: BASEDEP, libgo`'GO_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library.
+')`'dnl libgo
+
+ifenabled(`lib64go',`
+Package: lib64go`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Go applications (64bit)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: lib64go`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Priority: extra
+Depends: BASEDEP, lib64go`'GO_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (64bit debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library.
+')`'dnl lib64go
+
+ifenabled(`lib32go',`
+Package: lib32go`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: Runtime library for GNU Go applications (32bit)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: lib32go`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Priority: extra
+Depends: BASEDEP, lib32go`'GO_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (32 bit debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library.
+')`'dnl lib32go
+
+ifenabled(`libn32go',`
+Package: libn32go`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Go applications (n32)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: libn32go`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Priority: extra
+Depends: BASEDEP, libn32go`'GO_SO`'LS (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (n32 debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library.
+')`'dnl libn32go
+')`'dnl ggo
+
+ifenabled(`java',`
+ifenabled(`gcj',`
+Package: gcj`'PV-jdk
+Section: java
+Architecture: any
+Priority: PRI(optional)
+Depends: gcj`'PV-base (= ${gcj:Version}), ${dep:gcj}, ${dep:libcdev}, gcj`'PV-jre (= ${gcj:Version}), libgcj`'GCJ_SO-dev (= ${gcj:Version}), gcj`'PV-jre-lib (>= ${gcj:SoftVersion}), ${dep:ecj}, fastjar, libgcj-bc, java-common, libantlr-java, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Recommends: libecj-java-gcj
+Suggests: gcj`'PV-source (>= ${gcj:SoftVersion}), libgcj`'GCJ_SO-dbg
+Provides: java-compiler, java-sdk, java2-sdk, java5-sdk
+Conflicts: gcj-4.4, cpp-4.1 (<< 4.1.1), gcc-4.1 (<< 4.1.1)
+Replaces: libgcj11 (<< 4.5-20100101-1)
+Description: gcj and classpath development tools for Java(TM)
+ GCJ is a front end to the GCC compiler which can natively compile both
+ Java(tm) source and bytecode files. The compiler can also generate class
+ files. Other java development tools from classpath are included in this
+ package.
+ .
+ The package contains as well a collection of wrapper scripts and symlinks.
+ It is meant to provide a Java-SDK-like interface to the GCJ tool set.
+')`'dnl gcj
+
+ifenabled(`libgcj',`
+ifenabled(`libgcjcommon',`
+Package: libgcj-common
+Section: java
+Architecture: all
+Priority: PRI(optional)
+Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), ${misc:Depends}
+Conflicts: classpath (<= 0.04-4)
+Replaces: java-gcj-compat (<< 1.0.65-3), java-gcj-compat-dev (<< 1.0.65-3)
+Description: Java runtime library (common files)
+ This package contains files shared by classpath and libgcj libraries.
+')`'dnl libgcjcommon
+
+Package: gcj`'PV-jre-headless
+Priority: optional
+Section: java
+Architecture: any
+Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT (= ${gcj:Version}), ${dep:prctl}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: fastjar, gcj`'PV-jdk (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version})
+Conflicts: gij-4.4, java-gcj-compat (<< 1.0.76-4)
+Provides: java5-runtime-headless, java2-runtime-headless, java1-runtime-headless, java-runtime-headless
+Description: Java runtime environment using GIJ/classpath (headless version)
+ GIJ is a Java bytecode interpreter, not limited to interpreting bytecode.
+ It includes a class loader which can dynamically load shared objects, so
+ it is possible to give it the name of a class which has been compiled and
+ put into a shared library on the class path.
+ .
+ The package contains as well a collection of wrapper scripts and symlinks.
+ It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set,
+ limited to the headless tools and libraries.
+
+Package: gcj`'PV-jre
+Section: java
+Architecture: any
+Priority: PRI(optional)
+Depends: gcj`'PV-base (= ${gcj:Version}), gcj`'PV-jre-headless (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: java5-runtime, java2-runtime, java1-runtime, java-runtime
+Description: Java runtime environment using GIJ/classpath
+ GIJ is a Java bytecode interpreter, not limited to interpreting bytecode.
+ It includes a class loader which can dynamically load shared objects, so
+ it is possible to give it the name of a class which has been compiled and
+ put into a shared library on the class path.
+ .
+ The package contains as well a collection of wrapper scripts and symlinks.
+ It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set.
+
+Package: libgcj`'LIBGCJ_EXT
+Section: libs
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: multiarch-support
+')`'dnl
+Depends: gcj`'PV-base (>= ${gcj:Version}), libgcj-common (>= 1:4.1.1-21), ${shlibs:Depends}, ${misc:Depends}
+Recommends: gcj`'PV-jre-lib (>= ${gcj:SoftVersion})
+Suggests: libgcj`'GCJ_SO-dbg, libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version})
+Replaces: gij-4.4 (<< 4.4.0-1)
+Description: Java runtime library for use with gcj
+ This is the runtime that goes along with the gcj front end to
+ gcc. libgcj includes parts of the Java Class Libraries, plus glue to
+ connect the libraries to the compiler and the underlying OS.
+ .
+ To show file names and line numbers in stack traces, the packages
+ libgcj`'GCJ_SO-dbg and binutils are required.
+
+Package: gcj`'PV-jre-lib
+Section: java
+Architecture: all
+Priority: PRI(optional)
+Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), libgcj`'LIBGCJ_EXT (>= ${gcj:SoftVersion}), ${misc:Depends}
+Description: Java runtime library for use with gcj (jar files)
+ This is the jar file that goes along with the gcj front end to gcc.
+
+ifenabled(`gcjbc',`
+Package: libgcj-bc
+Section: java
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: multiarch-support
+')`'dnl
+Depends: gcj`'PV-base (>= ${gcj:Version}), libgcj`'LIBGCJ_EXT (>= ${gcj:Version}), ${misc:Depends}
+Description: Link time only library for use with gcj
+ A fake library that is used at link time only.  It ensures that
+ binaries built with the BC-ABI link against a constant SONAME.
+ This way, BC-ABI binaries continue to work if the SONAME underlying
+ libgcj.so changes.
+')`'dnl gcjbc
+
+Package: libgcj`'LIBGCJ_EXT-awt
+Section: libs
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: multiarch-support
+')`'dnl
+Depends: gcj`'PV-base (>= ${gcj:Version}), libgcj`'LIBGCJ_EXT (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${pkg:gcjqt}
+Description: AWT peer runtime libraries for use with gcj
+ These are runtime libraries holding the AWT peer implementations
+ for libgcj (currently the GTK+ based peer library is required, the
+ QT bases library is not built).
+
+ifenabled(`gtkpeer',`
+Package: libgcj`'GCJ_SO-awt-gtk
+Section: libs
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: multiarch-support
+')`'dnl
+Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: AWT GTK+ peer runtime library for use with libgcj
+ This is the runtime library holding the GTK+ based AWT peer
+ implementation for libgcj.
+')`'dnl gtkpeer
+
+ifenabled(`qtpeer',`
+Package: libgcj`'GCJ_SO-awt-qt
+Section: libs
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: multiarch-support
+')`'dnl
+Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: AWT QT peer runtime library for use with libgcj
+ This is the runtime library holding the QT based AWT peer
+ implementation for libgcj.
+')`'dnl qtpeer
+')`'dnl libgcj
+
+ifenabled(`libgcjdev',`
+Package: libgcj`'GCJ_SO-dev
+Section: libdevel
+Architecture: any
+Priority: PRI(optional)
+Depends: gcj`'PV-base (= ${gcj:Version}), gcj`'PV-jdk (= ${gcj:Version}), gcj`'PV-jre-lib (>= ${gcj:SoftVersion}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), libgcj-bc, ${pkg:gcjgtk}, ${pkg:gcjqt}, zlib1g-dev, ${shlibs:Depends}, ${misc:Depends}
+Suggests: libgcj-doc
+Description: Java development headers for use with gcj
+ These are the development headers that go along with the gcj front end
+ to gcc. libgcj includes parts of the Java Class Libraries, plus glue
+ to connect the libraries to the compiler and the underlying OS.
+
+Package: libgcj`'GCJ_SO-dbg
+Section: debug
+Architecture: any
+Priority: extra
+ifdef(`MULTIARCH', `Pre-Depends: multiarch-support
+')`'dnl
+Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT (= ${gcj:Version}), ${misc:Depends}
+Recommends: binutils, libc6-dbg | libc-dbg
+Description: Debugging symbols for libraries provided in libgcj`'GCJ_SO-dev
+ The package provides debugging symbols for the libraries provided
+ in libgcj`'GCJ_SO-dev.
+ .
+ binutils is required to show file names and line numbers in stack traces.
+
+Package: gcj`'PV-source
+Section: java
+Architecture: all
+Priority: PRI(optional)
+Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), gcj`'PV-jdk (>= ${gcj:SoftVersion}), ${misc:Depends}
+Description: GCJ java sources for use in IDEs like eclipse and netbeans
+ These are the java source files packaged as a zip file for use in development
+ environments like eclipse and netbeans.
+
+ifenabled(`gcjdoc',`
+Package: libgcj-doc
+Section: doc
+Architecture: all
+Priority: PRI(optional)
+Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), ${misc:Depends}
+Enhances: libgcj`'GCJ_SO-dev
+Provides: classpath-doc
+Description: libgcj API documentation and example programs
+ Autogenerated documentation describing the API of the libgcj library.
+ Sources and precompiled example programs from the classpath library.
+')`'dnl gcjdoc
+')`'dnl libgcjdev
+')`'dnl java
+
+ifenabled(`c++',`
+ifenabled(`libcxx',`
+Package: libstdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(important))
+Depends: BASEDEP, ${dep:libc}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libstdc++CXX_SO-TARGET-dcv1',
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+Breaks: ${multiarch:breaks}
+')`Provides: libstdc++'CXX_SO`-armel [armel], libstdc++'CXX_SO`-armhf [armhf]')
+Conflicts: scim (<< 1.4.2-1)
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libcxx
+
+ifenabled(`lib32cxx',`
+Package: lib32stdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: extra
+Depends: BASEDEP, lib32gcc1`'LS, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+Description: GNU Standard C++ Library v3 (32 bit Version)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib32cxx
+
+ifenabled(`lib64cxx',`
+Package: lib64stdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${shlibs:Depends}, lib64gcc1`'LS, ${misc:Depends}
+ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (64bit)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib64cxx
+
+ifenabled(`libn32cxx',`
+Package: libn32stdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${shlibs:Depends}, libn32gcc1`'LS, ${misc:Depends}
+ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (n32)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libn32cxx
+
+ifenabled(`libhfcxx',`
+Package: libhfstdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${shlibs:Depends}, libhfgcc1`'LS, ${misc:Depends}
+ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+ifdef(`TARGET',`dnl',`Conflicts: libstdc++'CXX_SO`-armhf [biarchhf_archs]')
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (hard float ABI)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libhfcxx
+
+ifenabled(`libsfcxx',`
+Package: libsfstdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, ${shlibs:Depends}, libsfgcc1`'LS, ${misc:Depends}
+ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+ifdef(`TARGET',`dnl',`Conflicts: libstdc++'CXX_SO`-armel [biarchsf_archs]')
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (soft float ABI)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libsfcxx
+
+ifenabled(`libneoncxx',`
+Package: libstdc++CXX_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASEDEP, libc6-neon`'LS, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Standard C++ Library v3 [NEON version]
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl
+
+ifenabled(`c++dev',`
+Package: libstdc++CXX_SO`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version}), ${dep:libcdev}, ${misc:Depends}
+ifdef(`TARGET',`',`dnl native
+Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev
+Suggests: libstdc++CXX_SO`'PV-doc
+')`'dnl native
+Provides: libstdc++-dev`'LS`'ifdef(`TARGET',`, libstdc++-dev-TARGET-dcv1, libstdc++CXX_SO-dev-TARGET-dcv1')
+Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libstdc++CXX_SO`'PV-pic`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: extra
+Depends: BASEDEP, libstdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), ${misc:Depends}
+ifdef(`TARGET',`Provides: libstdc++CXX_SO-pic-TARGET-dcv1
+',`')`'dnl
+Description: GNU Standard C++ Library v3 (shared library subset kit)`'ifdef(`TARGET)',` (TARGET)', `')
+ This is used to develop subsets of the libstdc++ shared libraries for
+ use on custom installation floppies and in embedded systems.
+ .
+ Unless you are making one of those, you will not need this package.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libstdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libstdc++CXX_SO`'LS (>= ${gcc:Version}), libgcc`'GCC_SO-dbg`'LS, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libstdc++CXX_SO-dbg-TARGET-dcv1',`dnl
+ifdef(`MULTIARCH', `Multi-Arch: same',`dnl')
+Provides: libstdc++'CXX_SO`'PV`-dbg-armel [armel], libstdc++'CXX_SO`'PV`-dbg-armhf [armhf]dnl
+')
+Recommends: libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version})
+Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, libstdc++6-4.0-dbg`'LS, libstdc++6-4.1-dbg`'LS, libstdc++6-4.2-dbg`'LS, libstdc++6-4.3-dbg`'LS, libstdc++6-4.4-dbg`'LS, libstdc++6-4.5-dbg`'LS
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib32stdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib32stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), lib32gcc`'GCC_SO-dbg`'LS, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: lib32stdc++6-dbg`'LS, lib32stdc++6-4.0-dbg`'LS, lib32stdc++6-4.1-dbg`'LS, lib32stdc++6-4.2-dbg`'LS, lib32stdc++6-4.3-dbg`'LS, lib32stdc++6-4.4-dbg`'LS, lib32stdc++6-4.5-dbg`'LS
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib64stdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, lib64stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), lib64gcc`'GCC_SO-dbg`'LS, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: lib64stdc++6-dbg`'LS, lib64stdc++6-4.0-dbg`'LS, lib64stdc++6-4.1-dbg`'LS, lib64stdc++6-4.2-dbg`'LS, lib64stdc++6-4.3-dbg`'LS, lib64stdc++6-4.4-dbg`'LS, lib64stdc++6-4.5-dbg`'LS
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libn32stdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libn32stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), libn32gcc`'GCC_SO-dbg`'LS, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: libn32stdc++6-dbg`'LS, libn32stdc++6-4.0-dbg`'LS, libn32stdc++6-4.1-dbg`'LS, libn32stdc++6-4.2-dbg`'LS, libn32stdc++6-4.3-dbg`'LS, libn32stdc++6-4.4-dbg`'LS, libn32stdc++6-4.5-dbg`'LS
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+ifenabled(`libhfdbgcxx',`
+Package: libhfstdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libhfstdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), libhfgcc`'GCC_SO-dbg`'LS, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: libhfstdc++6-dbg`'LS, libhfstdc++6-4.3-dbg`'LS, libhfstdc++6-4.4-dbg`'LS, libhfstdc++6-4.5-dbg`'LS`'ifdef(`TARGET',`',`, libstdc++'CXX_SO`-armhf [biarchhf_archs]')
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libhfdbgcxx
+
+ifenabled(`libsfdbgcxx',`
+Package: libsfstdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASEDEP, libsfstdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), libsfgcc`'GCC_SO-dbg`'LS, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: libsfstdc++6-dbg`'LS, libsfstdc++6-4.3-dbg`'LS, libsfstdc++6-4.4-dbg`'LS, libsfstdc++6-4.5-dbg`'LS`'ifdef(`TARGET',`',`, libstdc++'CXX_SO`-armel [biarchsf_archs]')
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libsfdbgcxx
+
+ifdef(`TARGET', `', `
+Package: libstdc++CXX_SO`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends}
+Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, libstdc++6-4.4-doc, libstdc++6-4.5-doc
+Description: GNU Standard C++ Library v3 (documentation files)
+ This package contains documentation files for the GNU stdc++ library.
+ .
+ One set is the distribution documentation, the other set is the
+ source documentation including a namespace list, class hierarchy,
+ alphabetical list, compound list, file list, namespace members,
+ compound members and file members.
+')`'dnl native
+')`'dnl c++dev
+')`'dnl c++
+
+ifenabled(`ada',`
+Package: gnat`'-GNAT_V
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: multiarch-support
+')`'dnl
+Depends: gnat`'PV-base (= ${gnat:Version}), gcc`'PV (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gnat`'PV-doc, ada-reference-manual-html, ada-reference-manual-info, ada-reference-manual-pdf, ada-reference-manual-text, gnat`'-GNAT_V-sjlj
+Provides: ada-compiler
+Conflicts: gnat (<< 4.1), gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-3.5, gnat-4.0, gnat-4.1, gnat-4.2, gnat-4.3, gnat-4.4
+Description: GNU Ada compiler
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ This package provides the compiler, tools and runtime library that handles
+ exceptions using the default zero-cost mechanism.
+
+Package: gnat`'-GNAT_V-sjlj
+Architecture: any
+Priority: extra
+ifdef(`MULTIARCH', `Pre-Depends: multiarch-support
+')`'dnl
+Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'-GNAT_V (= ${gnat:Version}), ${misc:Depends}
+Description: GNU Ada compiler (setjump/longjump runtime library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ This package provides an alternative runtime library that handles
+ exceptions using the setjump/longjump mechanism (as a static library
+ only).  You can install it to supplement the normal compiler.
+
+ifenabled(`libgnat',`
+Package: libgnat`'-GNAT_V
+Section: libs
+Architecture: any
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+'))`'dnl
+Priority: PRI(optional)
+Depends: gnat`'PV-base (= ${gnat:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: runtime for applications compiled with GNAT (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnat`'-GNAT_V-dbg
+Section: debug
+Architecture: any
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+'))`'dnl
+Priority: extra
+Depends: gnat`'PV-base (= ${gnat:Version}), libgnat`'-GNAT_V (= ${gnat:Version}), ${misc:Depends}
+Description: runtime for applications compiled with GNAT (debugging symbols)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the debugging symbols.
+
+Package: libgnatvsn`'GNAT_V-dev
+Section: libdevel
+Architecture: any
+Priority: extra
+Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}),
+ libgnatvsn`'GNAT_V (= ${gnat:Version}), ${misc:Depends}
+Conflicts: libgnatvsn-dev (<< `'GNAT_V), libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev, libgnatvsn4.5-dev
+Description: GNU Ada compiler selected components (development files)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the development files and static library.
+
+Package: libgnatvsn`'GNAT_V
+Architecture: any
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+'))`'dnl
+Priority: PRI(optional)
+Section: libs
+Depends: gnat`'PV-base (= ${gnat:Version}), libgnat`'-GNAT_V (= ${gnat:Version}), ${misc:Depends}
+Description: GNU Ada compiler selected components (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnatvsn`'GNAT_V-dbg
+Architecture: any
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+'))`'dnl
+Priority: extra
+Section: debug
+Depends: gnat`'PV-base (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}), ${misc:Depends}
+Suggests: gnat
+Description: GNU Ada compiler selected components (debugging symbols)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the debugging symbols.
+
+Package: libgnatprj`'GNAT_V-dev
+Section: libdevel
+Architecture: any
+Priority: extra
+Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}),
+ libgnatprj`'GNAT_V (= ${gnat:Version}), libgnatvsn`'GNAT_V-dev (= ${gnat:Version}), ${misc:Depends}
+Conflicts: libgnatprj-dev (<< `'GNAT_V), libgnatprj4.1-dev, libgnatprj4.3-dev, libgnatprj4.4-dev, libgnatprj4.5-dev
+Description: GNU Ada compiler Project Manager (development files)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the development files and static library.
+
+Package: libgnatprj`'GNAT_V
+Architecture: any
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+'))`'dnl
+Priority: PRI(optional)
+Section: libs
+Depends: gnat`'PV-base (= ${gnat:Version}), libgnat`'-GNAT_V (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}), ${misc:Depends}
+Description: GNU Ada compiler Project Manager (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnatprj`'GNAT_V-dbg
+Architecture: any
+ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: multiarch-support
+'))`'dnl
+Priority: extra
+Section: debug
+Depends: gnat`'PV-base (= ${gnat:Version}), libgnatprj`'GNAT_V (= ${gnat:Version}), ${misc:Depends}
+Suggests: gnat
+Description: GNU Ada compiler Project Manager (debugging symbols)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the debugging symbols.
+')`'dnl libgnat
+
+ifenabled(`lib64gnat',`
+Package: lib64gnat`'-GNAT_V
+Section: libs
+Architecture: biarch64_archs
+Priority: PRI(optional)
+Depends: gnat`'PV-base (= ${gnat:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: runtime for applications compiled with GNAT (64 bits shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the runtime shared library for 64 bits architectures.
+')`'dnl libgnat
+
+ifenabled(`gfdldoc',`
+Package: gnat`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Suggests: gnat`'PV
+Conflicts: gnat-4.1-doc, gnat-4.2-doc, gnat-4.3-doc, gnat-4.4-doc
+Description: GNU Ada compiler (documentation)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the documentation in info `format'.
+')`'dnl gfdldoc
+')`'dnl ada
+
+ifenabled(`d ',`
+Package: gdc`'PV
+Architecture: any
+Priority: PRI(optional)
+Depends: SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), libphobos`'PHOBOS_V`'PV-dev (= ${gdc:Version}) [libphobos_no_archs], ${shlibs:Depends}, ${misc:Depends}
+Provides: gdc, d-compiler, d-v2-compiler
+Replaces: gdc (<< 4.4.6-5)
+Description: GNU D compiler (version 2), based on the GCC backend
+ This is the GNU D compiler, which compiles D on platforms supported by gcc.
+ It uses the gcc backend to generate optimised code.
+ .
+ This compiler supports D language version 2.
+
+ifenabled(`libphobos',`
+Package: libphobos`'PHOBOS_V`'PV`'TS-dev
+Architecture: any
+Section: libdevel
+Priority: PRI(optional)
+Depends: gdc`'PV`'TS (= ${gdc:Version}), zlib1g-dev, ${shlibs:Depends}, ${misc:Depends}
+Provides: libphobos`'PHOBOS_V`'TS-dev
+Description: Phobos D standard library
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.d-programming-language.org/phobos/
+
+Package: libphobos`'PHOBOS_V`'PV`'TS-dbg
+Section: debug
+Architecture: ifdef(`TARGET',`all',`any')
+Priority: extra
+Depends: gdc`'PV`'TS (= ${gdc:Version}), libphobos`'PHOBOS_V`'PV-dev (= ${gdc:Version}), ${misc:Depends}
+Provides: libphobos`'PHOBOS_V`'TS-dbg
+Description: The Phobos D standard library (debug symbols)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.d-programming-language.org/phobos/
+')`'dnl libphobos
+')`'dnl d
+
+ifdef(`TARGET',`',`dnl
+ifenabled(`libs',`
+Package: gcc`'PV-soft-float
+Architecture: arm armel armhf
+Priority: PRI(optional)
+Depends: BASEDEP, ifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends}
+Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float
+Description: GCC soft-floating-point gcc libraries (ARM)
+ These are versions of basic static libraries such as libgcc.a compiled
+ with the -msoft-float option, for CPUs without a floating-point unit.
+')`'dnl commonlibs
+')`'dnl
+
+ifenabled(`fixincl',`
+Package: fixincludes
+Architecture: any
+Priority: PRI(optional)
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Fix non-ANSI header files
+ FixIncludes was created to fix non-ANSI system header files. Many
+ system manufacturers supply proprietary headers that are not ANSI compliant.
+ The GNU compilers cannot compile non-ANSI headers. Consequently, the
+ FixIncludes shell script was written to fix the header files.
+ .
+ Not all packages with header files are installed on the system, when the
+ package is built, so we make fixincludes available at build time of other
+ packages, such that checking tools like lintian can make use of it.
+')`'dnl fixincl
+
+ifenabled(`cdev',`
+ifdef(`TARGET', `', `
+ifenabled(`gfdldoc',`
+Package: gcc`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Conflicts: gcc-docs (<< 2.95.2)
+Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2)
+Description: Documentation for the GNU compilers (gcc, gobjc, g++)
+ Documentation for the GNU compilers in info `format'.
+')`'dnl gfdldoc
+')`'dnl native
+')`'dnl cdev
+
+ifdef(`TARGET',`',`dnl
+ifenabled(`libnof',`
+Package: gcc`'PV-nof
+Architecture: powerpc
+Priority: PRI(optional)
+Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends}
+Conflicts: gcc-3.2-nof
+Description: GCC no-floating-point gcc libraries (powerpc)
+ These are versions of basic static libraries such as libgcc.a compiled
+ with the -msoft-float option, for CPUs without a floating-point unit.
+')`'dnl libnof
+')`'dnl
+
+ifenabled(`source',`
+Package: gcc`'PV-source
+Architecture: all
+Priority: PRI(optional)
+Depends: make (>= 3.81), autoconf2.64, automake, quilt, patchutils, gawk, ${misc:Depends}
+Description: Source of the GNU Compiler Collection
+ This package contains the sources and patches which are needed to
+ build the GNU Compiler Collection (GCC).
+')`'dnl source
+dnl
+')`'dnl gcc-X.Y
+dnl last line in file
--- gcc-4.6-4.6.3.orig/debian/gnat-BV-doc.doc-base.ug
+++ gcc-4.6-4.6.3/debian/gnat-BV-doc.doc-base.ug
@@ -0,0 +1,16 @@
+Document: gnat-ugn-@BV@
+Title: GNAT User's Guide for Unix Platforms
+Author: Various
+Abstract: This guide describes the use of GNAT, a compiler and
+ software development toolset for the full Ada 95 programming language.
+ It describes the features of the compiler and tools, and details how
+ to use them to build Ada 95 applications.
+Section: Programming/Ada
+
+Format: html
+Index: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html
+Files: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html
+
+Format: info
+Index: /usr/share/info/gnat_ugn-@BV@.info.gz
+Files: /usr/share/info/gnat_ugn-@BV@*
--- gcc-4.6-4.6.3.orig/debian/gnatprj.gpr
+++ gcc-4.6-4.6.3/debian/gnatprj.gpr
@@ -0,0 +1,32 @@
+--  Project file for use with GNAT
+--  Copyright (c) 2005, 2008 Ludovic Brenta <ludovic@ludovic-brenta.org>
+--
+--  This program 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 of the License, or
+--  (at your option) any later version.
+--
+--  This program 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.
+--
+--  This project file is designed to help build applications that use
+--  GNAT project files.  Here is an example of how to use this project file:
+--
+--  with "gnatprj";
+--  project Example is
+--     for Object_Dir use "obj";
+--     for Exec_Dir use ".";
+--     for Main use ("example");
+--  end Example;
+
+with "gnatvsn.gpr";
+project Gnatprj is
+   for Library_Name use "gnatprj";
+   for Library_Dir use "/usr/lib";
+   for Library_Kind use "dynamic";
+   for Source_Dirs use ("/usr/share/ada/adainclude/gnatprj");
+   for Library_ALI_Dir use "/usr/lib/ada/adalib/gnatprj";
+   for Externally_Built use "true";
+end Gnatprj;
--- gcc-4.6-4.6.3.orig/debian/lib64gfortran3.symbols.sparc
+++ gcc-4.6-4.6.3/debian/lib64gfortran3.symbols.sparc
@@ -0,0 +1,5 @@
+libgfortran.so.3 lib64gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.armhf
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.armhf
@@ -0,0 +1,2 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
--- gcc-4.6-4.6.3.orig/debian/libgcj-common.postinst
+++ gcc-4.6-4.6.3/debian/libgcj-common.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/libgcj-common
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcj-@BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/lib32gcc1.symbols.s390x
+++ gcc-4.6-4.6.3/debian/lib32gcc1.symbols.s390x
@@ -0,0 +1,101 @@
+libgcc_s.so.1 lib32gcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.1.0@GCC_4.1.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.1.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.1.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.1.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.1.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.1.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.1.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/fixincludes.in
+++ gcc-4.6-4.6.3/debian/fixincludes.in
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+PATH="/@LIBEXECDIR@/install-tools:$PATH"
+
+TARGET_MACHINE=`dpkg-architecture -qDEB_HOST_GNU_TYPE`
+export TARGET_MACHINE
+
+exec fixinc.sh "$@"
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.amd64
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.amd64
@@ -0,0 +1,144 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addtf3@GCC_4.3.0 1:4.3
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GCC_3.0 1:4.1.1
+ __deregister_frame_info@GCC_3.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.0.0 1:4.3
+ __divtc3@GCC_4.3.0 1:4.4.0
+ __divtf3@GCC_4.3.0 1:4.3
+ __divti3@GCC_3.0 1:4.1.1
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.3.0 1:4.3
+ __extenddftf2@GCC_4.3.0 1:4.3
+ __extendsftf2@GCC_4.3.0 1:4.3
+ __extendxftf2@GCC_4.3.0 1:4.3
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.3.0 1:4.3
+ __fixtfsi@GCC_4.3.0 1:4.3
+ __fixtfti@GCC_4.3.0 1:4.3
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.3.0 1:4.3
+ __fixunstfsi@GCC_4.3.0 1:4.3
+ __fixunstfti@GCC_4.3.0 1:4.3
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfti@GCC_3.0 1:4.1.1
+ __fixxfti@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.3.0 1:4.3
+ __floatsitf@GCC_4.3.0 1:4.3
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_4.3.0 1:4.3
+ __floattixf@GCC_3.0 1:4.1.1
+ __floatunditf@GCC_4.3.0 1:4.3
+ __floatunsitf@GCC_4.3.0 1:4.3
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.3.0 1:4.3
+ __floatuntixf@GCC_4.2.0 1:4.2.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.3.0 1:4.3
+ __gttf2@GCC_3.0 1:4.3
+ __gttf2@GCC_4.3.0 1:4.4.0
+ __letf2@GCC_4.3.0 1:4.3
+ __lshrti3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_3.0 1:4.3
+ __lttf2@GCC_4.3.0 1:4.4.0
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.0.0 1:4.3
+ __multc3@GCC_4.3.0 1:4.4.0
+ __multf3@GCC_4.3.0 1:4.3
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negtf2@GCC_4.3.0 1:4.3
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __netf2@GCC_3.0 1:4.3
+ __netf2@GCC_4.3.0 1:4.4.0
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.0.0 1:4.3
+ __powitf2@GCC_4.3.0 1:4.4.0
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GCC_3.0 1:4.1.1
+ __register_frame_info@GCC_3.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GCC_3.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GCC_3.0 1:4.1.1
+ __subtf3@GCC_4.3.0 1:4.3
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __trunctfdf2@GCC_4.3.0 1:4.3
+ __trunctfsf2@GCC_4.3.0 1:4.3
+ __trunctfxf2@GCC_4.3.0 1:4.3
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
+ __unordtf2@GCC_4.3.0 1:4.3
--- gcc-4.6-4.6.3.orig/debian/libgcjGCJ-dev.overrides
+++ gcc-4.6-4.6.3/debian/libgcjGCJ-dev.overrides
@@ -0,0 +1 @@
+libgcj@GCJ@-dev binary: library-not-linked-against-libc
--- gcc-4.6-4.6.3.orig/debian/libstdc++CXX-BV-doc.overrides
+++ gcc-4.6-4.6.3/debian/libstdc++CXX-BV-doc.overrides
@@ -0,0 +1,2 @@
+libstdc++@CXX@-@BV@-doc: hyphen-used-as-minus-sign
+libstdc++@CXX@-@BV@-doc: manpage-has-bad-whatis-entry
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.i386
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.i386
@@ -0,0 +1,134 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GCC_4.5.0@GCC_4.5.0 1:4.5.0
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addtf3@GCC_4.4.0 1:4.4.0
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __copysigntf3@GCC_4.4.0 1:4.4.0
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.4.0 1:4.4.0
+ __divtf3@GCC_4.4.0 1:4.4.0
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.4.0 1:4.4.0
+ __extenddftf2@GCC_4.4.0 1:4.4.0
+ __extendsftf2@GCC_4.4.0 1:4.4.0
+ __extendxftf2@GCC_4.5.0 1:4.5.0
+ __fabstf2@GCC_4.4.0 1:4.4.0
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.4.0 1:4.4.0
+ __fixtfsi@GCC_4.4.0 1:4.4.0
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.4.0 1:4.4.0
+ __fixunstfsi@GCC_4.4.0 1:4.4.0
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfsi@GCC_3.0 1:4.1.1
+ __fixxfdi@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.4.0 1:4.4.0
+ __floatdixf@GCC_3.0 1:4.1.1
+ __floatsitf@GCC_4.4.0 1:4.4.0
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.4.0 1:4.4.0
+ __floatundixf@GCC_4.2.0 1:4.2.1
+ __floatunsitf@GCC_4.4.0 1:4.4.0
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.4.0 1:4.4.0
+ __gttf2@GCC_4.4.0 1:4.4.0
+ __letf2@GCC_4.4.0 1:4.4.0
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_4.4.0 1:4.4.0
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.4.0 1:4.4.0
+ __multf3@GCC_4.4.0 1:4.4.0
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negtf2@GCC_4.4.0 1:4.4.0
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __netf2@GCC_4.4.0 1:4.4.0
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.4.0 1:4.4.0
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subtf3@GCC_4.4.0 1:4.4.0
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __trunctfdf2@GCC_4.4.0 1:4.4.0
+ __trunctfsf2@GCC_4.4.0 1:4.4.0
+ __trunctfxf2@GCC_4.4.0 1:4.4.0
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unordtf2@GCC_4.4.0 1:4.4.0
--- gcc-4.6-4.6.3.orig/debian/gnat.1
+++ gcc-4.6-4.6.3/debian/gnat.1
@@ -0,0 +1,43 @@
+.\" Hey, Emacs!  This is an -*- nroff -*- source file.
+.\"
+.\" Copyright (C) 1996 Erick Branderhorst <branderh@debian.org>
+.\" Copyright (C) 2011 Nicolas Boulenguez <nicolas.boulenguez@free.fr>
+.\"
+.\" This 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 2, or (at your option) any later
+.\" version.
+.\"
+.\" This 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 with
+.\" your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the
+.\" dpkg source package as the file COPYING.  If not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+.\"
+.\"
+.TH "GNAT TOOLBOX" 1 "Jun 2002" "Debian Project" "Debian Linux"
+.SH NAME
+gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnathtml, gnatkr, gnatlink,
+gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref \-
+GNAT toolbox
+.SH DESCRIPTION
+Those programs are part of GNU GNAT, a freely available Ada 95 compiler.
+.PP
+For accessing the full GNAT manuals, use
+.B info gnat-ug-4.6
+and
+.B info gnat-rm-4.6
+for the sections related to the reference manual.
+If those sections cannot be found, you will have to install the
+gnat-4.4-doc package as well (since these manuals contain invariant parts,
+the package is located in the non-free part of the Debian archive).
+You may also browse
+.B http://gcc.gnu.org/onlinedocs
+which provides the GCC online documentation.
+.SH AUTHOR
+This manpage has been written by Samuel Tardieu <sam@debian.org>, for the
+Debian GNU/Linux project.
--- gcc-4.6-4.6.3.orig/debian/lib32gfortran3.symbols.ppc64
+++ gcc-4.6-4.6.3/debian/lib32gfortran3.symbols.ppc64
@@ -0,0 +1,3 @@
+libgfortran.so.3 lib32gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
--- gcc-4.6-4.6.3.orig/debian/gcj-BV-jre-headless.postinst
+++ gcc-4.6-4.6.3/debian/gcj-BV-jre-headless.postinst
@@ -0,0 +1,48 @@
+#! /bin/sh -e
+
+prio=@java_priority@
+
+update-alternatives --quiet \
+    --install /usr/bin/java java /usr/bin/gij-@BV@ $prio \
+    @GFDL@--slave /usr/share/man/man1/java.1.gz java.1.gz /usr/share/man/man1/gij-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/rmiregistry rmiregistry /usr/bin/grmiregistry-@BV@ $prio \
+    --slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/share/man/man1/grmiregistry-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/keytool keytool /usr/bin/gkeytool-@BV@ $prio \
+    --slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /usr/share/man/man1/gkeytool-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/orbd orbd /usr/bin/gorbd-@BV@ $prio \
+    --slave /usr/share/man/man1/orbd.1.gz orbd.1.gz /usr/share/man/man1/gorbd-@BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/rmid rmid /usr/bin/grmid-@BV@ $prio \
+    --slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /usr/share/man/man1/grmid-@BV@.1.gz
+
+case "$1" in
+configure)
+    if [ ! -f /var/lib/gcj-@BV@/classmap.db ]; then
+	uname=$(uname -m)
+	mkdir -p /var/lib/gcj-@BV@
+	if gcj-dbtool-@BV@ -n /var/lib/gcj-@BV@/classmap.db; then
+	    case "$uname" in arm*|m68k|parisc*)
+	        echo >&2 "gcj-dbtool succeeded unexpectedly"
+	    esac
+	else
+	    case "$uname" in
+	    arm*|m68k|parisc*)
+	        echo >&2 "ERROR: gcj-dbtool did fail; known problem on $uname";;
+	    *)
+		exit 2
+	    esac
+	    touch /var/lib/gcj-@BV@/classmap.db
+	fi
+    fi
+esac
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.kfreebsd-amd64
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.kfreebsd-amd64
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.ldbl.32bit.s390
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.ldbl.32bit.s390
@@ -0,0 +1,284 @@
+ CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1
+ GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1
+ GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0
+ _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTIPKg@CXXABI_LDBL_1.3 4.2.1
+ _ZTIPg@CXXABI_LDBL_1.3 4.2.1
+ _ZTIg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSPKg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSPg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSg@CXXABI_LDBL_1.3 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.aeabi
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.aeabi
@@ -0,0 +1,67 @@
+ __aeabi_cdcmpeq@GCC_3.5 1:4.4.0
+ __aeabi_cdcmple@GCC_3.5 1:4.4.0
+ __aeabi_cdrcmple@GCC_3.5 1:4.4.0
+ __aeabi_cfcmpeq@GCC_3.5 1:4.4.0
+ __aeabi_cfcmple@GCC_3.5 1:4.4.0
+ __aeabi_cfrcmple@GCC_3.5 1:4.4.0
+ __aeabi_d2f@GCC_3.5 1:4.4.0
+ __aeabi_d2iz@GCC_3.5 1:4.4.0
+ __aeabi_d2lz@GCC_3.5 1:4.4.0
+ __aeabi_d2uiz@GCC_3.5 1:4.4.0
+ __aeabi_d2ulz@GCC_3.5 1:4.4.0
+ __aeabi_dadd@GCC_3.5 1:4.4.0
+ __aeabi_dcmpeq@GCC_3.5 1:4.4.0
+ __aeabi_dcmpge@GCC_3.5 1:4.4.0
+ __aeabi_dcmpgt@GCC_3.5 1:4.4.0
+ __aeabi_dcmple@GCC_3.5 1:4.4.0
+ __aeabi_dcmplt@GCC_3.5 1:4.4.0
+ __aeabi_dcmpun@GCC_3.5 1:4.4.0
+ __aeabi_ddiv@GCC_3.5 1:4.4.0
+ __aeabi_dmul@GCC_3.5 1:4.4.0
+ __aeabi_dneg@GCC_3.5 1:4.4.0
+ __aeabi_drsub@GCC_3.5 1:4.4.0
+ __aeabi_dsub@GCC_3.5 1:4.4.0
+ __aeabi_f2d@GCC_3.5 1:4.4.0
+ __aeabi_f2iz@GCC_3.5 1:4.4.0
+ __aeabi_f2lz@GCC_3.5 1:4.4.0
+ __aeabi_f2uiz@GCC_3.5 1:4.4.0
+ __aeabi_f2ulz@GCC_3.5 1:4.4.0
+ __aeabi_fadd@GCC_3.5 1:4.4.0
+ __aeabi_fcmpeq@GCC_3.5 1:4.4.0
+ __aeabi_fcmpge@GCC_3.5 1:4.4.0
+ __aeabi_fcmpgt@GCC_3.5 1:4.4.0
+ __aeabi_fcmple@GCC_3.5 1:4.4.0
+ __aeabi_fcmplt@GCC_3.5 1:4.4.0
+ __aeabi_fcmpun@GCC_3.5 1:4.4.0
+ __aeabi_fdiv@GCC_3.5 1:4.4.0
+ __aeabi_fmul@GCC_3.5 1:4.4.0
+ __aeabi_fneg@GCC_3.5 1:4.4.0
+ __aeabi_frsub@GCC_3.5 1:4.4.0
+ __aeabi_fsub@GCC_3.5 1:4.4.0
+ __aeabi_i2d@GCC_3.5 1:4.4.0
+ __aeabi_i2f@GCC_3.5 1:4.4.0
+ __aeabi_idiv@GCC_3.5 1:4.4.0
+ __aeabi_idiv0@GCC_3.5 1:4.5.0
+ __aeabi_idivmod@GCC_3.5 1:4.4.0
+ __aeabi_l2d@GCC_3.5 1:4.4.0
+ __aeabi_l2f@GCC_3.5 1:4.4.0
+ __aeabi_lasr@GCC_3.5 1:4.4.0
+ __aeabi_lcmp@GCC_3.5 1:4.4.0
+ __aeabi_ldivmod@GCC_3.5 1:4.4.0
+ __aeabi_ldiv0@GCC_3.5 1:4.5.0
+ __aeabi_llsl@GCC_3.5 1:4.4.0
+ __aeabi_llsr@GCC_3.5 1:4.4.0
+ __aeabi_lmul@GCC_3.5 1:4.4.0
+ __aeabi_ui2d@GCC_3.5 1:4.4.0
+ __aeabi_ui2f@GCC_3.5 1:4.4.0
+ __aeabi_uidiv@GCC_3.5 1:4.4.0
+ __aeabi_uidivmod@GCC_3.5 1:4.4.0
+ __aeabi_ul2d@GCC_3.5 1:4.4.0
+ __aeabi_ul2f@GCC_3.5 1:4.4.0
+ __aeabi_ulcmp@GCC_3.5 1:4.4.0
+ __aeabi_uldivmod@GCC_3.5 1:4.4.0
+ __aeabi_unwind_cpp_pr0@GCC_3.5 1:4.4.0
+ __aeabi_uread4@GCC_3.5 1:4.4.0
+ __aeabi_uread8@GCC_3.5 1:4.4.0
+ __aeabi_uwrite4@GCC_3.5 1:4.4.0
+ __aeabi_uwrite8@GCC_3.5 1:4.4.0
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.alpha
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.alpha
@@ -0,0 +1,107 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_LDBL_4.0.0@GCC_LDBL_4.0.0 1:4.2.1
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_LDBL_4.0.0 1:4.2.1
+ __divti3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfti@GCC_3.0 1:4.2.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfti@GCC_3.0 1:4.2.1
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_3.0 1:4.2.1
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __lshrti3@GCC_3.0 1:4.1.1
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_LDBL_4.0.0 1:4.2.1
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_LDBL_4.0.0 1:4.2.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/lib64gfortran3.symbols.powerpc
+++ gcc-4.6-4.6.3/debian/lib64gfortran3.symbols.powerpc
@@ -0,0 +1,5 @@
+libgfortran.so.3 lib64gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/lib64gfortran3.symbols
+++ gcc-4.6-4.6.3/debian/lib64gfortran3.symbols
@@ -0,0 +1,7 @@
+libgfortran.so.3 lib64gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
+#include "libgfortran3.symbols.16"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.64"
+#include "libgfortran3.symbols.qf"
--- gcc-4.6-4.6.3.orig/debian/libgcj-doc.doc-base
+++ gcc-4.6-4.6.3/debian/libgcj-doc.doc-base
@@ -0,0 +1,10 @@
+Document: libgcj-doc
+Title: The GNU LibGCJ Classpath library
+Author: Various
+Abstract: Autogenerated documentation describing the libgcj
+ library (GCC 4.6), based on the classpath library.
+Section: Programming/Java
+
+Format: html
+Index: /usr/share/doc/gcj-4.6-base/api/index.html
+Files: /usr/share/doc/gcj-4.6-base/api/*.html
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.ia64
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.ia64
@@ -0,0 +1,145 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.2@GCC_3.3.2 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetBSP@GCC_3.3.2 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addtf3@GCC_4.4.0 1:4.4.0
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __copysigntf3@GCC_4.4.0 1:4.4.0
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdf3@GCC_3.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divsf3@GCC_3.0 1:4.1.1
+ __divsi3@GCC_3.0 1:4.1.1
+ __divtc3@GCC_4.4.0 1:4.4.0
+ __divtf3@GCC_3.0 1:4.1.1
+ __divti3@GCC_3.0 1:4.1.1
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __divxf3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.4.0 1:4.4.0
+ __extenddftf2@GCC_4.4.0 1:4.4.0
+ __extendsftf2@GCC_4.4.0 1:4.4.0
+ __fabstf2@GCC_4.4.0 1:4.4.0
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.4.0 1:4.4.0
+ __fixtfsi@GCC_4.4.0 1:4.4.0
+ __fixtfti@GCC_3.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.4.0 1:4.4.0
+ __fixunstfsi@GCC_4.4.0 1:4.4.0
+ __fixunstfti@GCC_3.0 1:4.1.1
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfti@GCC_3.0 1:4.1.1
+ __fixxfti@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.4.0 1:4.4.0
+ __floatsitf@GCC_4.4.0 1:4.4.0
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_3.0 1:4.1.1
+ __floattixf@GCC_3.0 1:4.1.1
+ __floatunditf@GCC_4.4.0 1:4.4.0
+ __floatunsitf@GCC_4.4.0 1:4.4.0
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntixf@GCC_4.2.0 1:4.2.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.4.0 1:4.4.0
+ __gttf2@GCC_4.4.0 1:4.4.0
+ __ia64_nonlocal_goto@GCC_3.0 1:4.1.1
+ __ia64_restore_stack_nonlocal@GCC_3.0 1:4.1.1
+ __ia64_save_stack_nonlocal@GCC_3.0 1:4.1.1
+ __ia64_trampoline@GCC_3.0 1:4.1.1
+ __letf2@GCC_4.4.0 1:4.4.0
+ __lshrti3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_4.4.0 1:4.4.0
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __modsi3@GCC_3.0 1:4.1.1
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.4.0 1:4.4.0
+ __multf3@GCC_4.4.0 1:4.4.0
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negtf2@GCC_4.4.0 1:4.4.0
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __netf2@GCC_4.4.0 1:4.4.0
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.4.0 1:4.4.0
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __subtf3@GCC_4.4.0 1:4.4.0
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __trunctfdf2@GCC_4.4.0 1:4.4.0
+ __trunctfsf2@GCC_4.4.0 1:4.4.0
+ __trunctfxf2@GCC_4.4.0 1:4.4.0
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivsi3@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __umodsi3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
+ __unordtf2@GCC_4.4.0 1:4.4.0
--- gcc-4.6-4.6.3.orig/debian/lib32gccLC.postinst
+++ gcc-4.6-4.6.3/debian/lib32gccLC.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/lib32gcc@LC@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc-@BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/lib32gcc1.symbols.ppc64
+++ gcc-4.6-4.6.3/debian/lib32gcc1.symbols.ppc64
@@ -0,0 +1,139 @@
+libgcc_s.so.1 lib32gcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.1.0@GCC_4.1.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __adddf3@GCC_3.0 1:4.1.1
+ __addsf3@GCC_3.0 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdf3@GCC_3.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divsf3@GCC_3.0 1:4.1.1
+ __divtc3@GCC_4.1.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqdf2@GCC_3.0 1:4.1.1
+ __eqsf2@GCC_3.0 1:4.1.1
+ __extendsfdf2@GCC_3.0 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixdfsi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixsfsi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.1.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.1.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.1.0 1:4.1.1
+ __floatsidf@GCC_3.0 1:4.1.1
+ __floatsisf@GCC_3.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.2.0 1:4.2.1
+ __floatunsidf@GCC_4.2.0 1:4.2.1
+ __floatunsisf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __gcc_qadd@GCC_4.1.0 1:4.1.1
+ __gcc_qdiv@GCC_4.1.0 1:4.1.1
+ __gcc_qmul@GCC_4.1.0 1:4.1.1
+ __gcc_qsub@GCC_4.1.0 1:4.1.1
+ __gedf2@GCC_3.0 1:4.1.1
+ __gesf2@GCC_3.0 1:4.1.1
+ __gtdf2@GCC_3.0 1:4.1.1
+ __gtsf2@GCC_3.0 1:4.1.1
+ __ledf2@GCC_3.0 1:4.1.1
+ __lesf2@GCC_3.0 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __ltdf2@GCC_3.0 1:4.1.1
+ __ltsf2@GCC_3.0 1:4.1.1
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldf3@GCC_3.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __mulsf3@GCC_3.0 1:4.1.1
+ __multc3@GCC_4.1.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __nedf2@GCC_3.0 1:4.1.1
+ __negdf2@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negsf2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __nesf2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.1.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subdf3@GCC_3.0 1:4.1.1
+ __subsf3@GCC_3.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __trampoline_setup@GCC_3.4.2 1:4.1.1
+ __truncdfsf2@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unorddf2@GCC_3.3.4 1:4.1.1
+ __unordsf2@GCC_3.3.4 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.powerpcspe
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.powerpcspe
@@ -0,0 +1,139 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.1.0@GCC_4.1.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __adddf3@GCC_3.0 1:4.1.1
+ __addsf3@GCC_3.0 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdf3@GCC_3.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divsf3@GCC_3.0 1:4.1.1
+ __divtc3@GCC_4.1.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqdf2@GCC_3.0 1:4.1.1
+ __eqsf2@GCC_3.0 1:4.1.1
+ __extendsfdf2@GCC_3.0 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixdfsi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixsfsi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.1.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.1.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.1.0 1:4.1.1
+ __floatsidf@GCC_3.0 1:4.1.1
+ __floatsisf@GCC_3.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.2.0 1:4.2.1
+ __floatunsidf@GCC_4.2.0 1:4.2.1
+ __floatunsisf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __gcc_qadd@GCC_4.1.0 1:4.1.1
+ __gcc_qdiv@GCC_4.1.0 1:4.1.1
+ __gcc_qmul@GCC_4.1.0 1:4.1.1
+ __gcc_qsub@GCC_4.1.0 1:4.1.1
+ __gedf2@GCC_3.0 1:4.1.1
+ __gesf2@GCC_3.0 1:4.1.1
+ __gtdf2@GCC_3.0 1:4.1.1
+ __gtsf2@GCC_3.0 1:4.1.1
+ __ledf2@GCC_3.0 1:4.1.1
+ __lesf2@GCC_3.0 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __ltdf2@GCC_3.0 1:4.1.1
+ __ltsf2@GCC_3.0 1:4.1.1
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldf3@GCC_3.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __mulsf3@GCC_3.0 1:4.1.1
+ __multc3@GCC_4.1.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __nedf2@GCC_3.0 1:4.1.1
+ __negdf2@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negsf2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __nesf2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.1.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subdf3@GCC_3.0 1:4.1.1
+ __subsf3@GCC_3.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __trampoline_setup@GCC_3.4.2 1:4.1.1
+ __truncdfsf2@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unorddf2@GCC_3.3.4 1:4.1.1
+ __unordsf2@GCC_3.3.4 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/rules.parameters
+++ gcc-4.6-4.6.3/debian/rules.parameters
@@ -0,0 +1,34 @@
+# configuration parameters taken from upstream source files
+GCC_VERSION	:= 4.6.3
+NEXT_GCC_VERSION	:= 4.6.4
+BASE_VERSION	:= 4.6
+SOURCE_VERSION	:= 4.6.3-13
+DEB_VERSION	:= 4.6.3-13
+DEB_EVERSION	:= 1:4.6.3-13
+GDC_BASE_VERSION  := 
+DEB_GDC_VERSION	:= 
+DEB_SOVERSION	:= 4.6
+DEB_SOEVERSION	:= 1:4.6
+DEB_LIBGCC_SOVERSION	:= 1:4.6
+DEB_LIBGCC_VERSION	:= 1:4.6.3-13
+DEB_STDCXX_SOVERSION	:= 4.6
+DEB_GCJ_SOVERSION	:= 4.6
+PKG_GCJ_EXT	:= 12
+PKG_LIBGCJ_EXT	:= 12
+DEB_GOMP_SOVERSION	:= 4.6
+DEB_GCCMATH_SOVERSION	:= 4.6
+GCC_SONAME	:= 1
+CXX_SONAME	:= 6
+FORTRAN_SONAME	:= 3
+OBJC_SONAME	:= 3
+GCJ_SONAME	:= 12
+GNAT_VERSION	:= 4.6
+GNAT_SONAME	:= 4.6
+FFI_SONAME	:= 4
+MUDFLAP_SONAME	:= 0
+SSP_SONAME	:= 0
+GOMP_SONAME	:= 1
+QMATH_SONAME	:= 0
+GCCMATH_SONAME	:= 
+GO_SONAME		:= 0
+LIBC_DEP		:= libc6
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.s390x
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.s390x
@@ -0,0 +1,107 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.1.0@GCC_4.1.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.2@GLIBC_2.2 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.1.0 1:4.1.1
+ __divti3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfti@GCC_4.1.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfti@GCC_4.1.0 1:4.1.1
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_4.1.0 1:4.1.1
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.2 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __lshrti3@GCC_3.0 1:4.1.1
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.1.0 1:4.1.1
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.1.0 1:4.1.1
+ __register_frame@GLIBC_2.2 1:4.1.1
+ __register_frame_info@GLIBC_2.2 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.2 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.2 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.64bit
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.64bit
@@ -0,0 +1,556 @@
+#include "libstdc++6.symbols.common"
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSsixEm@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5
+ _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.6.0
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPclc@GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEl@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEl@GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEli@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPclc@GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.6.0
+ _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5
+ _ZNSs2atEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsixEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6setbufEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_l@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKal@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhl@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPalS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPclS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhlS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1El@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKal@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhl@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPalS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPclS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhlS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2El@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ (arch=!alpha !powerpc !powerpcspe !ppc64 !s390)_ZNSt14numeric_limitsIeE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEl@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEl@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_l@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEl@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEl@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_l@GLIBCXX_3.4.16 4.6.0
+ _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6
+ _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.8 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.8 4.1.1
+ _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZTIPKn@CXXABI_1.3.5 4.6
+ _ZTIPKo@CXXABI_1.3.5 4.6
+ _ZTIPn@CXXABI_1.3.5 4.6
+ _ZTIPo@CXXABI_1.3.5 4.6
+ _ZTIn@CXXABI_1.3.5 4.6
+ _ZTIo@CXXABI_1.3.5 4.6
+ _ZThn16_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSiD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSiD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSoD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSoD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _Znam@GLIBCXX_3.4 4.1.1
+ _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ _Znwm@GLIBCXX_3.4 4.1.1
+ _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+ _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1
--- gcc-4.6-4.6.3.orig/debian/cpp-BV-doc.doc-base.cppint
+++ gcc-4.6-4.6.3/debian/cpp-BV-doc.doc-base.cppint
@@ -0,0 +1,17 @@
+Document: cppinternals-@BV@
+Title: The GNU C preprocessor (internals)
+Author: Various
+Abstract: This brief manual documents the internals of cpplib, and
+ explains some of the tricky issues.  It is intended that, along with
+ the comments in the source code, a reasonably competent C programmer
+ should be able to figure out what the code is doing, and why things
+ have been implemented the way they have.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc-@BV@-base/cppinternals.html
+Files: /usr/share/doc/gcc-@BV@-base/cppinternals.html
+
+Format: info
+Index: /usr/share/info/cppinternals-@BV@.info.gz
+Files: /usr/share/info/cppinternals-@BV@*
--- gcc-4.6-4.6.3.orig/debian/gfortran-BV-doc.doc-base
+++ gcc-4.6-4.6.3/debian/gfortran-BV-doc.doc-base
@@ -0,0 +1,14 @@
+Document: gfortran-@BV@
+Title: The GNU Fortran Compiler 
+Author: Various
+Abstract: This manual documents how to run, install and port `gfortran',
+ as well as its new features and incompatibilities, and how to report bugs.
+Section: Programming/Fortran
+
+Format: html
+Index: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html
+Files: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html
+
+Format: info
+Index: /usr/share/info/gfortran-@BV@.info.gz
+Files: /usr/share/info/gfortran-@BV@*
--- gcc-4.6-4.6.3.orig/debian/lib64stdc++6.symbols.i386
+++ gcc-4.6-4.6.3/debian/lib64stdc++6.symbols.i386
@@ -0,0 +1,31 @@
+libstdc++.so.6 lib64stdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# acosl@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# asinl@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# atan2l@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# atanl@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# ceill@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# coshl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# cosl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# expl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# floorl@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# fmodl@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# frexpl@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# hypotl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# ldexpl@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# log10l@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# logl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# modfl@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# powl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# sinhl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# sinl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# sqrtl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# tanhl@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# tanl@GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/lib64gcc1.symbols.i386
+++ gcc-4.6-4.6.3/debian/lib64gcc1.symbols.i386
@@ -0,0 +1,144 @@
+libgcc_s.so.1 lib64gcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addtf3@GCC_4.3.0 1:4.3
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GCC_3.0 1:4.1.1
+ __deregister_frame_info@GCC_3.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.0.0 1:4.3
+ __divtc3@GCC_4.3.0 1:4.4.0
+ __divtf3@GCC_4.3.0 1:4.3
+ __divti3@GCC_3.0 1:4.1.1
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.3.0 1:4.3
+ __extenddftf2@GCC_4.3.0 1:4.3
+ __extendsftf2@GCC_4.3.0 1:4.3
+ __extendxftf2@GCC_4.3.0 1:4.3
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.3.0 1:4.3
+ __fixtfsi@GCC_4.3.0 1:4.3
+ __fixtfti@GCC_4.3.0 1:4.3
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.3.0 1:4.3
+ __fixunstfsi@GCC_4.3.0 1:4.3
+ __fixunstfti@GCC_4.3.0 1:4.3
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfti@GCC_3.0 1:4.1.1
+ __fixxfti@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.3.0 1:4.3
+ __floatsitf@GCC_4.3.0 1:4.3
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_4.3.0 1:4.3
+ __floattixf@GCC_3.0 1:4.1.1
+ __floatunditf@GCC_4.3.0 1:4.3
+ __floatunsitf@GCC_4.3.0 1:4.3
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.3.0 1:4.3
+ __floatuntixf@GCC_4.2.0 1:4.2.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.3.0 1:4.3
+ __gttf2@GCC_3.0 1:4.3
+ __gttf2@GCC_4.3.0 1:4.4.0
+ __letf2@GCC_4.3.0 1:4.3
+ __lshrti3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_3.0 1:4.3
+ __lttf2@GCC_4.3.0 1:4.4.0
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.0.0 1:4.3
+ __multc3@GCC_4.3.0 1:4.4.0
+ __multf3@GCC_4.3.0 1:4.3
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negtf2@GCC_4.3.0 1:4.3
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __netf2@GCC_3.0 1:4.3
+ __netf2@GCC_4.3.0 1:4.4.0
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.0.0 1:4.3
+ __powitf2@GCC_4.3.0 1:4.4.0
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GCC_3.0 1:4.1.1
+ __register_frame_info@GCC_3.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GCC_3.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GCC_3.0 1:4.1.1
+ __subtf3@GCC_4.3.0 1:4.3
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __trunctfdf2@GCC_4.3.0 1:4.3
+ __trunctfsf2@GCC_4.3.0 1:4.3
+ __trunctfxf2@GCC_4.3.0 1:4.3
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
+ __unordtf2@GCC_4.3.0 1:4.3
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.s390x
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.s390x
@@ -0,0 +1,11 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.common
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.common
@@ -0,0 +1,3052 @@
+ CXXABI_1.3.1@CXXABI_1.3.1 4.1.1
+ CXXABI_1.3.2@CXXABI_1.3.2 4.3
+ CXXABI_1.3.3@CXXABI_1.3.3 4.4.0
+ CXXABI_1.3.4@CXXABI_1.3.4 4.5
+ CXXABI_1.3.5@CXXABI_1.3.5 4.6
+ CXXABI_1.3@CXXABI_1.3 4.1.1
+ GLIBCXX_3.4.10@GLIBCXX_3.4.10 4.3
+ GLIBCXX_3.4.11@GLIBCXX_3.4.11 4.4.0
+ GLIBCXX_3.4.12@GLIBCXX_3.4.12 4.4.0
+ GLIBCXX_3.4.13@GLIBCXX_3.4.13 4.4.1-4
+ GLIBCXX_3.4.14@GLIBCXX_3.4.14 4.5
+ GLIBCXX_3.4.15@GLIBCXX_3.4.15 4.6
+ GLIBCXX_3.4.16@GLIBCXX_3.4.16 4.6.0
+ GLIBCXX_3.4.1@GLIBCXX_3.4.1 4.1.1
+ GLIBCXX_3.4.2@GLIBCXX_3.4.2 4.1.1
+ GLIBCXX_3.4.3@GLIBCXX_3.4.3 4.1.1
+ GLIBCXX_3.4.4@GLIBCXX_3.4.4 4.1.1
+ GLIBCXX_3.4.5@GLIBCXX_3.4.5 4.1.1
+ GLIBCXX_3.4.6@GLIBCXX_3.4.6 4.1.1
+ GLIBCXX_3.4.7@GLIBCXX_3.4.7 4.1.1
+ GLIBCXX_3.4.8@GLIBCXX_3.4.8 4.1.1
+ GLIBCXX_3.4.9@GLIBCXX_3.4.9 4.2.1
+ GLIBCXX_3.4@GLIBCXX_3.4 4.1.1
+ _ZGVNSt10moneypunctIcLb0EE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt10moneypunctIcLb1EE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt10moneypunctIwLb0EE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt10moneypunctIwLb1EE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt11__timepunctIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt11__timepunctIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt7collateIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt7collateIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt8messagesIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt8messagesIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt8numpunctIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt8numpunctIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZN10__cxxabiv116__enum_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv116__enum_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv116__enum_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__array_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__array_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__array_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__class_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__class_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__class_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__pbase_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__pbase_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__pbase_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv119__pointer_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv119__pointer_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv119__pointer_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__function_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__function_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__function_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__si_class_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__si_class_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__si_class_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv121__vmi_class_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv121__vmi_class_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv121__vmi_class_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv123__fundamental_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv123__fundamental_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv123__fundamental_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@CXXABI_1.3 4.1.1
+ _ZN10__gnu_norm15_List_node_base4hookEPS0_@GLIBCXX_3.4 4.1.1
+ _ZN10__gnu_norm15_List_node_base4swapERS0_S1_@GLIBCXX_3.4 4.1.1
+ _ZN10__gnu_norm15_List_node_base6unhookEv@GLIBCXX_3.4 4.1.1
+ _ZN10__gnu_norm15_List_node_base7reverseEv@GLIBCXX_3.4 4.1.1
+ _ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@GLIBCXX_3.4.9 4.2.1
+ _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4.9 4.2.1
+ _ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@GLIBCXX_3.4.9 4.2.1
+ _ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@GLIBCXX_3.4.9 4.2.1
+ _ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@GLIBCXX_3.4 4.1.1
+ _ZN14__gnu_parallel9_Settings3getEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN14__gnu_parallel9_Settings3setERS0_@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx27__verbose_terminate_handlerEv@CXXABI_1.3 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@GLIBCXX_3.4.6 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list8_M_clearEv@GLIBCXX_3.4.4 4.1.1
+ _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__function_type_info15__is_function_pEv@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@CXXABI_1.3 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@GLIBCXX_3.4.10 4.3
+ _ZNK11__gnu_debug16_Error_formatter8_M_errorEv@GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.15 4.6
+ _ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@GLIBCXX_3.4.14 4.5
+ _ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@GLIBCXX_3.4.14 4.5
+ _ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.15 4.6
+ _ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@GLIBCXX_3.4.14 4.5
+ _ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@GLIBCXX_3.4.14 4.5
+ _ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@GLIBCXX_3.4 4.1.1
+ _ZNKSi6gcountEv@GLIBCXX_3.4 4.1.1
+ _ZNKSi6sentrycvbEv@GLIBCXX_3.4 4.1.1
+ _ZNKSo6sentrycvbEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSs13get_allocatorEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs3endEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs4_Rep12_M_is_leakedEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs4_Rep12_M_is_sharedEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs4backEv@GLIBCXX_3.4.15 4.6
+ _ZNKSs4cendEv@GLIBCXX_3.4.14 4.5
+ _ZNKSs4dataEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs4rendEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs4sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs5beginEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs5c_strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs5crendEv@GLIBCXX_3.4.14 4.5
+ _ZNKSs5emptyEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs5frontEv@GLIBCXX_3.4.15 4.6
+ _ZNKSs6_M_repEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs6cbeginEv@GLIBCXX_3.4.14 4.5
+ _ZNKSs6lengthEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs6rbeginEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs7_M_dataEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs7_M_iendEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareERKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSs7crbeginEv@GLIBCXX_3.4.14 4.5
+ _ZNKSs8capacityEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs8max_sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNKSs9_M_ibeginEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10bad_typeid4whatEv@GLIBCXX_3.4.9 4.2.1
+ _ZNKSt10error_code23default_error_conditionEv@GLIBCXX_3.4.11 4.4.0
+ _ZNKSt10istrstream5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10lock_error4whatEv@GLIBCXX_3.4.11 4.4.0
+ _ZNKSt10moneypunctIcLb0EE10neg_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE10pos_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE11curr_symbolEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE11do_groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE11frac_digitsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13negative_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13positive_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE16do_negative_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE16do_positive_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE8groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE10neg_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE10pos_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE11curr_symbolEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE11do_groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE11frac_digitsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13negative_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13positive_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE16do_negative_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE16do_positive_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE8groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE10neg_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE10pos_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE11curr_symbolEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE11do_groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE11frac_digitsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13negative_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13positive_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE16do_negative_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE16do_positive_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE8groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE10neg_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE10pos_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE11curr_symbolEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE11do_groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE11frac_digitsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13negative_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13positive_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE16do_negative_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE16do_positive_signEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE8groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10ostrstream5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt10ostrstream6pcountEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE7_M_daysEPPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE8_M_am_pmEPPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE9_M_monthsEPPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE7_M_daysEPPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE8_M_am_pmEPPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE9_M_monthsEPPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt11logic_error4whatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt12__basic_fileIcE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt12bad_weak_ptr4whatEv@GLIBCXX_3.4.15 4.6
+ _ZNKSt12future_error4whatEv@GLIBCXX_3.4.14 4.5
+ _ZNKSt12strstreambuf6pcountEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13bad_exception4whatEv@GLIBCXX_3.4.9 4.2.1
+ _ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1
+ _ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1
+ _ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt13runtime_error4whatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1
+ _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1
+ _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1
+ _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1
+ _ZNKSt14error_category10equivalentERKSt10error_codei@GLIBCXX_3.4.11 4.4.0
+ _ZNKSt14error_category10equivalentEiRKSt15error_condition@GLIBCXX_3.4.11 4.4.0
+ _ZNKSt14error_category23default_error_conditionEi@GLIBCXX_3.4.11 4.4.0
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@GLIBCXX_3.4.10 4.3
+ _ZNKSt3tr14hashIRKSsEclES2_@GLIBCXX_3.4.10 4.3
+ _ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@GLIBCXX_3.4.10 4.3
+ _ZNKSt3tr14hashISsEclESs@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIRKSsEclES1_@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashISsEclESs@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashISt10error_codeEclES0_@GLIBCXX_3.4.11 4.4.0
+ _ZNKSt5ctypeIcE10do_tolowerEPcPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE10do_tolowerEc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE10do_toupperEPcPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE10do_toupperEc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE13_M_widen_initEv@GLIBCXX_3.4.11 4.4.0
+ _ZNKSt5ctypeIcE14_M_narrow_initEv@GLIBCXX_3.4.11 4.4.0
+ _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE8do_widenEc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE9do_narrowEcc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_tolowerEPwPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_tolowerEw@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_toupperEPwPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_toupperEw@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE5do_isEPKwS2_Pt@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE5do_isEtw@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE8do_widenEc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE9do_narrowEwc@GLIBCXX_3.4 4.1.1
+ _ZNKSt6locale2id5_M_idEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt6locale4nameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt6localeeqERKS_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE10_M_compareEPKcS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12do_transformEPKcS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE4hashEPKcS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE7compareEPKcS2_S2_S2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE7do_hashEPKcS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE9transformEPKcS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE10_M_compareEPKwS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12do_transformEPKwS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE4hashEPKwS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE7compareEPKwS2_S2_S2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE7do_hashEPKwS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE9transformEPKwS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@GLIBCXX_3.4 4.1.1
+ _ZNKSt8bad_cast4whatEv@GLIBCXX_3.4.9 4.2.1
+ _ZNKSt8ios_base7failure4whatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE18_M_convert_to_charERKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE20_M_convert_from_charEPc@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE3getEiiiRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE4openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE4openERKSsRKSt6localePKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE5closeEi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE6do_getEiiiRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE7do_openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE8do_closeEi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE20_M_convert_from_charEPc@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE4openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE4openERKSsRKSt6localePKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE5closeEi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE7do_openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE8do_closeEi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE11do_groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE11do_truenameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE12do_falsenameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE13decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE13thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE8groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE8truenameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE9falsenameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE11do_groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE11do_truenameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE12do_falsenameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE13decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE13thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE8groupingEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE8truenameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE9falsenameEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@GLIBCXX_3.4 4.1.1
+ _ZNKSt9bad_alloc4whatEv@GLIBCXX_3.4.9 4.2.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9exception4whatEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1
+ _ZNKSt9strstream5rdbufEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9strstream6pcountEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9type_info10__do_catchEPKS_PPvj@GLIBCXX_3.4 4.1.1
+ _ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9type_info14__is_pointer_pEv@GLIBCXX_3.4 4.1.1
+ _ZNKSt9type_info15__is_function_pEv@GLIBCXX_3.4 4.1.1
+ _ZNSaIcEC1ERKS_@GLIBCXX_3.4 4.1.1
+ _ZNSaIcEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSaIcEC2ERKS_@GLIBCXX_3.4 4.1.1
+ _ZNSaIcEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSaIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSaIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSaIwEC1ERKS_@GLIBCXX_3.4 4.1.1
+ _ZNSaIwEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSaIwEC2ERKS_@GLIBCXX_3.4 4.1.1
+ _ZNSaIwEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSaIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSaIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.15 4.6
+ _ZNSbIwSt11char_traitsIwESaIwEE4nposE@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5clearEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.15 4.6
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@GLIBCXX_3.4.15 4.6
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEEaSEw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEEpLEw@GLIBCXX_3.4 4.1.1
+ _ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSdC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSdC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSdD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSi10_M_extractIPvEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIbEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIdEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIeEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIfEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIjEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIlEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractImEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractItEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIxEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIyEERSiRT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@GLIBCXX_3.4 4.1.1
+ _ZNSi3getERc@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEv@GLIBCXX_3.4 4.1.1
+ _ZNSi4peekEv@GLIBCXX_3.4 4.1.1
+ _ZNSi4syncEv@GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZNSi5tellgEv@GLIBCXX_3.4 4.1.1
+ _ZNSi5ungetEv@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEv@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEv@GLIBCXX_3.4.5 4.1.1
+ _ZNSi6sentryC1ERSib@GLIBCXX_3.4 4.1.1
+ _ZNSi6sentryC2ERSib@GLIBCXX_3.4 4.1.1
+ _ZNSi7putbackEc@GLIBCXX_3.4 4.1.1
+ _ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSiC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSiC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSiD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSiD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSiD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSirsEPFRSiS_E@GLIBCXX_3.4 4.1.1
+ _ZNSirsEPFRSt8ios_baseS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@GLIBCXX_3.4 4.1.1
+ _ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSirsERPv@GLIBCXX_3.4 4.1.1
+ _ZNSirsERb@GLIBCXX_3.4 4.1.1
+ _ZNSirsERd@GLIBCXX_3.4 4.1.1
+ _ZNSirsERe@GLIBCXX_3.4 4.1.1
+ _ZNSirsERf@GLIBCXX_3.4 4.1.1
+ _ZNSirsERi@GLIBCXX_3.4 4.1.1
+ _ZNSirsERj@GLIBCXX_3.4 4.1.1
+ _ZNSirsERl@GLIBCXX_3.4 4.1.1
+ _ZNSirsERm@GLIBCXX_3.4 4.1.1
+ _ZNSirsERs@GLIBCXX_3.4 4.1.1
+ _ZNSirsERt@GLIBCXX_3.4 4.1.1
+ _ZNSirsERx@GLIBCXX_3.4 4.1.1
+ _ZNSirsERy@GLIBCXX_3.4 4.1.1
+ _ZNSo3putEc@GLIBCXX_3.4 4.1.1
+ _ZNSo5flushEv@GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZNSo5tellpEv@GLIBCXX_3.4 4.1.1
+ _ZNSo6sentryC1ERSo@GLIBCXX_3.4 4.1.1
+ _ZNSo6sentryC2ERSo@GLIBCXX_3.4 4.1.1
+ _ZNSo6sentryD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSo6sentryD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSo9_M_insertIPKvEERSoT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIbEERSoT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIdEERSoT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIeEERSoT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIlEERSoT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertImEERSoT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIxEERSoT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIyEERSoT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSoC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSoC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSoD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSoD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSoD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSolsEPFRSoS_E@GLIBCXX_3.4 4.1.1
+ _ZNSolsEPFRSt8ios_baseS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@GLIBCXX_3.4 4.1.1
+ _ZNSolsEPKv@GLIBCXX_3.4 4.1.1
+ _ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZNSolsEb@GLIBCXX_3.4 4.1.1
+ _ZNSolsEd@GLIBCXX_3.4 4.1.1
+ _ZNSolsEe@GLIBCXX_3.4 4.1.1
+ _ZNSolsEf@GLIBCXX_3.4 4.1.1
+ _ZNSolsEi@GLIBCXX_3.4 4.1.1
+ _ZNSolsEj@GLIBCXX_3.4 4.1.1
+ _ZNSolsEl@GLIBCXX_3.4 4.1.1
+ _ZNSolsEm@GLIBCXX_3.4 4.1.1
+ _ZNSolsEs@GLIBCXX_3.4 4.1.1
+ _ZNSolsEt@GLIBCXX_3.4 4.1.1
+ _ZNSolsEx@GLIBCXX_3.4 4.1.1
+ _ZNSolsEy@GLIBCXX_3.4 4.1.1
+ _ZNSs12_Alloc_hiderC1EPcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs12_Alloc_hiderC2EPcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs12_M_leak_hardEv@GLIBCXX_3.4 4.1.1
+ _ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5
+ _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5
+ _ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5
+ _ZNSs12_S_empty_repEv@GLIBCXX_3.4 4.1.1
+ _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@GLIBCXX_3.4 4.1.1
+ _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@GLIBCXX_3.4 4.1.1
+ _ZNSs13_S_copy_charsEPcPKcS1_@GLIBCXX_3.4 4.1.1
+ _ZNSs13_S_copy_charsEPcS_S_@GLIBCXX_3.4 4.1.1
+ _ZNSs13shrink_to_fitEv@GLIBCXX_3.4.14 4.5
+ _ZNSs3endEv@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep10_M_destroyERKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep10_M_disposeERKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep10_M_refcopyEv@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep10_M_refdataEv@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep11_S_max_sizeE@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep11_S_terminalE@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep12_S_empty_repEv@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep13_M_set_leakedEv@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep15_M_set_sharableEv@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep20_S_empty_rep_storageE@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep7_M_grabERKSaIcES2_@GLIBCXX_3.4 4.1.1
+ _ZNSs4backEv@GLIBCXX_3.4.15 4.6
+ _ZNSs4nposE@GLIBCXX_3.4 4.1.1
+ _ZNSs4rendEv@GLIBCXX_3.4 4.1.1
+ _ZNSs4swapERSs@GLIBCXX_3.4 4.1.1
+ _ZNSs5beginEv@GLIBCXX_3.4 4.1.1
+ _ZNSs5clearEv@GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@GLIBCXX_3.4 4.1.1
+ _ZNSs5frontEv@GLIBCXX_3.4.15 4.6
+ _ZNSs6appendEPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0
+ _ZNSs6assignEOSs@GLIBCXX_3.4.14 4.5
+ _ZNSs6assignEPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@GLIBCXX_3.4 4.1.1
+ _ZNSs6rbeginEv@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_dataEPc@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_leakEv@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@GLIBCXX_3.4.11 4.4.0
+ _ZNSs9push_backEc@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EOSs@GLIBCXX_3.4.14 4.5
+ _ZNSsC1EPKcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ESt16initializer_listIcERKSaIcE@GLIBCXX_3.4.11 4.4.0
+ _ZNSsC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1IPKcEET_S2_RKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1IPcEET_S1_RKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EOSs@GLIBCXX_3.4.15 4.6
+ _ZNSsC2EPKcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ESt16initializer_listIcERKSaIcE@GLIBCXX_3.4.11 4.4.0
+ _ZNSsC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2IPKcEET_S2_RKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2IPcEET_S1_RKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSsD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSsaSEOSs@GLIBCXX_3.4.14 4.5
+ _ZNSsaSEPKc@GLIBCXX_3.4 4.1.1
+ _ZNSsaSERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSsaSESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0
+ _ZNSsaSEc@GLIBCXX_3.4 4.1.1
+ _ZNSspLEPKc@GLIBCXX_3.4 4.1.1
+ _ZNSspLERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSspLESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0
+ _ZNSspLEc@GLIBCXX_3.4 4.1.1
+ _ZNSt10__num_base11_S_atoms_inE@GLIBCXX_3.4 4.1.1
+ _ZNSt10__num_base12_S_atoms_outE@GLIBCXX_3.4 4.1.1
+ _ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@GLIBCXX_3.4 4.1.1
+ _ZNSt10bad_typeidD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10bad_typeidD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10bad_typeidD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5alnumE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5alphaE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5cntrlE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5digitE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5graphE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5lowerE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5printE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5punctE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5spaceE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5upperE@GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base6xdigitE@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstream3strEv@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKc@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPc@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKc@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPc@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10money_base18_S_default_patternE@GLIBCXX_3.4 4.1.1
+ _ZNSt10money_base20_S_construct_patternEccc@GLIBCXX_3.4 4.1.1
+ _ZNSt10money_base8_S_atomsE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EE4intlE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EE4intlE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EE4intlE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EE4intlE@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstream3strEv@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstream6freezeEb@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4.5 4.1.1
+ _ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4.5 4.1.1
+ _ZNSt11logic_errorC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_errorC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_errorD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_errorD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_errorD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt11regex_errorD0Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt11regex_errorD1Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt11regex_errorD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt12__basic_fileIcE2fdEv@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE4fileEv@GLIBCXX_3.4.1 4.1.1
+ _ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE4syncEv@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE9showmanycEv@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12bad_weak_ptrD0Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt12bad_weak_ptrD1Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt12bad_weak_ptrD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt12ctype_bynameIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt12future_errorD0Ev@GLIBCXX_3.4.14 4.5
+ _ZNSt12future_errorD1Ev@GLIBCXX_3.4.14 4.5
+ _ZNSt12future_errorD2Ev@GLIBCXX_3.4.14 4.5
+ _ZNSt12length_errorC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt12length_errorC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt12length_errorD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12length_errorD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12length_errorD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt12out_of_rangeC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt12out_of_rangeC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt12out_of_rangeD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12out_of_rangeD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12out_of_rangeD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_1E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_2E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_3E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_4E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_5E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_6E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_7E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_8E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_9E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_10E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_11E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_12E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_13E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_14E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_15E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_16E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_17E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_18E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_19E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_20E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_21E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_22E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_23E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_24E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_25E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_26E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_27E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_28E@GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_29E@GLIBCXX_3.4.15 4.6
+ _ZNSt12strstreambuf3strEv@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6freezeEb@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7_M_freeEPc@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8overflowEi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf9pbackfailEi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf9underflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt12system_errorD0Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt12system_errorD1Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt12system_errorD2Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt13__future_base11_State_baseD0Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base11_State_baseD1Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base11_State_baseD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseC1Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseC2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseD0Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseD1Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt13bad_exceptionD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13bad_exceptionD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13bad_exceptionD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@GLIBCXX_3.4.15 4.6
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@GLIBCXX_3.4.15 4.6
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14error_categoryC1Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt14error_categoryC2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt14error_categoryD0Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt14error_categoryD1Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt14error_categoryD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt14numeric_limitsIDiE10has_denormE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE10is_boundedE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE10is_integerE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE11round_styleE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE12has_infinityE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIDiE12max_exponentE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE12min_exponentE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE13has_quiet_NaNE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE14is_specializedE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE14max_exponent10E@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE14min_exponent10E@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE15has_denorm_lossE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE15tinyness_beforeE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE17has_signaling_NaNE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE5radixE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE5trapsE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE6digitsE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE8digits10E@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE8is_exactE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE9is_iec559E@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE9is_moduloE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE9is_signedE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE10has_denormE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE10is_boundedE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE10is_integerE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE11round_styleE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE12has_infinityE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIDsE12max_exponentE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE12min_exponentE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE13has_quiet_NaNE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE14is_specializedE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE14max_exponent10E@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE14min_exponent10E@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE15has_denorm_lossE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE15tinyness_beforeE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE17has_signaling_NaNE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE5radixE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE5trapsE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE6digitsE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE8digits10E@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE8is_exactE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE9is_iec559E@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE9is_moduloE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE9is_signedE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIaE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIaE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIbE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIcE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIdE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIfE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIhE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIiE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIjE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIlE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsImE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIsE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsItE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIwE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIxE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIyE12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt15_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5
+ _ZNSt15_List_node_base11_M_transferEPS_S0_@GLIBCXX_3.4.14 4.5
+ _ZNSt15_List_node_base4hookEPS_@GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base4swapERS_S0_@GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base6unhookEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base7_M_hookEPS_@GLIBCXX_3.4.14 4.5
+ _ZNSt15_List_node_base7reverseEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base8transferEPS_S0_@GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@GLIBCXX_3.4.10 4.3
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@GLIBCXX_3.4.10 4.3
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@GLIBCXX_3.4.6 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@GLIBCXX_3.4.6 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt16nested_exceptionD0Ev@CXXABI_1.3.5 4.6
+ _ZNSt16nested_exceptionD1Ev@CXXABI_1.3.5 4.6
+ _ZNSt16nested_exceptionD2Ev@CXXABI_1.3.5 4.6
+ _ZNSt17__timepunct_cacheIcE12_S_timezonesE@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwE12_S_timezonesE@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwED2Ev@GLIBCXX_3.4 4.1.1
+#MISSING: 4.6# _ZNSt17bad_function_callD0Ev@CXXABI_1.3.5 4.6
+ _ZNSt17bad_function_callD0Ev@GLIBCXX_3.4.15 4.6
+#MISSING: 4.6# _ZNSt17bad_function_callD1Ev@CXXABI_1.3.5 4.6
+ _ZNSt17bad_function_callD1Ev@GLIBCXX_3.4.15 4.6
+#MISSING: 4.6# _ZNSt17bad_function_callD2Ev@CXXABI_1.3.5 4.6
+ _ZNSt17bad_function_callD2Ev@GLIBCXX_3.4.15 4.6
+ _ZNSt17moneypunct_bynameIcLb0EE4intlE@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EE4intlE@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EE4intlE@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EE4intlE@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt18condition_variable10notify_allEv@GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variable10notify_oneEv@GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variableC1Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variableC2Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variableD1Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variableD2Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 4.1.1
+ _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4.5 4.1.1
+ _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 4.1.1
+ _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4.5 4.1.1
+ _ZNSt21__numeric_limits_base10has_denormE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base10is_boundedE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base10is_integerE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base11round_styleE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base12has_infinityE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base12max_digits10E@GLIBCXX_3.4.14 4.5.0
+ _ZNSt21__numeric_limits_base12max_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base12min_exponentE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base13has_quiet_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base14is_specializedE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base14max_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base14min_exponent10E@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base15has_denorm_lossE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base15tinyness_beforeE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base17has_signaling_NaNE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base5radixE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base5trapsE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base6digitsE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base8digits10E@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base8is_exactE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base9is_iec559E@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base9is_moduloE@GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base9is_signedE@GLIBCXX_3.4 4.1.1
+ _ZNSt22condition_variable_anyC1Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt22condition_variable_anyC2Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt22condition_variable_anyD1Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt22condition_variable_anyD2Ev@GLIBCXX_3.4.11 4.4.0
+ _ZNSt3tr18__detail12__prime_listE@GLIBCXX_3.4.10 4.3
+ _ZNSt5ctypeIcE10table_sizeE@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcE13classic_tableEv@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwE19_M_initialize_ctypeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6__norm15_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5
+ _ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.14 4.5
+ _ZNSt6__norm15_List_node_base4hookEPS0_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base4swapERS0_S1_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base6unhookEv@GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.14 4.5
+ _ZNSt6__norm15_List_node_base7reverseEv@GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5
+ _ZNSt6chrono12system_clock12is_monotonicE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt6chrono12system_clock3nowEv@GLIBCXX_3.4.11 4.4.0
+ _ZNSt6locale11_M_coalesceERKS_S1_i@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale21_S_normalize_categoryEi@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale3allE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale4noneE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale4timeE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5ctypeE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facet13_S_get_c_nameEv@GLIBCXX_3.4.6 4.1.1
+ _ZNSt6locale5facet15_S_get_c_localeEv@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facetD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facetD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facetD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale6globalERKS_@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale7classicEv@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale7collateE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale7numericE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale8messagesE@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale8monetaryE@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1EPKc@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1EPNS_5_ImplE@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1ERKS_@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1ERKS_PKci@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1ERKS_S1_i@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2EPKc@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2EPNS_5_ImplE@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2ERKS_@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2ERKS_PKci@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2ERKS_S1_i@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt6localeaSERKS_@GLIBCXX_3.4 4.1.1
+ _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@GLIBCXX_3.4.11 4.4.0
+ _ZNSt6thread4joinEv@GLIBCXX_3.4.11 4.4.0
+ _ZNSt6thread6detachEv@GLIBCXX_3.4.11 4.4.0
+ _ZNSt7codecvtIcc11__mbstate_tE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8__detail12__prime_listE@GLIBCXX_3.4.10 4.3
+ _ZNSt8__detail15_List_node_base10_M_reverseEv@GLIBCXX_3.4.15 4.6
+ _ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.15 4.6
+ _ZNSt8__detail15_List_node_base4swapERS0_S1_@GLIBCXX_3.4.15 4.6
+ _ZNSt8__detail15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.15 4.6
+ _ZNSt8__detail15_List_node_base9_M_unhookEv@GLIBCXX_3.4.15 4.6
+ _ZNSt8bad_castD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8bad_castD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8bad_castD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base10floatfieldE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base10scientificE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base11adjustfieldE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base13_M_grow_wordsEib@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base15sync_with_stdioEb@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base17_M_call_callbacksENS_5eventE@GLIBCXX_3.4.6 4.1.1
+ _ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base20_M_dispose_callbacksEv@GLIBCXX_3.4.6 4.1.1
+ _ZNSt8ios_base2inE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3appE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3ateE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3begE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3curE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3decE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3endE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3hexE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3octE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3outE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4InitC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4InitC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4InitD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4InitD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4leftE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base5fixedE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base5imbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base5rightE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base5truncE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6badbitE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6binaryE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6eofbitE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6skipwsE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6xallocEv@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7_M_initEv@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failbitE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureC1ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureC2ERKSs@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7goodbitE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7showposE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7unitbufE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base8internalE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base8showbaseE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base9basefieldE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base9boolalphaE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base9showpointE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base9uppercaseE@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@GLIBCXX_3.4.14 4.5
+ _ZNSt9__atomic011atomic_flag5clearESt12memory_order@GLIBCXX_3.4.14 4.5
+ _ZNSt9__cxx199815_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5
+ _ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.14 4.5
+ _ZNSt9__cxx199815_List_node_base4hookEPS0_@GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base4swapERS0_S1_@GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.14 4.5
+ _ZNSt9__cxx199815_List_node_base6unhookEv@GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base7reverseEv@GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5
+ _ZNSt9bad_allocD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9bad_allocD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9bad_allocD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9exceptionD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9exceptionD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9exceptionD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstream3strEv@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstream6freezeEb@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamC1EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamC1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamC2EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamC2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9type_infoD0Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9type_infoD1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt9type_infoD2Ev@GLIBCXX_3.4 4.1.1
+ _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@GLIBCXX_3.4.11 4.4.0
+ _ZNVSt9__atomic011atomic_flag5clearESt12memory_order@GLIBCXX_3.4.11 4.4.0
+ _ZSt10adopt_lock@GLIBCXX_3.4.11 4.4.0
+ _ZSt10defer_lock@GLIBCXX_3.4.11 4.4.0
+ _ZSt10unexpectedv@GLIBCXX_3.4 4.1.1
+ _ZSt11__once_call@GLIBCXX_3.4.11 4.4.0
+ _ZSt11try_to_lock@GLIBCXX_3.4.11 4.4.0
+ _ZSt13set_terminatePFvvE@GLIBCXX_3.4 4.1.1
+ _ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1
+ _ZSt14set_unexpectedPFvvE@GLIBCXX_3.4 4.1.1
+ _ZSt15__once_callable@GLIBCXX_3.4.11 4.4.0
+ _ZSt15future_category@GLIBCXX_3.4.14 4.5
+ _ZSt15future_categoryv@GLIBCXX_3.4.15 4.6
+ _ZSt15set_new_handlerPFvvE@GLIBCXX_3.4 4.1.1
+ _ZSt15system_categoryv@GLIBCXX_3.4.11 4.4.0
+ _ZSt16__throw_bad_castv@GLIBCXX_3.4 4.1.1
+ _ZSt16generic_categoryv@GLIBCXX_3.4.11 4.4.0
+ _ZSt17__throw_bad_allocv@GLIBCXX_3.4 4.1.1
+ _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1
+ _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1
+ _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1
+ _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1
+ _ZSt18__throw_bad_typeidv@GLIBCXX_3.4 4.1.1
+ _ZSt18uncaught_exceptionv@GLIBCXX_3.4 4.1.1
+ _ZSt19__throw_ios_failurePKc@GLIBCXX_3.4 4.1.1
+ _ZSt19__throw_logic_errorPKc@GLIBCXX_3.4 4.1.1
+ _ZSt19__throw_range_errorPKc@GLIBCXX_3.4 4.1.1
+ _ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@GLIBCXX_3.4.15 4.6
+ _ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@GLIBCXX_3.4 4.1.1
+ _ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@GLIBCXX_3.4 4.1.1
+ _ZSt20__throw_domain_errorPKc@GLIBCXX_3.4 4.1.1
+ _ZSt20__throw_future_errori@GLIBCXX_3.4.14 4.5
+ _ZSt20__throw_length_errorPKc@GLIBCXX_3.4 4.1.1
+ _ZSt20__throw_out_of_rangePKc@GLIBCXX_3.4 4.1.1
+ _ZSt20__throw_system_errori@GLIBCXX_3.4.11 4.4.0
+ _ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@GLIBCXX_3.4 4.1.1
+ _ZSt21__throw_bad_exceptionv@GLIBCXX_3.4 4.1.1
+ _ZSt21__throw_runtime_errorPKc@GLIBCXX_3.4 4.1.1
+ _ZSt22__throw_overflow_errorPKc@GLIBCXX_3.4 4.1.1
+ _ZSt23__throw_underflow_errorPKc@GLIBCXX_3.4 4.1.1
+ _ZSt24__throw_invalid_argumentPKc@GLIBCXX_3.4 4.1.1
+ _ZSt25__throw_bad_function_callv@GLIBCXX_3.4.14 4.5
+ _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@GLIBCXX_3.4 4.1.1
+ _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@GLIBCXX_3.4 4.1.1
+ _ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1
+ _ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1
+ _ZSt3cin@GLIBCXX_3.4 4.1.1
+ _ZSt4cerr@GLIBCXX_3.4 4.1.1
+ _ZSt4clog@GLIBCXX_3.4 4.1.1
+ _ZSt4cout@GLIBCXX_3.4 4.1.1
+ _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1
+ _ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1
+ _ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1
+ _ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1
+ _ZSt4wcin@GLIBCXX_3.4 4.1.1
+ _ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1
+ _ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1
+ _ZSt5wcerr@GLIBCXX_3.4 4.1.1
+ _ZSt5wclog@GLIBCXX_3.4 4.1.1
+ _ZSt5wcout@GLIBCXX_3.4 4.1.1
+ _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1
+ _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@GLIBCXX_3.4 4.1.1
+ _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1
+ _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@GLIBCXX_3.4 4.1.1
+ _ZSt7nothrow@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt5ctypeIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt5ctypeIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7collateIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7collateIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8messagesIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8messagesIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8numpunctIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8numpunctIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9terminatev@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7collateIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7collateIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1
+ _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@GLIBCXX_3.4 4.1.1
+ _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@GLIBCXX_3.4 4.1.1
+ _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@GLIBCXX_3.4 4.1.1
+ _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@GLIBCXX_3.4 4.1.1
+ _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@GLIBCXX_3.4 4.1.1
+ _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@GLIBCXX_3.4 4.1.1
+ _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@GLIBCXX_3.4 4.1.1
+ _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@GLIBCXX_3.4 4.1.1
+ _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@GLIBCXX_3.4 4.1.1
+ _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1
+ _ZTIDd@CXXABI_1.3.4 4.5
+ _ZTIDe@CXXABI_1.3.4 4.5
+ _ZTIDf@CXXABI_1.3.4 4.5
+ _ZTIDi@CXXABI_1.3.3 4.4.0
+ _ZTIDn@CXXABI_1.3.5 4.6
+ _ZTIDs@CXXABI_1.3.3 4.4.0
+ _ZTIN10__cxxabiv115__forced_unwindE@CXXABI_1.3.2 4.3
+ _ZTIN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv119__foreign_exceptionE@CXXABI_1.3.2 4.3
+ _ZTIN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1
+ _ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTINSt13__future_base11_State_baseE@GLIBCXX_3.4.15 4.6
+ _ZTINSt13__future_base12_Result_baseE@GLIBCXX_3.4.15 4.6
+ _ZTINSt6locale5facetE@GLIBCXX_3.4 4.1.1
+ _ZTINSt8ios_base7failureE@GLIBCXX_3.4 4.1.1
+ _ZTIPDd@CXXABI_1.3.4 4.5
+ _ZTIPDe@CXXABI_1.3.4 4.5
+ _ZTIPDf@CXXABI_1.3.4 4.5
+ _ZTIPDi@CXXABI_1.3.3 4.4.0
+ _ZTIPDn@CXXABI_1.3.5 4.6
+ _ZTIPDs@CXXABI_1.3.3 4.4.0
+ _ZTIPKDd@CXXABI_1.3.4 4.5
+ _ZTIPKDe@CXXABI_1.3.4 4.5
+ _ZTIPKDf@CXXABI_1.3.4 4.5
+ _ZTIPKDi@CXXABI_1.3.3 4.4.0
+ _ZTIPKDn@CXXABI_1.3.5 4.6
+ _ZTIPKDs@CXXABI_1.3.3 4.4.0
+ _ZTIPKa@CXXABI_1.3 4.1.1
+ _ZTIPKb@CXXABI_1.3 4.1.1
+ _ZTIPKc@CXXABI_1.3 4.1.1
+ _ZTIPKd@CXXABI_1.3 4.1.1
+ _ZTIPKe@CXXABI_1.3 4.1.1
+ _ZTIPKf@CXXABI_1.3 4.1.1
+ _ZTIPKh@CXXABI_1.3 4.1.1
+ _ZTIPKi@CXXABI_1.3 4.1.1
+ _ZTIPKj@CXXABI_1.3 4.1.1
+ _ZTIPKl@CXXABI_1.3 4.1.1
+ _ZTIPKm@CXXABI_1.3 4.1.1
+ _ZTIPKs@CXXABI_1.3 4.1.1
+ _ZTIPKt@CXXABI_1.3 4.1.1
+ _ZTIPKv@CXXABI_1.3 4.1.1
+ _ZTIPKw@CXXABI_1.3 4.1.1
+ _ZTIPKx@CXXABI_1.3 4.1.1
+ _ZTIPKy@CXXABI_1.3 4.1.1
+ _ZTIPa@CXXABI_1.3 4.1.1
+ _ZTIPb@CXXABI_1.3 4.1.1
+ _ZTIPc@CXXABI_1.3 4.1.1
+ _ZTIPd@CXXABI_1.3 4.1.1
+ _ZTIPe@CXXABI_1.3 4.1.1
+ _ZTIPf@CXXABI_1.3 4.1.1
+ _ZTIPh@CXXABI_1.3 4.1.1
+ _ZTIPi@CXXABI_1.3 4.1.1
+ _ZTIPj@CXXABI_1.3 4.1.1
+ _ZTIPl@CXXABI_1.3 4.1.1
+ _ZTIPm@CXXABI_1.3 4.1.1
+ _ZTIPs@CXXABI_1.3 4.1.1
+ _ZTIPt@CXXABI_1.3 4.1.1
+ _ZTIPv@CXXABI_1.3 4.1.1
+ _ZTIPw@CXXABI_1.3 4.1.1
+ _ZTIPx@CXXABI_1.3 4.1.1
+ _ZTIPy@CXXABI_1.3 4.1.1
+ _ZTISd@GLIBCXX_3.4 4.1.1
+ _ZTISi@GLIBCXX_3.4 4.1.1
+ _ZTISo@GLIBCXX_3.4 4.1.1
+ _ZTISt10bad_typeid@GLIBCXX_3.4 4.1.1
+ _ZTISt10ctype_base@GLIBCXX_3.4 4.1.1
+ _ZTISt10istrstream@GLIBCXX_3.4 4.1.1
+ _ZTISt10lock_error@GLIBCXX_3.4.11 4.4.0
+ _ZTISt10money_base@GLIBCXX_3.4 4.1.1
+ _ZTISt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTISt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTISt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTISt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTISt10ostrstream@GLIBCXX_3.4 4.1.1
+ _ZTISt11__timepunctIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt11__timepunctIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt11logic_error@GLIBCXX_3.4 4.1.1
+ _ZTISt11range_error@GLIBCXX_3.4 4.1.1
+ _ZTISt11regex_error@GLIBCXX_3.4.15 4.6
+ _ZTISt12bad_weak_ptr@GLIBCXX_3.4.15 4.6
+ _ZTISt12codecvt_base@GLIBCXX_3.4 4.1.1
+ _ZTISt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt12domain_error@GLIBCXX_3.4 4.1.1
+ _ZTISt12future_error@GLIBCXX_3.4.14 4.5
+ _ZTISt12length_error@GLIBCXX_3.4 4.1.1
+ _ZTISt12out_of_range@GLIBCXX_3.4 4.1.1
+ _ZTISt12strstreambuf@GLIBCXX_3.4 4.1.1
+ _ZTISt12system_error@GLIBCXX_3.4.11 4.4.0
+ _ZTISt13bad_exception@GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt13messages_base@GLIBCXX_3.4 4.1.1
+ _ZTISt13runtime_error@GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTISt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTISt14collate_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt14collate_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt14error_category@GLIBCXX_3.4.11 4.4.0
+ _ZTISt14overflow_error@GLIBCXX_3.4 4.1.1
+ _ZTISt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt15messages_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt15messages_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt15underflow_error@GLIBCXX_3.4 4.1.1
+ _ZTISt16invalid_argument@GLIBCXX_3.4 4.1.1
+ _ZTISt16nested_exception@CXXABI_1.3.5 4.6
+#MISSING: 4.6# _ZTISt17bad_function_call@CXXABI_1.3.5 4.6
+ _ZTISt17bad_function_call@GLIBCXX_3.4.15 4.6
+ _ZTISt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTISt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTISt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTISt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTISt5ctypeIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt5ctypeIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTISt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTISt7collateIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt7collateIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt8bad_cast@GLIBCXX_3.4 4.1.1
+ _ZTISt8ios_base@GLIBCXX_3.4 4.1.1
+ _ZTISt8messagesIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt8messagesIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt8numpunctIcE@GLIBCXX_3.4 4.1.1
+ _ZTISt8numpunctIwE@GLIBCXX_3.4 4.1.1
+ _ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt9bad_alloc@GLIBCXX_3.4 4.1.1
+ _ZTISt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTISt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTISt9exception@GLIBCXX_3.4 4.1.1
+ _ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTISt9strstream@GLIBCXX_3.4 4.1.1
+ _ZTISt9time_base@GLIBCXX_3.4 4.1.1
+ _ZTISt9type_info@GLIBCXX_3.4 4.1.1
+ _ZTIa@CXXABI_1.3 4.1.1
+ _ZTIb@CXXABI_1.3 4.1.1
+ _ZTIc@CXXABI_1.3 4.1.1
+ _ZTId@CXXABI_1.3 4.1.1
+ _ZTIe@CXXABI_1.3 4.1.1
+ _ZTIf@CXXABI_1.3 4.1.1
+ _ZTIh@CXXABI_1.3 4.1.1
+ _ZTIi@CXXABI_1.3 4.1.1
+ _ZTIj@CXXABI_1.3 4.1.1
+ _ZTIl@CXXABI_1.3 4.1.1
+ _ZTIm@CXXABI_1.3 4.1.1
+ _ZTIs@CXXABI_1.3 4.1.1
+ _ZTIt@CXXABI_1.3 4.1.1
+ _ZTIv@CXXABI_1.3 4.1.1
+ _ZTIw@CXXABI_1.3 4.1.1
+ _ZTIx@CXXABI_1.3 4.1.1
+ _ZTIy@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1
+ _ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSNSt6locale5facetE@GLIBCXX_3.4 4.1.1
+ _ZTSNSt8ios_base7failureE@GLIBCXX_3.4 4.1.1
+ _ZTSPKa@CXXABI_1.3 4.1.1
+ _ZTSPKb@CXXABI_1.3 4.1.1
+ _ZTSPKc@CXXABI_1.3 4.1.1
+ _ZTSPKd@CXXABI_1.3 4.1.1
+ _ZTSPKe@CXXABI_1.3 4.1.1
+ _ZTSPKf@CXXABI_1.3 4.1.1
+ _ZTSPKh@CXXABI_1.3 4.1.1
+ _ZTSPKi@CXXABI_1.3 4.1.1
+ _ZTSPKj@CXXABI_1.3 4.1.1
+ _ZTSPKl@CXXABI_1.3 4.1.1
+ _ZTSPKm@CXXABI_1.3 4.1.1
+ _ZTSPKs@CXXABI_1.3 4.1.1
+ _ZTSPKt@CXXABI_1.3 4.1.1
+ _ZTSPKv@CXXABI_1.3 4.1.1
+ _ZTSPKw@CXXABI_1.3 4.1.1
+ _ZTSPKx@CXXABI_1.3 4.1.1
+ _ZTSPKy@CXXABI_1.3 4.1.1
+ _ZTSPa@CXXABI_1.3 4.1.1
+ _ZTSPb@CXXABI_1.3 4.1.1
+ _ZTSPc@CXXABI_1.3 4.1.1
+ _ZTSPd@CXXABI_1.3 4.1.1
+ _ZTSPe@CXXABI_1.3 4.1.1
+ _ZTSPf@CXXABI_1.3 4.1.1
+ _ZTSPh@CXXABI_1.3 4.1.1
+ _ZTSPi@CXXABI_1.3 4.1.1
+ _ZTSPj@CXXABI_1.3 4.1.1
+ _ZTSPl@CXXABI_1.3 4.1.1
+ _ZTSPm@CXXABI_1.3 4.1.1
+ _ZTSPs@CXXABI_1.3 4.1.1
+ _ZTSPt@CXXABI_1.3 4.1.1
+ _ZTSPv@CXXABI_1.3 4.1.1
+ _ZTSPw@CXXABI_1.3 4.1.1
+ _ZTSPx@CXXABI_1.3 4.1.1
+ _ZTSPy@CXXABI_1.3 4.1.1
+ _ZTSSd@GLIBCXX_3.4 4.1.1
+ _ZTSSi@GLIBCXX_3.4 4.1.1
+ _ZTSSo@GLIBCXX_3.4 4.1.1
+ _ZTSSt10bad_typeid@GLIBCXX_3.4 4.1.1
+ _ZTSSt10ctype_base@GLIBCXX_3.4 4.1.1
+ _ZTSSt10istrstream@GLIBCXX_3.4 4.1.1
+ _ZTSSt10lock_error@GLIBCXX_3.4.11 4.4.0
+ _ZTSSt10money_base@GLIBCXX_3.4 4.1.1
+ _ZTSSt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTSSt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTSSt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTSSt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTSSt10ostrstream@GLIBCXX_3.4 4.1.1
+ _ZTSSt11__timepunctIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt11__timepunctIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt11logic_error@GLIBCXX_3.4 4.1.1
+ _ZTSSt11range_error@GLIBCXX_3.4 4.1.1
+ _ZTSSt12codecvt_base@GLIBCXX_3.4 4.1.1
+ _ZTSSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt12domain_error@GLIBCXX_3.4 4.1.1
+ _ZTSSt12future_error@GLIBCXX_3.4.14 4.5
+ _ZTSSt12length_error@GLIBCXX_3.4 4.1.1
+ _ZTSSt12out_of_range@GLIBCXX_3.4 4.1.1
+ _ZTSSt12strstreambuf@GLIBCXX_3.4 4.1.1
+ _ZTSSt12system_error@GLIBCXX_3.4.11 4.4.0
+ _ZTSSt13bad_exception@GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt13messages_base@GLIBCXX_3.4 4.1.1
+ _ZTSSt13runtime_error@GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14collate_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14collate_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt14error_category@GLIBCXX_3.4.11 4.4.0
+ _ZTSSt14overflow_error@GLIBCXX_3.4 4.1.1
+ _ZTSSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15messages_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15messages_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt15underflow_error@GLIBCXX_3.4 4.1.1
+ _ZTSSt16invalid_argument@GLIBCXX_3.4 4.1.1
+ _ZTSSt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTSSt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTSSt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTSSt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTSSt5ctypeIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt5ctypeIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTSSt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTSSt7collateIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt7collateIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt8bad_cast@GLIBCXX_3.4 4.1.1
+ _ZTSSt8ios_base@GLIBCXX_3.4 4.1.1
+ _ZTSSt8messagesIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt8messagesIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt8numpunctIcE@GLIBCXX_3.4 4.1.1
+ _ZTSSt8numpunctIwE@GLIBCXX_3.4 4.1.1
+ _ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt9bad_alloc@GLIBCXX_3.4 4.1.1
+ _ZTSSt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt9exception@GLIBCXX_3.4 4.1.1
+ _ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTSSt9strstream@GLIBCXX_3.4 4.1.1
+ _ZTSSt9time_base@GLIBCXX_3.4 4.1.1
+ _ZTSSt9type_info@GLIBCXX_3.4 4.1.1
+ _ZTSa@CXXABI_1.3 4.1.1
+ _ZTSb@CXXABI_1.3 4.1.1
+ _ZTSc@CXXABI_1.3 4.1.1
+ _ZTSd@CXXABI_1.3 4.1.1
+ _ZTSe@CXXABI_1.3 4.1.1
+ _ZTSf@CXXABI_1.3 4.1.1
+ _ZTSh@CXXABI_1.3 4.1.1
+ _ZTSi@CXXABI_1.3 4.1.1
+ _ZTSj@CXXABI_1.3 4.1.1
+ _ZTSl@CXXABI_1.3 4.1.1
+ _ZTSm@CXXABI_1.3 4.1.1
+ _ZTSs@CXXABI_1.3 4.1.1
+ _ZTSt@CXXABI_1.3 4.1.1
+ _ZTSv@CXXABI_1.3 4.1.1
+ _ZTSw@CXXABI_1.3 4.1.1
+ _ZTSx@CXXABI_1.3 4.1.1
+ _ZTSy@CXXABI_1.3 4.1.1
+ _ZTTSd@GLIBCXX_3.4 4.1.1
+ _ZTTSi@GLIBCXX_3.4 4.1.1
+ _ZTTSo@GLIBCXX_3.4 4.1.1
+ _ZTTSt10istrstream@GLIBCXX_3.4 4.1.1
+ _ZTTSt10ostrstream@GLIBCXX_3.4 4.1.1
+ _ZTTSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTTSt9strstream@GLIBCXX_3.4 4.1.1
+ _ZTVN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1
+ _ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVNSt13__future_base11_State_baseE@GLIBCXX_3.4.15 4.6
+ _ZTVNSt13__future_base12_Result_baseE@GLIBCXX_3.4.15 4.6
+ _ZTVNSt6locale5facetE@GLIBCXX_3.4 4.1.1
+ _ZTVNSt8ios_base7failureE@GLIBCXX_3.4 4.1.1
+ _ZTVSd@GLIBCXX_3.4 4.1.1
+ _ZTVSi@GLIBCXX_3.4 4.1.1
+ _ZTVSo@GLIBCXX_3.4 4.1.1
+ _ZTVSt10bad_typeid@GLIBCXX_3.4 4.1.1
+ _ZTVSt10istrstream@GLIBCXX_3.4 4.1.1
+ _ZTVSt10lock_error@GLIBCXX_3.4.11 4.4.0
+ _ZTVSt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTVSt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTVSt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTVSt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTVSt10ostrstream@GLIBCXX_3.4 4.1.1
+ _ZTVSt11__timepunctIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt11__timepunctIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt11logic_error@GLIBCXX_3.4 4.1.1
+ _ZTVSt11range_error@GLIBCXX_3.4 4.1.1
+ _ZTVSt11regex_error@GLIBCXX_3.4.15 4.6
+ _ZTVSt12bad_weak_ptr@GLIBCXX_3.4.15 4.6
+ _ZTVSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt12domain_error@GLIBCXX_3.4 4.1.1
+ _ZTVSt12future_error@GLIBCXX_3.4.14 4.5
+ _ZTVSt12length_error@GLIBCXX_3.4 4.1.1
+ _ZTVSt12out_of_range@GLIBCXX_3.4 4.1.1
+ _ZTVSt12strstreambuf@GLIBCXX_3.4 4.1.1
+ _ZTVSt12system_error@GLIBCXX_3.4.11 4.4.0
+ _ZTVSt13bad_exception@GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt13runtime_error@GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14collate_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14collate_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt14error_category@GLIBCXX_3.4.11 4.4.0
+ _ZTVSt14overflow_error@GLIBCXX_3.4 4.1.1
+ _ZTVSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15messages_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15messages_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt15underflow_error@GLIBCXX_3.4 4.1.1
+ _ZTVSt16invalid_argument@GLIBCXX_3.4 4.1.1
+ _ZTVSt16nested_exception@CXXABI_1.3.5 4.6
+#MISSING: 4.6# _ZTVSt17bad_function_call@CXXABI_1.3.5 4.6
+ _ZTVSt17bad_function_call@GLIBCXX_3.4.15 4.6
+ _ZTVSt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTVSt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTVSt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1
+ _ZTVSt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1
+ _ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTVSt5ctypeIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt5ctypeIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTVSt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1
+ _ZTVSt7collateIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt7collateIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt8bad_cast@GLIBCXX_3.4 4.1.1
+ _ZTVSt8ios_base@GLIBCXX_3.4 4.1.1
+ _ZTVSt8messagesIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt8messagesIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt8numpunctIcE@GLIBCXX_3.4 4.1.1
+ _ZTVSt8numpunctIwE@GLIBCXX_3.4 4.1.1
+ _ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt9bad_alloc@GLIBCXX_3.4 4.1.1
+ _ZTVSt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt9exception@GLIBCXX_3.4 4.1.1
+ _ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1
+ _ZTVSt9strstream@GLIBCXX_3.4 4.1.1
+ _ZTVSt9type_info@GLIBCXX_3.4 4.1.1
+ _ZdaPv@GLIBCXX_3.4 4.1.1
+ _ZdaPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ _ZdlPv@GLIBCXX_3.4 4.1.1
+ _ZdlPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ __atomic_flag_for_address@GLIBCXX_3.4.11 4.4.0
+ __atomic_flag_wait_explicit@GLIBCXX_3.4.11 4.4.0
+ __cxa_allocate_exception@CXXABI_1.3 4.1.1
+ __cxa_bad_cast@CXXABI_1.3 4.1.1
+ __cxa_bad_typeid@CXXABI_1.3 4.1.1
+ __cxa_begin_catch@CXXABI_1.3 4.1.1
+ __cxa_call_unexpected@CXXABI_1.3 4.1.1
+ __cxa_current_exception_type@CXXABI_1.3 4.1.1
+ __cxa_demangle@CXXABI_1.3 4.1.1
+ __cxa_end_catch@CXXABI_1.3 4.1.1
+ __cxa_free_exception@CXXABI_1.3 4.1.1
+ __cxa_get_exception_ptr@CXXABI_1.3.1 4.1.1
+ __cxa_get_globals@CXXABI_1.3 4.1.1
+ __cxa_get_globals_fast@CXXABI_1.3 4.1.1
+ __cxa_guard_abort@CXXABI_1.3 4.1.1
+ __cxa_guard_acquire@CXXABI_1.3 4.1.1
+ __cxa_guard_release@CXXABI_1.3 4.1.1
+ __cxa_pure_virtual@CXXABI_1.3 4.1.1
+ __cxa_rethrow@CXXABI_1.3 4.1.1
+ __cxa_throw@CXXABI_1.3 4.1.1
+ __cxa_vec_cctor@CXXABI_1.3 4.1.1
+ __cxa_vec_cleanup@CXXABI_1.3 4.1.1
+ __cxa_vec_ctor@CXXABI_1.3 4.1.1
+ __cxa_vec_delete2@CXXABI_1.3 4.1.1
+ __cxa_vec_delete3@CXXABI_1.3 4.1.1
+ __cxa_vec_delete@CXXABI_1.3 4.1.1
+ __cxa_vec_dtor@CXXABI_1.3 4.1.1
+ __cxa_vec_new2@CXXABI_1.3 4.1.1
+ __cxa_vec_new3@CXXABI_1.3 4.1.1
+ __cxa_vec_new@CXXABI_1.3 4.1.1
+ __dynamic_cast@CXXABI_1.3 4.1.1
+ __once_proxy@GLIBCXX_3.4.11 4.4.0
+ atomic_flag_clear_explicit@GLIBCXX_3.4.11 4.4.0
+ atomic_flag_test_and_set_explicit@GLIBCXX_3.4.11 4.4.0
--- gcc-4.6-4.6.3.orig/debian/gcc-BV-CRB.preinst.in
+++ gcc-4.6-4.6.3/debian/gcc-BV-CRB.preinst.in
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then
+    update-alternatives --quiet --remove @TARGET@-gcc /usr/bin/@TARGET@-gcc-@BV@
+    update-alternatives --quiet --remove @TARGET@-gcov /usr/bin/@TARGET@-gcov-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/README.C++
+++ gcc-4.6-4.6.3/debian/README.C++
@@ -0,0 +1,35 @@
+libstdc++ is an implementation of the Standard C++ Library, including the
+Standard Template Library (i.e. as specified by ANSI and ISO).
+
+Some notes on porting applications from libstdc++-2.90 (or earlier versions)    
+to libstdc++-v3 can be found in the libstdc++6-4.3-doc package. After the
+installation of the package, look at:
+
+  file:///usr/share/doc/gcc-4.3-base/libstdc++/html/17_intro/porting-howto.html
+
+On Debian GNU/Linux you find additional documentation in the
+libstdc++6-4.3-doc package. After installing these packages,
+point your browser to
+
+  file:///usr/share/doc/libstdc++6-4.3-doc/libstdc++/html/index.html
+
+Other documentation can be found:
+
+    http://www.sgi.com/tech/stl/
+
+with a good, recent, book on C++.
+
+A great deal of useful C++ documentation can be found in the C++ FAQ-Lite,
+maintained by Marshall Cline <cline@parashift.com>.  It can be found at the
+mirror sites linked from the following URL (this was last updated on
+2010/09/11):
+
+     http://www.parashift.com/c++-faq/
+
+or use some search engin site to find it, e.g.:
+
+     http://www.google.com/search?q=c%2B%2B+faq+lite
+
+Be careful not to use outdated mirors.
+
+Please send updates to this list as bug report for the g++ package.
--- gcc-4.6-4.6.3.orig/debian/rules.unpack
+++ gcc-4.6-4.6.3/debian/rules.unpack
@@ -0,0 +1,257 @@
+# -*- makefile -*-
+# rules to unpack the source tarballs in $(srcdir); if the source dir already
+# exists, the rule exits with an error to prevent deletion of modified
+# source files. It has to be deleted manually.
+
+tarballs = $(gcc_tarball) # $(gcj_tarball)
+ifeq ($(with_d),yes)
+  tarballs += $(gdc_tarball)
+endif
+
+unpack_stamps = $(foreach i,$(tarballs),$(unpack_stamp)-$(i))
+
+unpack: stamp-dir $(unpack_stamp) debian-chmod
+$(unpack_stamp): $(unpack_stamps)
+$(unpack_stamp): $(foreach p,$(debian_tarballs),unpacked-$(p))
+	echo -e "\nBuilt from Debian source package $(PKGSOURCE)-$(SOURCE_VERSION)" \
+		> pxxx
+	echo -e "Integrated upstream packages in this version:\n" >> pxxx
+	for i in $(tarballs); do echo "  $$i" >> pxxx; done
+	mv -f pxxx $@
+
+debian-chmod:
+	@chmod 755 debian/dh_*
+
+# ---------------------------------------------------------------------------
+
+gfdl_texinfo_files = \
+	gcc/doc/arm-neon-intrinsics.texi \
+	gcc/doc/bugreport.texi \
+	gcc/doc/c-tree.texi \
+	gcc/doc/cfg.texi \
+	gcc/doc/collect2.texi \
+	gcc/doc/compat.texi \
+	gcc/doc/configfiles.texi \
+	gcc/doc/configterms.texi \
+	gcc/doc/contrib.texi \
+	gcc/doc/contribute.texi \
+	gcc/doc/cpp.texi \
+	gcc/doc/cppenv.texi \
+	gcc/doc/cppinternals.texi \
+	gcc/doc/cppopts.texi \
+	gcc/doc/extend.texi \
+	gcc/doc/fragments.texi \
+	gcc/doc/frontends.texi \
+	gcc/doc/gccint.texi \
+	gcc/doc/gcov.texi \
+	gcc/doc/generic.texi \
+	gcc/doc/gimple.texi \
+	gcc/doc/gnu.texi \
+	gcc/doc/gty.texi \
+	gcc/doc/headerdirs.texi \
+	gcc/doc/hostconfig.texi \
+	gcc/doc/implement-c.texi \
+	gcc/doc/implement-cxx.texi \
+	gcc/doc/install-old.texi \
+	gcc/doc/install.texi \
+	gcc/doc/interface.texi \
+	gcc/doc/invoke.texi \
+	gcc/doc/languages.texi \
+	gcc/doc/libgcc.texi \
+	gcc/doc/loop.texi \
+	gcc/doc/lto.texi \
+	gcc/doc/makefile.texi \
+	gcc/doc/md.texi \
+	gcc/doc/objc.texi \
+	gcc/doc/options.texi \
+	gcc/doc/passes.texi \
+	gcc/doc/plugins.texi \
+	gcc/doc/portability.texi \
+	gcc/doc/rtl.texi \
+	gcc/doc/service.texi \
+	gcc/doc/sourcebuild.texi \
+	gcc/doc/standards.texi \
+	gcc/doc/tm.texi.in \
+	gcc/doc/tm.texi \
+	gcc/doc/tree-ssa.texi \
+	gcc/doc/trouble.texi \
+	gcc/doc/include/gcc-common.texi \
+	gcc/doc/include/funding.texi \
+	gcc/fortran/gfc-internals.texi \
+	gcc/fortran/invoke.texi \
+	gcc/fortran/intrinsic.texi \
+
+
+gfdl_toplevel_texinfo_files = \
+	gcc/doc/gcc.texi \
+	gcc/java/gcj.texi \
+	gcc/ada/gnat-style.texi \
+	gcc/ada/gnat_rm.texi \
+	gcc/ada/gnat_ugn.texi \
+	gcc/fortran/gfortran.texi \
+	gcc/go/gccgo.texi \
+	libgomp/libgomp.texi \
+	libquadmath/libquadmath.texi \
+
+gfdl_manpages = \
+	gcc/doc/cpp.1 \
+	gcc/doc/g++.1 \
+	gcc/doc/gc-analyze.1 \
+	gcc/doc/gcc.1 \
+	gcc/doc/gccgo.1 \
+	gcc/doc/gcj.1 \
+	gcc/doc/gcj-dbtool.1 \
+	gcc/doc/gcjh.1 \
+	gcc/doc/gcov.1 \
+	gcc/doc/gfortran.1 \
+	gcc/doc/gij.1 \
+	gcc/doc/grmic.1 \
+	gcc/doc/grmiregistry.1 \
+	gcc/doc/jcf-dump.1 \
+	gcc/doc/jv-convert.1 \
+	gcc/doc/fsf-funding.7 \
+
+# ---------------------------------------------------------------------------
+$(unpack_stamp)-$(gcc_tarball): $(gcc_tarpath)
+	: # unpack gcc tarball
+	-mkdir $(stampdir)
+	if [ -d $(srcdir) ]; then \
+	  echo >&2 "Source directory $(srcdir) exists. Delete by hand"; \
+	  false; \
+	fi
+	rm -rf $(gcc_srcdir)
+	case $(gcc_tarball) in \
+	  *.bz2)  tar -x --bzip2 -f $(gcc_tarpath);; \
+	  *.gz)   tar -x --gzip  -f $(gcc_tarpath);; \
+	  *.lzma) lzcat $(gcc_tarpath) | tar -x -f -;; \
+	  *.xz) xzcat $(gcc_tarpath) | tar -x -f -;; \
+	  *)     false; \
+	esac
+	mv $(gcc_srcdir) $(srcdir)
+ifneq (,$(wildcard java-class-files.tar.xz.uue))
+# work around #533356
+#	uudecode -o - java-class-files.tar.xz.uue | tar -C src -xvz
+	uudecode java-class-files.tar.xz.uue
+	xzcat java-class-files.tar.xz | tar -C src -xv -f -
+	rm -f java-class-files.tar.xz
+endif
+#ifeq ($(with_java),yes)
+#	tar -x -C $(srcdir)/libjava/testsuite/libmauve.exp \
+#		$(wildcard /usr/src/mauve*.tar.*)
+#endif
+ifeq (0,1)
+	cd $(srcdir) && tar cfj ../gcc-4.1.1-doc.tar.bz2 \
+		$(gfdl_texinfo_files) \
+		$(gfdl_toplevel_texinfo_files) \
+		$(gfdl_manpages)
+endif
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+  ifneq ($(single_package),yes)
+	rm -f $(srcdir)/gcc/doc/*.1
+	rm -f $(srcdir)/gcc/doc/fsf-funding.7
+	rm -f $(srcdir)/gcc/doc/*.info
+	rm -f $(srcdir)/gcc/fortran/*.info
+	rm -f $(srcdir)/libgomp/*.info
+	rm -f $(srcdir)/gcc/java/*.1
+	rm -f $(srcdir)/gcc/java/*.info
+	for i in $(gfdl_texinfo_files); do \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \
+	  else \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+	for i in $(gfdl_toplevel_texinfo_files); do \
+	  n=$$(basename $$i .texi); \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \
+	      > $(srcdir)/$$i; \
+	  else \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+	for i in $(gfdl_manpages); do \
+	  touch $(srcdir)/$$i; \
+	done
+	rm -f $(srcdir)/INSTALL/*.html
+  endif
+endif
+	echo "$(gcc_tarball) unpacked." > $@
+
+# ---------------------------------------------------------------------------
+ifneq (,$(gcj_tarball))
+$(unpack_stamp)-$(gcj_tarball): $(gcj_tarpath) $(unpack_stamp)-$(gcc_tarball)
+	: # unpack gcj tarball
+	rm -rf $(srcdir)/gcc/java $(srcdir)/libjava
+	tar -x -C $(srcdir) -f $(gcj_tarpath)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+  ifneq ($(single_package),yes)
+	rm -f $(srcdir)/gcc/java/*.1
+	rm -f $(srcdir)/gcc/java/*.info
+	for i in $(gfdl_texinfo_files); do \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \
+	  else \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+	for i in $(gfdl_toplevel_texinfo_files); do \
+	  n=$$(basename $$i .texi); \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \
+	      > $(srcdir)/$$i; \
+	  else \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+  endif
+endif
+	echo "$(gcj_tarball) unpacked." > $@
+endif
+
+# ---------------------------------------------------------------------------
+ifneq (,$(gdc_tarball))
+$(unpack_stamp)-$(gdc_tarball): $(gdc_tarpath)
+  ifneq ($(with_libphobos),yes)
+	echo >&2 "libphobos v2 needs porting: $(with_libphobos)"
+	false
+  endif
+	: # unpack gdc tarball
+	-mkdir $(stampdir)
+	if [ -d $(srcdir)/gcc/d ]; then \
+	  echo >&2 "Source directory $(srcdir)/gcc/d exists. Delete by hand";\
+	  false; \
+	fi
+	#rm -rf $(gdc_srcdir)
+	rm -rf d
+	case $(gdc_tarball) in \
+	  *.bz2)  tar -x --bzip2 -f $(gdc_tarpath);; \
+	  *.gz)   tar -x --gzip  -f $(gdc_tarpath);; \
+	  *.lzma) lzcat $(gdc_tarpath) | tar -x -f -;; \
+	  *.xz) xzcat $(gdc_tarpath) | tar -x -f -;; \
+	 *)     false; \
+	esac
+	if [ -d d ]; then \
+	  mv d $(srcdir)/gcc/. ; \
+	else \
+	  mv $(gdc_srcdir)/d $(srcdir)/gcc/. ; \
+	  rm -rf $(gdc_srcdir)/CVS; \
+	  rmdir $(gdc_srcdir); \
+	fi
+  ifeq ($(with_libphobos),yes)
+	[ -d $(srcdir)/libphobos ] && rm -rf $(srcdir)/libphobos || true
+	mkdir $(srcdir)/libphobos && \
+	  cd $(srcdir)/libphobos && \
+	    ../symlink-tree ../gcc/d/phobos$(libphobos_version) 2>&1 && \
+	cd $(srcdir)
+  endif
+  ifeq ($(libphobos_version),2)
+	cd $(srcdir)/libphobos && \
+	    ../symlink-tree ../gcc/d/druntime 2>&1 && \
+	cd $(srcdir)
+	echo "D_LANGUAGE_VERSION=2" > $(srcdir)/gcc/d/d-make-include
+  else
+	echo "D_LANGUAGE_VERSION=1" > $(srcdir)/gcc/d/d-make-include
+  endif
+	echo "$(gdc_tarball) unpacked." > $@
+endif
--- gcc-4.6-4.6.3.orig/debian/gij-wrapper-BV
+++ gcc-4.6-4.6.3/debian/gij-wrapper-BV
@@ -0,0 +1,98 @@
+#!/usr/bin/perl -w
+#
+# Starts the GNU Java interpreter.
+#
+# Command-line arguments should be in the style of Sun's Java runtime;
+# these will be converted to gij arguments before being passed to the
+# gij itself.
+#
+# The Debian JNI module directory and any other specified JNI
+# directories will be included on the JNI search path.
+#
+# Copyright (C) 2002-2003 by Ben Burton <bab@debian.org>
+# Based on the original gij-wrapper-3.2 shell script.
+
+use strict;
+
+# The real Java runtime:
+my $javaRuntime = '/usr/bin/gij-@BV@';
+
+# The debian JNI module directory:
+my $debianJNIDir = '/usr/lib/jni';
+
+# The command-line arguments to pass to the real Java runtime:
+my @commandLine;
+
+# The full JNI search path to use:
+my $JNIPath = '';
+
+# Build the command-line from the arguments given.
+my $parsingOptions = 1;
+
+# Flag used to copy argument to -classpath or -cp.
+my $copyNext = 0;
+foreach my $arg (@ARGV) {
+  if (not $parsingOptions) {
+    # We're done parsing options; just copy all remaining arguments directly.
+    push @commandLine, $arg;
+    next;
+  }
+  if ($copyNext) {
+    push @commandLine, $arg;
+    $copyNext = 0;
+    next;
+  }
+
+  # Try to interpret Sun-style options.
+  if ($arg eq '-version') {
+    push @commandLine, '--version';
+  } elsif ($arg eq '-h' or $arg eq '-help') {
+    push @commandLine, '--help';
+  } elsif ($arg eq '-cp' or $arg eq '--cp') {
+    push @commandLine, '-cp';
+    $copyNext = 1;
+  } elsif ($arg eq '-classpath' or $arg eq '--classpath') {
+    push @commandLine, '-classpath';
+    $copyNext = 1;
+  } elsif ($arg =~ /^-Djava.library.path=(.+)$/) {
+    # A component of the JNI search path has been given.
+    if ($JNIPath) {
+      $JNIPath = $JNIPath . ':' . $1;
+    } else {
+      $JNIPath = $1;
+    }
+  } elsif ($arg eq '-jar' or $arg =~ /^-D/) {
+    # Copy the argument directly.
+    push @commandLine, $arg;
+  } elsif ($arg =~ /^-/) {
+    # An unrecognised option has been passed - just drop it.
+  } else {
+    # Some non-option argument has been given.
+    # Stop parsing options at this point.
+    push @commandLine, $arg;
+    $parsingOptions = 0;
+  }
+}
+
+# Add the debian JNI module directory to the JNI search path if it's not
+# already there.
+if ($JNIPath !~ /(^|:)$debianJNIDir($|:)/) {
+  if ($JNIPath) {
+    $JNIPath = $JNIPath . ':' . $debianJNIDir;
+  } else {
+    $JNIPath = $debianJNIDir;
+  }
+}
+
+# Use environment variable $LTDL_LIBRARY_PATH to store the JNI path,
+# since gij uses libltdl to dlopen JNI modules.
+if ($ENV{LTDL_LIBRARY_PATH}) {
+    $ENV{LTDL_LIBRARY_PATH} = $ENV{LTDL_LIBRARY_PATH} . ':' . $JNIPath;
+} else {
+    $ENV{LTDL_LIBRARY_PATH} = $JNIPath;
+}
+
+# Call the real Java runtime.
+my @fullCommandLine = ( $javaRuntime );
+push @fullCommandLine, @commandLine;
+exec @fullCommandLine or exit(1);
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.powerpc
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.powerpc
@@ -0,0 +1,3 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
--- gcc-4.6-4.6.3.orig/debian/libgccLC.postinst
+++ gcc-4.6-4.6.3/debian/libgccLC.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/libgcc@LC@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc-@BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.ldbl.32bit
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.ldbl.32bit
@@ -0,0 +1,284 @@
+ CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1
+ GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1
+ GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0
+ _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTIPKg@CXXABI_LDBL_1.3 4.2.1
+ _ZTIPg@CXXABI_LDBL_1.3 4.2.1
+ _ZTIg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSPKg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSPg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSg@CXXABI_LDBL_1.3 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.ldbl.64bit
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.ldbl.64bit
@@ -0,0 +1,284 @@
+ CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1
+ GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1
+ GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0
+ _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTIPKg@CXXABI_LDBL_1.3 4.2.1
+ _ZTIPg@CXXABI_LDBL_1.3 4.2.1
+ _ZTIg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSPKg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSPg@CXXABI_LDBL_1.3 4.2.1
+ _ZTSg@CXXABI_LDBL_1.3 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1
--- gcc-4.6-4.6.3.orig/debian/libquadmath0.symbols.common
+++ gcc-4.6-4.6.3/debian/libquadmath0.symbols.common
@@ -0,0 +1,92 @@
+ QUADMATH_1.0@QUADMATH_1.0 4.6
+ acoshq@QUADMATH_1.0 4.6
+ acosq@QUADMATH_1.0 4.6
+ asinhq@QUADMATH_1.0 4.6
+ asinq@QUADMATH_1.0 4.6
+ atan2q@QUADMATH_1.0 4.6
+ atanhq@QUADMATH_1.0 4.6
+ atanq@QUADMATH_1.0 4.6
+ cabsq@QUADMATH_1.0 4.6
+ cacoshq@QUADMATH_1.0 4.6
+ cacosq@QUADMATH_1.0 4.6
+ cargq@QUADMATH_1.0 4.6
+ casinhq@QUADMATH_1.0 4.6
+ casinq@QUADMATH_1.0 4.6
+ catanhq@QUADMATH_1.0 4.6
+ catanq@QUADMATH_1.0 4.6
+ cbrtq@QUADMATH_1.0 4.6
+ ccoshq@QUADMATH_1.0 4.6
+ ccosq@QUADMATH_1.0 4.6
+ ceilq@QUADMATH_1.0 4.6
+ cexpiq@QUADMATH_1.0 4.6
+ cexpq@QUADMATH_1.0 4.6
+ cimagq@QUADMATH_1.0 4.6
+ clog10q@QUADMATH_1.0 4.6
+ clogq@QUADMATH_1.0 4.6
+ conjq@QUADMATH_1.0 4.6
+ copysignq@QUADMATH_1.0 4.6
+ coshq@QUADMATH_1.0 4.6
+ cosq@QUADMATH_1.0 4.6
+ cpowq@QUADMATH_1.0 4.6
+ cprojq@QUADMATH_1.0 4.6
+ crealq@QUADMATH_1.0 4.6
+ csinhq@QUADMATH_1.0 4.6
+ csinq@QUADMATH_1.0 4.6
+ csqrtq@QUADMATH_1.0 4.6
+ ctanhq@QUADMATH_1.0 4.6
+ ctanq@QUADMATH_1.0 4.6
+ erfcq@QUADMATH_1.0 4.6
+ erfq@QUADMATH_1.0 4.6
+ expm1q@QUADMATH_1.0 4.6
+ expq@QUADMATH_1.0 4.6
+ fabsq@QUADMATH_1.0 4.6
+ fdimq@QUADMATH_1.0 4.6
+ finiteq@QUADMATH_1.0 4.6
+ floorq@QUADMATH_1.0 4.6
+ fmaq@QUADMATH_1.0 4.6
+ fmaxq@QUADMATH_1.0 4.6
+ fminq@QUADMATH_1.0 4.6
+ fmodq@QUADMATH_1.0 4.6
+ frexpq@QUADMATH_1.0 4.6
+ hypotq@QUADMATH_1.0 4.6
+ ilogbq@QUADMATH_1.0 4.6
+ isinfq@QUADMATH_1.0 4.6
+ isnanq@QUADMATH_1.0 4.6
+ j0q@QUADMATH_1.0 4.6
+ j1q@QUADMATH_1.0 4.6
+ jnq@QUADMATH_1.0 4.6
+ ldexpq@QUADMATH_1.0 4.6
+ lgammaq@QUADMATH_1.0 4.6
+ llrintq@QUADMATH_1.0 4.6
+ llroundq@QUADMATH_1.0 4.6
+ log10q@QUADMATH_1.0 4.6
+ log1pq@QUADMATH_1.0 4.6
+ log2q@QUADMATH_1.0 4.6
+ logq@QUADMATH_1.0 4.6
+ lrintq@QUADMATH_1.0 4.6
+ lroundq@QUADMATH_1.0 4.6
+ modfq@QUADMATH_1.0 4.6
+ nanq@QUADMATH_1.0 4.6
+ nearbyintq@QUADMATH_1.0 4.6
+ nextafterq@QUADMATH_1.0 4.6
+ powq@QUADMATH_1.0 4.6
+ quadmath_snprintf@QUADMATH_1.0 4.6
+ remainderq@QUADMATH_1.0 4.6
+ remquoq@QUADMATH_1.0 4.6
+ rintq@QUADMATH_1.0 4.6
+ roundq@QUADMATH_1.0 4.6
+ scalblnq@QUADMATH_1.0 4.6
+ scalbnq@QUADMATH_1.0 4.6
+ signbitq@QUADMATH_1.0 4.6
+ sincosq@QUADMATH_1.0 4.6
+ sinhq@QUADMATH_1.0 4.6
+ sinq@QUADMATH_1.0 4.6
+ sqrtq@QUADMATH_1.0 4.6
+ strtoflt128@QUADMATH_1.0 4.6
+ tanhq@QUADMATH_1.0 4.6
+ tanq@QUADMATH_1.0 4.6
+ tgammaq@QUADMATH_1.0 4.6
+ truncq@QUADMATH_1.0 4.6
+ y0q@QUADMATH_1.0 4.6
+ y1q@QUADMATH_1.0 4.6
+ ynq@QUADMATH_1.0 4.6
--- gcc-4.6-4.6.3.orig/debian/lib32gomp1.symbols
+++ gcc-4.6-4.6.3/debian/lib32gomp1.symbols
@@ -0,0 +1,4 @@
+libgomp.so.1 lib32gomp1 #MINVER#
+#include "libgomp1.symbols.common"
+ GOMP_atomic_end@GOMP_1.0 4.2.1
+ GOMP_atomic_start@GOMP_1.0 4.2.1
--- gcc-4.6-4.6.3.orig/debian/lib32gfortran3.symbols.s390x
+++ gcc-4.6-4.6.3/debian/lib32gfortran3.symbols.s390x
@@ -0,0 +1,3 @@
+libgfortran.so.3 lib32gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
--- gcc-4.6-4.6.3.orig/debian/README.libstdc++-baseline.in
+++ gcc-4.6-4.6.3/debian/README.libstdc++-baseline.in
@@ -0,0 +1,2 @@
+The libstdc++ baseline file is a list of symbols exported by the
+libstdc++ library.
--- gcc-4.6-4.6.3.orig/debian/gfortran-BV-CRB.preinst.in
+++ gcc-4.6-4.6.3/debian/gfortran-BV-CRB.preinst.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then
+    update-alternatives --quiet --remove @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/gnat-BV-doc.doc-base.style
+++ gcc-4.6-4.6.3/debian/gnat-BV-doc.doc-base.style
@@ -0,0 +1,16 @@
+Document: gnat-style-@BV@
+Title: GNAT Coding Style
+Author: Various
+Abstract: Most of GNAT is written in Ada using a consistent style to
+ ensure readability of the code.  This document has been written to
+ help maintain this consistent style, while having a large group of
+ developers work on the compiler.
+Section: Programming/Ada
+
+Format: html
+Index: /usr/share/doc/gnat-@BV@-doc/gnat-style.html
+Files: /usr/share/doc/gnat-@BV@-doc/gnat-style.html
+
+Format: info
+Index: /usr/share/info/gnat-style-@BV@.info.gz
+Files: /usr/share/info/gnat-style-@BV@*
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.mips
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.mips
@@ -0,0 +1,1219 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addda3@GCC_4.3.0 1:4.3
+ __adddf3@GCC_3.0 1:4.1.1
+ __adddq3@GCC_4.3.0 1:4.3
+ __addha3@GCC_4.3.0 1:4.3
+ __addhq3@GCC_4.3.0 1:4.3
+ __addqq3@GCC_4.3.0 1:4.3
+ __addsa3@GCC_4.3.0 1:4.3
+ __addsf3@GCC_3.0 1:4.1.1
+ __addsq3@GCC_4.3.0 1:4.3
+ __adduda3@GCC_4.3.0 1:4.3
+ __addudq3@GCC_4.3.0 1:4.3
+ __adduha3@GCC_4.3.0 1:4.3
+ __adduhq3@GCC_4.3.0 1:4.3
+ __adduqq3@GCC_4.3.0 1:4.3
+ __addusa3@GCC_4.3.0 1:4.3
+ __addusq3@GCC_4.3.0 1:4.3
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashlda3@GCC_4.3.0 1:4.3
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashldq3@GCC_4.3.0 1:4.3
+ __ashlha3@GCC_4.3.0 1:4.3
+ __ashlhq3@GCC_4.3.0 1:4.3
+ __ashlqq3@GCC_4.3.0 1:4.3
+ __ashlsa3@GCC_4.3.0 1:4.3
+ __ashlsq3@GCC_4.3.0 1:4.3
+ __ashluda3@GCC_4.3.0 1:4.3
+ __ashludq3@GCC_4.3.0 1:4.3
+ __ashluha3@GCC_4.3.0 1:4.3
+ __ashluhq3@GCC_4.3.0 1:4.3
+ __ashluqq3@GCC_4.3.0 1:4.3
+ __ashlusa3@GCC_4.3.0 1:4.3
+ __ashlusq3@GCC_4.3.0 1:4.3
+ __ashrda3@GCC_4.3.0 1:4.3
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __ashrdq3@GCC_4.3.0 1:4.3
+ __ashrha3@GCC_4.3.0 1:4.3
+ __ashrhq3@GCC_4.3.0 1:4.3
+ __ashrqq3@GCC_4.3.0 1:4.3
+ __ashrsa3@GCC_4.3.0 1:4.3
+ __ashrsq3@GCC_4.3.0 1:4.3
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpda2@GCC_4.3.0 1:4.3
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __cmpdq2@GCC_4.3.0 1:4.3
+ __cmpha2@GCC_4.3.0 1:4.3
+ __cmphq2@GCC_4.3.0 1:4.3
+ __cmpqq2@GCC_4.3.0 1:4.3
+ __cmpsa2@GCC_4.3.0 1:4.3
+ __cmpsq2@GCC_4.3.0 1:4.3
+ __cmpuda2@GCC_4.3.0 1:4.3
+ __cmpudq2@GCC_4.3.0 1:4.3
+ __cmpuha2@GCC_4.3.0 1:4.3
+ __cmpuhq2@GCC_4.3.0 1:4.3
+ __cmpuqq2@GCC_4.3.0 1:4.3
+ __cmpusa2@GCC_4.3.0 1:4.3
+ __cmpusq2@GCC_4.3.0 1:4.3
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divda3@GCC_4.3.0 1:4.3
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdf3@GCC_3.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divdq3@GCC_4.3.0 1:4.3
+ __divha3@GCC_4.3.0 1:4.3
+ __divhq3@GCC_4.3.0 1:4.3
+ __divqq3@GCC_4.3.0 1:4.3
+ __divsa3@GCC_4.3.0 1:4.3
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divsf3@GCC_3.0 1:4.1.1
+ __divsq3@GCC_4.3.0 1:4.3
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqdf2@GCC_3.0 1:4.1.1
+ __eqsf2@GCC_3.0 1:4.1.1
+ __extendsfdf2@GCC_3.0 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixdfsi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixsfsi@GCC_3.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatsidf@GCC_3.0 1:4.1.1
+ __floatsisf@GCC_3.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunsidf@GCC_4.2.0 1:4.2.1
+ __floatunsisf@GCC_4.2.0 1:4.2.1
+ __fractdadf@GCC_4.3.0 1:4.3
+ __fractdadi@GCC_4.3.0 1:4.3
+ __fractdadq@GCC_4.3.0 1:4.3
+ __fractdaha2@GCC_4.3.0 1:4.3
+ __fractdahi@GCC_4.3.0 1:4.3
+ __fractdahq@GCC_4.3.0 1:4.3
+ __fractdaqi@GCC_4.3.0 1:4.3
+ __fractdaqq@GCC_4.3.0 1:4.3
+ __fractdasa2@GCC_4.3.0 1:4.3
+ __fractdasf@GCC_4.3.0 1:4.3
+ __fractdasi@GCC_4.3.0 1:4.3
+ __fractdasq@GCC_4.3.0 1:4.3
+ __fractdauda@GCC_4.3.0 1:4.3
+ __fractdaudq@GCC_4.3.0 1:4.3
+ __fractdauha@GCC_4.3.0 1:4.3
+ __fractdauhq@GCC_4.3.0 1:4.3
+ __fractdauqq@GCC_4.3.0 1:4.3
+ __fractdausa@GCC_4.3.0 1:4.3
+ __fractdausq@GCC_4.3.0 1:4.3
+ __fractdfda@GCC_4.3.0 1:4.3
+ __fractdfdq@GCC_4.3.0 1:4.3
+ __fractdfha@GCC_4.3.0 1:4.3
+ __fractdfhq@GCC_4.3.0 1:4.3
+ __fractdfqq@GCC_4.3.0 1:4.3
+ __fractdfsa@GCC_4.3.0 1:4.3
+ __fractdfsq@GCC_4.3.0 1:4.3
+ __fractdfuda@GCC_4.3.0 1:4.3
+ __fractdfudq@GCC_4.3.0 1:4.3
+ __fractdfuha@GCC_4.3.0 1:4.3
+ __fractdfuhq@GCC_4.3.0 1:4.3
+ __fractdfuqq@GCC_4.3.0 1:4.3
+ __fractdfusa@GCC_4.3.0 1:4.3
+ __fractdfusq@GCC_4.3.0 1:4.3
+ __fractdida@GCC_4.3.0 1:4.3
+ __fractdidq@GCC_4.3.0 1:4.3
+ __fractdiha@GCC_4.3.0 1:4.3
+ __fractdihq@GCC_4.3.0 1:4.3
+ __fractdiqq@GCC_4.3.0 1:4.3
+ __fractdisa@GCC_4.3.0 1:4.3
+ __fractdisq@GCC_4.3.0 1:4.3
+ __fractdiuda@GCC_4.3.0 1:4.3
+ __fractdiudq@GCC_4.3.0 1:4.3
+ __fractdiuha@GCC_4.3.0 1:4.3
+ __fractdiuhq@GCC_4.3.0 1:4.3
+ __fractdiuqq@GCC_4.3.0 1:4.3
+ __fractdiusa@GCC_4.3.0 1:4.3
+ __fractdiusq@GCC_4.3.0 1:4.3
+ __fractdqda@GCC_4.3.0 1:4.3
+ __fractdqdf@GCC_4.3.0 1:4.3
+ __fractdqdi@GCC_4.3.0 1:4.3
+ __fractdqha@GCC_4.3.0 1:4.3
+ __fractdqhi@GCC_4.3.0 1:4.3
+ __fractdqhq2@GCC_4.3.0 1:4.3
+ __fractdqqi@GCC_4.3.0 1:4.3
+ __fractdqqq2@GCC_4.3.0 1:4.3
+ __fractdqsa@GCC_4.3.0 1:4.3
+ __fractdqsf@GCC_4.3.0 1:4.3
+ __fractdqsi@GCC_4.3.0 1:4.3
+ __fractdqsq2@GCC_4.3.0 1:4.3
+ __fractdquda@GCC_4.3.0 1:4.3
+ __fractdqudq@GCC_4.3.0 1:4.3
+ __fractdquha@GCC_4.3.0 1:4.3
+ __fractdquhq@GCC_4.3.0 1:4.3
+ __fractdquqq@GCC_4.3.0 1:4.3
+ __fractdqusa@GCC_4.3.0 1:4.3
+ __fractdqusq@GCC_4.3.0 1:4.3
+ __fracthada2@GCC_4.3.0 1:4.3
+ __fracthadf@GCC_4.3.0 1:4.3
+ __fracthadi@GCC_4.3.0 1:4.3
+ __fracthadq@GCC_4.3.0 1:4.3
+ __fracthahi@GCC_4.3.0 1:4.3
+ __fracthahq@GCC_4.3.0 1:4.3
+ __fracthaqi@GCC_4.3.0 1:4.3
+ __fracthaqq@GCC_4.3.0 1:4.3
+ __fracthasa2@GCC_4.3.0 1:4.3
+ __fracthasf@GCC_4.3.0 1:4.3
+ __fracthasi@GCC_4.3.0 1:4.3
+ __fracthasq@GCC_4.3.0 1:4.3
+ __fracthauda@GCC_4.3.0 1:4.3
+ __fracthaudq@GCC_4.3.0 1:4.3
+ __fracthauha@GCC_4.3.0 1:4.3
+ __fracthauhq@GCC_4.3.0 1:4.3
+ __fracthauqq@GCC_4.3.0 1:4.3
+ __fracthausa@GCC_4.3.0 1:4.3
+ __fracthausq@GCC_4.3.0 1:4.3
+ __fracthida@GCC_4.3.0 1:4.3
+ __fracthidq@GCC_4.3.0 1:4.3
+ __fracthiha@GCC_4.3.0 1:4.3
+ __fracthihq@GCC_4.3.0 1:4.3
+ __fracthiqq@GCC_4.3.0 1:4.3
+ __fracthisa@GCC_4.3.0 1:4.3
+ __fracthisq@GCC_4.3.0 1:4.3
+ __fracthiuda@GCC_4.3.0 1:4.3
+ __fracthiudq@GCC_4.3.0 1:4.3
+ __fracthiuha@GCC_4.3.0 1:4.3
+ __fracthiuhq@GCC_4.3.0 1:4.3
+ __fracthiuqq@GCC_4.3.0 1:4.3
+ __fracthiusa@GCC_4.3.0 1:4.3
+ __fracthiusq@GCC_4.3.0 1:4.3
+ __fracthqda@GCC_4.3.0 1:4.3
+ __fracthqdf@GCC_4.3.0 1:4.3
+ __fracthqdi@GCC_4.3.0 1:4.3
+ __fracthqdq2@GCC_4.3.0 1:4.3
+ __fracthqha@GCC_4.3.0 1:4.3
+ __fracthqhi@GCC_4.3.0 1:4.3
+ __fracthqqi@GCC_4.3.0 1:4.3
+ __fracthqqq2@GCC_4.3.0 1:4.3
+ __fracthqsa@GCC_4.3.0 1:4.3
+ __fracthqsf@GCC_4.3.0 1:4.3
+ __fracthqsi@GCC_4.3.0 1:4.3
+ __fracthqsq2@GCC_4.3.0 1:4.3
+ __fracthquda@GCC_4.3.0 1:4.3
+ __fracthqudq@GCC_4.3.0 1:4.3
+ __fracthquha@GCC_4.3.0 1:4.3
+ __fracthquhq@GCC_4.3.0 1:4.3
+ __fracthquqq@GCC_4.3.0 1:4.3
+ __fracthqusa@GCC_4.3.0 1:4.3
+ __fracthqusq@GCC_4.3.0 1:4.3
+ __fractqida@GCC_4.3.0 1:4.3
+ __fractqidq@GCC_4.3.0 1:4.3
+ __fractqiha@GCC_4.3.0 1:4.3
+ __fractqihq@GCC_4.3.0 1:4.3
+ __fractqiqq@GCC_4.3.0 1:4.3
+ __fractqisa@GCC_4.3.0 1:4.3
+ __fractqisq@GCC_4.3.0 1:4.3
+ __fractqiuda@GCC_4.3.0 1:4.3
+ __fractqiudq@GCC_4.3.0 1:4.3
+ __fractqiuha@GCC_4.3.0 1:4.3
+ __fractqiuhq@GCC_4.3.0 1:4.3
+ __fractqiuqq@GCC_4.3.0 1:4.3
+ __fractqiusa@GCC_4.3.0 1:4.3
+ __fractqiusq@GCC_4.3.0 1:4.3
+ __fractqqda@GCC_4.3.0 1:4.3
+ __fractqqdf@GCC_4.3.0 1:4.3
+ __fractqqdi@GCC_4.3.0 1:4.3
+ __fractqqdq2@GCC_4.3.0 1:4.3
+ __fractqqha@GCC_4.3.0 1:4.3
+ __fractqqhi@GCC_4.3.0 1:4.3
+ __fractqqhq2@GCC_4.3.0 1:4.3
+ __fractqqqi@GCC_4.3.0 1:4.3
+ __fractqqsa@GCC_4.3.0 1:4.3
+ __fractqqsf@GCC_4.3.0 1:4.3
+ __fractqqsi@GCC_4.3.0 1:4.3
+ __fractqqsq2@GCC_4.3.0 1:4.3
+ __fractqquda@GCC_4.3.0 1:4.3
+ __fractqqudq@GCC_4.3.0 1:4.3
+ __fractqquha@GCC_4.3.0 1:4.3
+ __fractqquhq@GCC_4.3.0 1:4.3
+ __fractqquqq@GCC_4.3.0 1:4.3
+ __fractqqusa@GCC_4.3.0 1:4.3
+ __fractqqusq@GCC_4.3.0 1:4.3
+ __fractsada2@GCC_4.3.0 1:4.3
+ __fractsadf@GCC_4.3.0 1:4.3
+ __fractsadi@GCC_4.3.0 1:4.3
+ __fractsadq@GCC_4.3.0 1:4.3
+ __fractsaha2@GCC_4.3.0 1:4.3
+ __fractsahi@GCC_4.3.0 1:4.3
+ __fractsahq@GCC_4.3.0 1:4.3
+ __fractsaqi@GCC_4.3.0 1:4.3
+ __fractsaqq@GCC_4.3.0 1:4.3
+ __fractsasf@GCC_4.3.0 1:4.3
+ __fractsasi@GCC_4.3.0 1:4.3
+ __fractsasq@GCC_4.3.0 1:4.3
+ __fractsauda@GCC_4.3.0 1:4.3
+ __fractsaudq@GCC_4.3.0 1:4.3
+ __fractsauha@GCC_4.3.0 1:4.3
+ __fractsauhq@GCC_4.3.0 1:4.3
+ __fractsauqq@GCC_4.3.0 1:4.3
+ __fractsausa@GCC_4.3.0 1:4.3
+ __fractsausq@GCC_4.3.0 1:4.3
+ __fractsfda@GCC_4.3.0 1:4.3
+ __fractsfdq@GCC_4.3.0 1:4.3
+ __fractsfha@GCC_4.3.0 1:4.3
+ __fractsfhq@GCC_4.3.0 1:4.3
+ __fractsfqq@GCC_4.3.0 1:4.3
+ __fractsfsa@GCC_4.3.0 1:4.3
+ __fractsfsq@GCC_4.3.0 1:4.3
+ __fractsfuda@GCC_4.3.0 1:4.3
+ __fractsfudq@GCC_4.3.0 1:4.3
+ __fractsfuha@GCC_4.3.0 1:4.3
+ __fractsfuhq@GCC_4.3.0 1:4.3
+ __fractsfuqq@GCC_4.3.0 1:4.3
+ __fractsfusa@GCC_4.3.0 1:4.3
+ __fractsfusq@GCC_4.3.0 1:4.3
+ __fractsida@GCC_4.3.0 1:4.3
+ __fractsidq@GCC_4.3.0 1:4.3
+ __fractsiha@GCC_4.3.0 1:4.3
+ __fractsihq@GCC_4.3.0 1:4.3
+ __fractsiqq@GCC_4.3.0 1:4.3
+ __fractsisa@GCC_4.3.0 1:4.3
+ __fractsisq@GCC_4.3.0 1:4.3
+ __fractsiuda@GCC_4.3.0 1:4.3
+ __fractsiudq@GCC_4.3.0 1:4.3
+ __fractsiuha@GCC_4.3.0 1:4.3
+ __fractsiuhq@GCC_4.3.0 1:4.3
+ __fractsiuqq@GCC_4.3.0 1:4.3
+ __fractsiusa@GCC_4.3.0 1:4.3
+ __fractsiusq@GCC_4.3.0 1:4.3
+ __fractsqda@GCC_4.3.0 1:4.3
+ __fractsqdf@GCC_4.3.0 1:4.3
+ __fractsqdi@GCC_4.3.0 1:4.3
+ __fractsqdq2@GCC_4.3.0 1:4.3
+ __fractsqha@GCC_4.3.0 1:4.3
+ __fractsqhi@GCC_4.3.0 1:4.3
+ __fractsqhq2@GCC_4.3.0 1:4.3
+ __fractsqqi@GCC_4.3.0 1:4.3
+ __fractsqqq2@GCC_4.3.0 1:4.3
+ __fractsqsa@GCC_4.3.0 1:4.3
+ __fractsqsf@GCC_4.3.0 1:4.3
+ __fractsqsi@GCC_4.3.0 1:4.3
+ __fractsquda@GCC_4.3.0 1:4.3
+ __fractsqudq@GCC_4.3.0 1:4.3
+ __fractsquha@GCC_4.3.0 1:4.3
+ __fractsquhq@GCC_4.3.0 1:4.3
+ __fractsquqq@GCC_4.3.0 1:4.3
+ __fractsqusa@GCC_4.3.0 1:4.3
+ __fractsqusq@GCC_4.3.0 1:4.3
+ __fractudada@GCC_4.3.0 1:4.3
+ __fractudadf@GCC_4.3.0 1:4.3
+ __fractudadi@GCC_4.3.0 1:4.3
+ __fractudadq@GCC_4.3.0 1:4.3
+ __fractudaha@GCC_4.3.0 1:4.3
+ __fractudahi@GCC_4.3.0 1:4.3
+ __fractudahq@GCC_4.3.0 1:4.3
+ __fractudaqi@GCC_4.3.0 1:4.3
+ __fractudaqq@GCC_4.3.0 1:4.3
+ __fractudasa@GCC_4.3.0 1:4.3
+ __fractudasf@GCC_4.3.0 1:4.3
+ __fractudasi@GCC_4.3.0 1:4.3
+ __fractudasq@GCC_4.3.0 1:4.3
+ __fractudaudq@GCC_4.3.0 1:4.3
+ __fractudauha2@GCC_4.3.0 1:4.3
+ __fractudauhq@GCC_4.3.0 1:4.3
+ __fractudauqq@GCC_4.3.0 1:4.3
+ __fractudausa2@GCC_4.3.0 1:4.3
+ __fractudausq@GCC_4.3.0 1:4.3
+ __fractudqda@GCC_4.3.0 1:4.3
+ __fractudqdf@GCC_4.3.0 1:4.3
+ __fractudqdi@GCC_4.3.0 1:4.3
+ __fractudqdq@GCC_4.3.0 1:4.3
+ __fractudqha@GCC_4.3.0 1:4.3
+ __fractudqhi@GCC_4.3.0 1:4.3
+ __fractudqhq@GCC_4.3.0 1:4.3
+ __fractudqqi@GCC_4.3.0 1:4.3
+ __fractudqqq@GCC_4.3.0 1:4.3
+ __fractudqsa@GCC_4.3.0 1:4.3
+ __fractudqsf@GCC_4.3.0 1:4.3
+ __fractudqsi@GCC_4.3.0 1:4.3
+ __fractudqsq@GCC_4.3.0 1:4.3
+ __fractudquda@GCC_4.3.0 1:4.3
+ __fractudquha@GCC_4.3.0 1:4.3
+ __fractudquhq2@GCC_4.3.0 1:4.3
+ __fractudquqq2@GCC_4.3.0 1:4.3
+ __fractudqusa@GCC_4.3.0 1:4.3
+ __fractudqusq2@GCC_4.3.0 1:4.3
+ __fractuhada@GCC_4.3.0 1:4.3
+ __fractuhadf@GCC_4.3.0 1:4.3
+ __fractuhadi@GCC_4.3.0 1:4.3
+ __fractuhadq@GCC_4.3.0 1:4.3
+ __fractuhaha@GCC_4.3.0 1:4.3
+ __fractuhahi@GCC_4.3.0 1:4.3
+ __fractuhahq@GCC_4.3.0 1:4.3
+ __fractuhaqi@GCC_4.3.0 1:4.3
+ __fractuhaqq@GCC_4.3.0 1:4.3
+ __fractuhasa@GCC_4.3.0 1:4.3
+ __fractuhasf@GCC_4.3.0 1:4.3
+ __fractuhasi@GCC_4.3.0 1:4.3
+ __fractuhasq@GCC_4.3.0 1:4.3
+ __fractuhauda2@GCC_4.3.0 1:4.3
+ __fractuhaudq@GCC_4.3.0 1:4.3
+ __fractuhauhq@GCC_4.3.0 1:4.3
+ __fractuhauqq@GCC_4.3.0 1:4.3
+ __fractuhausa2@GCC_4.3.0 1:4.3
+ __fractuhausq@GCC_4.3.0 1:4.3
+ __fractuhqda@GCC_4.3.0 1:4.3
+ __fractuhqdf@GCC_4.3.0 1:4.3
+ __fractuhqdi@GCC_4.3.0 1:4.3
+ __fractuhqdq@GCC_4.3.0 1:4.3
+ __fractuhqha@GCC_4.3.0 1:4.3
+ __fractuhqhi@GCC_4.3.0 1:4.3
+ __fractuhqhq@GCC_4.3.0 1:4.3
+ __fractuhqqi@GCC_4.3.0 1:4.3
+ __fractuhqqq@GCC_4.3.0 1:4.3
+ __fractuhqsa@GCC_4.3.0 1:4.3
+ __fractuhqsf@GCC_4.3.0 1:4.3
+ __fractuhqsi@GCC_4.3.0 1:4.3
+ __fractuhqsq@GCC_4.3.0 1:4.3
+ __fractuhquda@GCC_4.3.0 1:4.3
+ __fractuhqudq2@GCC_4.3.0 1:4.3
+ __fractuhquha@GCC_4.3.0 1:4.3
+ __fractuhquqq2@GCC_4.3.0 1:4.3
+ __fractuhqusa@GCC_4.3.0 1:4.3
+ __fractuhqusq2@GCC_4.3.0 1:4.3
+ __fractunsdadi@GCC_4.3.0 1:4.3
+ __fractunsdahi@GCC_4.3.0 1:4.3
+ __fractunsdaqi@GCC_4.3.0 1:4.3
+ __fractunsdasi@GCC_4.3.0 1:4.3
+ __fractunsdida@GCC_4.3.0 1:4.3
+ __fractunsdidq@GCC_4.3.0 1:4.3
+ __fractunsdiha@GCC_4.3.0 1:4.3
+ __fractunsdihq@GCC_4.3.0 1:4.3
+ __fractunsdiqq@GCC_4.3.0 1:4.3
+ __fractunsdisa@GCC_4.3.0 1:4.3
+ __fractunsdisq@GCC_4.3.0 1:4.3
+ __fractunsdiuda@GCC_4.3.0 1:4.3
+ __fractunsdiudq@GCC_4.3.0 1:4.3
+ __fractunsdiuha@GCC_4.3.0 1:4.3
+ __fractunsdiuhq@GCC_4.3.0 1:4.3
+ __fractunsdiuqq@GCC_4.3.0 1:4.3
+ __fractunsdiusa@GCC_4.3.0 1:4.3
+ __fractunsdiusq@GCC_4.3.0 1:4.3
+ __fractunsdqdi@GCC_4.3.0 1:4.3
+ __fractunsdqhi@GCC_4.3.0 1:4.3
+ __fractunsdqqi@GCC_4.3.0 1:4.3
+ __fractunsdqsi@GCC_4.3.0 1:4.3
+ __fractunshadi@GCC_4.3.0 1:4.3
+ __fractunshahi@GCC_4.3.0 1:4.3
+ __fractunshaqi@GCC_4.3.0 1:4.3
+ __fractunshasi@GCC_4.3.0 1:4.3
+ __fractunshida@GCC_4.3.0 1:4.3
+ __fractunshidq@GCC_4.3.0 1:4.3
+ __fractunshiha@GCC_4.3.0 1:4.3
+ __fractunshihq@GCC_4.3.0 1:4.3
+ __fractunshiqq@GCC_4.3.0 1:4.3
+ __fractunshisa@GCC_4.3.0 1:4.3
+ __fractunshisq@GCC_4.3.0 1:4.3
+ __fractunshiuda@GCC_4.3.0 1:4.3
+ __fractunshiudq@GCC_4.3.0 1:4.3
+ __fractunshiuha@GCC_4.3.0 1:4.3
+ __fractunshiuhq@GCC_4.3.0 1:4.3
+ __fractunshiuqq@GCC_4.3.0 1:4.3
+ __fractunshiusa@GCC_4.3.0 1:4.3
+ __fractunshiusq@GCC_4.3.0 1:4.3
+ __fractunshqdi@GCC_4.3.0 1:4.3
+ __fractunshqhi@GCC_4.3.0 1:4.3
+ __fractunshqqi@GCC_4.3.0 1:4.3
+ __fractunshqsi@GCC_4.3.0 1:4.3
+ __fractunsqida@GCC_4.3.0 1:4.3
+ __fractunsqidq@GCC_4.3.0 1:4.3
+ __fractunsqiha@GCC_4.3.0 1:4.3
+ __fractunsqihq@GCC_4.3.0 1:4.3
+ __fractunsqiqq@GCC_4.3.0 1:4.3
+ __fractunsqisa@GCC_4.3.0 1:4.3
+ __fractunsqisq@GCC_4.3.0 1:4.3
+ __fractunsqiuda@GCC_4.3.0 1:4.3
+ __fractunsqiudq@GCC_4.3.0 1:4.3
+ __fractunsqiuha@GCC_4.3.0 1:4.3
+ __fractunsqiuhq@GCC_4.3.0 1:4.3
+ __fractunsqiuqq@GCC_4.3.0 1:4.3
+ __fractunsqiusa@GCC_4.3.0 1:4.3
+ __fractunsqiusq@GCC_4.3.0 1:4.3
+ __fractunsqqdi@GCC_4.3.0 1:4.3
+ __fractunsqqhi@GCC_4.3.0 1:4.3
+ __fractunsqqqi@GCC_4.3.0 1:4.3
+ __fractunsqqsi@GCC_4.3.0 1:4.3
+ __fractunssadi@GCC_4.3.0 1:4.3
+ __fractunssahi@GCC_4.3.0 1:4.3
+ __fractunssaqi@GCC_4.3.0 1:4.3
+ __fractunssasi@GCC_4.3.0 1:4.3
+ __fractunssida@GCC_4.3.0 1:4.3
+ __fractunssidq@GCC_4.3.0 1:4.3
+ __fractunssiha@GCC_4.3.0 1:4.3
+ __fractunssihq@GCC_4.3.0 1:4.3
+ __fractunssiqq@GCC_4.3.0 1:4.3
+ __fractunssisa@GCC_4.3.0 1:4.3
+ __fractunssisq@GCC_4.3.0 1:4.3
+ __fractunssiuda@GCC_4.3.0 1:4.3
+ __fractunssiudq@GCC_4.3.0 1:4.3
+ __fractunssiuha@GCC_4.3.0 1:4.3
+ __fractunssiuhq@GCC_4.3.0 1:4.3
+ __fractunssiuqq@GCC_4.3.0 1:4.3
+ __fractunssiusa@GCC_4.3.0 1:4.3
+ __fractunssiusq@GCC_4.3.0 1:4.3
+ __fractunssqdi@GCC_4.3.0 1:4.3
+ __fractunssqhi@GCC_4.3.0 1:4.3
+ __fractunssqqi@GCC_4.3.0 1:4.3
+ __fractunssqsi@GCC_4.3.0 1:4.3
+ __fractunsudadi@GCC_4.3.0 1:4.3
+ __fractunsudahi@GCC_4.3.0 1:4.3
+ __fractunsudaqi@GCC_4.3.0 1:4.3
+ __fractunsudasi@GCC_4.3.0 1:4.3
+ __fractunsudqdi@GCC_4.3.0 1:4.3
+ __fractunsudqhi@GCC_4.3.0 1:4.3
+ __fractunsudqqi@GCC_4.3.0 1:4.3
+ __fractunsudqsi@GCC_4.3.0 1:4.3
+ __fractunsuhadi@GCC_4.3.0 1:4.3
+ __fractunsuhahi@GCC_4.3.0 1:4.3
+ __fractunsuhaqi@GCC_4.3.0 1:4.3
+ __fractunsuhasi@GCC_4.3.0 1:4.3
+ __fractunsuhqdi@GCC_4.3.0 1:4.3
+ __fractunsuhqhi@GCC_4.3.0 1:4.3
+ __fractunsuhqqi@GCC_4.3.0 1:4.3
+ __fractunsuhqsi@GCC_4.3.0 1:4.3
+ __fractunsuqqdi@GCC_4.3.0 1:4.3
+ __fractunsuqqhi@GCC_4.3.0 1:4.3
+ __fractunsuqqqi@GCC_4.3.0 1:4.3
+ __fractunsuqqsi@GCC_4.3.0 1:4.3
+ __fractunsusadi@GCC_4.3.0 1:4.3
+ __fractunsusahi@GCC_4.3.0 1:4.3
+ __fractunsusaqi@GCC_4.3.0 1:4.3
+ __fractunsusasi@GCC_4.3.0 1:4.3
+ __fractunsusqdi@GCC_4.3.0 1:4.3
+ __fractunsusqhi@GCC_4.3.0 1:4.3
+ __fractunsusqqi@GCC_4.3.0 1:4.3
+ __fractunsusqsi@GCC_4.3.0 1:4.3
+ __fractuqqda@GCC_4.3.0 1:4.3
+ __fractuqqdf@GCC_4.3.0 1:4.3
+ __fractuqqdi@GCC_4.3.0 1:4.3
+ __fractuqqdq@GCC_4.3.0 1:4.3
+ __fractuqqha@GCC_4.3.0 1:4.3
+ __fractuqqhi@GCC_4.3.0 1:4.3
+ __fractuqqhq@GCC_4.3.0 1:4.3
+ __fractuqqqi@GCC_4.3.0 1:4.3
+ __fractuqqqq@GCC_4.3.0 1:4.3
+ __fractuqqsa@GCC_4.3.0 1:4.3
+ __fractuqqsf@GCC_4.3.0 1:4.3
+ __fractuqqsi@GCC_4.3.0 1:4.3
+ __fractuqqsq@GCC_4.3.0 1:4.3
+ __fractuqquda@GCC_4.3.0 1:4.3
+ __fractuqqudq2@GCC_4.3.0 1:4.3
+ __fractuqquha@GCC_4.3.0 1:4.3
+ __fractuqquhq2@GCC_4.3.0 1:4.3
+ __fractuqqusa@GCC_4.3.0 1:4.3
+ __fractuqqusq2@GCC_4.3.0 1:4.3
+ __fractusada@GCC_4.3.0 1:4.3
+ __fractusadf@GCC_4.3.0 1:4.3
+ __fractusadi@GCC_4.3.0 1:4.3
+ __fractusadq@GCC_4.3.0 1:4.3
+ __fractusaha@GCC_4.3.0 1:4.3
+ __fractusahi@GCC_4.3.0 1:4.3
+ __fractusahq@GCC_4.3.0 1:4.3
+ __fractusaqi@GCC_4.3.0 1:4.3
+ __fractusaqq@GCC_4.3.0 1:4.3
+ __fractusasa@GCC_4.3.0 1:4.3
+ __fractusasf@GCC_4.3.0 1:4.3
+ __fractusasi@GCC_4.3.0 1:4.3
+ __fractusasq@GCC_4.3.0 1:4.3
+ __fractusauda2@GCC_4.3.0 1:4.3
+ __fractusaudq@GCC_4.3.0 1:4.3
+ __fractusauha2@GCC_4.3.0 1:4.3
+ __fractusauhq@GCC_4.3.0 1:4.3
+ __fractusauqq@GCC_4.3.0 1:4.3
+ __fractusausq@GCC_4.3.0 1:4.3
+ __fractusqda@GCC_4.3.0 1:4.3
+ __fractusqdf@GCC_4.3.0 1:4.3
+ __fractusqdi@GCC_4.3.0 1:4.3
+ __fractusqdq@GCC_4.3.0 1:4.3
+ __fractusqha@GCC_4.3.0 1:4.3
+ __fractusqhi@GCC_4.3.0 1:4.3
+ __fractusqhq@GCC_4.3.0 1:4.3
+ __fractusqqi@GCC_4.3.0 1:4.3
+ __fractusqqq@GCC_4.3.0 1:4.3
+ __fractusqsa@GCC_4.3.0 1:4.3
+ __fractusqsf@GCC_4.3.0 1:4.3
+ __fractusqsi@GCC_4.3.0 1:4.3
+ __fractusqsq@GCC_4.3.0 1:4.3
+ __fractusquda@GCC_4.3.0 1:4.3
+ __fractusqudq2@GCC_4.3.0 1:4.3
+ __fractusquha@GCC_4.3.0 1:4.3
+ __fractusquhq2@GCC_4.3.0 1:4.3
+ __fractusquqq2@GCC_4.3.0 1:4.3
+ __fractusqusa@GCC_4.3.0 1:4.3
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __gedf2@GCC_3.0 1:4.1.1
+ __gesf2@GCC_3.0 1:4.1.1
+ __gtdf2@GCC_3.0 1:4.1.1
+ __gtsf2@GCC_3.0 1:4.1.1
+ __ledf2@GCC_3.0 1:4.1.1
+ __lesf2@GCC_3.0 1:4.1.1
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __lshruda3@GCC_4.3.0 1:4.3
+ __lshrudq3@GCC_4.3.0 1:4.3
+ __lshruha3@GCC_4.3.0 1:4.3
+ __lshruhq3@GCC_4.3.0 1:4.3
+ __lshruqq3@GCC_4.3.0 1:4.3
+ __lshrusa3@GCC_4.3.0 1:4.3
+ __lshrusq3@GCC_4.3.0 1:4.3
+ __ltdf2@GCC_3.0 1:4.1.1
+ __ltsf2@GCC_3.0 1:4.1.1
+ __mips16_adddf3@GCC_4.4.0 1:4.4.0
+ __mips16_addsf3@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_9@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_0@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_dc_9@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_0@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_df_9@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_0@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sc_9@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_0@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_10@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_1@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_2@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_5@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_6@GCC_4.4.0 1:4.4.0
+ __mips16_call_stub_sf_9@GCC_4.4.0 1:4.4.0
+ __mips16_divdf3@GCC_4.4.0 1:4.4.0
+ __mips16_divsf3@GCC_4.4.0 1:4.4.0
+ __mips16_eqdf2@GCC_4.4.0 1:4.4.0
+ __mips16_eqsf2@GCC_4.4.0 1:4.4.0
+ __mips16_extendsfdf2@GCC_4.4.0 1:4.4.0
+ __mips16_fix_truncdfsi@GCC_4.4.0 1:4.4.0
+ __mips16_fix_truncsfsi@GCC_4.4.0 1:4.4.0
+ __mips16_floatsidf@GCC_4.4.0 1:4.4.0
+ __mips16_floatsisf@GCC_4.4.0 1:4.4.0
+ __mips16_floatunsidf@GCC_4.4.0 1:4.4.0
+ __mips16_floatunsisf@GCC_4.4.0 1:4.4.0
+ __mips16_gedf2@GCC_4.4.0 1:4.4.0
+ __mips16_gesf2@GCC_4.4.0 1:4.4.0
+ __mips16_gtdf2@GCC_4.4.0 1:4.4.0
+ __mips16_gtsf2@GCC_4.4.0 1:4.4.0
+ __mips16_ledf2@GCC_4.4.0 1:4.4.0
+ __mips16_lesf2@GCC_4.4.0 1:4.4.0
+ __mips16_ltdf2@GCC_4.4.0 1:4.4.0
+ __mips16_ltsf2@GCC_4.4.0 1:4.4.0
+ __mips16_muldf3@GCC_4.4.0 1:4.4.0
+ __mips16_mulsf3@GCC_4.4.0 1:4.4.0
+ __mips16_nedf2@GCC_4.4.0 1:4.4.0
+ __mips16_nesf2@GCC_4.4.0 1:4.4.0
+ __mips16_ret_dc@GCC_4.4.0 1:4.4.0
+ __mips16_ret_df@GCC_4.4.0 1:4.4.0
+ __mips16_ret_sc@GCC_4.4.0 1:4.4.0
+ __mips16_ret_sf@GCC_4.4.0 1:4.4.0
+ __mips16_subdf3@GCC_4.4.0 1:4.4.0
+ __mips16_subsf3@GCC_4.4.0 1:4.4.0
+ __mips16_truncdfsf2@GCC_4.4.0 1:4.4.0
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __mulda3@GCC_4.3.0 1:4.3
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldf3@GCC_3.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __muldq3@GCC_4.3.0 1:4.3
+ __mulha3@GCC_4.3.0 1:4.3
+ __mulhq3@GCC_4.3.0 1:4.3
+ __mulqq3@GCC_4.3.0 1:4.3
+ __mulsa3@GCC_4.3.0 1:4.3
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __mulsf3@GCC_3.0 1:4.1.1
+ __mulsq3@GCC_4.3.0 1:4.3
+ __muluda3@GCC_4.3.0 1:4.3
+ __muludq3@GCC_4.3.0 1:4.3
+ __muluha3@GCC_4.3.0 1:4.3
+ __muluhq3@GCC_4.3.0 1:4.3
+ __muluqq3@GCC_4.3.0 1:4.3
+ __mulusa3@GCC_4.3.0 1:4.3
+ __mulusq3@GCC_4.3.0 1:4.3
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __nedf2@GCC_3.0 1:4.1.1
+ __negda2@GCC_4.3.0 1:4.3
+ __negdf2@GCC_3.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negdq2@GCC_4.3.0 1:4.3
+ __negha2@GCC_4.3.0 1:4.3
+ __neghq2@GCC_4.3.0 1:4.3
+ __negqq2@GCC_4.3.0 1:4.3
+ __negsa2@GCC_4.3.0 1:4.3
+ __negsf2@GCC_3.0 1:4.1.1
+ __negsq2@GCC_4.3.0 1:4.3
+ __neguda2@GCC_4.3.0 1:4.3
+ __negudq2@GCC_4.3.0 1:4.3
+ __neguha2@GCC_4.3.0 1:4.3
+ __neguhq2@GCC_4.3.0 1:4.3
+ __neguqq2@GCC_4.3.0 1:4.3
+ __negusa2@GCC_4.3.0 1:4.3
+ __negusq2@GCC_4.3.0 1:4.3
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __nesf2@GCC_3.0 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __satfractdadq@GCC_4.3.0 1:4.3
+ __satfractdaha2@GCC_4.3.0 1:4.3
+ __satfractdahq@GCC_4.3.0 1:4.3
+ __satfractdaqq@GCC_4.3.0 1:4.3
+ __satfractdasa2@GCC_4.3.0 1:4.3
+ __satfractdasq@GCC_4.3.0 1:4.3
+ __satfractdauda@GCC_4.3.0 1:4.3
+ __satfractdaudq@GCC_4.3.0 1:4.3
+ __satfractdauha@GCC_4.3.0 1:4.3
+ __satfractdauhq@GCC_4.3.0 1:4.3
+ __satfractdauqq@GCC_4.3.0 1:4.3
+ __satfractdausa@GCC_4.3.0 1:4.3
+ __satfractdausq@GCC_4.3.0 1:4.3
+ __satfractdfda@GCC_4.3.0 1:4.3
+ __satfractdfdq@GCC_4.3.0 1:4.3
+ __satfractdfha@GCC_4.3.0 1:4.3
+ __satfractdfhq@GCC_4.3.0 1:4.3
+ __satfractdfqq@GCC_4.3.0 1:4.3
+ __satfractdfsa@GCC_4.3.0 1:4.3
+ __satfractdfsq@GCC_4.3.0 1:4.3
+ __satfractdfuda@GCC_4.3.0 1:4.3
+ __satfractdfudq@GCC_4.3.0 1:4.3
+ __satfractdfuha@GCC_4.3.0 1:4.3
+ __satfractdfuhq@GCC_4.3.0 1:4.3
+ __satfractdfuqq@GCC_4.3.0 1:4.3
+ __satfractdfusa@GCC_4.3.0 1:4.3
+ __satfractdfusq@GCC_4.3.0 1:4.3
+ __satfractdida@GCC_4.3.0 1:4.3
+ __satfractdidq@GCC_4.3.0 1:4.3
+ __satfractdiha@GCC_4.3.0 1:4.3
+ __satfractdihq@GCC_4.3.0 1:4.3
+ __satfractdiqq@GCC_4.3.0 1:4.3
+ __satfractdisa@GCC_4.3.0 1:4.3
+ __satfractdisq@GCC_4.3.0 1:4.3
+ __satfractdiuda@GCC_4.3.0 1:4.3
+ __satfractdiudq@GCC_4.3.0 1:4.3
+ __satfractdiuha@GCC_4.3.0 1:4.3
+ __satfractdiuhq@GCC_4.3.0 1:4.3
+ __satfractdiuqq@GCC_4.3.0 1:4.3
+ __satfractdiusa@GCC_4.3.0 1:4.3
+ __satfractdiusq@GCC_4.3.0 1:4.3
+ __satfractdqda@GCC_4.3.0 1:4.3
+ __satfractdqha@GCC_4.3.0 1:4.3
+ __satfractdqhq2@GCC_4.3.0 1:4.3
+ __satfractdqqq2@GCC_4.3.0 1:4.3
+ __satfractdqsa@GCC_4.3.0 1:4.3
+ __satfractdqsq2@GCC_4.3.0 1:4.3
+ __satfractdquda@GCC_4.3.0 1:4.3
+ __satfractdqudq@GCC_4.3.0 1:4.3
+ __satfractdquha@GCC_4.3.0 1:4.3
+ __satfractdquhq@GCC_4.3.0 1:4.3
+ __satfractdquqq@GCC_4.3.0 1:4.3
+ __satfractdqusa@GCC_4.3.0 1:4.3
+ __satfractdqusq@GCC_4.3.0 1:4.3
+ __satfracthada2@GCC_4.3.0 1:4.3
+ __satfracthadq@GCC_4.3.0 1:4.3
+ __satfracthahq@GCC_4.3.0 1:4.3
+ __satfracthaqq@GCC_4.3.0 1:4.3
+ __satfracthasa2@GCC_4.3.0 1:4.3
+ __satfracthasq@GCC_4.3.0 1:4.3
+ __satfracthauda@GCC_4.3.0 1:4.3
+ __satfracthaudq@GCC_4.3.0 1:4.3
+ __satfracthauha@GCC_4.3.0 1:4.3
+ __satfracthauhq@GCC_4.3.0 1:4.3
+ __satfracthauqq@GCC_4.3.0 1:4.3
+ __satfracthausa@GCC_4.3.0 1:4.3
+ __satfracthausq@GCC_4.3.0 1:4.3
+ __satfracthida@GCC_4.3.0 1:4.3
+ __satfracthidq@GCC_4.3.0 1:4.3
+ __satfracthiha@GCC_4.3.0 1:4.3
+ __satfracthihq@GCC_4.3.0 1:4.3
+ __satfracthiqq@GCC_4.3.0 1:4.3
+ __satfracthisa@GCC_4.3.0 1:4.3
+ __satfracthisq@GCC_4.3.0 1:4.3
+ __satfracthiuda@GCC_4.3.0 1:4.3
+ __satfracthiudq@GCC_4.3.0 1:4.3
+ __satfracthiuha@GCC_4.3.0 1:4.3
+ __satfracthiuhq@GCC_4.3.0 1:4.3
+ __satfracthiuqq@GCC_4.3.0 1:4.3
+ __satfracthiusa@GCC_4.3.0 1:4.3
+ __satfracthiusq@GCC_4.3.0 1:4.3
+ __satfracthqda@GCC_4.3.0 1:4.3
+ __satfracthqdq2@GCC_4.3.0 1:4.3
+ __satfracthqha@GCC_4.3.0 1:4.3
+ __satfracthqqq2@GCC_4.3.0 1:4.3
+ __satfracthqsa@GCC_4.3.0 1:4.3
+ __satfracthqsq2@GCC_4.3.0 1:4.3
+ __satfracthquda@GCC_4.3.0 1:4.3
+ __satfracthqudq@GCC_4.3.0 1:4.3
+ __satfracthquha@GCC_4.3.0 1:4.3
+ __satfracthquhq@GCC_4.3.0 1:4.3
+ __satfracthquqq@GCC_4.3.0 1:4.3
+ __satfracthqusa@GCC_4.3.0 1:4.3
+ __satfracthqusq@GCC_4.3.0 1:4.3
+ __satfractqida@GCC_4.3.0 1:4.3
+ __satfractqidq@GCC_4.3.0 1:4.3
+ __satfractqiha@GCC_4.3.0 1:4.3
+ __satfractqihq@GCC_4.3.0 1:4.3
+ __satfractqiqq@GCC_4.3.0 1:4.3
+ __satfractqisa@GCC_4.3.0 1:4.3
+ __satfractqisq@GCC_4.3.0 1:4.3
+ __satfractqiuda@GCC_4.3.0 1:4.3
+ __satfractqiudq@GCC_4.3.0 1:4.3
+ __satfractqiuha@GCC_4.3.0 1:4.3
+ __satfractqiuhq@GCC_4.3.0 1:4.3
+ __satfractqiuqq@GCC_4.3.0 1:4.3
+ __satfractqiusa@GCC_4.3.0 1:4.3
+ __satfractqiusq@GCC_4.3.0 1:4.3
+ __satfractqqda@GCC_4.3.0 1:4.3
+ __satfractqqdq2@GCC_4.3.0 1:4.3
+ __satfractqqha@GCC_4.3.0 1:4.3
+ __satfractqqhq2@GCC_4.3.0 1:4.3
+ __satfractqqsa@GCC_4.3.0 1:4.3
+ __satfractqqsq2@GCC_4.3.0 1:4.3
+ __satfractqquda@GCC_4.3.0 1:4.3
+ __satfractqqudq@GCC_4.3.0 1:4.3
+ __satfractqquha@GCC_4.3.0 1:4.3
+ __satfractqquhq@GCC_4.3.0 1:4.3
+ __satfractqquqq@GCC_4.3.0 1:4.3
+ __satfractqqusa@GCC_4.3.0 1:4.3
+ __satfractqqusq@GCC_4.3.0 1:4.3
+ __satfractsada2@GCC_4.3.0 1:4.3
+ __satfractsadq@GCC_4.3.0 1:4.3
+ __satfractsaha2@GCC_4.3.0 1:4.3
+ __satfractsahq@GCC_4.3.0 1:4.3
+ __satfractsaqq@GCC_4.3.0 1:4.3
+ __satfractsasq@GCC_4.3.0 1:4.3
+ __satfractsauda@GCC_4.3.0 1:4.3
+ __satfractsaudq@GCC_4.3.0 1:4.3
+ __satfractsauha@GCC_4.3.0 1:4.3
+ __satfractsauhq@GCC_4.3.0 1:4.3
+ __satfractsauqq@GCC_4.3.0 1:4.3
+ __satfractsausa@GCC_4.3.0 1:4.3
+ __satfractsausq@GCC_4.3.0 1:4.3
+ __satfractsfda@GCC_4.3.0 1:4.3
+ __satfractsfdq@GCC_4.3.0 1:4.3
+ __satfractsfha@GCC_4.3.0 1:4.3
+ __satfractsfhq@GCC_4.3.0 1:4.3
+ __satfractsfqq@GCC_4.3.0 1:4.3
+ __satfractsfsa@GCC_4.3.0 1:4.3
+ __satfractsfsq@GCC_4.3.0 1:4.3
+ __satfractsfuda@GCC_4.3.0 1:4.3
+ __satfractsfudq@GCC_4.3.0 1:4.3
+ __satfractsfuha@GCC_4.3.0 1:4.3
+ __satfractsfuhq@GCC_4.3.0 1:4.3
+ __satfractsfuqq@GCC_4.3.0 1:4.3
+ __satfractsfusa@GCC_4.3.0 1:4.3
+ __satfractsfusq@GCC_4.3.0 1:4.3
+ __satfractsida@GCC_4.3.0 1:4.3
+ __satfractsidq@GCC_4.3.0 1:4.3
+ __satfractsiha@GCC_4.3.0 1:4.3
+ __satfractsihq@GCC_4.3.0 1:4.3
+ __satfractsiqq@GCC_4.3.0 1:4.3
+ __satfractsisa@GCC_4.3.0 1:4.3
+ __satfractsisq@GCC_4.3.0 1:4.3
+ __satfractsiuda@GCC_4.3.0 1:4.3
+ __satfractsiudq@GCC_4.3.0 1:4.3
+ __satfractsiuha@GCC_4.3.0 1:4.3
+ __satfractsiuhq@GCC_4.3.0 1:4.3
+ __satfractsiuqq@GCC_4.3.0 1:4.3
+ __satfractsiusa@GCC_4.3.0 1:4.3
+ __satfractsiusq@GCC_4.3.0 1:4.3
+ __satfractsqda@GCC_4.3.0 1:4.3
+ __satfractsqdq2@GCC_4.3.0 1:4.3
+ __satfractsqha@GCC_4.3.0 1:4.3
+ __satfractsqhq2@GCC_4.3.0 1:4.3
+ __satfractsqqq2@GCC_4.3.0 1:4.3
+ __satfractsqsa@GCC_4.3.0 1:4.3
+ __satfractsquda@GCC_4.3.0 1:4.3
+ __satfractsqudq@GCC_4.3.0 1:4.3
+ __satfractsquha@GCC_4.3.0 1:4.3
+ __satfractsquhq@GCC_4.3.0 1:4.3
+ __satfractsquqq@GCC_4.3.0 1:4.3
+ __satfractsqusa@GCC_4.3.0 1:4.3
+ __satfractsqusq@GCC_4.3.0 1:4.3
+ __satfractudada@GCC_4.3.0 1:4.3
+ __satfractudadq@GCC_4.3.0 1:4.3
+ __satfractudaha@GCC_4.3.0 1:4.3
+ __satfractudahq@GCC_4.3.0 1:4.3
+ __satfractudaqq@GCC_4.3.0 1:4.3
+ __satfractudasa@GCC_4.3.0 1:4.3
+ __satfractudasq@GCC_4.3.0 1:4.3
+ __satfractudaudq@GCC_4.3.0 1:4.3
+ __satfractudauha2@GCC_4.3.0 1:4.3
+ __satfractudauhq@GCC_4.3.0 1:4.3
+ __satfractudauqq@GCC_4.3.0 1:4.3
+ __satfractudausa2@GCC_4.3.0 1:4.3
+ __satfractudausq@GCC_4.3.0 1:4.3
+ __satfractudqda@GCC_4.3.0 1:4.3
+ __satfractudqdq@GCC_4.3.0 1:4.3
+ __satfractudqha@GCC_4.3.0 1:4.3
+ __satfractudqhq@GCC_4.3.0 1:4.3
+ __satfractudqqq@GCC_4.3.0 1:4.3
+ __satfractudqsa@GCC_4.3.0 1:4.3
+ __satfractudqsq@GCC_4.3.0 1:4.3
+ __satfractudquda@GCC_4.3.0 1:4.3
+ __satfractudquha@GCC_4.3.0 1:4.3
+ __satfractudquhq2@GCC_4.3.0 1:4.3
+ __satfractudquqq2@GCC_4.3.0 1:4.3
+ __satfractudqusa@GCC_4.3.0 1:4.3
+ __satfractudqusq2@GCC_4.3.0 1:4.3
+ __satfractuhada@GCC_4.3.0 1:4.3
+ __satfractuhadq@GCC_4.3.0 1:4.3
+ __satfractuhaha@GCC_4.3.0 1:4.3
+ __satfractuhahq@GCC_4.3.0 1:4.3
+ __satfractuhaqq@GCC_4.3.0 1:4.3
+ __satfractuhasa@GCC_4.3.0 1:4.3
+ __satfractuhasq@GCC_4.3.0 1:4.3
+ __satfractuhauda2@GCC_4.3.0 1:4.3
+ __satfractuhaudq@GCC_4.3.0 1:4.3
+ __satfractuhauhq@GCC_4.3.0 1:4.3
+ __satfractuhauqq@GCC_4.3.0 1:4.3
+ __satfractuhausa2@GCC_4.3.0 1:4.3
+ __satfractuhausq@GCC_4.3.0 1:4.3
+ __satfractuhqda@GCC_4.3.0 1:4.3
+ __satfractuhqdq@GCC_4.3.0 1:4.3
+ __satfractuhqha@GCC_4.3.0 1:4.3
+ __satfractuhqhq@GCC_4.3.0 1:4.3
+ __satfractuhqqq@GCC_4.3.0 1:4.3
+ __satfractuhqsa@GCC_4.3.0 1:4.3
+ __satfractuhqsq@GCC_4.3.0 1:4.3
+ __satfractuhquda@GCC_4.3.0 1:4.3
+ __satfractuhqudq2@GCC_4.3.0 1:4.3
+ __satfractuhquha@GCC_4.3.0 1:4.3
+ __satfractuhquqq2@GCC_4.3.0 1:4.3
+ __satfractuhqusa@GCC_4.3.0 1:4.3
+ __satfractuhqusq2@GCC_4.3.0 1:4.3
+ __satfractunsdida@GCC_4.3.0 1:4.3
+ __satfractunsdidq@GCC_4.3.0 1:4.3
+ __satfractunsdiha@GCC_4.3.0 1:4.3
+ __satfractunsdihq@GCC_4.3.0 1:4.3
+ __satfractunsdiqq@GCC_4.3.0 1:4.3
+ __satfractunsdisa@GCC_4.3.0 1:4.3
+ __satfractunsdisq@GCC_4.3.0 1:4.3
+ __satfractunsdiuda@GCC_4.3.0 1:4.3
+ __satfractunsdiudq@GCC_4.3.0 1:4.3
+ __satfractunsdiuha@GCC_4.3.0 1:4.3
+ __satfractunsdiuhq@GCC_4.3.0 1:4.3
+ __satfractunsdiuqq@GCC_4.3.0 1:4.3
+ __satfractunsdiusa@GCC_4.3.0 1:4.3
+ __satfractunsdiusq@GCC_4.3.0 1:4.3
+ __satfractunshida@GCC_4.3.0 1:4.3
+ __satfractunshidq@GCC_4.3.0 1:4.3
+ __satfractunshiha@GCC_4.3.0 1:4.3
+ __satfractunshihq@GCC_4.3.0 1:4.3
+ __satfractunshiqq@GCC_4.3.0 1:4.3
+ __satfractunshisa@GCC_4.3.0 1:4.3
+ __satfractunshisq@GCC_4.3.0 1:4.3
+ __satfractunshiuda@GCC_4.3.0 1:4.3
+ __satfractunshiudq@GCC_4.3.0 1:4.3
+ __satfractunshiuha@GCC_4.3.0 1:4.3
+ __satfractunshiuhq@GCC_4.3.0 1:4.3
+ __satfractunshiuqq@GCC_4.3.0 1:4.3
+ __satfractunshiusa@GCC_4.3.0 1:4.3
+ __satfractunshiusq@GCC_4.3.0 1:4.3
+ __satfractunsqida@GCC_4.3.0 1:4.3
+ __satfractunsqidq@GCC_4.3.0 1:4.3
+ __satfractunsqiha@GCC_4.3.0 1:4.3
+ __satfractunsqihq@GCC_4.3.0 1:4.3
+ __satfractunsqiqq@GCC_4.3.0 1:4.3
+ __satfractunsqisa@GCC_4.3.0 1:4.3
+ __satfractunsqisq@GCC_4.3.0 1:4.3
+ __satfractunsqiuda@GCC_4.3.0 1:4.3
+ __satfractunsqiudq@GCC_4.3.0 1:4.3
+ __satfractunsqiuha@GCC_4.3.0 1:4.3
+ __satfractunsqiuhq@GCC_4.3.0 1:4.3
+ __satfractunsqiuqq@GCC_4.3.0 1:4.3
+ __satfractunsqiusa@GCC_4.3.0 1:4.3
+ __satfractunsqiusq@GCC_4.3.0 1:4.3
+ __satfractunssida@GCC_4.3.0 1:4.3
+ __satfractunssidq@GCC_4.3.0 1:4.3
+ __satfractunssiha@GCC_4.3.0 1:4.3
+ __satfractunssihq@GCC_4.3.0 1:4.3
+ __satfractunssiqq@GCC_4.3.0 1:4.3
+ __satfractunssisa@GCC_4.3.0 1:4.3
+ __satfractunssisq@GCC_4.3.0 1:4.3
+ __satfractunssiuda@GCC_4.3.0 1:4.3
+ __satfractunssiudq@GCC_4.3.0 1:4.3
+ __satfractunssiuha@GCC_4.3.0 1:4.3
+ __satfractunssiuhq@GCC_4.3.0 1:4.3
+ __satfractunssiuqq@GCC_4.3.0 1:4.3
+ __satfractunssiusa@GCC_4.3.0 1:4.3
+ __satfractunssiusq@GCC_4.3.0 1:4.3
+ __satfractuqqda@GCC_4.3.0 1:4.3
+ __satfractuqqdq@GCC_4.3.0 1:4.3
+ __satfractuqqha@GCC_4.3.0 1:4.3
+ __satfractuqqhq@GCC_4.3.0 1:4.3
+ __satfractuqqqq@GCC_4.3.0 1:4.3
+ __satfractuqqsa@GCC_4.3.0 1:4.3
+ __satfractuqqsq@GCC_4.3.0 1:4.3
+ __satfractuqquda@GCC_4.3.0 1:4.3
+ __satfractuqqudq2@GCC_4.3.0 1:4.3
+ __satfractuqquha@GCC_4.3.0 1:4.3
+ __satfractuqquhq2@GCC_4.3.0 1:4.3
+ __satfractuqqusa@GCC_4.3.0 1:4.3
+ __satfractuqqusq2@GCC_4.3.0 1:4.3
+ __satfractusada@GCC_4.3.0 1:4.3
+ __satfractusadq@GCC_4.3.0 1:4.3
+ __satfractusaha@GCC_4.3.0 1:4.3
+ __satfractusahq@GCC_4.3.0 1:4.3
+ __satfractusaqq@GCC_4.3.0 1:4.3
+ __satfractusasa@GCC_4.3.0 1:4.3
+ __satfractusasq@GCC_4.3.0 1:4.3
+ __satfractusauda2@GCC_4.3.0 1:4.3
+ __satfractusaudq@GCC_4.3.0 1:4.3
+ __satfractusauha2@GCC_4.3.0 1:4.3
+ __satfractusauhq@GCC_4.3.0 1:4.3
+ __satfractusauqq@GCC_4.3.0 1:4.3
+ __satfractusausq@GCC_4.3.0 1:4.3
+ __satfractusqda@GCC_4.3.0 1:4.3
+ __satfractusqdq@GCC_4.3.0 1:4.3
+ __satfractusqha@GCC_4.3.0 1:4.3
+ __satfractusqhq@GCC_4.3.0 1:4.3
+ __satfractusqqq@GCC_4.3.0 1:4.3
+ __satfractusqsa@GCC_4.3.0 1:4.3
+ __satfractusqsq@GCC_4.3.0 1:4.3
+ __satfractusquda@GCC_4.3.0 1:4.3
+ __satfractusqudq2@GCC_4.3.0 1:4.3
+ __satfractusquha@GCC_4.3.0 1:4.3
+ __satfractusquhq2@GCC_4.3.0 1:4.3
+ __satfractusquqq2@GCC_4.3.0 1:4.3
+ __satfractusqusa@GCC_4.3.0 1:4.3
+ __ssaddda3@GCC_4.3.0 1:4.3
+ __ssadddq3@GCC_4.3.0 1:4.3
+ __ssaddha3@GCC_4.3.0 1:4.3
+ __ssaddhq3@GCC_4.3.0 1:4.3
+ __ssaddqq3@GCC_4.3.0 1:4.3
+ __ssaddsa3@GCC_4.3.0 1:4.3
+ __ssaddsq3@GCC_4.3.0 1:4.3
+ __ssashlda3@GCC_4.3.0 1:4.3
+ __ssashldq3@GCC_4.3.0 1:4.3
+ __ssashlha3@GCC_4.3.0 1:4.3
+ __ssashlhq3@GCC_4.3.0 1:4.3
+ __ssashlqq3@GCC_4.3.0 1:4.3
+ __ssashlsa3@GCC_4.3.0 1:4.3
+ __ssashlsq3@GCC_4.3.0 1:4.3
+ __ssdivda3@GCC_4.3.0 1:4.3
+ __ssdivdq3@GCC_4.3.0 1:4.3
+ __ssdivha3@GCC_4.3.0 1:4.3
+ __ssdivhq3@GCC_4.3.0 1:4.3
+ __ssdivqq3@GCC_4.3.0 1:4.3
+ __ssdivsa3@GCC_4.3.0 1:4.3
+ __ssdivsq3@GCC_4.3.0 1:4.3
+ __ssmulda3@GCC_4.3.0 1:4.3
+ __ssmuldq3@GCC_4.3.0 1:4.3
+ __ssmulha3@GCC_4.3.0 1:4.3
+ __ssmulhq3@GCC_4.3.0 1:4.3
+ __ssmulqq3@GCC_4.3.0 1:4.3
+ __ssmulsa3@GCC_4.3.0 1:4.3
+ __ssmulsq3@GCC_4.3.0 1:4.3
+ __ssnegda2@GCC_4.3.0 1:4.3
+ __ssnegdq2@GCC_4.3.0 1:4.3
+ __ssnegha2@GCC_4.3.0 1:4.3
+ __ssneghq2@GCC_4.3.0 1:4.3
+ __ssnegqq2@GCC_4.3.0 1:4.3
+ __ssnegsa2@GCC_4.3.0 1:4.3
+ __ssnegsq2@GCC_4.3.0 1:4.3
+ __sssubda3@GCC_4.3.0 1:4.3
+ __sssubdq3@GCC_4.3.0 1:4.3
+ __sssubha3@GCC_4.3.0 1:4.3
+ __sssubhq3@GCC_4.3.0 1:4.3
+ __sssubqq3@GCC_4.3.0 1:4.3
+ __sssubsa3@GCC_4.3.0 1:4.3
+ __sssubsq3@GCC_4.3.0 1:4.3
+ __subda3@GCC_4.3.0 1:4.3
+ __subdf3@GCC_3.0 1:4.1.1
+ __subdq3@GCC_4.3.0 1:4.3
+ __subha3@GCC_4.3.0 1:4.3
+ __subhq3@GCC_4.3.0 1:4.3
+ __subqq3@GCC_4.3.0 1:4.3
+ __subsa3@GCC_4.3.0 1:4.3
+ __subsf3@GCC_3.0 1:4.1.1
+ __subsq3@GCC_4.3.0 1:4.3
+ __subuda3@GCC_4.3.0 1:4.3
+ __subudq3@GCC_4.3.0 1:4.3
+ __subuha3@GCC_4.3.0 1:4.3
+ __subuhq3@GCC_4.3.0 1:4.3
+ __subuqq3@GCC_4.3.0 1:4.3
+ __subusa3@GCC_4.3.0 1:4.3
+ __subusq3@GCC_4.3.0 1:4.3
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __sync_add_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_add_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_add_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_and_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_and_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_and_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4.0
+ __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4.0
+ __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_add_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_add_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_add_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_and_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_and_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_and_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_or_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_or_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_or_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4.0
+ __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4.0
+ __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4.0
+ __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4.0
+ __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4.0
+ __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_or_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_or_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_or_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __sync_synchronize@GCC_4.4.0 1:4.4.0
+ __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4.0
+ __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4.0
+ __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4.0
+ __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4.0
+ __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4.0
+ __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4.0
+ __truncdfsf2@GCC_3.0 1:4.1.1
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __udivuda3@GCC_4.3.0 1:4.3
+ __udivudq3@GCC_4.3.0 1:4.3
+ __udivuha3@GCC_4.3.0 1:4.3
+ __udivuhq3@GCC_4.3.0 1:4.3
+ __udivuqq3@GCC_4.3.0 1:4.3
+ __udivusa3@GCC_4.3.0 1:4.3
+ __udivusq3@GCC_4.3.0 1:4.3
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unorddf2@GCC_3.3.4 1:4.1.1
+ __unordsf2@GCC_3.3.4 1:4.1.1
+ __usadduda3@GCC_4.3.0 1:4.3
+ __usaddudq3@GCC_4.3.0 1:4.3
+ __usadduha3@GCC_4.3.0 1:4.3
+ __usadduhq3@GCC_4.3.0 1:4.3
+ __usadduqq3@GCC_4.3.0 1:4.3
+ __usaddusa3@GCC_4.3.0 1:4.3
+ __usaddusq3@GCC_4.3.0 1:4.3
+ __usashluda3@GCC_4.3.0 1:4.3
+ __usashludq3@GCC_4.3.0 1:4.3
+ __usashluha3@GCC_4.3.0 1:4.3
+ __usashluhq3@GCC_4.3.0 1:4.3
+ __usashluqq3@GCC_4.3.0 1:4.3
+ __usashlusa3@GCC_4.3.0 1:4.3
+ __usashlusq3@GCC_4.3.0 1:4.3
+ __usdivuda3@GCC_4.3.0 1:4.3
+ __usdivudq3@GCC_4.3.0 1:4.3
+ __usdivuha3@GCC_4.3.0 1:4.3
+ __usdivuhq3@GCC_4.3.0 1:4.3
+ __usdivuqq3@GCC_4.3.0 1:4.3
+ __usdivusa3@GCC_4.3.0 1:4.3
+ __usdivusq3@GCC_4.3.0 1:4.3
+ __usmuluda3@GCC_4.3.0 1:4.3
+ __usmuludq3@GCC_4.3.0 1:4.3
+ __usmuluha3@GCC_4.3.0 1:4.3
+ __usmuluhq3@GCC_4.3.0 1:4.3
+ __usmuluqq3@GCC_4.3.0 1:4.3
+ __usmulusa3@GCC_4.3.0 1:4.3
+ __usmulusq3@GCC_4.3.0 1:4.3
+ __usneguda2@GCC_4.3.0 1:4.3
+ __usnegudq2@GCC_4.3.0 1:4.3
+ __usneguha2@GCC_4.3.0 1:4.3
+ __usneguhq2@GCC_4.3.0 1:4.3
+ __usneguqq2@GCC_4.3.0 1:4.3
+ __usnegusa2@GCC_4.3.0 1:4.3
+ __usnegusq2@GCC_4.3.0 1:4.3
+ __ussubuda3@GCC_4.3.0 1:4.3
+ __ussubudq3@GCC_4.3.0 1:4.3
+ __ussubuha3@GCC_4.3.0 1:4.3
+ __ussubuhq3@GCC_4.3.0 1:4.3
+ __ussubuqq3@GCC_4.3.0 1:4.3
+ __ussubusa3@GCC_4.3.0 1:4.3
+ __ussubusq3@GCC_4.3.0 1:4.3
--- gcc-4.6-4.6.3.orig/debian/gcc-dummy.texi
+++ gcc-4.6-4.6.3/debian/gcc-dummy.texi
@@ -0,0 +1,41 @@
+\input texinfo  @c -*-texinfo-*-
+@c %**start of header
+
+@settitle The GNU Compiler Collection (GCC)
+
+@c Create a separate index for command line options.
+@defcodeindex op
+@c Merge the standard indexes into a single one.
+@syncodeindex fn cp
+@syncodeindex vr cp
+@syncodeindex ky cp
+@syncodeindex pg cp
+@syncodeindex tp cp
+
+@paragraphindent 1
+
+@c %**end of header
+
+@copying
+The current documentation is licensed under the same terms as the Debian packaging.
+@end copying
+@ifnottex
+@dircategory Programming
+@direntry
+* @name@: (@name@).                  The GNU Compiler Collection (@name@).
+@end direntry
+@sp 1
+@end ifnottex
+
+@summarycontents
+@contents
+@page
+
+@node Top
+@top Introduction
+@cindex introduction
+The official GNU compilers' documentation is released under the terms
+of the GNU Free Documentation License with cover texts. This has been
+considered non free by the Debian Project. Thus you will find it in the
+non-free section of the Debian archive.
+@bye
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.i386
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.i386
@@ -0,0 +1,4 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
+#include "libgfortran3.symbols.16.powerpc"
--- gcc-4.6-4.6.3.orig/debian/rules
+++ gcc-4.6-4.6.3/debian/rules
@@ -0,0 +1,110 @@
+#! /usr/bin/make -f
+# -*- makefile -*-
+# Build rules for gcc (>= 2.95) and gcc-snapshot
+# Targets found in this makefile:
+#	- unpack tarballs
+#	- patch sources
+#	- (re)create the control file
+#	- create a debian/rules.parameters file, which is included
+#	  by debian/rules2
+# All other targets are passed to the debian/rules2 file
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES
+
+default: build
+
+include debian/rules.defs
+include debian/rules.unpack
+include debian/rules.patch
+
+control: $(control_dependencies)
+	-mkdir -p $(stampdir)
+	$(MAKE) -f debian/rules.conf $@
+
+configure: $(configure_dependencies)
+$(configure_stamp): control $(unpack_stamp) $(patch_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(configure_dummy_stamp): control
+	$(MAKE) -f debian/rules2 $@
+$(configure_hppa64_stamp): $(build_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(configure_neon_stamp): $(build_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(configure_spu_stamp): $(build_stamp)
+	$(MAKE) -f debian/rules2 $@
+
+pre-build:
+#ifneq (,$(filter $(distrelease),squeeze sid))
+#ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386))
+#	@echo explicitely fail the build for $(DEB_TARGET_ARCH)
+#	@echo no bug report required. please ask the port maintainers if they support gcc-4.5.
+#	false
+#endif
+#endif
+
+build: pre-build $(build_dependencies)
+$(build_stamp): $(unpack_stamp) $(patch_stamp) $(configure_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(build_dummy_stamp): $(configure_dummy_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(build_javadoc_stamp): $(build_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(build_hppa64_stamp): $(configure_hppa64_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(build_neon_stamp): $(configure_neon_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(build_spu_stamp): $(configure_spu_stamp)
+	$(MAKE) -f debian/rules2 $@
+
+check: $(check_stamp)
+$(check_stamp): $(build_stamp)
+	$(MAKE) -f debian/rules2 $@
+
+clean:
+	rm -rf $(stampdir)
+# remove temporary dirs used for unpacking
+	rm -rf $(gcc_srcdir) $(gdc_srcdir) d
+	-$(MAKE) -f debian/rules2 $@
+	rm -rf $(srcdir)* $(builddir)* debian/tmp* html
+	rm -f bootstrap-* first-move-stamp
+	rm -f autotools_files
+	rm -f debian/*.tmp
+	rm -f debian/soname-cache
+	find debian -name '.#*' | xargs -r rm -f
+	rm -f $(series_file)*
+	dh_clean
+
+install: $(install_dependencies)
+$(install_stamp): $(build_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(install_snap_stamp): $(build_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(install_dummy_stamp): $(build_dummy_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(install_hppa64_stamp): $(build_hppa64_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(install_neon_stamp): $(build_neon_stamp)
+	$(MAKE) -f debian/rules2 $@
+$(install_spu_stamp): $(build_spu_stamp)
+	$(MAKE) -f debian/rules2 $@
+
+html-docs doxygen-docs update-doxygen-docs update-ada-files xxx:
+	$(MAKE) -f debian/rules2 $@
+
+binary-indep binary-arch binary: install
+	$(MAKE) -f debian/rules2 $@
+
+source diff:
+	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+release:
+	foo=$(shell basename $(CURDIR)); \
+		if [ "$$foo" != "gcc-3.4" ]; then \
+			find -name CVS -o -name .cvsignore -o -name '.#*' | \
+				xargs rm -rf; \
+		fi
+
+.PHONY: build clean binary-indep binary-arch binary release
--- gcc-4.6-4.6.3.orig/debian/g++-BV-CRB.preinst.in
+++ gcc-4.6-4.6.3/debian/g++-BV-CRB.preinst.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then
+    update-alternatives --quiet --remove @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.sparc
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.sparc
@@ -0,0 +1,3 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
--- gcc-4.6-4.6.3.orig/debian/README.source
+++ gcc-4.6-4.6.3/debian/README.source
@@ -0,0 +1,14 @@
+Patches applied to the Debian version of GCC
+--------------------------------------------
+
+Debian specific patches can be found in the debian/patches directory.
+Quilt is used as the patch system.  See /usr/share/doc/quilt/README.source
+for details about quilt.
+
+Patches are applied by calling `debian/rules patch'.  The `series'
+file is constructed on the fly, configure scripts are regenerated
+in the `patch' target.
+
+The source packages gcj-x.y and gnat-x.y do not contain copies of the
+source code but build-depend on the appropriate gcc-x.y-source package
+instead.
--- gcc-4.6-4.6.3.orig/debian/libgcj-common.preinst
+++ gcc-4.6-4.6.3/debian/libgcj-common.preinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    upgrade|install)
+	if [ -n "$2" ] && [ -h /usr/share/doc/libgcj-common ] \
+	   && dpkg --compare-versions "$2" lt 1:4.0.2-10
+	then
+	    rm -f /usr/share/doc/libgcj-common
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.s390
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.s390
@@ -0,0 +1,3 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
--- gcc-4.6-4.6.3.orig/debian/lib32stdc++6.symbols.s390x
+++ gcc-4.6-4.6.3/debian/lib32stdc++6.symbols.s390x
@@ -0,0 +1,549 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.common"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1
+ _ZNKSsixEm@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0
+ _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5.0
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5.0
+ _ZNSs2atEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsixEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1
+ _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6
+ _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1
+ _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _Znam@GLIBCXX_3.4 4.1.1
+ _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ _Znwm@GLIBCXX_3.4 4.1.1
+ _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit.s390"
+ _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1
--- gcc-4.6-4.6.3.orig/debian/lib64gfortran3.symbols.mipsel
+++ gcc-4.6-4.6.3/debian/lib64gfortran3.symbols.mipsel
@@ -0,0 +1,5 @@
+libgfortran.so.3 lib64gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/gij-hppa
+++ gcc-4.6-4.6.3/debian/gij-hppa
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+prctl=
+
+case "$(prctl --unaligned=)" in *signal)
+    echo >&2 "$(basename $0): ignore unaligned memory accesses"
+    prctl="prctl --unaligned=default"
+esac
+
+exec $prctl /usr/bin/gij-4.4.bin "$@"
+#! /bin/sh
+
+prctl=
+
+case "$(prctl --unaligned=)" in *signal)
+    echo >&2 "$(basename $0): ignore unaligned memory accesses"
+    prctl="prctl --unaligned=default"
+esac
+
+exec $prctl /usr/bin/gij-4.4.bin "$@"
--- gcc-4.6-4.6.3.orig/debian/dh_doclink
+++ gcc-4.6-4.6.3/debian/dh_doclink
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+pkg=`echo $1 | sed 's/^-p//'`
+target=$2
+
+[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc
+if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ]
+then
+    echo "WARNING: removing doc directory  $pkg"
+    rm -rf debian/$pkg/usr/share/doc/$pkg
+fi
+ln -sf $target debian/$pkg/usr/share/doc/$pkg
--- gcc-4.6-4.6.3.orig/debian/acats-killer.sh
+++ gcc-4.6-4.6.3/debian/acats-killer.sh
@@ -0,0 +1,62 @@
+#! /bin/sh
+
+# on ia64 systems, the acats hangs in unaligned memory accesses.
+# kill these testcases.
+
+pidfile=acats-killer.pid
+
+usage()
+{
+    echo >&2 "usage: `basename $0` [-p <pidfile>] <ada logfile> <next logfile>"
+    exit 1
+}
+
+while [ $# -gt 0 ]; do
+    case $1 in
+    -p)
+	pidfile=$2
+	shift
+	shift
+	;;
+    -*)
+	usage
+	;;
+    *)
+	break
+    esac
+done
+
+[ $# -eq 2 ] || usage
+
+logfile=$1
+stopfile=$2
+interval=30
+
+echo $$ > $pidfile
+
+while true; do
+    if [ -f "$stopfile" ]; then
+	echo "`basename $0`: finished."
+	rm -f $pidfile
+	exit 0
+    fi
+    sleep $interval
+    if [ ! -f "$logfile" ]; then
+	continue
+    fi
+    pids=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }')
+    if [ -n "$pids" ]; then
+	sleep $interval
+        pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }')
+	if [ "$pids" = "$pids2" ]; then
+	    #echo kill: $pids
+	    kill $pids
+	    sleep 1
+            pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }')
+	    if [ "$pids" = "$pids2" ]; then
+	        #echo kill -9: $pids
+	        kill -9 $pids
+	    fi
+	fi
+    fi
+done
--- gcc-4.6-4.6.3.orig/debian/gcc-BV-doc.doc-base.gomp
+++ gcc-4.6-4.6.3/debian/gcc-BV-doc.doc-base.gomp
@@ -0,0 +1,15 @@
+Document: gcc-@BV@-gomp
+Title: The GNU OpenMP Implementation (for GCC @BV@)
+Author: Various
+Abstract: This manual documents the usage of libgomp, the GNU implementation
+ of the OpenMP Application Programming Interface (API) for multi-platform
+ shared-memory parallel programming in C/C++ and Fortran.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc-@BV@-base/libgomp.html
+Files: /usr/share/doc/gcc-@BV@-base/libgomp.html
+
+Format: info
+Index: /usr/share/info/libgomp-@BV@.info.gz
+Files: /usr/share/info/libgomp-@BV@*
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.32bit.hurd
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.32bit.hurd
@@ -0,0 +1,536 @@
+#include "libstdc++6.symbols.common"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEj@GLIBCXX_3.4.4 4.1.1
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsj@GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjRKSs@GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjRKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEjPKc@GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEjj@GLIBCXX_3.4 4.1.1
+ _ZNKSsixEj@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1
+ _ZNKSt8valarrayIjE4sizeEv@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSs12_S_constructEjcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEjjjc@GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEjjPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs2atEj@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEjjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEjj@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEjc@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEjc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjRKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjjc@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEj@GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEjc@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjPKc@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjRKSs@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjRKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjjc@GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEj@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcjc@GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcjc@GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEjjj@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC1EjcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsjj@GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsC2EjcRKSaIcE@GLIBCXX_3.4 4.1.1
+ _ZNSsixEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEj@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_j@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_j@GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC1ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC2ERKS0_@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjED1Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjED2Ev@GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEixEj@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1
+ _ZSt17__verify_groupingPKcjRKSs@GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1
+ _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1
+ _Znaj@GLIBCXX_3.4 4.1.1
+ _ZnajRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ _Znwj@GLIBCXX_3.4 4.1.1
+ _ZnwjRKSt9nothrow_t@GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC1EP15__pthread_mutex@GLIBCXX_3.4 4.3.0
+ _ZNSt12__basic_fileIcEC2EP15__pthread_mutex@GLIBCXX_3.4 4.3.0
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.sparc64
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.sparc64
@@ -0,0 +1,106 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.2@GLIBC_2.2 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.0.0 1:4.1.1
+ __divti3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfti@GCC_3.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfti@GCC_3.0 1:4.1.1
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_3.0 1:4.1.1
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.2 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __lshrti3@GCC_3.0 1:4.1.1
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.0.0 1:4.1.1
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.2 1:4.1.1
+ __register_frame_info@GLIBC_2.2 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.2 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.2 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/control
+++ gcc-4.6-4.6.3/debian/control
@@ -0,0 +1,397 @@
+Source: gcc-4.6
+Section: devel
+Priority: optional
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Uploaders: Matthias Klose <doko@debian.org>
+Standards-Version: 3.9.3
+Build-Depends: dpkg-dev (>= 1.16.0~ubuntu4), debhelper (>= 5.0.62), g++-multilib [amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc], libc6.1-dev (>= 2.13-5) [alpha ia64] | libc0.3-dev (>= 2.13-5) [hurd-i386] | libc0.1-dev (>= 2.13-5) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-5), libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 s390x], lib64gcc1 [i386 powerpc sparc s390], libc6-dev-mips64 [mips mipsel], libc6-dev-mipsn32 [mips mipsel], m4, libtool, autoconf2.64, automake (>= 1:1.11), automake (<< 1:1.12), libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], zlib1g-dev, gawk, lzma, xz-utils, patchutils, binutils (>= 2.21.1) | binutils-multiarch (>= 2.21.1), binutils-hppa64 (>= 2.21.1) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), locales, procps, sharutils, binutils-spu (>= 2.21.1) [powerpc ppc64], newlib-spu (>= 1.16.0) [powerpc ppc64], libcloog-ppl-dev (>= 0.15.9-2~), libmpc-dev, libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), libelfg0-dev (>= 0.8.12), dejagnu [!m68k !hurd-i386 !hurd-alpha], autogen, realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81), quilt, univention-multiarch-links
+Build-Depends-Indep: doxygen (>= 1.7.2), graphviz (>= 2.2), gsfonts-x11, texlive-latex-base, 
+Build-Conflicts: binutils-gold
+Homepage: http://gcc.gnu.org/
+XS-Vcs-Browser: http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc-4.6/
+XS-Vcs-Svn: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.6
+
+Package: gcc-4.6-base
+Architecture: any
+Multi-Arch: same
+Section: libs
+Priority: required
+Depends: ${misc:Depends}
+Replaces: ${base:Replaces}
+Breaks: gcj-4.6-base (<< 4.6.1-4~), gnat-4.6 (<< 4.6.1-5~), dehydra (<= 0.9.hg20110609-2)
+Description: GCC, the GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+
+Package: gcc-4.6
+Architecture: any
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), cpp-4.6 (= ${gcc:Version}), binutils (>= ${binutils:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends}
+Recommends: ${dep:libcdev}
+Suggests: ${gcc:multilib}, libmudflap0-4.6-dev (>= ${gcc:Version}), gcc-4.6-doc (>= ${gcc:SoftVersion}), gcc-4.6-locales (>= ${gcc:SoftVersion}), libgcc1-dbg, libgomp1-dbg, libquadmath0-dbg, libmudflap0-dbg, ${dep:libcloog}, ${dep:gold}
+Provides: c-compiler
+Description: GNU C compiler
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+
+Package: gcc-4.6-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gcc-4.6 (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarch}, ${dep:libsspbiarch}, ${dep:libgompbiarch}, ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libmudflapbiarch}
+Description: GNU C compiler (multilib files)
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+
+Package: gcc-4.6-plugin-dev
+Architecture: any
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gcc-4.6 (= ${gcc:Version}), libgmp-dev (>= 2:5.0.1~), ${shlibs:Depends}, ${misc:Depends}
+Description: Files for GNU GCC plugin development.
+ This package contains (header) files for GNU GCC plugin development. It
+ is only used for the development of GCC plugins, but not needed to run
+ plugins.
+
+Package: gcc-4.6-hppa64
+Architecture: hppa
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3)
+Description: GNU C compiler (cross compiler for hppa64)
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+
+Package: gcc-4.6-spu
+Architecture: powerpc ppc64
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), binutils-spu (>= 2.18.1~cvs20080103-3), newlib-spu, ${shlibs:Depends}, ${misc:Depends}
+Provides: spu-gcc
+Description: SPU cross-compiler (preprocessor and C compiler)
+ GNU Compiler Collection for the Cell Broadband Engine SPU (preprocessor
+ and C compiler).
+
+Package: g++-4.6-spu
+Architecture: powerpc ppc64
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gcc-4.6-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: spu-g++
+Description: SPU cross-compiler (C++ compiler)
+ GNU Compiler Collection for the Cell Broadband Engine SPU (C++ compiler).
+
+Package: gfortran-4.6-spu
+Architecture: powerpc ppc64
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gcc-4.6-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: spu-gfortran
+Description: SPU cross-compiler (Fortran compiler)
+ GNU Compiler Collection for the Cell Broadband Engine SPU (Fortran compiler).
+
+Package: cpp-4.6
+Architecture: any
+Section: interpreters
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Suggests: gcc-4.6-locales (>= ${gcc:SoftVersion})
+Replaces: gcc-4.6 (<< 4.6.1-9)
+Description: GNU C preprocessor
+ A macro processor that is used automatically by the GNU C compiler
+ to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor but not the compiler.
+
+Package: gcc-4.6-locales
+Architecture: all
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (>= ${gcc:SoftVersion}), cpp-4.6 (>= ${gcc:SoftVersion}), ${misc:Depends}
+Recommends: gcc-4.6 (>= ${gcc:SoftVersion})
+Description: GCC, the GNU compiler collection (native language support files)
+ Native language support for GCC. Lets GCC speak your language,
+ if translations are available.
+ .
+ Please do NOT submit bug reports in other languages than "C".
+ Always reset your language settings to use the "C" locales.
+
+Package: g++-4.6
+Architecture: any
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gcc-4.6 (= ${gcc:Version}), libstdc++6-4.6-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: c++-compiler, c++abi2-dev
+Suggests: ${gxx:multilib}, gcc-4.6-doc (>= ${gcc:SoftVersion}), libstdc++6-4.6-dbg
+Description: GNU C++ compiler
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+
+Package: g++-4.6-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), g++-4.6 (= ${gcc:Version}), gcc-4.6-multilib (= ${gcc:Version}), ${dep:libcxxbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libcxxbiarchdbg}
+Description: GNU C++ compiler (multilib files)
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+
+Package: libmudflap0-4.6-dev
+Architecture: any
+Section: libdevel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), libmudflap0 (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${sug:libmudflapdev}
+Conflicts: libmudflap0-dev
+Description: GCC mudflap support libraries (development files)
+ The libmudflap libraries are used by GCC for instrumenting pointer and array
+ dereferencing operations.
+ .
+ This package contains the headers and the static libraries.
+
+Package: gobjc++-4.6
+Architecture: any
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gobjc-4.6 (= ${gcc:Version}), g++-4.6 (= ${gcc:Version}), ${shlibs:Depends}, libobjc3 (>= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjcxx:multilib}, gcc-4.6-doc (>= ${gcc:SoftVersion})
+Provides: objc++-compiler
+Description: GNU Objective-C++ compiler
+ This is the GNU Objective-C++ compiler, which compiles
+ Objective-C++ on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+Package: gobjc++-4.6-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gobjc++-4.6 (= ${gcc:Version}), g++-4.6-multilib (= ${gcc:Version}), gobjc-4.6-multilib (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Objective-C++ compiler (multilib files)
+ This is the GNU Objective-C++ compiler, which compiles Objective-C++ on
+ platforms supported by the gcc compiler.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+
+Package: gobjc-4.6
+Architecture: any
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gcc-4.6 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc3 (>= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjc:multilib}, gcc-4.6-doc (>= ${gcc:SoftVersion}), libobjc3-dbg
+Provides: objc-compiler
+Description: GNU Objective-C compiler
+ This is the GNU Objective-C compiler, which compiles
+ Objective-C on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+Package: gobjc-4.6-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gobjc-4.6 (= ${gcc:Version}), gcc-4.6-multilib (= ${gcc:Version}), ${dep:libobjcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Objective-C compiler (multilib files)
+ This is the GNU Objective-C compiler, which compiles Objective-C on platforms
+ supported by the gcc compiler.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+
+Package: libobjc3
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: multiarch-support
+Provides: libobjc3-armel [armel], libobjc3-armhf [armhf]
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libobjc3-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Provides: libobjc3-dbg-armel [armel], libobjc3-dbg-armhf [armhf]
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), libobjc3 (= ${gcc:Version}), libgcc1-dbg, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib64objc3
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (64bit)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib64objc3-dbg
+Section: debug
+Architecture: i386 powerpc sparc s390 mips mipsel
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), lib64objc3 (= ${gcc:Version}), lib64gcc1-dbg, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (64 bit debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib32objc3
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: Runtime library for GNU Objective-C applications (32bit)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib32objc3-dbg
+Section: debug
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), lib32objc3 (= ${gcc:Version}), lib32gcc1-dbg, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (32 bit debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libn32objc3
+Section: libs
+Architecture: mips mipsel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (n32)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libn32objc3-dbg
+Section: debug
+Architecture: mips mipsel
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), libn32objc3 (= ${gcc:Version}), libn32gcc1-dbg, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (n32 debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: gfortran-4.6
+Architecture: any
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gcc-4.6 (= ${gcc:Version}), libgfortran3 (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: fortran95-compiler
+Suggests: ${gfortran:multilib}, gfortran-4.6-doc, libgfortran3-dbg
+Replaces: libgfortran3-dev
+Description: GNU Fortran compiler
+ This is the GNU Fortran compiler, which compiles
+ Fortran on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+Package: gfortran-4.6-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc
+Section: devel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gfortran-4.6 (= ${gcc:Version}), gcc-4.6-multilib (= ${gcc:Version}), ${dep:libgfortranbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Fortran compiler (multilib files)
+ This is the GNU Fortran compiler, which compiles Fortran on platforms
+ supported by the gcc compiler.
+ .
+ On architectures with multilib support, the package contains files
+ and dependencies for the non-default multilib architecture(s).
+
+Package: libstdc++6-4.6-dev
+Architecture: any
+Section: libdevel
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), g++-4.6 (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), ${dep:libcdev}, ${misc:Depends}
+Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev
+Suggests: libstdc++6-4.6-doc
+Provides: libstdc++-dev
+Description: GNU Standard C++ Library v3 (development files)
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: libstdc++6-4.6-pic
+Architecture: any
+Section: libdevel
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), libstdc++6-4.6-dev (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Standard C++ Library v3 (shared library subset kit)
+ This is used to develop subsets of the libstdc++ shared libraries for
+ use on custom installation floppies and in embedded systems.
+ .
+ Unless you are making one of those, you will not need this package.
+
+Package: libstdc++6-4.6-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), libgcc1-dbg, ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: same
+Provides: libstdc++6-4.6-dbg-armel [armel], libstdc++6-4.6-dbg-armhf [armhf]
+Recommends: libstdc++6-4.6-dev (= ${gcc:Version})
+Conflicts: libstdc++5-dbg, libstdc++5-3.3-dbg, libstdc++6-dbg, libstdc++6-4.0-dbg, libstdc++6-4.1-dbg, libstdc++6-4.2-dbg, libstdc++6-4.3-dbg, libstdc++6-4.4-dbg, libstdc++6-4.5-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: lib32stdc++6-4.6-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x
+Section: debug
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), libstdc++6-4.6-dev (= ${gcc:Version}), lib32gcc1-dbg, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: lib32stdc++6-dbg, lib32stdc++6-4.0-dbg, lib32stdc++6-4.1-dbg, lib32stdc++6-4.2-dbg, lib32stdc++6-4.3-dbg, lib32stdc++6-4.4-dbg, lib32stdc++6-4.5-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: lib64stdc++6-4.6-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel
+Section: debug
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), libstdc++6-4.6-dev (= ${gcc:Version}), lib64gcc1-dbg, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: lib64stdc++6-dbg, lib64stdc++6-4.0-dbg, lib64stdc++6-4.1-dbg, lib64stdc++6-4.2-dbg, lib64stdc++6-4.3-dbg, lib64stdc++6-4.4-dbg, lib64stdc++6-4.5-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: libn32stdc++6-4.6-dbg
+Architecture: mips mipsel
+Section: debug
+Priority: extra
+Depends: gcc-4.6-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), libstdc++6-4.6-dev (= ${gcc:Version}), libn32gcc1-dbg, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: libn32stdc++6-dbg, libn32stdc++6-4.0-dbg, libn32stdc++6-4.1-dbg, libn32stdc++6-4.2-dbg, libn32stdc++6-4.3-dbg, libn32stdc++6-4.4-dbg, libn32stdc++6-4.5-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: libstdc++6-4.6-doc
+Architecture: all
+Section: doc
+Priority: optional
+Depends: gcc-4.6-base (>= ${gcc:SoftVersion}), ${misc:Depends}
+Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, libstdc++6-4.4-doc, libstdc++6-4.5-doc
+Description: GNU Standard C++ Library v3 (documentation files)
+ This package contains documentation files for the GNU stdc++ library.
+ .
+ One set is the distribution documentation, the other set is the
+ source documentation including a namespace list, class hierarchy,
+ alphabetical list, compound list, file list, namespace members,
+ compound members and file members.
+
+Package: gcc-4.6-soft-float
+Architecture: arm armel armhf
+Priority: optional
+Depends: gcc-4.6-base (= ${gcc:Version}), gcc-4.6 (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float
+Description: GCC soft-floating-point gcc libraries (ARM)
+ These are versions of basic static libraries such as libgcc.a compiled
+ with the -msoft-float option, for CPUs without a floating-point unit.
+
+Package: gcc-4.6-source
+Architecture: all
+Priority: optional
+Depends: make (>= 3.81), autoconf2.64, automake, quilt, patchutils, gawk, ${misc:Depends}
+Description: Source of the GNU Compiler Collection
+ This package contains the sources and patches which are needed to
+ build the GNU Compiler Collection (GCC).
--- gcc-4.6-4.6.3.orig/debian/libobjc2.symbols.arm
+++ gcc-4.6-4.6.3/debian/libobjc2.symbols.arm
@@ -0,0 +1,4 @@
+libobjc.so.3 libobjc3 #MINVER#
+#include "libobjc3.symbols.common"
+ __gnu_objc_personality_sj0@Base 4.2.1
+ __objc_exception_class@Base 4.4.0
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.sparc64
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.sparc64
@@ -0,0 +1,9 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVli@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVli@GLIBCXX_3.4 4.1.1
+# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc.
+# #include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/lib64gfortran3.symbols.s390
+++ gcc-4.6-4.6.3/debian/lib64gfortran3.symbols.s390
@@ -0,0 +1,5 @@
+libgfortran.so.3 lib64gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.hppa
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.hppa
@@ -0,0 +1,8 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+# removed, see PR libstdc++/39491 __signbitl@GLIBCXX_3.4 4.2.1
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.armhf
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.armhf
@@ -0,0 +1,120 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+(ignore-blacklist)#include "libgcc1.symbols.aeabi"
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_3.5@GCC_3.5 1:4.3.0
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_4.3.0 1:4.3.0
+ _Unwind_Complete@GCC_3.5 1:4.3.0
+ _Unwind_DeleteException@GCC_3.0 1:4.3.0
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.3.0
+ _Unwind_GetCFA@GCC_3.3 1:4.3.0
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.3.0
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.3.0
+ _Unwind_GetRegionStart@GCC_3.0 1:4.3.0
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.3.0
+ _Unwind_RaiseException@GCC_3.0 1:4.3.0
+ _Unwind_Resume@GCC_3.0 1:4.3.0
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.3.0
+ _Unwind_VRS_Get@GCC_3.5 1:4.3.0
+ _Unwind_VRS_Pop@GCC_3.5 1:4.3.0
+ _Unwind_VRS_Set@GCC_3.5 1:4.3.0
+ __absvdi2@GCC_3.0 1:4.3.0
+ __absvsi2@GCC_3.0 1:4.3.0
+ __adddf3@GCC_3.0 1:4.3.0
+ __addsf3@GCC_3.0 1:4.3.0
+ __addvdi3@GCC_3.0 1:4.3.0
+ __addvsi3@GCC_3.0 1:4.3.0
+ __ashldi3@GCC_3.0 1:4.3.0
+ __ashrdi3@GCC_3.0 1:4.3.0
+ __bswapdi2@GCC_4.3.0 1:4.3.0
+ __bswapsi2@GCC_4.3.0 1:4.3.0
+ __clear_cache@GCC_3.0 1:4.3.0
+ __clzdi2@GCC_3.4 1:4.3.0
+ __clzsi2@GCC_3.4 1:4.3.0
+ __cmpdi2@GCC_3.0 1:4.3.0
+ __ctzdi2@GCC_3.4 1:4.3.0
+ __ctzsi2@GCC_3.4 1:4.3.0
+ __divdc3@GCC_4.0.0 1:4.3.0
+ __divdf3@GCC_3.0 1:4.3.0
+ __divdi3@GLIBC_2.0 1:4.3.0
+ __divsc3@GCC_4.0.0 1:4.3.0
+ __divsf3@GCC_3.0 1:4.3.0
+ __divsi3@GCC_3.0 1:4.3.0
+ __emutls_get_address@GCC_4.3.0 1:4.3.0
+ __emutls_register_common@GCC_4.3.0 1:4.3.0
+ __enable_execute_stack@GCC_3.4.2 1:4.3.0
+ __eqdf2@GCC_3.0 1:4.3.0
+ __eqsf2@GCC_3.0 1:4.3.0
+ __extendsfdf2@GCC_3.0 1:4.3.0
+ __ffsdi2@GCC_3.0 1:4.3.0
+ __ffssi2@GCC_4.3.0 1:4.3.0
+ __fixdfdi@GCC_3.0 1:4.3.0
+ __fixdfsi@GCC_3.0 1:4.3.0
+ __fixsfdi@GCC_3.0 1:4.3.0
+ __fixsfsi@GCC_3.0 1:4.3.0
+ __fixunsdfdi@GCC_3.0 1:4.3.0
+ __fixunsdfsi@GCC_3.0 1:4.3.0
+ __fixunssfdi@GCC_3.0 1:4.3.0
+ __fixunssfsi@GCC_3.0 1:4.3.0
+ __floatdidf@GCC_3.0 1:4.3.0
+ __floatdisf@GCC_3.0 1:4.3.0
+ __floatsidf@GCC_3.0 1:4.3.0
+ __floatsisf@GCC_3.0 1:4.3.0
+ __floatundidf@GCC_4.2.0 1:4.3.0
+ __floatundisf@GCC_4.2.0 1:4.3.0
+ __floatunsidf@GCC_4.2.0 1:4.3.0
+ __floatunsisf@GCC_4.2.0 1:4.3.0
+ __gcc_personality_v0@GCC_3.3.1 1:4.3.0
+ __gedf2@GCC_3.0 1:4.3.0
+ __gesf2@GCC_3.0 1:4.3.0
+ __gnu_unwind_frame@GCC_3.5 1:4.3.0
+ __gtdf2@GCC_3.0 1:4.3.0
+ __gtsf2@GCC_3.0 1:4.3.0
+ __ledf2@GCC_3.0 1:4.3.0
+ __lesf2@GCC_3.0 1:4.3.0
+ __lshrdi3@GCC_3.0 1:4.3.0
+ __ltdf2@GCC_3.0 1:4.3.0
+ __ltsf2@GCC_3.0 1:4.3.0
+ __moddi3@GLIBC_2.0 1:4.3.0
+ __modsi3@GCC_3.0 1:4.3.0
+ __muldc3@GCC_4.0.0 1:4.3.0
+ __muldf3@GCC_3.0 1:4.3.0
+ __muldi3@GCC_3.0 1:4.3.0
+ __mulsc3@GCC_4.0.0 1:4.3.0
+ __mulsf3@GCC_3.0 1:4.3.0
+ __mulvdi3@GCC_3.0 1:4.3.0
+ __mulvsi3@GCC_3.0 1:4.3.0
+ __nedf2@GCC_3.0 1:4.3.0
+ __negdf2@GCC_3.0 1:4.3.0
+ __negdi2@GCC_3.0 1:4.3.0
+ __negsf2@GCC_3.0 1:4.3.0
+ __negvdi2@GCC_3.0 1:4.3.0
+ __negvsi2@GCC_3.0 1:4.3.0
+ __nesf2@GCC_3.0 1:4.3.0
+ __paritydi2@GCC_3.4 1:4.3.0
+ __paritysi2@GCC_3.4 1:4.3.0
+ __popcountdi2@GCC_3.4 1:4.3.0
+ __popcountsi2@GCC_3.4 1:4.3.0
+ __powidf2@GCC_4.0.0 1:4.3.0
+ __powisf2@GCC_4.0.0 1:4.3.0
+ __subdf3@GCC_3.0 1:4.3.0
+ __subsf3@GCC_3.0 1:4.3.0
+ __subvdi3@GCC_3.0 1:4.3.0
+ __subvsi3@GCC_3.0 1:4.3.0
+ __truncdfsf2@GCC_3.0 1:4.3.0
+ __ucmpdi2@GCC_3.0 1:4.3.0
+ __udivdi3@GLIBC_2.0 1:4.3.0
+ __udivmoddi4@GCC_3.0 1:4.3.0
+ __udivsi3@GCC_3.0 1:4.3.0
+ __umoddi3@GLIBC_2.0 1:4.3.0
+ __umodsi3@GCC_3.0 1:4.3.0
+ __unorddf2@GCC_3.3.4 1:4.3.0
+ __unordsf2@GCC_3.3.4 1:4.3.0
--- gcc-4.6-4.6.3.orig/debian/gcj-BV-jdk.doc-base
+++ gcc-4.6-4.6.3/debian/gcj-BV-jdk.doc-base
@@ -0,0 +1,15 @@
+Document: gcj-@BV@
+Title: The GNU Ahead-of-time Compiler for the Java Language
+Author: Various
+Abstract: This manual describes how to use gcj, the GNU compiler for
+ the Java programming language.  gcj can generate both .class files and
+ object files, and it can read both Java source code and .class files.
+Section: Programming/Java
+
+Format: html
+Index: /usr/share/doc/gcc-@BV@-base/java/gcj.html
+Files: /usr/share/doc/gcc-@BV@-base/java/gcj.html
+
+Format: info
+Index: /usr/share/info/gcj-@BV@.info.gz
+Files: /usr/share/info/gcj-@BV@*
--- gcc-4.6-4.6.3.orig/debian/TODO
+++ gcc-4.6-4.6.3/debian/TODO
@@ -0,0 +1,50 @@
+(It is recommended to edit this file with emacs' todoo mode)
+Last updated: 2008-05-02
+
+* General
+
+- Clean up the sprawl of debian/rules.  I'm sure there are neater
+  ways to do some of it; perhaps split it up into some more files?
+  Partly done.
+
+- Make debian/rules control build the control file without unpacking
+  the sources or applying patches.  Currently, it unpacks the sources,
+  patches them, creates the control file, and a subsequent
+  dpkg-buildpackage deletes the sources, re-unpacks them, and
+  re-patches them.
+
+- Reorganise debian/rules.defs to decide which packages to build in a
+  more straightforward and less error-prone fashion: (1) start with
+  all languages; override the list of languages depending on the name
+  of the source package (gcc-4.3, gnat-4.3, gdc-4.3, gcj-4.3).  (2)
+  filter the list of languages depending on the target platform; (3)
+  depending on the languages to build, decide on which libraries to
+  build.
+
+o [Ludovic Brenta] Ada
+
+- Done: Link the gnat tools with libgnat.so, instead of statically.
+
+- Done: Build libgnatvsn containing parts of the compiler (version
+  string, etc.) under GNAT-Modified GPL.  Link the gnat tools with it.
+
+- Done: Build libgnatprj containing parts of the compiler (the project
+  manager) under pure GPL.  Link the gnat tools with it.
+
+- Done: Build both the zero-cost and setjump/longjump exceptions
+  versions of libgnat.  In particular, gnat-glade (distributed systems)
+  works best with SJLJ.
+
+- Done: Re-enable running the test suite.
+
+- Add support for building cross-compilers.
+
+- Add support for multilib (not yet supported upstream).
+
+* Fortran
+
+- gfortran man page generation
+
+* Java
+
+- build java-gcj-compat from the gcc source?
--- gcc-4.6-4.6.3.orig/debian/libstdc++CXX.postinst
+++ gcc-4.6-4.6.3/debian/libstdc++CXX.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/libstdc++@CXX@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc-@BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/dh_rmemptydirs
+++ gcc-4.6-4.6.3/debian/dh_rmemptydirs
@@ -0,0 +1,10 @@
+#! /bin/sh -e
+
+pkg=`echo $1 | sed 's/^-p//'`
+
+: # remove empty directories, when all components are in place
+for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \
+    while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \
+done
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/lib64stdc++CXX.postinst
+++ gcc-4.6-4.6.3/debian/lib64stdc++CXX.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/lib64stdc++@CXX@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc-@BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/lib32gfortran3.symbols.amd64
+++ gcc-4.6-4.6.3/debian/lib32gfortran3.symbols.amd64
@@ -0,0 +1,9 @@
+libgfortran.so.3 lib32gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
+#include "libgfortran3.symbols.16.powerpc"
+ _gfortran_norm2_r10@GFORTRAN_1.4 4.6
+ _gfortran_transfer_complex128@GFORTRAN_1.4 4.6
+ _gfortran_transfer_complex128_write@GFORTRAN_1.4 4.6
+ _gfortran_transfer_real128@GFORTRAN_1.4 4.6
+ _gfortran_transfer_real128_write@GFORTRAN_1.4 4.6
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.lpia
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.lpia
@@ -0,0 +1,133 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GCC_4.4.0@GCC_4.4.0 1:4.4.0
+ GCC_4.5.0@GCC_4.5.0 1:4.5.0
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __addtf3@GCC_4.4.0 1:4.4.0
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __ashldi3@GCC_3.0 1:4.1.1
+ __ashrdi3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzsi2@GCC_3.4 1:4.1.1
+ __cmpdi2@GCC_3.0 1:4.1.1
+ __copysigntf3@GCC_4.4.0 1:4.4.0
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzsi2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divdi3@GLIBC_2.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.4.0 1:4.4.0
+ __divtf3@GCC_4.4.0 1:4.4.0
+ __divxc3@GCC_4.0.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __eqtf2@GCC_4.4.0 1:4.4.0
+ __extenddftf2@GCC_4.4.0 1:4.4.0
+ __extendsftf2@GCC_4.4.0 1:4.4.0
+ __fabstf2@GCC_4.4.0 1:4.4.0
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffssi2@GCC_4.3.0 1:4.3
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_4.4.0 1:4.4.0
+ __fixtfsi@GCC_4.4.0 1:4.4.0
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_4.4.0 1:4.4.0
+ __fixunstfsi@GCC_4.4.0 1:4.4.0
+ __fixunsxfdi@GCC_3.0 1:4.1.1
+ __fixunsxfsi@GCC_3.0 1:4.1.1
+ __fixxfdi@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_4.4.0 1:4.4.0
+ __floatdixf@GCC_3.0 1:4.1.1
+ __floatsitf@GCC_4.4.0 1:4.4.0
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.4.0 1:4.4.0
+ __floatundixf@GCC_4.2.0 1:4.2.1
+ __floatunsitf@GCC_4.4.0 1:4.4.0
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __getf2@GCC_4.4.0 1:4.4.0
+ __gttf2@GCC_4.4.0 1:4.4.0
+ __letf2@GCC_4.4.0 1:4.4.0
+ __lshrdi3@GCC_3.0 1:4.1.1
+ __lttf2@GCC_4.4.0 1:4.4.0
+ __moddi3@GLIBC_2.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __muldi3@GCC_3.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.4.0 1:4.4.0
+ __multf3@GCC_4.4.0 1:4.4.0
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulxc3@GCC_4.0.0 1:4.1.1
+ __negdi2@GCC_3.0 1:4.1.1
+ __negtf2@GCC_4.4.0 1:4.4.0
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __netf2@GCC_4.4.0 1:4.4.0
+ __paritydi2@GCC_3.4 1:4.1.1
+ __paritysi2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountsi2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.4.0 1:4.4.0
+ __powixf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subtf3@GCC_4.4.0 1:4.4.0
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __trunctfdf2@GCC_4.4.0 1:4.4.0
+ __trunctfsf2@GCC_4.4.0 1:4.4.0
+ __trunctfxf2@GCC_4.4.0 1:4.4.0
+ __ucmpdi2@GCC_3.0 1:4.1.1
+ __udivdi3@GLIBC_2.0 1:4.1.1
+ __udivmoddi4@GCC_3.0 1:4.1.1
+ __umoddi3@GLIBC_2.0 1:4.1.1
+ __unordtf2@GCC_4.4.0 1:4.4.0
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.lpia
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.lpia
@@ -0,0 +1,3 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.10"
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.16.powerpc
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.16.powerpc
@@ -0,0 +1,100 @@
+ __iso_c_binding_c_f_pointer_c16@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_r16@GFORTRAN_1.0 4.3
+ _gfortran_arandom_r16@GFORTRAN_1.0 4.3
+ _gfortran_bessel_jn_r16@GFORTRAN_1.4 4.6
+ _gfortran_bessel_yn_r16@GFORTRAN_1.4 4.6
+ _gfortran_cpu_time_16@GFORTRAN_1.0 4.3
+ _gfortran_erfc_scaled_r16@GFORTRAN_1.1 4.4.0
+ _gfortran_exponent_r16@GFORTRAN_1.0 4.3
+ _gfortran_fraction_r16@GFORTRAN_1.0 4.3
+ _gfortran_matmul_c16@GFORTRAN_1.0 4.3
+ _gfortran_matmul_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxval_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_minval_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminval_r16@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_c16@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_r16@GFORTRAN_1.0 4.3
+ _gfortran_msum_c16@GFORTRAN_1.0 4.3
+ _gfortran_msum_r16@GFORTRAN_1.0 4.3
+ _gfortran_nearest_r16@GFORTRAN_1.0 4.3
+ _gfortran_norm2_r16@GFORTRAN_1.4 4.6
+ _gfortran_pow_c16_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_c16_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_r16_i4@GFORTRAN_1.0 4.6
+ _gfortran_pow_r16_i8@GFORTRAN_1.0 4.3
+ _gfortran_product_c16@GFORTRAN_1.0 4.3
+ _gfortran_product_r16@GFORTRAN_1.0 4.3
+ _gfortran_random_r16@GFORTRAN_1.0 4.3
+ _gfortran_reshape_c16@GFORTRAN_1.0 4.3
+ _gfortran_reshape_r16@GFORTRAN_1.0 4.3
+ _gfortran_rrspacing_r16@GFORTRAN_1.0 4.3
+ _gfortran_set_exponent_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminval_r16@GFORTRAN_1.0 4.3
+ _gfortran_spacing_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__acos_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__acosh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__aimag_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__aint_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__anint_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__asin_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__asinh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan2_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__atanh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__conjg_16@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__cosh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__log10_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_4_16@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_8_16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sinh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__tan_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__tanh_r16@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_c16@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_r16@GFORTRAN_1.0 4.3
+ _gfortran_ssum_c16@GFORTRAN_1.0 4.3
+ _gfortran_ssum_r16@GFORTRAN_1.0 4.3
+ _gfortran_sum_c16@GFORTRAN_1.0 4.3
+ _gfortran_sum_r16@GFORTRAN_1.0 4.3
+ _gfortran_transpose_c16@GFORTRAN_1.0 4.3
+ _gfortran_transpose_r16@GFORTRAN_1.0 4.3
--- gcc-4.6-4.6.3.orig/debian/gnat-BV.overrides
+++ gcc-4.6-4.6.3/debian/gnat-BV.overrides
@@ -0,0 +1 @@
+gnat-@BV@: quilt-build-dep-but-no-series-file
--- gcc-4.6-4.6.3.orig/debian/README.Debian
+++ gcc-4.6-4.6.3/debian/README.Debian
@@ -0,0 +1,39 @@
+               The Debian GNU Compiler Collection setup
+               ========================================
+
+Please see the README.Debian in /usr/share/doc/gcc, contained in the
+gcc package for a description of the setup of the different compiler
+versions.
+
+For general discussion about the Debian toolchain (GCC, glibc, binutils)
+please use the mailing list debian-toolchain@lists.debian.org; for GCC
+specific things, please use debian-gcc@lists.debian.org.  When in doubt
+use the debian-toolchain ML.
+
+
+Maintainers of these packages
+-----------------------------
+
+Matthias Klose <doko@debian.org>
+Falk Hueffner <falk@debian.org>			(alpha-linux)
+Ludovic Brenta <ludovic@ludovic-brenta.org>	(gnat)
+Aurelien Jarno <aurel32@debian.org>		(mips*-linux)
+
+Former and/or inactive maintainers of these packages
+----------------------------------------------------
+
+Ray Dassen <jdassen@debian.org>
+Jeff Bailey <jbailey@nisa.net>			(hurd-i386)
+Joel Baker <fenton@debian.org>			(netbsd-i386)
+Randolph Chung <tausq@debian.org>		(ia64-linux)
+Philip Blundell <pb@debian.org>			(arm-linux)
+Ben Collins <bcollins@debian.org>		(sparc-linux)
+Dan Jacobowitz <dan@debian.org>			(powerpc-linux)
+Thiemo Seufer <ths@networkno.de>		(mips*-linux)
+Matt Taggart <taggart@carmen.fc.hp.com>		(hppa-linux)
+Gerhard Tonn <GerhardTonn@swol.de>		(s390-linux)
+Roman Zippel <zippel@linux-m68k.org>		(m68k-linux)
+Arthur Loiret <arthur.loiret@gmail.com>		(gdc)
+
+===============================================================================
+
--- gcc-4.6-4.6.3.orig/debian/gcc-BV-hppa64.prerm
+++ gcc-4.6-4.6.3/debian/gcc-BV-hppa64.prerm
@@ -0,0 +1,10 @@
+#! /bin/sh -e
+
+if [ "$1" != "upgrade" ]; then
+  update-alternatives --quiet \
+    --remove hppa64-linux-gcc /usr/bin/hppa64-linux-gnu-gcc-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
--- gcc-4.6-4.6.3.orig/debian/libgomp1.symbols
+++ gcc-4.6-4.6.3/debian/libgomp1.symbols
@@ -0,0 +1,4 @@
+libgomp.so.1 libgomp1 #MINVER#
+#include "libgomp1.symbols.common"
+ GOMP_atomic_end@GOMP_1.0 4.2.1
+ GOMP_atomic_start@GOMP_1.0 4.2.1
--- gcc-4.6-4.6.3.orig/debian/libgcc1.symbols.ppc64
+++ gcc-4.6-4.6.3/debian/libgcc1.symbols.ppc64
@@ -0,0 +1,126 @@
+libgcc_s.so.1 libgcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info@GLIBC_2.0 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.0.0 1:4.1.1
+ __divti3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfdi@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfdi@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfdi@GCC_3.0 1:4.1.1
+ __fixtfti@GCC_3.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfsi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfsi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfdi@GCC_3.0 1:4.1.1
+ __fixunstfti@GCC_3.0 1:4.1.1
+ __floatdidf@GCC_3.0 1:4.1.1
+ __floatdisf@GCC_3.0 1:4.1.1
+ __floatditf@GCC_3.0 1:4.1.1
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_3.0 1:4.1.1
+ __floatundidf@GCC_4.2.0 1:4.2.1
+ __floatundisf@GCC_4.2.0 1:4.2.1
+ __floatunditf@GCC_4.2.0 1:4.2.1
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.0 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __gcc_qadd@GCC_3.4.4 1:4.1.1
+ __gcc_qdiv@GCC_3.4.4 1:4.1.1
+ __gcc_qmul@GCC_3.4.4 1:4.1.1
+ __gcc_qsub@GCC_3.4.4 1:4.1.1
+ __lshrti3@GCC_3.0 1:4.1.1
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.0.0 1:4.1.1
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.0 1:4.1.1
+ __register_frame_info@GLIBC_2.0 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.0 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.0 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
+ _xlqadd@GCC_3.4 1:4.1.1
+ _xlqdiv@GCC_3.4 1:4.1.1
+ _xlqmul@GCC_3.4 1:4.1.1
+ _xlqsub@GCC_3.4 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/gcc-snapshot.overrides
+++ gcc-4.6-4.6.3/debian/gcc-snapshot.overrides
@@ -0,0 +1,4 @@
+gcc-snapshot binary: bad-permissions-for-ali-file
+
+# keep patched ltdl copy
+gcc-snapshot binary: embedded-library
--- gcc-4.6-4.6.3.orig/debian/lib64gcc1.symbols.sparc
+++ gcc-4.6-4.6.3/debian/lib64gcc1.symbols.sparc
@@ -0,0 +1,106 @@
+libgcc_s.so.1 lib64gcc1 #MINVER#
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4.4@GCC_3.4.4 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.2@GLIBC_2.2 1:4.1.1
+ _Unwind_Backtrace@GCC_3.3 1:4.1.1
+ _Unwind_DeleteException@GCC_3.0 1:4.1.1
+ _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1
+ _Unwind_Find_FDE@GCC_3.0 1:4.1.1
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1
+ _Unwind_GetCFA@GCC_3.3 1:4.1.1
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1
+ _Unwind_GetGR@GCC_3.0 1:4.1.1
+ _Unwind_GetIP@GCC_3.0 1:4.1.1
+ _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1
+ _Unwind_GetRegionStart@GCC_3.0 1:4.1.1
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1
+ _Unwind_RaiseException@GCC_3.0 1:4.1.1
+ _Unwind_Resume@GCC_3.0 1:4.1.1
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1
+ _Unwind_SetGR@GCC_3.0 1:4.1.1
+ _Unwind_SetIP@GCC_3.0 1:4.1.1
+ __absvdi2@GCC_3.0 1:4.1.1
+ __absvsi2@GCC_3.0 1:4.1.1
+ __absvti2@GCC_3.4.4 1:4.1.1
+ __addvdi3@GCC_3.0 1:4.1.1
+ __addvsi3@GCC_3.0 1:4.1.1
+ __addvti3@GCC_3.4.4 1:4.1.1
+ __ashlti3@GCC_3.0 1:4.1.1
+ __ashrti3@GCC_3.0 1:4.1.1
+ __bswapdi2@GCC_4.3.0 1:4.3
+ __bswapsi2@GCC_4.3.0 1:4.3
+ __clear_cache@GCC_3.0 1:4.1.1
+ __clzdi2@GCC_3.4 1:4.1.1
+ __clzti2@GCC_3.4 1:4.1.1
+ __cmpti2@GCC_3.0 1:4.1.1
+ __ctzdi2@GCC_3.4 1:4.1.1
+ __ctzti2@GCC_3.4 1:4.1.1
+ __deregister_frame@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info@GLIBC_2.2 1:4.1.1
+ __deregister_frame_info_bases@GCC_3.0 1:4.1.1
+ __divdc3@GCC_4.0.0 1:4.1.1
+ __divsc3@GCC_4.0.0 1:4.1.1
+ __divtc3@GCC_4.0.0 1:4.1.1
+ __divti3@GCC_3.0 1:4.1.1
+ __emutls_get_address@GCC_4.3.0 1:4.3
+ __emutls_register_common@GCC_4.3.0 1:4.3
+ __enable_execute_stack@GCC_3.4.2 1:4.1.1
+ __ffsdi2@GCC_3.0 1:4.1.1
+ __ffsti2@GCC_3.0 1:4.1.1
+ __fixdfti@GCC_3.0 1:4.1.1
+ __fixsfti@GCC_3.0 1:4.1.1
+ __fixtfti@GCC_3.0 1:4.1.1
+ __fixunsdfdi@GCC_3.0 1:4.1.1
+ __fixunsdfti@GCC_3.0 1:4.1.1
+ __fixunssfdi@GCC_3.0 1:4.1.1
+ __fixunssfti@GCC_3.0 1:4.1.1
+ __fixunstfti@GCC_3.0 1:4.1.1
+ __floattidf@GCC_3.0 1:4.1.1
+ __floattisf@GCC_3.0 1:4.1.1
+ __floattitf@GCC_3.0 1:4.1.1
+ __floatuntidf@GCC_4.2.0 1:4.2.1
+ __floatuntisf@GCC_4.2.0 1:4.2.1
+ __floatuntitf@GCC_4.2.0 1:4.2.1
+ __frame_state_for@GLIBC_2.2 1:4.1.1
+ __gcc_personality_v0@GCC_3.3.1 1:4.1.1
+ __lshrti3@GCC_3.0 1:4.1.1
+ __modti3@GCC_3.0 1:4.1.1
+ __muldc3@GCC_4.0.0 1:4.1.1
+ __mulsc3@GCC_4.0.0 1:4.1.1
+ __multc3@GCC_4.0.0 1:4.1.1
+ __multi3@GCC_3.0 1:4.1.1
+ __mulvdi3@GCC_3.0 1:4.1.1
+ __mulvsi3@GCC_3.0 1:4.1.1
+ __mulvti3@GCC_3.4.4 1:4.1.1
+ __negti2@GCC_3.0 1:4.1.1
+ __negvdi2@GCC_3.0 1:4.1.1
+ __negvsi2@GCC_3.0 1:4.1.1
+ __negvti2@GCC_3.4.4 1:4.1.1
+ __paritydi2@GCC_3.4 1:4.1.1
+ __parityti2@GCC_3.4 1:4.1.1
+ __popcountdi2@GCC_3.4 1:4.1.1
+ __popcountti2@GCC_3.4 1:4.1.1
+ __powidf2@GCC_4.0.0 1:4.1.1
+ __powisf2@GCC_4.0.0 1:4.1.1
+ __powitf2@GCC_4.0.0 1:4.1.1
+ __register_frame@GLIBC_2.2 1:4.1.1
+ __register_frame_info@GLIBC_2.2 1:4.1.1
+ __register_frame_info_bases@GCC_3.0 1:4.1.1
+ __register_frame_info_table@GLIBC_2.2 1:4.1.1
+ __register_frame_info_table_bases@GCC_3.0 1:4.1.1
+ __register_frame_table@GLIBC_2.2 1:4.1.1
+ __subvdi3@GCC_3.0 1:4.1.1
+ __subvsi3@GCC_3.0 1:4.1.1
+ __subvti3@GCC_3.4.4 1:4.1.1
+ __ucmpti2@GCC_3.0 1:4.1.1
+ __udivmodti4@GCC_3.0 1:4.1.1
+ __udivti3@GCC_3.0 1:4.1.1
+ __umodti3@GCC_3.0 1:4.1.1
--- gcc-4.6-4.6.3.orig/debian/protoize.1
+++ gcc-4.6-4.6.3/debian/protoize.1
@@ -0,0 +1,42 @@
+.TH PROTOIZE 1
+.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection
+.\" other parms are allowed: see man(7), man(1)
+.SH NAME
+protoize, unprotoize \- create/remove ANSI prototypes from C code
+.SH SYNOPSIS
+.B protoize
+.I "[options] files ...." 
+.br
+.B unprotoize
+.I "[options] files ...." 
+.SH "DESCRIPTION"
+This manual page documents briefly the
+.BR protoize ,
+and
+.B unprotoize
+commands.
+This manual page was written for the Debian GNU/Linux distribution
+(but may be used by others), because the original program does not
+have a manual page.
+Instead, it has documentation in the GNU Info format; see below.
+.PP
+.B protoize
+is an optional part of GNU C.  You can use it to add prototypes to a
+program, thus converting the program to ANSI C in one respect.  The companion
+program `unprotoize' does the reverse: it removes argument types from
+any prototypes that are found.
+.PP
+When you run these programs, you must specify a set of source files
+as command line arguments.
+.SH OPTIONS
+These programs are non-trivial to operate, and it is neither possible nor
+desirable to properly summarize options in this man page.  Read the info
+documentation for more information.
+.SH "SEE ALSO"
+The programs are documented fully by
+.IR "Gcc: The use and the internals of the GNU compiler",
+available via the Info system.  The documentation for protoize/unprotoize
+can be found in the subsection "Invoking GCC", under "Running Protoize."
+.SH AUTHOR
+This manual page was written by Galen Hazelwood,
+for the Debian GNU/Linux system.
--- gcc-4.6-4.6.3.orig/debian/libhfgcc1.symbols.armel
+++ gcc-4.6-4.6.3/debian/libhfgcc1.symbols.armel
@@ -0,0 +1,120 @@
+libgcc_s.so.1 libhfgcc1 #MINVER#
+(ignore-blacklist)#include "libgcc1.symbols.aeabi"
+ GCC_3.0@GCC_3.0 1:4.1.1
+ GCC_3.3.1@GCC_3.3.1 1:4.1.1
+ GCC_3.3.4@GCC_3.3.4 1:4.1.1
+ GCC_3.3@GCC_3.3 1:4.1.1
+ GCC_3.4.2@GCC_3.4.2 1:4.1.1
+ GCC_3.4@GCC_3.4 1:4.1.1
+ GCC_3.5@GCC_3.5 1:4.3.0
+ GCC_4.0.0@GCC_4.0.0 1:4.1.1
+ GCC_4.2.0@GCC_4.2.0 1:4.1.1
+ GCC_4.3.0@GCC_4.3.0 1:4.3
+ GLIBC_2.0@GLIBC_2.0 1:4.1.1
+ _Unwind_Backtrace@GCC_4.3.0 1:4.3.0
+ _Unwind_Complete@GCC_3.5 1:4.3.0
+ _Unwind_DeleteException@GCC_3.0 1:4.3.0
+ _Unwind_ForcedUnwind@GCC_3.0 1:4.3.0
+ _Unwind_GetCFA@GCC_3.3 1:4.3.0
+ _Unwind_GetDataRelBase@GCC_3.0 1:4.3.0
+ _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.3.0
+ _Unwind_GetRegionStart@GCC_3.0 1:4.3.0
+ _Unwind_GetTextRelBase@GCC_3.0 1:4.3.0
+ _Unwind_RaiseException@GCC_3.0 1:4.3.0
+ _Unwind_Resume@GCC_3.0 1:4.3.0
+ _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.3.0
+ _Unwind_VRS_Get@GCC_3.5 1:4.3.0
+ _Unwind_VRS_Pop@GCC_3.5 1:4.3.0
+ _Unwind_VRS_Set@GCC_3.5 1:4.3.0
+ __absvdi2@GCC_3.0 1:4.3.0
+ __absvsi2@GCC_3.0 1:4.3.0
+ __adddf3@GCC_3.0 1:4.3.0
+ __addsf3@GCC_3.0 1:4.3.0
+ __addvdi3@GCC_3.0 1:4.3.0
+ __addvsi3@GCC_3.0 1:4.3.0
+ __ashldi3@GCC_3.0 1:4.3.0
+ __ashrdi3@GCC_3.0 1:4.3.0
+ __bswapdi2@GCC_4.3.0 1:4.3.0
+ __bswapsi2@GCC_4.3.0 1:4.3.0
+ __clear_cache@GCC_3.0 1:4.3.0
+ __clzdi2@GCC_3.4 1:4.3.0
+ __clzsi2@GCC_3.4 1:4.3.0
+ __cmpdi2@GCC_3.0 1:4.3.0
+ __ctzdi2@GCC_3.4 1:4.3.0
+ __ctzsi2@GCC_3.4 1:4.3.0
+ __divdc3@GCC_4.0.0 1:4.3.0
+ __divdf3@GCC_3.0 1:4.3.0
+ __divdi3@GLIBC_2.0 1:4.3.0
+ __divsc3@GCC_4.0.0 1:4.3.0
+ __divsf3@GCC_3.0 1:4.3.0
+ __divsi3@GCC_3.0 1:4.3.0
+ __emutls_get_address@GCC_4.3.0 1:4.3.0
+ __emutls_register_common@GCC_4.3.0 1:4.3.0
+ __enable_execute_stack@GCC_3.4.2 1:4.3.0
+ __eqdf2@GCC_3.0 1:4.3.0
+ __eqsf2@GCC_3.0 1:4.3.0
+ __extendsfdf2@GCC_3.0 1:4.3.0
+ __ffsdi2@GCC_3.0 1:4.3.0
+ __ffssi2@GCC_4.3.0 1:4.3.0
+ __fixdfdi@GCC_3.0 1:4.3.0
+ __fixdfsi@GCC_3.0 1:4.3.0
+ __fixsfdi@GCC_3.0 1:4.3.0
+ __fixsfsi@GCC_3.0 1:4.3.0
+ __fixunsdfdi@GCC_3.0 1:4.3.0
+ __fixunsdfsi@GCC_3.0 1:4.3.0
+ __fixunssfdi@GCC_3.0 1:4.3.0
+ __fixunssfsi@GCC_3.0 1:4.3.0
+ __floatdidf@GCC_3.0 1:4.3.0
+ __floatdisf@GCC_3.0 1:4.3.0
+ __floatsidf@GCC_3.0 1:4.3.0
+ __floatsisf@GCC_3.0 1:4.3.0
+ __floatundidf@GCC_4.2.0 1:4.3.0
+ __floatundisf@GCC_4.2.0 1:4.3.0
+ __floatunsidf@GCC_4.2.0 1:4.3.0
+ __floatunsisf@GCC_4.2.0 1:4.3.0
+ __gcc_personality_v0@GCC_3.3.1 1:4.3.0
+ __gedf2@GCC_3.0 1:4.3.0
+ __gesf2@GCC_3.0 1:4.3.0
+ __gnu_unwind_frame@GCC_3.5 1:4.3.0
+ __gtdf2@GCC_3.0 1:4.3.0
+ __gtsf2@GCC_3.0 1:4.3.0
+ __ledf2@GCC_3.0 1:4.3.0
+ __lesf2@GCC_3.0 1:4.3.0
+ __lshrdi3@GCC_3.0 1:4.3.0
+ __ltdf2@GCC_3.0 1:4.3.0
+ __ltsf2@GCC_3.0 1:4.3.0
+ __moddi3@GLIBC_2.0 1:4.3.0
+ __modsi3@GCC_3.0 1:4.3.0
+ __muldc3@GCC_4.0.0 1:4.3.0
+ __muldf3@GCC_3.0 1:4.3.0
+ __muldi3@GCC_3.0 1:4.3.0
+ __mulsc3@GCC_4.0.0 1:4.3.0
+ __mulsf3@GCC_3.0 1:4.3.0
+ __mulvdi3@GCC_3.0 1:4.3.0
+ __mulvsi3@GCC_3.0 1:4.3.0
+ __nedf2@GCC_3.0 1:4.3.0
+ __negdf2@GCC_3.0 1:4.3.0
+ __negdi2@GCC_3.0 1:4.3.0
+ __negsf2@GCC_3.0 1:4.3.0
+ __negvdi2@GCC_3.0 1:4.3.0
+ __negvsi2@GCC_3.0 1:4.3.0
+ __nesf2@GCC_3.0 1:4.3.0
+ __paritydi2@GCC_3.4 1:4.3.0
+ __paritysi2@GCC_3.4 1:4.3.0
+ __popcountdi2@GCC_3.4 1:4.3.0
+ __popcountsi2@GCC_3.4 1:4.3.0
+ __powidf2@GCC_4.0.0 1:4.3.0
+ __powisf2@GCC_4.0.0 1:4.3.0
+ __subdf3@GCC_3.0 1:4.3.0
+ __subsf3@GCC_3.0 1:4.3.0
+ __subvdi3@GCC_3.0 1:4.3.0
+ __subvsi3@GCC_3.0 1:4.3.0
+ __truncdfsf2@GCC_3.0 1:4.3.0
+ __ucmpdi2@GCC_3.0 1:4.3.0
+ __udivdi3@GLIBC_2.0 1:4.3.0
+ __udivmoddi4@GCC_3.0 1:4.3.0
+ __udivsi3@GCC_3.0 1:4.3.0
+ __umoddi3@GLIBC_2.0 1:4.3.0
+ __umodsi3@GCC_3.0 1:4.3.0
+ __unorddf2@GCC_3.3.4 1:4.3.0
+ __unordsf2@GCC_3.3.4 1:4.3.0
--- gcc-4.6-4.6.3.orig/debian/README.maintainers
+++ gcc-4.6-4.6.3/debian/README.maintainers
@@ -0,0 +1,237 @@
+-*- Outline -*-
+
+Read this file if you are a Debian Developer or would like to become
+one, or if you would like to create your own binary packages of GCC.
+
+* Overview
+
+From the GCC sources, Debian currently builds 3 source packages and
+almost 100 binary packages, using a single set of build scripts.  The
+3 source packages are:
+
+gcc-4.3: C, C++, Fortran, Objective-C and Objective-C++, plus many
+         common libraries like libssp, libmudflap, and libgcc.
+gcj-4.3: Java.
+gnat-4.3: Ada.
+
+The way we do this is quite peculiar, so listen up :)
+
+When we build from the gcc-4.3 source package, we produce, among many
+others, a gcc-4.3-source binary package that contains the pristine
+upstream tarball and some Debian-specific patches.  Any user can then
+install this package on their Debian system, and will have the full
+souces in /usr/src/gcc-4.3/gcc-<timestamp>.tar.bz2, along with the
+Makefile snippets that unpack and patch them.
+
+The intended use for this package is twofold: (a) allow users to build
+their own cross-compilers, and (b) build the other two packages,
+gcj-4.3 and gnat-4.3.
+
+For gcj-4.3 and gnat-4.3, the "source tarball" just contains an empty
+directory; e.g.:
+
+$ tar tzf gnat-4.3_4.3-20070609.orig.tar.gz
+gnat-4.3-4.3-20070609.orig/
+
+The build scripts for all source packages are the same, and they are
+included, as usual, in the .diff.gz file.
+
+* The build sequence
+
+As for all other Debian packages, you build GCC by calling
+debian/rules.
+
+The first thing debian/rules does it to look at the top-most entry in
+debian/changelog: this tells it which source package it is building.
+For example, if the first entry in debian/changelog reads:
+
+gcj-4.3 (4.3-20070609-1) unstable; urgency=low
+
+  * Upload as gcj-4.3.
+
+ -- Ludovic Brenta <lbrenta@debian.org>  Tue, 26 Jun 2007 00:26:42 +0200
+
+then, debian/rules will build only the Java binary packages.
+
+The second step is to unpack the GCC source tarball.  This tarball is
+either in the build directory (when building gcc-4.3), or in
+/usr/src/gcc-4.3/gcc-<timestamp>.tar.bz2 (when building the other
+source packages).
+
+The third step is to build debian/control from debian/control.m4 and a
+complex set of rules specified in debian/rules.conf.  The resulting
+control file contains only the binary packages to be built.
+
+The fourth step is to select which patches to apply (this is done in
+debian/rules.defs), and then to apply the selected patches (see
+debian/rules.patch).
+
+The fifth step is to create a "build" directory, cd into it, call
+../src/configure, and bootstrap the compiler and libraries selected.
+This is in debian/rules2.
+
+The sixth step is to call "make install" in the build directory: this
+installs the compiler and libraries into debian/tmp
+(i.e. debian/tmp/usr/bin/gcc, etc.)
+
+The seventh step is to run the GCC test suite (this actually takes at
+least as much time as bootstrapping, and you can disable it by setting
+WITHOUT_CHECK to "yes" in the environment).
+
+The eighth step is to build the binary packages, i.e. the .debs.  This
+is done by a set of language- and architecture-dependent Makefile
+snippets in the debian/rules.d/ directory, which move files from the
+debian/tmp tree to the debian/<package> trees.
+
+* Making your own packages
+
+In this example, we will build our own gnat-4.3 package.
+
+1) Create a .orig.tar.gz tarball containing a single, empty directory.
+
+$ mkdir gnat-4.3-4.3-20070609.orig
+$ tar czf gnat-4.3_4.3-20070609.orig.tar.gz gnat-4.3-4.3-20070609.orig
+
+2) Install gcc-4.3-source, which contains the real sources:
+
+# apt-get install gcc-4.3-source
+
+3) Create a build directory:
+
+$ mkdir gnat-4.3-4.3-20070609; cd gnat-4.3-4.3-20070609
+
+4) Checkout from Subversion:
+
+$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-4.3/debian
+
+5) Edit the debian/changelog file, adding a new entry at the top that
+   starts with "gnat-4.3" instead of "gcc-4.3".
+
+6) Generate the debian/control file, adjusted for gnat:
+
+$ debian/rules control
+
+7) Build:
+
+$ dpkg-buildpackage -rfakeroot
+
+* Hints
+
+You need a powerful machine to build GCC.  The larger, the better.
+The build scripts take advantage of as many CPU threads as are
+available in your box (for example: 2 threads on a dual-core amd64; 4
+threads on a dual-core POWER5; 32 threads on an 8-core UltraSPARC T1,
+etc.).
+
+If you have 2 GB or more of physical RAM, you can achieve maximum
+performance by building in a tmpfs, like this:
+
+1) as root, create the new tmpfs:
+
+# mount -t tmpfs -o size=1280m none /home/lbrenta/src/debian/ram
+
+By default, the tmpfs will be limited to half your physical RAM.  The
+beauty of it is that it only consumes as much physical RAM as
+necessary to hold the files in it; deleting files frees up RAM.
+
+2) As your regular user, create the working directory in the tmpfs
+
+$ cp --archive ~/src/debian/gcc-4.3-4.3-20070901 ~/src/debian/ram
+
+3) Build in there.  On my dual-core, 2 GHz amd64, it takes 34 minutes
+   to build gnat, and the tmpfs takes 992 MiB of physical RAM but
+   exceeds 1 GiB during the build.
+
+Note that the build process uses a lot of temporary files.  Your $TEMP
+directory should therefore also be in a ram disk.  You can achieve
+that either by mounting it as tmpfs, or by setting TEMP to point to
+~/src/debian/ram.
+
+Also note that each thread in your processor(s) will run a compiler in
+it and use up RAM.  Therefore your physical memory should be:
+
+Physical_RAM >= 1.2 + 0.4 * Threads (in GiB)
+
+(this is an estimate; your mileage may vary).  If you have less
+physical RAM than recommended, reduce the number of threads allocated
+to the build process, or do not use a tmpfs to build.
+
+* Patching GCC
+
+Debian applies a large number of patches to GCC as part of the build
+process.  The patches are shell scripts located in debian/patches.
+The file debian/rules.defs selects the language front-ends and
+libraries to build.  Then, based on that, debian/rules.patch selects
+which patches to apply and in which order, then applies them and
+produces a file listing the applied patches in order in
+stamps/02-patch-stamp.
+
+There is currently no tool to help modify patches; you have to do it
+by hand.  Here is one possible way to do it:
+
+1) Apply all patches up to and EXCLUDING the patch you intend to
+   modify, in order.
+
+2) Make a deep copy of the src directory, e.g.
+   $ cp --archive src src.bak
+
+3) Apply the patch you intend to modify.
+
+4) Open the .dpatch file in your editor and remove the entire patch
+   section; leave alone the shell script part at the top.
+
+5) Change the files you want in the src directory.  After making
+   changes, you can experiment with
+   $ make -C build -jK
+   (where K is the number of processor threads you have)
+
+6) $ diff -rNu src.bak src >> debian/patches/<file>.dpatch
+
+7) Apply all remaining patches, to see if your change broke any of
+   them.
+
+8) $ svn commit debian/patches/<file>.dpatch
+
+If you want to add a new patch, the procedure is similar.  You must
+first choose where in the list of patches you want to insert your new
+patch.  Then, apply all patches up to that point and start editing.
+Do not forget to add a reference to your patch at the proper place in
+debian/rules.patch.
+
+** Patching GCC with Quilt
+
+The above method uses an entire copy of the source tree, which is
+currently 474 megabytes in size.  If you are in a one-gigabyte ram
+disk (see Hints above), this may be a problem.  One solution to this
+problem is to use quilt, which will only keep copies of the files
+touched by patches, not all files.  It also automates the updating of
+a patch after you change the sources.
+
+Quilt however does not take into account the selection of patches made
+in debian/rules.defs; instead it has a static list of patches.  After
+calling "debian/rules patch", you can generate such a list like this:
+
+$ egrep '^[^ ]+:' stamps/02-patch-stamp | \
+  sed 's!:!.dpatch -p0!' > debian/patches/series
+
+Unfortunately, not all patches are applied with -p0; you must then
+edit debian/patches/series by hand to replace -p0 with -p1 for a few
+patches.
+
+Once you have your debian/patches/series:
+
+$ debian/rules unpatch
+$ export QUILT_PATCHES=$PWD/debian/patches
+$ cd src
+$ quilt push -a (or quilt push <patch_name>)
+edit files at will; quilt add <file_name> to add a new file to the patch
+$ make -C ../build
+$ quilt refresh
+$ quilt push -a #Â check that no patch is broken
+$ quilt pop -a
+$ cd ..
+$ debian/rules clean build
+$ svn commit
+
+-- 
+Ludovic Brenta, 2007-12-05.
--- gcc-4.6-4.6.3.orig/debian/libgcjLGCJ.postrm
+++ gcc-4.6-4.6.3/debian/libgcjLGCJ.postrm
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    remove|purge)
+        # only purge if no other library is installed.
+        if [ -z "$(ls /usr/lib/libgcj.so.@GCJ@* 2>/dev/null)" ]; then
+	    rm -f /var/lib/gcj-@BV@/classmap.db
+	    rmdir --ignore-fail-on-non-empty /var/lib/gcj-@BV@ 2>/dev/null || true
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.sparc
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.sparc
@@ -0,0 +1,8 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2
--- gcc-4.6-4.6.3.orig/debian/gcjh-wrapper-BV.1
+++ gcc-4.6-4.6.3/debian/gcjh-wrapper-BV.1
@@ -0,0 +1,20 @@
+.TH GCJH-WRAPPER 1 "June 6, 2002" gcjh-wrapper "Java User's Manual"
+.SH NAME
+gcjh-wrapper \- a wrapper around gcjh
+
+.SH SYNOPSIS
+gcjh-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fBgcjh-wrapper\fR is a wrapper around gcjh(1) to be called as the java header
+compiler. Options different for javah(1) and gcjh(1) are translated,
+options unknown to gcjh(1) are silently ignored.
+
+.SH OPTIONS
+See gcjh-@BV@(1) for a list of options that gcj understands.
+
+.SH "SEE ALSO"
+.BR gcjh-@BV@(1)
+,
+.BR javah(1)
--- gcc-4.6-4.6.3.orig/debian/libgnatvsnBV.overrides
+++ gcc-4.6-4.6.3/debian/libgnatvsnBV.overrides
@@ -0,0 +1 @@
+libgnatvsn@BV@: missing-dependency-on-libc
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.sparc64
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.sparc64
@@ -0,0 +1,5 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
+#include "libgfortran3.symbols.16.powerpc64"
+#include "libgfortran3.symbols.64"
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.sh4
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.sh4
@@ -0,0 +1,2 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
--- gcc-4.6-4.6.3.orig/debian/rules.defs
+++ gcc-4.6-4.6.3/debian/rules.defs
@@ -0,0 +1,1378 @@
+# -*- makefile -*-
+# definitions used in more than one Makefile / rules file
+
+# common vars
+SHELL		= /bin/bash -e	# brace expansion used in rules file
+PWD		:= $(shell pwd)
+srcdir		= $(PWD)/src
+builddir	= $(PWD)/build
+stampdir	= stamps
+
+distribution	:= $(shell echo "Debian")
+distrelease	:= $(shell echo "wheezy")
+
+# On non official archives, "lsb_release -cs" default to "n/a". Assume
+# sid in that case 
+ifeq ($(distrelease),n/a)
+distrelease	:= sid
+endif
+
+on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes)
+
+# creates {srcdir,builddir}_{hppa64,neon,spu}
+$(foreach x,srcdir builddir,$(foreach target,hppa64 spu neon,$(eval \
+  $(x)_$(target) := $($(x))-$(target))))
+
+# for architecture dependent variables and changelog vars
+vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1)))
+# for rules.sonames
+vafilt_defined = 1
+
+DPKG_VARS		:= $(shell dpkg-architecture)
+DEB_BUILD_GNU_TYPE	?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
+DEB_HOST_ARCH		?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH)
+DEB_HOST_GNU_CPU	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU)
+DEB_HOST_GNU_SYSTEM	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM)
+DEB_HOST_GNU_TYPE	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE)
+DEB_HOST_MULTIARCH	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH)
+
+CHANGELOG_VARS := $(shell dpkg-parsechangelog | \
+	sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p')
+
+# the name of the source package
+PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source)
+# those are required here too
+SOURCE_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version)
+DEB_VERSION := $(strip $(shell echo $(SOURCE_VERSION) | \
+        sed -e 's/.*://' -e 's/ds[0-9]*//'))
+# epoch used for gcc versions up to 3.3.x, now used for some remaining
+# libraries: libgcc1, libobjc1
+EPOCH := 1
+DEB_EVERSION := $(EPOCH):$(DEB_VERSION)
+BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([1-9]\.[0-9]\).*-.*/\1/')
+
+ifneq (,$(findstring gdc,$(PKGSOURCE)))
+  BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/.*-\([1-9]\.[0-9]\).*-.*/\1/')
+endif
+
+# push glibc stack traces into stderr
+export LIBC_FATAL_STDERR_=1
+
+# ---------------------------------------------------------------------------
+# set target
+# - GNU triplet via DEB_TARGET_GNU_TYPE
+# - Debian arch in debian/target
+# - Debian arch via DEB_GCC_TARGET or GCC_TARGET
+#
+# alias
+ifdef GCC_TARGET
+  DEB_GCC_TARGET := $(GCC_TARGET)
+endif
+ifdef DEB_TARGET_GNU_TYPE
+  TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE) 2>/dev/null)
+else
+  # allow debian/target to be used instead of DEB_GCC_TARGET - this was requested
+  # by toolchain-source maintainer
+  DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null)))
+  ifndef DEB_TARGET_ARCH
+    ifneq (,$(DEBIAN_TARGET_FILE))
+      DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE)
+    else
+      ifdef DEB_GCC_TARGET
+        DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
+      else
+        DEB_TARGET_ARCH := $(DEB_HOST_ARCH)
+      endif
+    endif
+  endif
+  TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
+endif
+
+DEB_TARGET_ARCH		?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH)
+DEB_TARGET_ARCH_OS	?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS)
+DEB_TARGET_ARCH_CPU	?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU)
+DEB_TARGET_GNU_CPU	?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU)
+DEB_TARGET_GNU_TYPE	?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE)
+DEB_TARGET_GNU_SYSTEM	?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM)
+DEB_TARGET_MULTIARCH	?= $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH)
+
+ifeq ($(DEB_TARGET_ARCH),)
+  $(error Invalid architecure.)
+endif
+
+# including unversiond symlinks for binaries
+#with_unversioned = yes
+
+# ---------------------------------------------------------------------------
+# cross-compiler config
+# - typical cross-compiler
+# - reverse cross (built to run on the target)
+# - full canadian
+# - native
+#
+# build != host && host == target : reverse cross (REVERSE_CROSS == yes)
+# build == host && host != target : typical cross (DEB_CROSS == yes)
+# build != host && host != target : canadian (DEB_CROSS == yes)
+# build == host && host == target : native
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+  ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE))
+    DEB_CROSS = yes
+  else
+    REVERSE_CROSS = yes
+  endif
+else
+  ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE))
+    DEB_CROSS = yes
+  else
+    # first ones are squeeze+1 and maverick
+    ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid))
+      with_sysroot = /
+    endif
+  endif
+endif
+
+# ---------------------------------------------------------------------------
+# cross compiler support
+ifeq ($(DEB_CROSS),yes)
+  # TARGET: Alias to DEB_TARGET_ARCH (Debian arch name)
+  # TP: Target Prefix. Used primarily as a prefix for cross tool
+  #     names (e.g. powerpc-linux-gcc).
+  # TS: Target Suffix. Used primarily at the end of cross compiler
+  #     package names (e.g. gcc-powerpc).
+  # LS: Library Suffix. Used primarily at the end of cross compiler
+  #     library package names (e.g. libgcc-powerpc-cross).
+  DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE)
+  TARGET := $(DEB_TARGET_ARCH)
+  TP :=  $(subst _,-,$(DEB_TARGET_GNU_TYPE))-
+  TS := -$(subst _,-,$(DEB_TARGET_ALIAS))
+  LS := -$(subst _,-,$(DEB_TARGET_ARCH))-cross
+
+  cross_bin_arch := -$(subst _,-,$(DEB_TARGET_ALIAS))
+  cross_lib_arch := -$(subst _,-,$(DEB_TARGET_ARCH))-cross
+  cmd_prefix := $(DEB_TARGET_GNU_TYPE)-
+
+  TARGET_ALIAS := $(DEB_TARGET_ALIAS)
+
+  lib_binaries := indep_binaries
+  cross_shlibdeps = $(SET_CROSS_LIB_PATH) ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something"
+else
+  TARGET_ALIAS := $(DEB_TARGET_GNU_TYPE)
+
+  ifeq ($(TARGET_ALIAS),i386-gnu)
+    TARGET_ALIAS := i586-gnu
+  endif
+
+  cmd_prefix :=
+
+  #ifeq ($(TARGET_ALIAS),i486-linux-gnu)
+  #  TARGET_ALIAS := i686-linux-gnu
+  #endif
+
+  TARGET_ALIAS := $(subst i386,i486,$(TARGET_ALIAS))
+
+  # configure as linux-gnu, not linux
+  #ifeq ($(findstring linux,$(TARGET_ALIAS))/$(findstring linux-gnu,$(TARGET_ALIAS)),linux/)
+  #  TARGET_ALIAS := $(TARGET_ALIAS)-gnu
+  #endif
+
+  # configure as linux, not linux-gnu
+  #TARGET_ALIAS := $(subst linux-gnu,linux,$(TARGET_ALIAS))
+
+  lib_binaries := arch_binaries
+  cross_shlibdeps :=
+endif
+
+printarch:
+	@echo DEB_TARGET_ARCH: $(DEB_TARGET_ARCH)
+	@echo DEB_TARGET_ARCH_OS: $(DEB_TARGET_ARCH_OS)
+	@echo DEB_TARGET_ARCH_CPU: $(DEB_TARGET_ARCH_CPU)
+	@echo DEB_TARGET_GNU_SYSTEM: $(DEB_TARGET_GNU_SYSTEM)
+	@echo DEB_TARGET_MULTIARCH: $(DEB_TARGET_MULTIARCH)
+	@echo MULTIARCH_CONFARG: $(MULTIARCH_CONFARG)
+	@echo TARGET_ALIAS: $(TARGET_ALIAS)
+	@echo TP: $(TP)
+	@echo TS: $(TS)
+
+# -------------------------------------------------------------------
+# bootstrap options
+ifdef WITH_BOOTSTRAP
+  # "yes" is the default and causes a 3-stage bootstrap.
+  # "off" runs a complete build with --disable-bootstrap
+  # "no" means to just build the first stage, and not create the stage1
+  # directory.
+  # "lean" means a lean 3-stage bootstrap, i.e. delete each stage when no
+  # longer needed.
+  with_bootstrap = $(WITH_BOOTSTRAP)
+endif
+ifneq ($(findstring nostrap, $(DEB_BUILD_OPTIONS)),)
+  with_bootstrap := off
+endif
+
+# -------------------------------------------------------------------
+# stage options
+ifdef DEB_STAGE
+  with_cdev := yes
+  separate_lang := yes
+  # "stage1" is minimal compiler with static libgcc
+  # "stage2" is minimal compiler with shared libgcc
+  ifeq ($(DEB_STAGE),stage1)
+    with_shared_libgcc := no
+  endif
+  ifeq ($(DEB_STAGE),stage2)
+    with_libgcc := yes
+    with_shared_libgcc := yes
+  endif
+endif
+
+ifeq ($(BACKPORT),true)
+  with_dev := no
+  with_source := yes
+  with_base_only := yes
+endif
+
+# -------------------------------------------------------------------
+# sysroot options
+ifdef WITH_SYSROOT
+  with_sysroot = $(WITH_SYSROOT)
+endif
+ifdef WITH_BUILD_SYSROOT
+  with_build_sysroot = $(WITH_BUILD_SYSROOT)
+endif
+
+# -------------------------------------------------------------------
+# for components configuration
+
+COMMA = ,
+SPACE = $(EMPTY) $(EMPTY)
+
+# lang= overwrites all of nolang=, overwrites all of WITHOUT_LANG
+
+DEB_LANG_OPT	:= $(filter lang=%,$(DEB_BUILD_OPTIONS))
+DEB_LANG	:= $(strip $(subst $(COMMA), ,$(patsubst lang=%,%,$(DEB_LANG_OPT))))
+DEB_NOLANG_OPT	:= $(filter nolang=%,$(DEB_BUILD_OPTIONS))
+DEB_NOLANG	:= $(strip $(subst $(COMMA), ,$(patsubst nolang=%,%,$(DEB_NOLANG_OPT))))
+lfilt	= $(strip $(if $(DEB_LANG), \
+		$(if $(filter $(1) $(2),$(DEB_LANG)),yes),$(3)))
+nlfilt	= $(strip $(if $(DEB_NOLANG), \
+		$(if $(filter $(1) $(2),$(DEB_NOLANG)),disabled by $(DEB_NOLANG_OPT),$(3))))
+wlfilt	= $(strip $(if $(filter $(1) $(2), $(subst $(COMMA), ,$(WITHOUT_LANG))), \
+		disabled by WITHOUT_LANG=$(WITHOUT_LANG),$(3)))
+envfilt	= $(strip $(or $(call lfilt,$(1),$(2)),$(call nlfilt,$(1),$(3)),$(call wlfilt,$(1),$(3)),$(4)))
+
+# -------------------------------------------------------------------
+# architecture specific config
+
+# FIXME: libjava is not ported for thumb, this hack only works for
+# separate gcj builds
+ifeq (,$(findstring gcj,$(PKGSOURCE)))
+  ifeq ($(DEB_TARGET_ARCH),armhf)
+    with_arm_thumb := yes
+  else
+    ifeq ($(distribution)-$(DEB_TARGET_ARCH),Ubuntu-armel)
+      ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+        with_arm_thumb := yes
+      endif
+    endif
+  endif
+endif
+
+# build using fsf or linaro
+ifeq ($(distribution),Ubuntu)
+  ifeq (,$(findstring gnat, $(PKGSOURCE)))
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),armel armhf amd64 i386 powerpc))
+    with_linaro_branch = yes
+  endif
+  endif
+endif
+
+# check if we're building for armel or armhf
+ifeq ($(DEB_TARGET_ARCH),armhf)
+  float_abi := hard
+else ifneq (,$(filter $(distribution)-$(DEB_TARGET_ARCH), Ubuntu-armel))
+  ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+    float_abi := softfp
+  else
+    float_abi := soft
+  endif
+else ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel))
+  float_abi := soft
+endif
+
+# -------------------------------------------------------------------
+# basic config
+
+# common things ---------------
+# build common packages, where package names don't differ in different
+# gcc versions (fixincludes, libgcj-common) ...
+with_common_pkgs := no
+# ... and some libraries, which do not change (libgcc1, libmudflap, libssp0).
+with_common_libs := no
+# XXX: should with_common_libs be "yes" only if this is the default compiler
+# version on the targeted arch?
+
+# is this a multiarch-enabled build?
+ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick))
+  with_multiarch_lib := yes
+endif
+
+ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick))
+  multiarch_stage1 := yes
+endif
+
+# mapping for the non-default biarch multilib / multiarch names
+multiarch_xarch_map = \
+	amd64=i386-linux-gnu \
+	armel=arm-linux-gnueabi \
+	armhf=arm-linux-gnueabihf \
+	i386=x86_64-linux-gnu \
+	powerpc=powerpc64-linux-gnu \
+	ppc64=powerpc-linux-gnu \
+	sparc=sparc64-linux-gnu \
+	sparc64=sparc-linux-gnu \
+	s390=s390x-linux-gnu \
+	s390x=s390-linux-gnu \
+	mips=mips64-linux-gnuabin32,mips64-linux-gnuabi64 \
+	mipsel=mips64el-linux-gnuabin32,mips64el-linux-gnuabi64 \
+	kfreebsd-amd64=i386-kfreebsd-gnu
+xarch_multiarch_names = $(subst $(COMMA),$(SPACE),$(patsubst $(DEB_TARGET_ARCH)=%,%, \
+		$(filter $(DEB_TARGET_ARCH)=%,$(multiarch_xarch_map))))
+
+ifneq ($(DEB_STAGE),stage1)
+  # build a -base package.
+  ifneq ($(DEB_CROSS),yes)
+    with_gccbase := yes
+  else
+    with_gccxbase := yes
+  endif
+endif
+
+# build dev packages.
+with_dev := yes
+
+with_cpp := yes
+
+# set lang when built from a different source package.
+separate_lang := no
+
+ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE)))
+  single_package = yes
+  trunk_build = yes
+else ifneq (,$(findstring gcc-linaro, $(PKGSOURCE)))
+  single_package = yes
+  trunk_build = no
+else
+  # --program-suffix=-$(BASE_VERSION)
+  versioned_packages := yes
+endif
+
+#no_dummy_cpus := ia64 i386 hppa s390 sparc
+#ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus)))
+#  with_base_only	:= no
+#  with_common_libs	:= yes
+#  with_common_pkgs	:= yes
+#else
+#  with_base_only	:= yes
+#  with_common_libs	:= no
+#  with_common_pkgs	:= no
+#  with_dev		:= no
+#endif
+
+ifeq ($(versioned_packages),yes)
+  pkg_ver := -$(BASE_VERSION)
+  PV := $(pkg_ver)
+endif
+
+# -------------------------------------------------------------------
+# configure languages
+
+# C ---------------------------
+enabled_languages := c
+
+# Build all packages needed for C development
+ifneq ($(with_base_only),yes)
+  ifeq ($(with_dev),yes)
+    with_cdev := yes
+  endif
+endif
+
+ifndef DEB_STAGE
+# Ada --------------------
+ada_no_cpus	:= m32r sh3 sh3eb sh4 sh4eb
+ada_no_systems	:= 
+ada_no_cross	:= yes
+ada_no_snap	:= no
+ifneq (,$(filter $(DEB_TARGET_ARCH),armhf m68k powerpcspe sh4 sparc64))
+  ada_no_snap := yes
+endif
+
+ifeq ($(with_dev),yes)
+  ifneq ($(separate_lang),yes)
+    with_ada := yes
+  endif
+endif
+ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(ada_no_cpus)))
+  with_ada := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(ada_no_systems)))
+  with_ada := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+ifeq ($(ada_no_cross)-$(DEB_CROSS),yes-yes)
+  with_ada := disabled for cross compiler package
+endif
+ifeq ($(ada_no_snap)-$(single_package),yes-yes)
+  with_ada := disabled for snapshot build
+endif
+with_ada := $(call envfilt, ada, , , $(with_ada))
+
+ifneq ($(single_package),yes)
+  with_separate_gnat := yes
+endif
+ifeq ($(with_ada)-$(with_separate_gnat),yes-yes)
+  ifneq (,$(findstring gnat,$(PKGSOURCE)))
+    languages := c
+    separate_lang := yes
+  else
+    debian_extra_langs += ada
+    with_ada := built from separate source
+    with_libgnat := built from separate source
+  endif
+endif
+
+ifeq ($(with_ada),yes)
+  enabled_languages += ada
+  with_libgnat := yes
+  # There are two exception handling mechanisms: ZCX (Zero-Cost
+  # eXceptions) and SJLJ (setjump/longjump), selected and supported by
+  # libgnat.  Thus we build both versions of libgnat on architectures
+  # that support both (see ada-sjlj.diff).  Most cpus support both
+  # mechanisms; here, we declare the few that support only one.
+  libgnat_zcx_only_cpus :=
+  libgnat_sjlj_only_cpus := arm armel armhf
+  ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgnat_sjlj_only_cpus)))
+    with_gnat_zcx := no
+  else
+    with_gnat_zcx := yes
+  endif
+  ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgnat_zcx_only_cpus)))
+    with_gnat_sjlj := no
+  else
+    with_gnat_sjlj := yes
+  endif
+  ifeq ($(with_gnat_zcx)-$(with_gnat_sjlj),no-no)
+    # TODO: support cpus that do not support exceptions at all,
+    # perhaps by building a restricted runtime library?  For now, flag
+    # this as a packaging error.
+    $(error this target supports neither ZCX nor SJLJ)
+  endif
+endif
+
+# C++ -------------------------
+cxx_no_cpus := avr
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_cxx := yes
+  endif
+endif
+ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(cxx_no_cpus)))
+  with_cxx := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+with_cxx := $(call envfilt, c++, obj-c++ java, , $(with_cxx))
+
+# Build all packages needed for C++ development
+ifeq ($(with_cxx),yes)
+  ifeq ($(with_dev),yes)
+    with_cxxdev := yes
+    with_libcxxdbg := yes
+  endif
+  ifeq ($(with_common_pkgs),yes)
+    with_libcxx := yes
+  endif
+
+  # debugging versions of libstdc++
+  ifeq ($(with_cxxdev),yes)
+    with_debug := yes
+    debug_no_cpus :=
+    ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(debug_no_cpus)))
+      with_debug := disabled for cpu $(DEB_TARGET_GNU_CPU)
+    endif
+  endif
+  with_debug := $(call envfilt, debug, , , $(with_debug))
+
+  enabled_languages += c++
+endif
+
+# Java --------------------
+# - To build a standalone gcj package (with no corresponding gcc
+#   package): with_separate_libgcj=yes, with_standalone_gcj=yes
+# - To build the java packages from the gcc source package:
+#   with_separate_libgcj=no, with_standalone_gcj=no
+# - To build gcc and java from separate sources:
+#   with_separate_libgcj=yes, with_standalone_gcj=no
+
+java_no_cpus := # mips mipsel
+java_no_systems := knetbsd-gnu
+java_no_cross := yes
+
+ifneq ($(single_package),yes)
+  with_separate_libgcj := yes
+endif
+with_standalone_gcj := no
+
+ifneq ($(separate_lang),yes)
+  with_java := yes
+endif
+
+# java converted for V3 C++ ABI for some archs
+ifeq ($(with_base_only),yes)
+  with_java := no
+endif
+ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(java_no_cpus)))
+  with_java := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(java_no_systems)))
+  with_java := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+ifeq ($(java_no_cross)-$(DEB_CROSS),yes-yes)
+  with_java := diasbled for cross compiler package
+endif
+with_java := $(call envfilt, java, , c++, $(with_java))
+
+ifeq ($(with_java)-$(with_separate_libgcj),yes-yes)
+  ifneq (,$(findstring gcj, $(PKGSOURCE)))
+    languages := c c++
+    separate_lang := yes
+  else
+    debian_extra_langs += java
+    with_java := built from separate source
+    with_gcj := built from separate source
+    with_libgcj := buit from separate source
+  endif
+endif
+
+with_java_plugin := no
+
+ifeq ($(with_java),yes)
+  # use the same names as OpenJDK
+  java_cpu_map = armel=arm armhf=arm hppa=parisc i686=i386 i586=i386 i486=i386 mipsel=mips powerpc=ppc sh4=sh
+  java_cpu = $(patsubst $(DEB_TARGET_ARCH_CPU)=%,%, \
+                         $(filter $(DEB_TARGET_ARCH_CPU)=%,$(java_cpu_map)))
+  ifeq (,$(java_cpu))
+    java_cpu = $(DEB_TARGET_ARCH_CPU)
+  endif
+  java_priority = 10$(subst .,,$(BASE_VERSION))
+
+  with_libgcj := yes
+  with_libgcjbc := no
+
+  ifneq (,$(findstring gcj-4,$(PKGSOURCE)))
+    ifneq (,$(filter $(DEB_TARGET_ARCH), arm))
+      with_gcj_base_only := yes
+    endif
+  endif
+
+  ifeq ($(single_package),yes)
+    with_ecj := yes
+  endif
+
+  #ifneq (,$(filter $(DEB_TARGET_ARCH),hppa))
+  #  with_native_ecj := yes
+  #endif
+
+  with_java_maintainer_mode := no
+
+  # used as well in debian/rules.conf to determine the build deps
+  java_awt_peers = gtk # qt # xlib
+
+  ifeq ($(with_common_libs),yes)
+    with_libgcj_doc := yes
+  endif
+
+  # Build all packages needed for Java development (gcj, libgcj-dev)
+  ifeq ($(with_dev),yes)
+    with_javadev := yes
+    with_gcj := yes
+  endif
+
+  with_java_alsa := yes
+  ifeq (,$(filter $(DEB_TARGET_GNU_SYSTEM),linux-gnu))
+    with_java_alsa := no
+  endif
+
+  enabled_languages += java
+endif
+
+# D ---------------------------
+d_no_cross := yes
+d_no_snap := yes
+
+ifneq ($(single_package),yes)
+  with_separate_gdc := yes
+endif
+
+ifneq ($(separate_lang),yes)
+  with_d := yes
+endif
+ifeq ($(d_no_snap)-$(single_package),yes-yes)
+  with_d := disabled for snapshot build
+endif
+
+ifeq ($(with_d)-$(with_separate_gdc),yes-yes)
+  ifneq (,$(findstring gdc,$(PKGSOURCE)))
+    languages := c c++
+    separate_lang := yes
+  else
+    debian_extra_langs += d
+    with_d := built from separate source
+  endif
+endif
+
+ifeq ($(with_base_only),yes)
+  with_d := no
+endif
+
+ifeq ($(with_d),yes)
+  # no suffix for D 1.0
+  #libphobos_version :=
+  # still experimental
+  libphobos_version := 2
+
+  with_libphobos := yes
+
+  libphobos_no_cpus := alpha avr arm hppa ia64 m68k mips mipsel powerpc powerpcspe ppc64 s390 s390x sh4 sparc sparc64
+  libphobos_no_systems := gnu
+  ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(libphobos_no_cpus)))
+    with_libphobos := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+  endif
+  ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(libphobos_no_systems)))
+    with_libphobos := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+  endif
+
+  enabled_languages += d
+endif
+
+# Fortran 95 -------------------
+fortran_no_cross := yes
+fortran_no_cross := no
+
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_fortran := yes
+  endif
+endif
+ifeq ($(fortran_no_cross)-$(DEB_CROSS),yes-yes)
+  with_fortran := diasbled for cross compiler package
+endif
+with_fortran := $(call envfilt, fortran, , , $(with_fortran))
+
+# Build all packages needed for Fortran development
+ifeq ($(with_fortran),yes)
+  ifeq ($(with_dev),yes)
+    with_fdev := yes
+  endif
+  ifeq ($(with_common_libs),yes)
+    with_libgfortran := yes
+  endif
+  enabled_languages += fortran
+endif
+
+# libquadmath -------------------
+
+ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU), ia64 i386 i486 i586 i686 amd64))
+  with_qmath := yes
+  ifneq (,$(findstring gcc-4,$(PKGSOURCE)))
+    ifeq ($(with_common_libs),yes)
+      with_libqmath := yes
+    endif
+  endif
+endif
+
+# ObjC ------------------------
+objc_no_cross := no
+
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_objc := yes
+  endif
+endif
+ifeq ($(objc_no_cross)-$(DEB_CROSS),yes-yes)
+  with_objc := diasbled for cross compiler package
+endif
+with_objc := $(call envfilt, objc, obj-c++, , $(with_objc))
+
+ifeq ($(with_objc),yes)
+  # the ObjC runtime with garbage collection enabled needs the Boehm GC
+  with_objc_gc := yes
+
+  # disable ObjC garbage collection library (needs libgc)
+  libgc_no_cpus := avr mips mipsel # alpha amd64 arm armel armhf hppa i386 ia64 m68k mips mipsel powerpc ppc64 s390 s390x sparc
+  libgc_no_systems := knetbsd-gnu
+  ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(libgc_no_cpus)))
+    with_objc_gc := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+  endif
+  ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(libgc_no_systems)))
+    with_objc_gc := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+  endif
+
+  # Build all packages needed for Objective-C development
+  ifeq ($(with_dev),yes)
+    with_objcdev := yes
+  endif
+  # libobjc soname change in 4.7
+  #ifeq ($(with_common_libs),yes)
+    with_libobjc := yes
+  #endif
+
+  enabled_languages += objc
+endif
+
+# ObjC++ ----------------------
+objcxx_no_cross := no
+
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_objcxx := yes
+  endif
+endif
+ifeq ($(objcxx_no_cross)-$(DEB_CROSS),yes-yes)
+  with_objcxx := diasbled for cross compiler package
+endif
+with_objcxx := $(call envfilt, obj-c++, , c++ objc, $(with_objcxx))
+
+ifeq ($(with_objcxx),yes)
+  enabled_languages += obj-c++
+endif
+
+# Go -------------------
+go_no_cross := yes
+go_no_cross := no
+
+go_no_cpus := avr arm hppa ia64 m68k mips mipsel powerpc ppc64 s390 s390x sh4 sparc sparc64
+ifneq ($(trunk_build),yes)
+  go_no_cpus := := $(go_no_cpus) alpha
+endif
+go_no_systems := gnu kfreebsd-gnu
+
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_go := yes
+  endif
+endif
+ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(go_no_cpus)))
+  with_go := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(go_no_systems)))
+  with_go := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+ifeq ($(go_no_cross)-$(DEB_CROSS),yes-yes)
+  with_go := diasbled for cross compiler package
+endif
+with_go := $(call envfilt, go, , , $(with_go))
+
+with_go := built from the gcc-4.7 sources
+
+# Build all packages needed for Go development
+ifeq ($(with_go),yes)
+  ifeq ($(with_common_libs),yes)
+    with_libgo := yes
+  endif
+  enabled_languages += go
+endif
+
+# -------------------------------------------------------------------
+# other config
+
+# not built from the main source package
+ifeq (,$(findstring gcc,$(PKGSOURCE)))
+  extra_package := yes
+endif
+
+with_nls := yes
+ifeq ($(trunk_build),yes)
+  with_nls := no
+endif
+with_nls := $(call envfilt, nls, , , $(with_nls))
+
+# powerpc nof libraries -----
+with_libnof := no
+
+ifneq (,$(findstring gcc-4,$(PKGSOURCE)))
+  with_source := yes
+endif
+with_source := $(call envfilt, source, , , $(with_source))
+
+# ssp & libssp -------------------------
+with_ssp := yes
+ssp_no_archs = alpha hppa ia64 m68k
+ifneq (, $(filter $(DEB_TARGET_ARCH),$(ssp_no_archs) $(ssp_no_archs:%=uclibc-%)))
+  with_ssp := not available on $(DEB_TARGET_ARCH)
+endif
+with_ssp := $(call envfilt, ssp, , , $(with_ssp))
+
+ifeq ($(with_ssp),yes)
+  ifneq ($(distribution),Debian)
+    ifneq (,$(findstring gcc-4, $(PKGSOURCE)))
+      with_ssp_default := yes
+    endif
+  endif
+endif
+
+# mudflap -------------------
+with_mudflap := yes
+with_mudflap := $(call envfilt, mudflap, , , $(with_mudflap))
+
+# gomp --------------------
+with_gomp := yes
+with_gomp := $(call envfilt, gomp, , , $(with_gomp))
+
+# gold --------------------
+# armel with binutils 2.20.51 only
+gold_archs = amd64 armel armhf i386 lpia powerpc ppc64 sparc
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(gold_archs)))
+  with_gold := yes
+endif
+
+# plugins --------------------
+with_plugins := yes
+
+endif # ifndef DEB_STAGE
+
+# Don't include docs with GFDL invariant sections
+GFDL_INVARIANT_FREE := yes
+ifeq ($(distribution),Ubuntu)
+  GFDL_INVARIANT_FREE := no
+endif
+
+# -------------------------------------------------------------------
+# non-extra config
+ifeq ($(extra_package),yes)
+  ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),yes-no)
+    # build stuff
+    with_mudflap :=
+
+    # package stuff
+    with_gccbase := no
+    with_cdev := no
+    with_cxx := no
+    with_cxxdev := no
+  endif
+else
+  # libssp ------------------
+  ifeq ($(with_ssp)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libssp := $(if $(wildcard $(builddir)/gcc/auto-host.h),$(shell if grep -qs '^\#define TARGET_LIBC_PROVIDES_SSP 1' $(builddir)/gcc/auto-host.h; then echo 'libc provides ssp'; else echo 'yes'; fi))
+    #endif
+  endif
+
+  # libmudflap --------------
+  ifeq ($(with_mudflap)-$(with_common_libs),yes-yes)
+      with_libmudflap := yes
+  endif
+
+  # libgomp -----------------
+  ifeq ($(with_gomp)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libgomp := yes
+    #endif
+  endif
+
+  # libquadmath -----------------
+  ifeq ($(with_qmath)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libqmath := yes
+    #endif
+  endif
+
+  # fixincludes -------
+  ifneq ($(DEB_CROSS),yes)
+    ifeq ($(with_common_pkgs),yes)
+      with_fixincl	:= yes
+    endif
+  endif
+
+  # Shared libgcc --------------------
+  ifneq ($(DEB_STAGE),stage1)
+    with_shared_libgcc := yes
+  endif
+  ifeq ($(with_common_libs),yes)
+    with_libgcc := yes
+  endif
+
+  # libgcc-math --------------------
+  with_libgmath := no
+  ifneq (,$(findstring i486,$(DEB_TARGET_ARCH)))
+    #with_libgccmath := yes
+    #with_lib64gmath := yes
+    #with_libgmathdev := yes
+  endif
+  ifeq ($(DEB_TARGET_ARCH),amd64)
+    #with_libgccmath := yes
+    #with_lib32gmath := yes
+    #with_libgmathdev := yes
+  endif
+
+  # hppa64 build ----------------
+  hppa64_no_snap := no
+  ifeq ($(DEB_TARGET_ARCH),hppa)
+    with_hppa64 := yes
+  endif
+  ifeq ($(hppa64_no_snap)-$(trunk_build),yes-yes)
+    with_hppa64 := disabled for snapshot build
+  endif
+  with_hppa64 := $(call envfilt, hppa64, , , $(with_hppa64))
+
+  # spu build -------------------
+  spu_no_snap := no
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),powerpc ppc64))
+    ifneq ($(DEB_CROSS),yes)
+      with_spu := yes
+    endif
+  endif
+  ifeq ($(spu_no_snap)-$(trunk_build),yes-yes)
+    with_spu := disabled for snapshot build
+  endif
+  with_spu := $(call envfilt, spu, , , $(with_spu))
+
+  ifeq ($(with_spu),yes)
+    with_spucache := yes
+    with_spumea64 := yes
+  endif
+
+  # neon build -------------------
+  # FIXME: build as a cross compiler to build on armv4 as well
+  ifneq (,$(findstring gcc-4, $(PKGSOURCE)))
+    ifeq ($(distribution),Ubuntu)
+#      neon_archs = armel armhf
+#      ifneq (, $(filter $(DEB_TARGET_ARCH),$(neon_archs)))
+#        with_neon = yes
+#      endif
+    endif
+  endif
+endif
+
+# run testsuite ---------------
+with_check := yes
+# if you don't want to run the gcc testsuite, uncomment the next line
+#with_check := disabled by hand
+ifeq ($(with_base_only),yes)
+  with_check := no
+endif
+ifeq ($(DEB_CROSS),yes)
+  with_check := disabled for cross compiler package
+endif
+ifeq ($(REVERSE_CROSS),yes)
+  with_check := disabled for reverse cross build
+endif
+check_no_cpus := m68k
+check_no_systems := gnu
+ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(check_no_cpus)))
+  with_check := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(check_no_systems)))
+  with_check := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-hppa)
+  ifneq ($(single_package),yes)
+    with_check := disabled, testsuite timeouts with expect
+  endif
+endif
+ifneq (,$(findstring gdc,$(PKGSOURCE)))
+  with_check := disabled for D
+endif
+with_check := $(call envfilt, check, , , $(with_check))
+ifdef WITHOUT_CHECK
+  with_check := disabled by environment
+endif
+ifneq ($(findstring nocheck, $(DEB_BUILD_OPTIONS)),)
+  with_check := disabled by DEB_BUILD_OPTIONS
+endif
+#with_check := disabled for this build
+
+# not a dependency on all archs, but if available, use it for the testsuite
+ifneq (,$(wildcard /usr/bin/localedef))
+  locale_data = generate
+endif
+
+all_enabled_languages := $(enabled_languages)
+languages_without_lang_opt := c++ objc obj-c++
+
+debian_extra_langs := $(subst obj-c++,objcp,$(debian_extra_langs))
+export debian_extra_langs
+
+# multilib
+biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x s390x=s390 \
+		x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el
+ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy sid dapper hardy jaunty karmic lucid))
+  biarch_map := $(subst i686=,i486=,$(biarch_map))
+endif
+ifeq ($(distribution),Ubuntu)
+  ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty))
+    biarch_map += arm=arm
+  endif
+endif
+biarch_cpu := $(strip $(patsubst $(DEB_TARGET_GNU_CPU)=%,%, \
+			 $(filter $(DEB_TARGET_GNU_CPU)=%,$(biarch_map))))
+
+biarch64 := no
+biarch32 := no
+biarchn32 := no
+biarchhf := no
+biarchsf := no
+flavours :=
+define gen_biarch
+  ifneq (yes,$$(call envfilt, biarch, , ,yes))
+    biarch$1archs :=
+  endif
+  ifneq (,$$(findstring /$$(DEB_TARGET_ARCH)/,$$(biarch$1archs)))
+    biarch$1 := yes
+    flavours += $1
+    #biarch$1subdir = $$(biarch_cpu)-$$(DEB_TARGET_GNU_SYSTEM)
+    biarch$1subdir = $1
+    ifeq ($$(with_libgcc),yes)
+      with_lib$1gcc := yes
+    endif
+    ifeq ($$(with_libcxx),yes)
+      with_lib$1cxx := yes
+    endif
+    ifeq ($$(with_libcxxdbg),yes)
+      with_lib$1cxxdbg := yes
+    endif
+    ifeq ($$(with_libobjc),yes)
+      with_lib$1objc := yes
+    endif
+    ifeq ($$(with_libgfortran),yes)
+      with_lib$1gfortran := yes
+    endif
+    ifeq ($$(with_libmudflap),yes)
+      with_lib$1mudflap := yes
+    endif
+    ifeq ($$(with_libssp),yes)
+      with_lib$1ssp := yes
+    endif
+    ifeq ($$(with_libgomp),yes)
+      with_lib$1gomp:= yes
+    endif
+    ifeq ($$(with_libqmath),yes)
+      with_lib$1qmath := yes
+    endif
+    ifeq ($$(with_libgo),yes)
+      with_lib$1go := yes
+    endif
+
+    biarch_multidir_names = libiberty libgcc
+    ifneq (,$$(findstring gcc-, $$(PKGSOURCE)))
+      biarch_multidir_names += libstdc++-v3 libobjc libgfortran libssp \
+				libgomp libmudflap zlib libitm
+      ifeq ($$(with_objc_gc),yes)
+        biarch_multidir_names += boehm-gc
+      endif
+    endif
+    ifneq (,$(findstring yes, $(with_java) $(with_go)))
+      biarch_multidir_names += libffi
+    endif
+    ifeq ($(with_fortran),yes)
+      biarch_multidir_names += libquadmath
+    endif
+    ifeq ($(with_go),yes)
+      biarch_multidir_names += libgo
+    endif
+    export biarch_multidir_names
+    ifneq (,$$(findstring 32,$1))
+      TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \
+				$$(TARGET_ALIAS)))
+      TARGET32_MACHINE := $$(TARGET_ALIAS)
+    else
+      TARGET64_MACHINE := $$(TARGET_ALIAS)
+      TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \
+				$$(TARGET_ALIAS)))
+    endif
+    export TARGET32_MACHINE
+    export TARGET64_MACHINE
+  endif
+endef
+biarch32archs := /amd64/ppc64/kfreebsd-amd64/s390x/
+biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/
+biarchn32archs := /mips/mipsel/
+ifeq ($(distribution),Ubuntu)
+  ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty))
+    biarchhfarchs := /armel/
+    biarchsfarchs := /armhf/
+  endif
+endif
+$(foreach x,32 64 n32 hf sf,$(eval $(call gen_biarch,$(x))))
+
+#ifeq ($(DEB_TARGET_ARCH),ia64)
+#  biarch32 := yes
+#endif
+
+ifeq ($(trunk_build),yes)
+  no_biarch_libs := yes
+endif
+ifdef DEB_CROSS_NO_BIARCH
+  no_biarch_libs := yes
+endif
+ifeq ($(with_d)-$(with_separate_gdc),yes-yes)
+  no_biarch_libs := yes
+endif
+
+ifeq ($(no_biarch_libs),yes)
+  with_lib64gcc		:= no
+  with_lib64cxx		:= no
+  with_lib64cxxdbg	:= no
+  with_lib64objc	:= no
+  with_lib64ffi		:= no
+  with_lib64gcj		:= no
+  with_lib64gfortran	:= no
+  with_lib64mudflap	:= no
+  with_lib64ssp		:= no
+  with_lib64go		:= no
+  with_lib64gomp	:= no
+  with_lib64qmath	:= no
+
+  with_lib32gcc		:= no
+  with_lib32cxx		:= no
+  with_lib32cxxdbg	:= no
+  with_lib32objc	:= no
+  with_lib32ffi		:= no
+  with_lib32gcj		:= no
+  with_lib32gfortran	:= no
+  with_lib32mudflap	:= no
+  with_lib32ssp		:= no
+  with_lib32go		:= no
+  with_lib32gomp	:= no
+  with_lib32qmath	:= no
+
+  with_libn32gcc	:= no
+  with_libn32cxx	:= no
+  with_libn32cxxdbg	:= no
+  with_libn32objc	:= no
+  with_libn32ffi	:= no
+  with_libn32gcj	:= no
+  with_libn32gfortran	:= no
+  with_libn32mudflap	:= no
+  with_libn32ssp	:= no
+  with_libn32go		:= no
+  with_libn32gomp	:= no
+  with_libn32qmath	:= no
+
+  with_libhfgcc		:= no
+  with_libhfcxx		:= no
+  with_libhfcxxdbg	:= no
+  with_libhfobjc	:= no
+  with_libhfffi		:= no
+  with_libhfgcj		:= no
+  with_libhfgfortran	:= no
+  with_libhfmudflap	:= no
+  with_libhfssp		:= no
+  with_libhfgo		:= no
+  with_libhfgomp	:= no
+  with_libhfqmath	:= no
+
+  with_libsfgcc		:= no
+  with_libsfcxx		:= no
+  with_libsfcxxdbg	:= no
+  with_libsfobjc	:= no
+  with_libsfffi		:= no
+  with_libsfgcj		:= no
+  with_libsfgfortran	:= no
+  with_libsfmudflap	:= no
+  with_libsfssp		:= no
+  with_libsfgo		:= no
+  with_libsfgomp	:= no
+  with_libsfqmath	:= no
+  with_java_plugin := no
+
+  ifdef DEB_CROSS_NO_BIARCH
+    biarch64   	:= disabled by DEB_CROSS_NO_BIARCH
+    biarch32 	:= disabled by DEB_CROSS_NO_BIARCH
+    biarchn32 	:= disabled by DEB_CROSS_NO_BIARCH
+    biarchhf 	:= disabled by DEB_CROSS_NO_BIARCH
+    biarchsf 	:= disabled by DEB_CROSS_NO_BIARCH
+  endif
+
+  ifeq ($(with_d)-$(with_separate_gdc),yes-yes)
+    biarch64	:= disabled for D
+    biarch32	:= disabled for D
+    biarchn32	:= disabled for D
+    biarchhf	:= disabled for D
+    biarchsf	:= disabled for D
+  endif
+
+  ifeq ($(with_ada)-$(with_separate_gnat),yes-yes)
+    biarchhf	:= disabled for Ada
+    biarchsf	:= disabled for Ada
+  endif
+
+endif
+
+ifneq (,$(filter yes,$(biarch32) $(biarch64) $(biarchn32) $(biarchhf) $(biarchsf)))
+  multilib := yes
+endif
+
+multilib_archs = $(sort $(subst /, , $(biarch64archs) $(biarch32archs) $(biarchn32archs) $(biarchhfarchs) $(biarchsfarchs)))
+
+biarchsubdirs := \
+  $(if $(filter yes,$(biarch64)),$(biarch64subdir),) \
+  $(if $(filter yes,$(biarch32)),$(biarch32subdir),) \
+  $(if $(filter yes,$(biarchn32)),$(biarchn32subdir),) \
+  $(if $(filter yes,$(biarchhf)),$(biarchhfsubdir),) \
+  $(if $(filter yes,$(biarchsf)),$(biarchsfsubdir),)
+biarchsubdirs := {$(strip $(shell echo $(biarchsubdirs) | tr " " ","))}
+
+ifeq ($(biarch32),yes)
+  with_32bit_check := $(strip $(if $(wildcard build/runcheck.out), \
+				$(shell cat build/runcheck.out), \
+				$(shell CC="gcc -m32" bash debian/runcheck.sh)))
+endif
+
+ifeq ($(biarch64),yes)
+  ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),mips mipsel))
+    with_64bit_check := $(strip $(if $(wildcard build/runcheck.out), \
+			$(shell cat build/runcheck.out), \
+			$(shell CC="gcc -mabi=64" bash debian/runcheck.sh)))
+  else
+    with_64bit_check := $(strip $(if $(wildcard build/runcheck.out), \
+			$(shell cat build/runcheck.out), \
+			$(shell CC="gcc -m64" bash debian/runcheck.sh)))
+  endif
+endif
+
+ifeq ($(biarchn32),yes)
+  with_n32bit_check := $(strip $(if $(wildcard build/runcheck.out), \
+				$(shell cat build/runcheck.out), \
+				$(shell CC="gcc -mabi=n32" bash debian/runcheck.sh)))
+endif
+
+# GNU locales
+force_gnu_locales := yes
+locale_no_cpus :=
+locale_no_systems :=
+ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(locale_no_systems)))
+  force_gnu_locales := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+
+gcc_tarpath		:= $(firstword $(wildcard gcc-*.tar.* /usr/src/gcc-$(BASE_VERSION)/gcc-*.tar.*))
+gcc_tarball		:= $(notdir $(gcc_tarpath))
+gcc_srcdir		:= $(subst -dfsg,,$(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gcc_tarball:.tar.bz2=)))))
+
+ifeq ($(with_d),yes)
+  gdc_tarpath		:= $(firstword $(wildcard gdc-*.tar.* /usr/src/gcc-$(BASE_VERSION)/gdc-*.tar.*))
+  gdc_tarball		:= $(notdir $(gdc_tarpath))
+  gdc_srcdir		:= $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gdc_tarball:.tar.bz2=))))
+endif
+
+ecj_jar := $(firstword $(wildcard ecj.jar /usr/share/java/eclipse-ecj.jar /usr/share/java/ecj.jar))
+
+unpack_stamp		:= $(stampdir)/01-unpack-stamp
+pre_patch_stamp		:= $(stampdir)/02-pre-patch-stamp
+patch_stamp		:= $(stampdir)/02-patch-stamp
+src_spu_stamp		:= $(stampdir)/02-src-spu-stamp
+control_stamp		:= $(stampdir)/03-control-stamp
+configure_stamp		:= $(stampdir)/04-configure-stamp
+build_stamp		:= $(stampdir)/05-build-stamp
+build_html_stamp	:= $(stampdir)/05-build-html-stamp
+build_locale_stamp	:= $(stampdir)/05-build-locale-stamp
+build_doxygen_stamp	:= $(stampdir)/05-build-doxygen-stamp
+build_javasrc_stamp	:= $(stampdir)/05-build-javasrc-stamp
+build_javadoc_stamp	:= $(stampdir)/05-build-javadoc-stamp
+check_stamp		:= $(stampdir)/06-check-stamp
+check_inst_stamp	:= $(stampdir)/06-check-inst-stamp
+install_stamp		:= $(stampdir)/07-install-stamp
+install_snap_stamp	:= $(stampdir)/07-install-snap-stamp
+binary_stamp		:= $(stampdir)/08-binary-stamp
+
+configure_dummy_stamp	:= $(stampdir)/04-configure-dummy-stamp
+build_dummy_stamp	:= $(stampdir)/05-build-dummy-stamp
+install_dummy_stamp	:= $(stampdir)/07-install-dummy-stamp
+
+configure_hppa64_stamp	:= $(stampdir)/04-configure-hppa64-stamp
+build_hppa64_stamp	:= $(stampdir)/05-build-hppa64-stamp
+install_hppa64_stamp	:= $(stampdir)/07-install-hppa64-stamp
+
+configure_neon_stamp	:= $(stampdir)/04-configure-neon-stamp
+build_neon_stamp		:= $(stampdir)/05-build-neon-stamp
+install_neon_stamp	:= $(stampdir)/07-install-neon-stamp
+
+configure_spu_stamp	:= $(stampdir)/04-configure-spu-stamp
+build_spu_stamp		:= $(stampdir)/05-build-spu-stamp
+install_spu_stamp	:= $(stampdir)/07-install-spu-stamp
+
+control_dependencies	:= $(patch_stamp)
+
+ifeq ($(single_package),yes)
+    configure_dependencies = $(configure_stamp)
+    build_dependencies = $(build_stamp)
+    install_dependencies = $(install_snap_stamp)
+    ifeq ($(with_check),yes)
+      check_dependencies += $(check_stamp)
+    endif
+else
+  ifeq ($(with_base_only),yes)
+    configure_dependencies = $(configure_dummy_stamp)
+    build_dependencies = $(build_dummy_stamp)
+    install_dependencies = $(install_dummy_stamp)
+  else
+    configure_dependencies = $(configure_stamp)
+    build_dependencies = $(build_stamp)
+    install_dependencies = $(install_stamp)
+    ifeq ($(with_check),yes)
+      check_dependencies += $(check_stamp)
+    endif
+  endif
+endif
+
+ifneq (,$(findstring gcj-, $(PKGSOURCE)))
+  ifeq ($(with_gcj_base_only),yes)
+    configure_dependencies = $(configure_dummy_stamp)
+    build_dependencies = $(build_dummy_stamp)
+    install_dependencies = $(install_dummy_stamp)
+  endif
+endif
+
+ifeq ($(with_neon),yes)
+  build_dependencies += $(build_neon_stamp)
+  install_dependencies += $(install_neon_stamp)
+endif
+
+ifeq ($(with_hppa64),yes)
+  build_dependencies += $(build_hppa64_stamp)
+  ifneq ($(trunk_build),yes)
+    install_dependencies += $(install_hppa64_stamp)
+  endif
+endif
+
+ifeq ($(with_spu),yes)
+  control_dependencies += $(src_spu_stamp)
+  build_dependencies += $(build_spu_stamp)
+  ifneq ($(trunk_build),yes)
+    install_dependencies += $(install_spu_stamp)
+  endif
+endif
+
+build_dependencies += $(check_dependencies)
+
+stamp-dir:
+	mkdir -p $(stampdir)
+
+ifeq ($(DEB_CROSS),yes)
+  define cross_mangle_shlibs
+	sed -i s/$(cross_lib_arch)//g debian/$(1)/DEBIAN/shlibs
+  endef
+  define cross_mangle_substvars
+	sed -i 's/lib[^ ,(]*/&$(cross_lib_arch)/g' debian/$(1).substvars
+  endef
+else
+  define cross_mangle_shlibs
+  endef
+  define cross_mangle_substvars
+  endef
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel))
+  define cross_mangle_control
+	$(if $(findstring 64,$(1)),sed -i -r '/^(Dep|Rec|Sug)/s/[a-z0-9-]+32[^$(COMMA)]+($(COMMA) *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *$(COMMA) *$$//' debian/$(1)/DEBIAN/control,@:)
+	$(if $(findstring n32,$(1)),sed -i -r '/^(Dep|Rec|Sug)/s/[a-z0-9-]+64[^$(COMMA)]+($(COMMA) *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *$(COMMA) *$$//' debian/$(1)/DEBIAN/control,@:)
+  endef
+else
+  define cross_mangle_control
+  endef
+endif
--- gcc-4.6-4.6.3.orig/debian/README.gnat
+++ gcc-4.6-4.6.3/debian/README.gnat
@@ -0,0 +1,22 @@
+If you want to develop Ada programs and libraries on Debian, please
+read the Debian Policy for Ada:
+
+http://people.debian.org/~lbrenta/debian-ada-policy.html
+
+The default Ada compiler is and always will be the package `gnat'.
+Debian contains many programs and libraries compiled with it, which
+are all ABI-compatible.
+
+Starting with gnat-4.2, Debian provides both zero-cost and
+setjump/longjump versions of the run-time library.  The zero-cost
+exception handling mechanism is the default as it provides the best
+performance.  The setjump/longjump exception handling mechanism is new
+and only provided as a static library.  It is necessary to use this
+exception handling mechanism in distributed (annex E) programs.  If
+you wish to use the new sjlj library:
+
+1) call gnatmake with --RTS=sjlj
+2) call gnatbind with -static
+
+Do NOT link your programs with libgnat-4.2.so, because it uses the ZCX
+mechanism.
--- gcc-4.6-4.6.3.orig/debian/libstdc++6.symbols.sh4
+++ gcc-4.6-4.6.3/debian/libstdc++6.symbols.sh4
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
--- gcc-4.6-4.6.3.orig/debian/gcj-BV-jdk.overrides
+++ gcc-4.6-4.6.3/debian/gcj-BV-jdk.overrides
@@ -0,0 +1 @@
+gcj-@BV@-jdk binary: wrong-name-for-upstream-changelog
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.powerpcspe
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.powerpcspe
@@ -0,0 +1,3 @@
+libgfortran.so.3 libgfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
+#include "libgfortran3.symbols.16.powerpc"
--- gcc-4.6-4.6.3.orig/debian/README.ssp
+++ gcc-4.6-4.6.3/debian/README.ssp
@@ -0,0 +1,28 @@
+Stack smashing protection is a feature of GCC that enables a program to
+detect buffer overflows and immediately terminate execution, rather than
+continuing execution with corrupt internal data structures. It uses
+"canaries" and local variable reordering to reduce the likelihood of
+stack corruption through buffer overflows.
+
+Options that affect stack smashing protection:
+
+-fstack-protector
+    Enables protection for functions that are vulnerable to stack
+    smashing, such as those that call alloca() or use pointers.
+
+-fstack-protector-all
+    Enables protection for all functions.
+
+-Wstack-protector
+    Warns about functions that will not be protected. Only active when
+    -fstack-protector has been used.
+
+Applications built with stack smashing protection should link with the
+ssp library by using the option "-lssp" for systems with glibc-2.3.x or
+older; glibc-2.4 and newer versions provide this functionality in libc.
+
+The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not
+have support for stack smashing protection.
+
+More documentation can be found at the project's website:
+http://researchweb.watson.ibm.com/trl/projects/security/ssp/
--- gcc-4.6-4.6.3.orig/debian/lib32objc3.symbols
+++ gcc-4.6-4.6.3/debian/lib32objc3.symbols
@@ -0,0 +1,3 @@
+libobjc.so.3 lib32objc3 #MINVER#
+#include "libobjc3.symbols.common"
+ __gnu_objc_personality_v0@Base 4.2.1
--- gcc-4.6-4.6.3.orig/debian/lib64gccLC.postinst
+++ gcc-4.6-4.6.3/debian/lib64gccLC.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/lib64gcc@LC@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc-@BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
--- gcc-4.6-4.6.3.orig/debian/libgfortran3.symbols.16.powerpcspe
+++ gcc-4.6-4.6.3/debian/libgfortran3.symbols.16.powerpcspe
@@ -0,0 +1,100 @@
+ __iso_c_binding_c_f_pointer_c16@GFORTRAN_1.0 4.3
+ __iso_c_binding_c_f_pointer_r16@GFORTRAN_1.0 4.3
+ _gfortran_arandom_r16@GFORTRAN_1.0 4.3
+ _gfortran_bessel_jn_r16@GFORTRAN_1.4 4.6
+ _gfortran_bessel_yn_r16@GFORTRAN_1.4 4.6
+ _gfortran_cpu_time_16@GFORTRAN_1.0 4.3
+ _gfortran_erfc_scaled_r16@GFORTRAN_1.1 4.4.0
+ _gfortran_exponent_r16@GFORTRAN_1.0 4.3
+ _gfortran_fraction_r16@GFORTRAN_1.0 4.3
+ _gfortran_matmul_c16@GFORTRAN_1.0 4.3
+ _gfortran_matmul_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_maxval_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_minloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_minval_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_mmaxval_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_mminval_r16@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_c16@GFORTRAN_1.0 4.3
+ _gfortran_mproduct_r16@GFORTRAN_1.0 4.3
+ _gfortran_msum_c16@GFORTRAN_1.0 4.3
+ _gfortran_msum_r16@GFORTRAN_1.0 4.3
+ _gfortran_nearest_r16@GFORTRAN_1.0 4.3
+ _gfortran_norm2_r16@GFORTRAN_1.4 4.6
+ _gfortran_pow_c16_i4@GFORTRAN_1.0 4.3
+ _gfortran_pow_c16_i8@GFORTRAN_1.0 4.3
+ _gfortran_pow_r16_i4@GFORTRAN_1.0 4.6
+ _gfortran_pow_r16_i8@GFORTRAN_1.0 4.3
+ _gfortran_product_c16@GFORTRAN_1.0 4.3
+ _gfortran_product_r16@GFORTRAN_1.0 4.3
+ _gfortran_random_r16@GFORTRAN_1.0 4.3
+ _gfortran_reshape_c16@GFORTRAN_1.0 4.3
+ _gfortran_reshape_r16@GFORTRAN_1.0 4.3
+ _gfortran_rrspacing_r16@GFORTRAN_1.0 4.3
+ _gfortran_set_exponent_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_smaxval_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc0_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_4_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminloc1_8_r16@GFORTRAN_1.0 4.3
+ _gfortran_sminval_r16@GFORTRAN_1.0 4.3
+ _gfortran_spacing_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__abs_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__acos_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__acosh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__aimag_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__aint_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__anint_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__asin_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__asinh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan2_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__atan_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__atanh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__conjg_16@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__cos_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__cosh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__dim_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__exp_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__log10_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__log_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__mod_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_4_16@GFORTRAN_1.0 4.3
+ _gfortran_specific__nint_8_16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sign_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sin_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sinh_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_c16@GFORTRAN_1.0 4.3
+ _gfortran_specific__sqrt_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__tan_r16@GFORTRAN_1.0 4.3
+ _gfortran_specific__tanh_r16@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_c16@GFORTRAN_1.0 4.3
+ _gfortran_sproduct_r16@GFORTRAN_1.0 4.3
+ _gfortran_ssum_c16@GFORTRAN_1.0 4.3
+ _gfortran_ssum_r16@GFORTRAN_1.0 4.3
+ _gfortran_sum_c16@GFORTRAN_1.0 4.3
+ _gfortran_sum_r16@GFORTRAN_1.0 4.3
+ _gfortran_transpose_c16@GFORTRAN_1.0 4.3
+ _gfortran_transpose_r16@GFORTRAN_1.0 4.3
--- gcc-4.6-4.6.3.orig/debian/libgcjGCJ-awt.overrides
+++ gcc-4.6-4.6.3/debian/libgcjGCJ-awt.overrides
@@ -0,0 +1,2 @@
+# pick up the exact version, in case another gcj version is installed
+libgcj@GCJ@-awt binary: binary-or-shlib-defines-rpath
--- gcc-4.6-4.6.3.orig/debian/porting.html
+++ gcc-4.6-4.6.3/debian/porting.html
@@ -0,0 +1,30 @@
+<html lang="en">
+<head>
+<title>Porting libstdc++-v3</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="Porting libstdc++-v3">
+<meta name="generator" content="makeinfo 4.6">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+--></style>
+</head>
+<body>
+<h1 class="settitle">Porting libstdc++-v3</h1>
+<div class="node">
+<p><hr>
+Node:&nbsp;<a name="Top">Top</a>,
+Next:&nbsp;<a rel="next" accesskey="n" href="#Operating%20system">Operating system</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a>
+<br>
+</div>
+
+The documentation in this file was removed, because it is licencensed
+under a non DFSG conforming licencse.
+
+</body></html>
--- gcc-4.6-4.6.3.orig/debian/gcc-BV-spu.overrides
+++ gcc-4.6-4.6.3/debian/gcc-BV-spu.overrides
@@ -0,0 +1,2 @@
+gcc-@BV@-spu: non-standard-dir-in-usr usr/spu/
+gcc-@BV@-spu: file-in-unusual-dir
--- gcc-4.6-4.6.3.orig/debian/rules.patch
+++ gcc-4.6-4.6.3/debian/rules.patch
@@ -0,0 +1,445 @@
+# -*- makefile -*-
+# rules to patch the unpacked files in the source directory
+# ---------------------------------------------------------------------------
+# various rules to unpack addons and (un)apply patches.
+# 	- patch / apply-patches
+#	- unpatch / reverse-patches
+
+.NOTPARALLEL:
+
+patchdir	?= debian/patches
+series_file	?= $(patchdir)/series
+
+# which patches should be applied?
+
+debian_patches = \
+	$(if $(with_linaro_branch),gcc-linaro) \
+	$(if $(with_linaro_branch),gcc-linaro-revert-106905) \
+	svn-updates$(if $(with_linaro_branch),-linaro) \
+
+ifeq ($(with_java),yes)
+#  debian_patches += \
+#	svn-class-updates
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  debian_patches += \
+	rename-info-files \
+	$(if $(with_linaro_branch),gcc-linaro-doc) \
+	$(if $(with_linaro_branch),gcc-linaro-revert-106905-doc) \
+
+#	$(if $(with_linaro_branch),,svn-doc-updates) \
+
+else
+endif
+debian_patches += \
+	gcc-gfdl-build
+
+#	boehm-gc-nocheck: seems to work on the buildds \
+
+debian_patches += \
+	gcc-textdomain \
+	gcc-driver-extra-langs
+
+ifeq ($(distribution),Ubuntu)
+  ifneq (,$(filter $(distrelease),dapper hardy intrepid jaunty karmic lucid))
+    debian_patches += gcc-hash-style-both
+  else
+    debian_patches += gcc-hash-style-gnu
+  endif
+else
+  debian_patches += gcc-hash-style-both
+endif
+
+debian_patches += \
+	libstdc++-pic \
+	libstdc++-doclink \
+	libstdc++-man-3cxx \
+	libstdc++-test-installed \
+	libjava-stacktrace \
+	libjava-jnipath \
+	libjava-sjlj \
+	libjava-disable-plugin \
+	alpha-no-ev4-directive \
+	boehm-gc-getnprocs \
+	note-gnu-stack \
+	libgomp-omp_h-multilib \
+	sparc-force-cpu \
+	pr24619 \
+	gccgo-version \
+	no_fpr_in_libgcc \
+	pr48226 \
+	pr47487 \
+	mudflap-varargs \
+	mudflapth-link \
+	pr45078 \
+	pr43804 \
+	pr47818 \
+	$(if $(with_linaro_branch),,pr48830) \
+	$(if $(with_linaro_branch),,pr49169) \
+	pr49756 \
+	pr49940 \
+	pr49944 \
+	gcc-cloog-dl \
+	libffi-kfreebsd \
+	libffi-m68k \
+	gcc-base-version \
+	pr49696 \
+	libffi-powerpc-sf \
+	libffi-powerpc-sysv-without-string-ops \
+	$(if $(with_linaro_branch),,pr49030) \
+	$(if $(with_linaro_branch),,pr50193) \
+	pr50114 \
+	$(if $(with_linaro_branch),,pr50946) \
+	$(if $(with_linaro_branch),,gcc-arm-abi-conformance) \
+	$(if $(with_linaro_branch),pr51987) \
+	arm-no-va_list-warn \
+	pr47955 \
+	m68k-fp-cmp-zero \
+	gcc-gengtype-fix1 \
+	gcc-gengtype-fix2 \
+
+#	$(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \
+#	libstdc++-nothumb-check \
+# TODO: update ...
+#	libjava-rpath \
+
+hardening_patches =
+ifneq ($(distribution),Debian)
+  ifneq (,$(findstring gcc-4, $(PKGSOURCE)))
+    hardening_patches += gcc-default-format-security \
+	gcc-default-fortify-source \
+	gcc-default-relro \
+	testsuite-hardening-format \
+	testsuite-hardening-printf-types
+  endif
+endif
+ifeq ($(with_ssp)-$(with_ssp_default),yes-yes)
+  ifeq ($(distribution),Ubuntu)
+    hardening_patches += gcc-default-ssp$(if $(filter ppc64,$(DEB_TARGET_ARCH)),-ppc64)
+  else
+    hardening_patches += gcc-default-ssp
+  endif
+endif
+
+# FIXME 4.5: Drop and adjust symbols files
+ifneq (,$(findstring 4.4, $(PKGSOURCE)))
+  debian_patches += pr39491
+endif
+
+ifeq ($(with_ada),yes)
+  debian_patches += \
+	ada-driver-check \
+	ada-gcc-name \
+	ada-default-project-path \
+	ada-symbolic-tracebacks \
+	ada-library-project-files-soname \
+	ada-ppc64
+
+  ifeq ($(biarch64),yes)
+    debian_patches += \
+	ada-nobiarch-check
+  endif
+
+  ifeq ($(with_libgnat),yes)
+    debian_patches += \
+	ada-link-lib \
+	ada-libgnatvsn \
+	ada-libgnatprj \
+	ada-acats
+    ifeq ($(with_gnat_zcx)-$(with_gnat_sjlj),yes-yes)
+      debian_patches += \
+	ada-sjlj
+    endif
+  endif
+
+  ifneq (,$(findstring $(DEB_TARGET_ARCH_OS),kfreebsd hurd))
+    debian_patches += ada-kfreebsd-gnu \
+	ada-bug564232
+  endif
+
+  ifeq ($(DEB_TARGET_ARCH_OS),hurd)
+    debian_patches += \
+        gcc_ada_gcc-interface_Makefile.in \
+	ada-s-osinte-gnu.adb \
+	ada-s-osinte-gnu.ads \
+	ada-s-taprop-gnu.adb
+  endif
+
+endif
+
+ifeq ($(with_d),yes)
+  debian_patches += \
+       gdc-4.6 \
+       gdc-libphobos-math \
+       gdc-driver-zlib
+
+  ifeq ($(with_libphobos),yes)
+    debian_patches += gdc-libphobos-build
+  else
+    debian_patches += gdc-driver-nophobos
+  endif
+
+else
+  debian_patches += gcc-d-lang
+endif
+
+ifeq ($(DEB_TARGET_ARCH_OS),hurd)
+  debian_patches += hurd-pthread
+endif
+
+ifeq ($(DEB_TARGET_ARCH),alpha)
+  debian_patches += alpha-ieee mudflap-nocheck
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    debian_patches += alpha-ieee-doc
+  endif
+endif
+
+ifneq (,$(findstring $(DEB_TARGET_ARCH),arm armel armhf))
+  debian_patches += libjava-armel-unwind
+endif
+
+ifeq ($(DEB_TARGET_ARCH),m68k)
+  debian_patches += pr47612
+  debian_patches += m68k-revert-pr45144
+  debian_patches += m68k-ada
+endif
+
+ifeq ($(DEB_TARGET_ARCH),powerpcspe)
+  debian_patches += powerpc_remove_many
+endif
+
+ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd)
+  debian_patches += kbsd-gnu
+endif
+
+ifeq ($(DEB_TARGET_ARCH),ppc64)
+  ifeq ($(distribution),Ubuntu)
+    debian_patches += ibm-branch
+  endif
+endif
+
+#spu_patches = cell-branch
+#ifneq ($(GFDL_INVARIANT_FREE),yes)
+#  spu_patches += cell-branch-doc
+#endif
+
+#debian_patches += link-libs
+
+debian_patches += libjava-disable-static
+
+# all patches below this line are applied for gcc-snapshot builds as well
+
+ifeq ($(single_package),yes)
+  spu_patches =
+  debian_patches =
+endif
+
+ifneq ($(trunk_build),yes)
+  debian_patches += s390-biarch
+  debian_patches += mips-triarch
+endif
+
+debian_patches += $(if $(with_linaro_branch),,arm-dynamic-linker)
+ifeq ($(with_softfloat),yes)
+  debian_patches += arm-multilib-soft-float
+else ifeq ($(multilib),yes)
+  ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+    debian_patches += arm-multilib-softfp
+  else
+    debian_patches += arm-multilib-soft
+  endif
+endif
+debian_patches += arm-multilib-defaults
+
+ifeq ($(DEB_CROSS),yes)
+  ifeq ($(trunk_build),yes)
+    debian_patches += cross-include-trunk cross-fixes-trunk
+  else
+    debian_patches += cross-include cross-fixes
+  endif
+endif
+
+ifeq ($(DEB_TARGET_ARCH_OS),hurd)
+  debian_patches += hurd-changes hurd-fixes
+endif
+
+debian_patches += gcc-ice-hack gcc-ice-apport
+#FIXME
+#debian_patches += gold-and-ld
+
+debian_patches += libjava-fixed-symlinks
+debian_patches += libstdc++-arm-wno-abi
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), armel mips mipsel))
+  # timeouts on the buildd's, both Debian and Ubuntu
+  debian_patches += libstdc++-no-testsuite
+endif
+debian_patches += ada-mips
+debian_patches += libffi-ro-eh_frame_sect
+
+ifneq ($(trunk_build),yes)
+debian_patches += gcc-multiarch-upstream gcc-multiarch
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  debian_patches += gcc-multiarch-doc
+endif
+ifeq ($(with_multiarch_lib),yes)
+  debian_patches += libjava-multiarch
+endif
+endif # gcc-snapshot
+debian_patches += libjava-nobiarch-check
+debian_patches += config-ml
+ifeq ($(biarch64),yes)
+  ifeq ($(DEB_CROSS),yes)
+    debian_patches += cross-biarch
+  endif
+endif
+ifeq ($(trunk_build),yes)
+  debian_patches += gcc-powerpc-nof-trunk
+else
+  debian_patches += gcc-powerpc-nof
+endif
+debian_patches += gcc-powerpc-undef
+ifneq (,$(findstring /$(DEB_TARGET_ARCH)/,$(biarch32archs)))
+  ifeq ($(with_multiarch_lib),yes)
+    ifeq ($(trunk_build),yes)
+      debian_patches += gcc-multilib64-multiarch-trunk
+    else
+      debian_patches += gcc-multilib64-multiarch
+    endif
+  else
+    debian_patches += gcc-multilib64
+  endif
+endif
+
+ifeq (,$(filter $(distrelease),lenny squeeze dapper hardy intrepid jaunty karmic lucid maverick))
+  debian_patches += gcc-no-add-needed
+endif
+ifeq (,$(filter $(distrelease),lenny squeeze wheezy sid experimental dapper hardy intrepid jaunty karmic lucid maverick))
+  debian_patches += gcc-as-needed
+endif
+debian_patches += mips-fix-loongson2f-nop
+ifeq ($(distribution),Ubuntu)
+  ifeq ($(DEB_TARGET_ARCH),ppc64)
+    debian_patches += gcc-ppc64-O3
+  endif
+endif
+debian_patches += gcc-system-root
+debian_patches += libgomp-kfreebsd-testsuite
+
+ifeq ($(trunk_build),yes)
+  debian_patches += armhf-triplet-trunk
+else
+  debian_patches += armhf-triplet
+endif
+
+#debian_patches += address-clauses-timed-entry-calls
+
+series_stamp = $(stampdir)/02-series-stamp
+series: $(series_stamp)
+$(series_stamp):
+	echo $(strip $(addsuffix .diff,$(debian_patches))) \
+	  | sed -r 's/  +/ /g' | tr " " "\n" > $(series_file)
+ifneq (,$(strip $(hardening_patches)))
+  ifneq ($(trunk_build),yes)
+	echo $(strip $(addsuffix .diff,$(hardening_patches))) \
+	  | sed -r 's/  +/ /g' | tr " " "\n" >> $(series_file)
+  endif
+endif
+	sed -r 's/(.)$$/\1 -p1/' -i $(series_file)
+	touch $@
+
+autotools_files := $(addprefix ./,$(foreach file,$(shell lsdiff --no-filename \
+	$(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \
+	| sed -r 's/[ab]\/src\//src\//' | sort | uniq),$(shell echo $(file) \
+	| egrep 'configure\.(ac|in)|Makefile\.(am|in)|acinclude.m4')))
+
+autoconf_version = 2.64
+ifeq ($(trunk_build),yes)
+  # The actual version depends on the build-dependencies set by
+  # variable AUTO_BUILD_DEP in rules.conf.  Here, we assume the
+  # correct version is installed.
+  #autoconf_version =
+endif
+
+# FIXME: the auto* stuff is done every time for every subdir, which
+# leads to build errors. Idea: record the auto* calls in the patch
+# files (AUTO <dir> <auto-command with options>) and run them separately,
+# maybe only once per directory).
+$(patch_stamp): $(unpack_stamp) $(series_stamp)
+	QUILT_PATCHES=$(patchdir) \
+	  quilt --quiltrc /dev/null push -a || test $$? = 2
+
+ifneq (,$(filter svn-updates, $(debian_patches)))
+	awk '/^EOF/ {exit} p==1 {print} /EOF$$/ {p=1}' \
+	  $(patchdir)/svn-updates.diff > src/LAST_UPDATED
+endif
+
+	if ! test -f ./autotools_files ; then touch ./autotools_files ; fi
+
+	cd $(srcdir)/fixincludes && ./genfixes
+
+	for f in $(autotools_files) ; \
+	  do case $$f in \
+	    */classpath/m4/acinclude.m4) \
+	        : ;; \
+	    */configure.*|*/acinclude.m4) \
+		if grep ^"$$(md5sum $$f)"$$ ./autotools_files >/dev/null ; \
+		  then echo "Skipping already regenerated file $$f." ; \
+		else \
+		  echo "Running autoconf$(autoconf_version) in $$(dirname $$f)..." ; \
+		  dir="$(CURDIR)"; cd $(CURDIR)/$$(dirname $$f) \
+		    && AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version) \
+		    && cd $$dir \
+		    && echo "$$(md5sum $$f)" >> ./autotools_files ; \
+		fi ;; \
+	    */Makefile.*) ;; \
+	    *) echo "Unknown file: $$f"; false; \
+	  esac; \
+	done
+
+	for i in $(debian_patches); do \
+	  echo -e "\n$$i:" >> pxxx; \
+	  sed -n 's/^# *DP: */  /p' $(patchdir)/$$i.diff >> pxxx; \
+	done
+#	-$(srcdir)/move-if-change pxxx $@
+	mv pxxx $@
+
+unpatch:
+	QUILT_PATCHES=$(patchdir) \
+	  quilt --quiltrc /dev/null pop -a -R || test $$? = 2
+	rm -rf .pc
+	for f in $(autotools_files); do \
+	  rm -f $$(echo $$f | sed -r 's/\.(ac|am|in)$$//'); \
+	done
+
+$(src_spu_stamp): $(patch_stamp)
+	rm -rf src-spu
+ifeq (,$(strip $(hardening_patches)))
+	ln -s src src-spu
+else
+	cp -a src src-spu
+	set -e; \
+	for p in $(hardening_patches); do \
+	  list="$$p $$list"; \
+	done; \
+	for p in $$list; do \
+	  echo "Revert for spu build: $$p"; \
+	  patch -d src-spu -p2 -R < debian/patches/$$p.diff; \
+	done
+endif
+	set -e; \
+	for p in $(spu_patches); do \
+	  echo "Apply for spu build: $$p"; \
+	  patch -d src-spu -p2 < debian/patches/$$p.diff; \
+	done
+	touch $@
+
+update-patches: $(series_stamp)
+	export QUILT_PATCHES=$(patchdir); \
+	export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \
+	export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \
+	while quilt push; do quilt refresh; done
+
+patch: $(patch_stamp)
+.PHONY: patch series quilt autotools
--- gcc-4.6-4.6.3.orig/debian/watch
+++ gcc-4.6-4.6.3/debian/watch
@@ -0,0 +1,2 @@
+version=2
+ftp://gcc.gnu.org/pub/gcc/releases/gcc-(4\.6[\d\.]*)	debian	uupdate
--- gcc-4.6-4.6.3.orig/debian/source/format
+++ gcc-4.6-4.6.3/debian/source/format
@@ -0,0 +1 @@
+1.0
--- gcc-4.6-4.6.3.orig/debian/patches/ada-driver-check.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-driver-check.diff
@@ -0,0 +1,26 @@
+# DP: Simplify Ada driver check (we always build using the required
+# DP: Ada version. Needed for warnings on alpha.
+
+--- a/src/config/acx.m4~	2007-09-02 19:24:08.865326043 +0200
++++ b/src/config/acx.m4	2007-09-02 19:28:53.719623005 +0200
+@@ -380,7 +380,7 @@
+ # Other compilers, like HP Tru64 UNIX cc, exit successfully when
+ # given a .adb file, but produce no object file.  So we must check
+ # if an object file was really produced to guard against this.
+-errors=`(${CC} $1[]m4_ifval([$1], [ ])-c conftest.adb) 2>&1 || echo failure`
++errors=`(${CC} $1[]m4_ifval([$1], [ ])-c conftest.adb) 2>/dev/null || echo failure`
+ if test x"$errors" = x && test -f conftest.$ac_objext; then
+   acx_cv_cc_gcc_supports_ada=yes
+ fi
+
+--- a/src/configure~	2007-09-02 16:50:31.206279000 +0200
++++ b/src/configure	2007-09-02 19:28:58.259691491 +0200
+@@ -4448,7 +4448,7 @@
+ # Other compilers, like HP Tru64 UNIX cc, exit successfully when
+ # given a .adb file, but produce no object file.  So we must check
+ # if an object file was really produced to guard against this.
+-errors=`(${CC} -c conftest.adb) 2>&1 || echo failure`
++errors=`(${CC} -c conftest.adb) 2>/dev/null || echo failure`
+ if test x"$errors" = x && test -f conftest.$ac_objext; then
+   acx_cv_cc_gcc_supports_ada=yes
+ fi
--- gcc-4.6-4.6.3.orig/debian/patches/pr47818.diff
+++ gcc-4.6-4.6.3/debian/patches/pr47818.diff
@@ -0,0 +1,22 @@
+# DP: Fix PR ada/47818: Pragma Assert is rejected with No_Implementation_Pragmas restriction.
+
+--- a/src/gcc/ada/sem_prag.adb
++++ b/src/gcc/ada/sem_prag.adb
+@@ -6477,7 +6477,16 @@
+             --  Set True if category of assertions referenced by Name enabled
+ 
+          begin
+-            GNAT_Pragma;
++            --  This could be a rewritten pragma Assert. If it is the case
++            --  then don't check restrictions, because they are different for
++            --  pragma Assert and were already checked.
++
++            if Nkind (Original_Node (N)) /= N_Pragma
++              or else Pragma_Name (Original_Node (N)) /= Name_Assert
++            then
++               GNAT_Pragma;
++            end if;
++
+             Check_At_Least_N_Arguments (2);
+             Check_At_Most_N_Arguments (3);
+             Check_Optional_Identifier (Arg1, Name_Name);
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-multiarch.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-multiarch.diff
@@ -0,0 +1,28 @@
+# DP: Add multiarch support to GCC (chunks not yet applied upstream).
+
+--- a/src/gcc/config/sh/t-linux
++++ b/src/gcc/config/sh/t-linux
+@@ -6,3 +6,5 @@
+ MULTILIB_MATCHES = 
+ 
+ EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
++
++MULTILIB_OSDIRNAMES = sh4-linux-gnu:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu
+--- /dev/null
++++ b/src/gcc/config/s390/t-linux
+@@ -0,0 +1 @@
++MULTIARCH_DIRNAME = s390-linux-gnu
+--- a/src/libstdc++-v3/python/hook.in
++++ b/src/libstdc++-v3/python/hook.in
+@@ -47,7 +47,10 @@
+     libdir = libdir[len (prefix):]
+ 
+     # Compute the ".."s needed to get from libdir to the prefix.
+-    dotdots = ('..' + os.sep) * len (libdir.split (os.sep))
++    backdirs = len (libdir.split (os.sep))
++    if not os.path.basename(os.path.dirname(__file__)).startswith('lib'):
++        backdirs += 1 # multiarch subdir
++    dotdots = ('..' + os.sep) * backdirs
+ 
+     objfile = gdb.current_objfile ().filename
+     dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir)
--- gcc-4.6-4.6.3.orig/debian/patches/libgomp-kfreebsd-testsuite.diff
+++ gcc-4.6-4.6.3/debian/patches/libgomp-kfreebsd-testsuite.diff
@@ -0,0 +1,14 @@
+# DP: Disable lock-2.c test on kfreebsd-*
+
+--- a/src/libgomp/testsuite/libgomp.c/lock-2.c
++++ b/src/libgomp/testsuite/libgomp.c/lock-2.c
+@@ -4,6 +4,9 @@
+ int
+ main (void)
+ {
++#ifdef __FreeBSD_kernel__
++  return 1;
++#endif
+   int l = 0;
+   omp_nest_lock_t lock;
+   omp_init_nest_lock (&lock);
--- gcc-4.6-4.6.3.orig/debian/patches/libffi-powerpc-sysv-without-string-ops.diff
+++ gcc-4.6-4.6.3/debian/patches/libffi-powerpc-sysv-without-string-ops.diff
@@ -0,0 +1,149 @@
+--- a/src/libffi/src/powerpc/ffi.c
++++ b/src/libffi/src/powerpc/ffi.c
+@@ -45,11 +45,6 @@
+   FLAG_RETURNS_64BITS   = 1 << (31-28),
+ 
+   FLAG_RETURNS_128BITS  = 1 << (31-27), /* cr6  */
+-  FLAG_SYSV_SMST_R4     = 1 << (31-26), /* use r4 for FFI_SYSV 8 byte
+-					   structs.  */
+-  FLAG_SYSV_SMST_R3     = 1 << (31-25), /* use r3 for FFI_SYSV 4 byte
+-					   structs.  */
+-  /* Bits (31-24) through (31-19) store shift value for SMST */
+ 
+   FLAG_ARG_NEEDS_COPY   = 1 << (31- 7),
+ #ifndef __NO_FPRS__
+@@ -687,37 +682,22 @@
+       break;
+ 
+     case FFI_TYPE_STRUCT:
+-      if (cif->abi == FFI_SYSV)
+-	{
+-	  /* The final SYSV ABI says that structures smaller or equal 8 bytes
+-	     are returned in r3/r4. The FFI_GCC_SYSV ABI instead returns them
+-	     in memory.  */
++	/*
++	 * The final SYSV ABI says that structures smaller or equal 8 bytes
++	 * are returned in r3/r4. The FFI_GCC_SYSV ABI instead returns them
++	 * in memory.
++	 *
++	 * NOTE: The assembly code can safely assume that it just needs to
++	 *       store both r3 and r4 into a 8-byte word-aligned buffer, as
++	 *       we allocate a temporary buffer in ffi_call() if this flag is
++	 *       set.
++	 */
++	if (cif->abi == FFI_SYSV && size <= 8)
++		flags |= FLAG_RETURNS_SMST;
+ 
+-	  /* Treat structs with size <= 8 bytes.  */
+-	  if (size <= 8)
+-	    {
+-	      flags |= FLAG_RETURNS_SMST;
+-	      /* These structs are returned in r3. We pack the type and the
+-		 precalculated shift value (needed in the sysv.S) into flags.
+-		 The same applies for the structs returned in r3/r4.  */
+-	      if (size <= 4)
+-		{
+-		  flags |= FLAG_SYSV_SMST_R3;
+-		  flags |= 8 * (4 - size) << 8;
+-		  break;
+-		}
+-	      /* These structs are returned in r3 and r4. See above.   */
+-	      if  (size <= 8)
+-		{
+-		  flags |= FLAG_SYSV_SMST_R3 | FLAG_SYSV_SMST_R4;
+-		  flags |= 8 * (8 - size) << 8;
+-		  break;
+-		}
+-	    }
+-	}
+-      intarg_count++;
+-      flags |= FLAG_RETVAL_REFERENCE;
+-      /* Fall through.  */
++	intarg_count++;
++	flags |= FLAG_RETVAL_REFERENCE;
++	/* Fall through.  */
+     case FFI_TYPE_VOID:
+       flags |= FLAG_RETURNS_NOTHING;
+       break;
+@@ -931,21 +911,30 @@
+ void
+ ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
+ {
++  /*
++   * The final SYSV ABI says that structures smaller or equal 8 bytes
++   * are returned in r3/r4. The FFI_GCC_SYSV ABI instead returns them
++   * in memory.
++   *
++   * Just to keep things simple for the assembly code, we will always
++   * bounce-buffer struct return values less than or equal to 8 bytes.
++   * This allows the ASM to handle SYSV small structures by directly
++   * writing r3 and r4 to memory without worrying about struct size.
++   */
++  unsigned int smst_buffer[2];
+   extended_cif ecif;
+ 
+   ecif.cif = cif;
+   ecif.avalue = avalue;
+ 
+-  /* If the return value is a struct and we don't have a return	*/
+-  /* value address then we need to make one		        */
+-
+-  if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT))
+-    {
+-      ecif.rvalue = alloca(cif->rtype->size);
+-    }
+-  else
+-    ecif.rvalue = rvalue;
+-
++  /* Ensure that we have a valid struct return value */
++  ecif.rvalue = rvalue;
++  if (cif->rtype->type == FFI_TYPE_STRUCT) {
++	if (cif->rtype->size <= 8)
++		ecif.rvalue = smst_buffer;
++	else if (!rvalue)
++		ecif.rvalue = alloca(cif->rtype->size);
++  }
+ 
+   switch (cif->abi)
+     {
+@@ -967,6 +956,10 @@
+       FFI_ASSERT (0);
+       break;
+     }
++
++  /* Check for a bounce-buffered return value */
++  if (rvalue && ecif.rvalue == smst_buffer)
++	memcpy(rvalue, smst_buffer, cif->rtype->size);
+ }
+ 
+ 
+--- a/src/libffi/src/powerpc/sysv.S
++++ b/src/libffi/src/powerpc/sysv.S
+@@ -142,19 +142,14 @@
+ #endif
+ 
+ L(small_struct_return_value):
+-	extrwi	%r6,%r31,2,19         /* number of bytes padding = shift/8 */
+-	mtcrf	0x02,%r31	      /* copy flags to cr[24:27] (cr6) */
+-	extrwi	%r5,%r31,5,19         /* r5 <- number of bits of padding */
+-	subfic  %r6,%r6,4             /* r6 <- number of useful bytes in r3 */
+-	bf-	25,L(done_return_value) /* struct in r3 ? if not, done. */
+-/* smst_one_register: */
+-	slw	%r3,%r3,%r5           /* Left-justify value in r3 */
+-	mtxer	%r6                   /* move byte count to XER ... */
+-	stswx	%r3,0,%r30            /* ... and store that many bytes */
+-	bf+	26,L(done_return_value)  /* struct in r3:r4 ? */
+-	add	%r6,%r6,%r30          /* adjust pointer */
+-	stswi	%r4,%r6,4             /* store last four bytes */
+-	b	L(done_return_value)
++	/*
++	 * The C code always allocates a properly-aligned 8-byte bounce
++	 * buffer to make this assembly code very simple.  Just write out
++	 * r3 and r4 to the buffer to allow the C code to handle the rest.
++	 */
++	stw %r3, 0(%r30)
++	stw %r4, 4(%r30)
++	b L(done_return_value)
+ 
+ .LFE1:
+ END(ffi_call_SYSV)
--- gcc-4.6-4.6.3.orig/debian/patches/ada-bug564232.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-bug564232.diff
@@ -0,0 +1,11 @@
+--- a/src/gcc/ada/gsocket.h
++++ b/src/gcc/ada/gsocket.h
+@@ -225,7 +225,7 @@
+ # define Need_Netdb_Buffer 0
+ #endif
+ 
+-#if defined (__FreeBSD__) || defined (__vxworks) || defined(__rtems__)
++#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__vxworks) || defined(__rtems__) || defined(__GNU__)
+ # define Has_Sockaddr_Len 1
+ #else
+ # define Has_Sockaddr_Len 0
--- gcc-4.6-4.6.3.orig/debian/patches/pr49940.diff
+++ gcc-4.6-4.6.3/debian/patches/pr49940.diff
@@ -0,0 +1,24 @@
+# DP: Apply proposed patch for PR ada/49940.
+
+# This patch consists in copying the declaration (and import) of lwp_self from
+# s-osint-freebsd.ads to s-osint-kfreebsd-gnu.ads.
+
+--- a/src/gcc/ada/s-osinte-kfreebsd-gnu.ads
++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads
+@@ -238,6 +238,16 @@
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
++   ---------
++   -- LWP --
++   ---------
++
++   function lwp_self return System.Address;
++   --  lwp_self does not exist on this thread library, revert to pthread_self
++   --  which is the closest approximation (with getpid). This function is
++   --  needed to share 7staprop.adb across POSIX-like targets.
++   pragma Import (C, lwp_self, "pthread_self");
++
+    -------------
+    -- Threads --
+    -------------
--- gcc-4.6-4.6.3.orig/debian/patches/kbsd-gnu.diff
+++ gcc-4.6-4.6.3/debian/patches/kbsd-gnu.diff
@@ -0,0 +1,76 @@
+# DP: GNU/k*BSD support
+# Author: Robert Millan <rmh@aybabtu.com>
+# Status: Not yet submitted
+
+---
+ gcc/config.gcc                 |    2 +-
+ gcc/config/i386/kfreebsd-gnu.h |   22 ++++++++++++++++++++++
+ gcc/config/i386/linux64.h      |    5 ++++-
+ 3 files changed, 27 insertions(+), 2 deletions(-)
+
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -1307,7 +1307,7 @@
+ 		default_gnu_indirect_function=yes
+ 		;;
+ 	x86_64-*-kfreebsd*-gnu)
+-		tm_file="${tm_file} kfreebsd-gnu.h"
++		tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h"
+ 		;;
+ 	x86_64-*-knetbsd*-gnu)
+ 		tm_file="${tm_file} knetbsd-gnu.h"
+--- a/src/gcc/config/i386/kfreebsd-gnu.h
++++ b/src/gcc/config/i386/kfreebsd-gnu.h
+@@ -19,7 +19,29 @@
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
++#ifdef GLIBC_DYNAMIC_LINKER32
++#undef GLIBC_DYNAMIC_LINKER32
++#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
++#endif
++
++#ifdef GLIBC_DYNAMIC_LINKER64
++#undef GLIBC_DYNAMIC_LINKER64
++#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1"
++#endif
++
+ #undef LINK_EMULATION
+ #define LINK_EMULATION "elf_i386_fbsd"
++
++#ifdef LINK_EMULATION32
++#undef LINK_EMULATION32
++#define LINK_EMULATION32 LINK_EMULATION
++#endif
++
++#ifdef LINK_EMULATION64
++#undef LINK_EMULATION64
++#define LINK_EMULATION64 "elf_x86_64_fbsd"
++#endif
++
+ #undef REG_NAME
+ #define REG_NAME(reg) sc_ ## reg
++
+--- a/src/gcc/config/i386/linux64.h
++++ b/src/gcc/config/i386/linux64.h
+@@ -59,8 +59,11 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
++/* These macros may be overridden in k*bsd-gnu.h and i386/k*bsd-gnu.h. */
+ #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+ #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
++#define LINK_EMULATION32 "elf_i386"
++#define LINK_EMULATION64 "elf_x86_64"
+ 
+ #if TARGET_64BIT_DEFAULT
+ #define SPEC_32 "m32"
+@@ -75,7 +78,7 @@
+  %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
+ 
+ #undef	LINK_SPEC
+-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \
++#define LINK_SPEC "%{" SPEC_64 ":-m " LINK_EMULATION64 "} %{" SPEC_32 ":-m " LINK_EMULATION32 "} --hash-style=both \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
--- gcc-4.6-4.6.3.orig/debian/patches/arm-multilib-softfp.diff
+++ gcc-4.6-4.6.3/debian/patches/arm-multilib-softfp.diff
@@ -0,0 +1,27 @@
+# DP: ARM hard/softfp float multilib support
+
+Index: b/src/gcc/config/arm/t-linux-eabi
+===================================================================
+--- a/src/gcc/config/arm/t-linux-eabi	2011-01-03 20:52:22.000000000 +0000
++++ b/src/gcc/config/arm/t-linux-eabi	2011-08-21 21:08:47.583351817 +0000
+@@ -24,6 +24,20 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifeq ($(with_float),hard)
++MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
++MULTILIB_OSDIRNAMES	= arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++else
++MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
++MULTILIB_OSDIRNAMES	= ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-system-root.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-system-root.diff
@@ -0,0 +1,42 @@
+# DP: Remove trailing slash from system root directory
+
+--- a/src/gcc/incpath.c
++++ b/src/gcc/incpath.c
+@@ -172,7 +172,15 @@
+ 
+ 	  /* Should this directory start with the sysroot?  */
+ 	  if (sysroot && p->add_sysroot)
+-	    str = concat (sysroot, p->fname, NULL);
++	    {
++	      char *sysroot_no_trailing_dir_separator = xstrdup (sysroot);
++	      size_t sysroot_len = strlen (sysroot);
++
++	      if (sysroot_len > 0 && sysroot[sysroot_len - 1] == DIR_SEPARATOR)
++		sysroot_no_trailing_dir_separator[sysroot_len - 1] = '\0';
++	      str = concat (sysroot_no_trailing_dir_separator, p->fname, NULL);
++	      free (sysroot_no_trailing_dir_separator);
++	    }
+ 	  else if (!p->add_sysroot && relocated
+ 		   && strncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len) == 0)
+ 	    {
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -2440,9 +2440,17 @@
+ 
+   if (target_system_root)
+     {
++      char *sysroot_no_trailing_dir_separator = xstrdup (target_system_root);
++      size_t sysroot_len = strlen (target_system_root);
++
++      if (sysroot_len > 0
++	  && target_system_root[sysroot_len - 1] == DIR_SEPARATOR)
++	sysroot_no_trailing_dir_separator[sysroot_len - 1] = '\0';
++
+       if (target_sysroot_suffix)
+ 	  prefix = concat (target_sysroot_suffix, prefix, NULL);
+-      prefix = concat (target_system_root, prefix, NULL);
++      prefix = concat (sysroot_no_trailing_dir_separator, prefix, NULL);
++      free (sysroot_no_trailing_dir_separator);
+ 
+       /* We have to override this because GCC's notion of sysroot
+ 	 moves along with GCC.  */
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-cloog-dl.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-cloog-dl.diff
@@ -0,0 +1,464 @@
+# DP: Link against -ldl instead of -lcloog -lppl. Exit with an error when using
+# DP: the Graphite loop transformation infrastructure without having the
+# DP: libcloog-ppl0 package installed. Packages using these optimizations
+# DP: should build-depend on libcloog-ppl0.
+
+2011-01-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* Makefile.in (BACKENDLIBS): Link against -ldl instead of
+	-lcloog -lppl.
+	(graphite.o, graphite%.o): Force -O, remove -fkeep-inline-functions.
+	(GRAPHITE_CLOOG_UTIL_H, GRAPHITE_POLY_H): New.
+	(graphite*.o): Adjust dependencies.
+	* graphite-cloog-compat.h: Include <dlfcn.h>.  Reference libcloog and
+	libppl symbols through pointers in cloog_pointers__ variable.
+	* graphite.c (init_cloog_pointers): New function.
+	(graphite_transform_loops): Call init_cloog_pointers.
+	* graphite-clast-to-gimple.c (gcc_type_for_iv_of_clast_loop): Rename
+	stmt_for argument to stmt_fora.
+	* graphite-poly.h: Include graphite-cloog-util.h.
+
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -984,6 +984,8 @@
+ PLUGIN_H = plugin.h $(GCC_PLUGIN_H)
+ PLUGIN_VERSION_H = plugin-version.h configargs.h
+ LIBFUNCS_H = libfuncs.h $(HASHTAB_H)
++GRAPHITE_CLOOG_UTIL_H = graphite-cloog-util.h graphite-cloog-compat.h
++GRAPHITE_POLY_H = graphite-poly.h $(GRAPHITE_CLOOG_UTIL_H)
+ 
+ #
+ # Now figure out from those variables how to compile and link.
+@@ -1037,7 +1039,7 @@
+ # and the system's installed libraries.
+ LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER) \
+ 	$(HOST_LIBS)
+-BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(GMPLIBS) $(if $(CLOOGLIBS),-ldl) $(PLUGINLIBS) $(HOST_LIBS) \
+ 	$(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -2668,40 +2670,40 @@
+    $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) tree-pass.h value-prof.h
+ graphite.o : graphite.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) \
+    $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h \
+-   $(DBGCNT_H) graphite-ppl.h graphite-poly.h graphite-scop-detection.h \
++   $(DBGCNT_H) graphite-ppl.h $(GRAPHITE_POLY_H) graphite-scop-detection.h \
+    graphite-clast-to-gimple.h graphite-sese-to-poly.h
+ graphite-blocking.o : graphite-blocking.c $(CONFIG_H) $(SYSTEM_H) \
+    coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+-   sese.h graphite-ppl.h graphite-poly.h
++   sese.h graphite-ppl.h $(GRAPHITE_POLY_H)
+ graphite-clast-to-gimple.o : graphite-clast-to-gimple.c $(CONFIG_H) \
+    $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
+-   $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-cloog-util.h \
+-   graphite-ppl.h graphite-poly.h graphite-clast-to-gimple.h \
++   $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h $(GRAPHITE_CLOOG_UTIL_H) \
++   graphite-ppl.h $(GRAPHITE_POLY_H) graphite-clast-to-gimple.h \
+    graphite-dependences.h graphite-cloog-compat.h
+ graphite-cloog-util.o : graphite-cloog-util.c $(CONFIG_H) $(SYSTEM_H) \
+-   coretypes.h graphite-cloog-util.h graphite-cloog-compat.h
++   coretypes.h $(GRAPHITE_CLOOG_UTIL_H) graphite-cloog-compat.h
+ graphite-dependences.o : graphite-dependences.c $(CONFIG_H) $(SYSTEM_H) \
+    coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+-   sese.h graphite-ppl.h graphite-poly.h graphite-dependences.h \
+-   graphite-cloog-util.h
++   sese.h graphite-ppl.h $(GRAPHITE_POLY_H) graphite-dependences.h \
++   $(GRAPHITE_CLOOG_UTIL_H)
+ graphite-flattening.o : graphite-flattening.c $(CONFIG_H) $(SYSTEM_H)	\
+    coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+-   sese.h graphite-ppl.h graphite-poly.h
++   sese.h graphite-ppl.h $(GRAPHITE_POLY_H)
+ graphite-interchange.o : graphite-interchange.c $(CONFIG_H) $(SYSTEM_H) \
+    coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+-   sese.h graphite-ppl.h graphite-poly.h
++   sese.h graphite-ppl.h $(GRAPHITE_POLY_H)
+ graphite-poly.o : graphite-poly.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+    $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) gimple-pretty-print.h \
+-   $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-ppl.h graphite-poly.h \
+-   graphite-dependences.h graphite-cloog-util.h
++   $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-ppl.h $(GRAPHITE_POLY_H) \
++   graphite-dependences.h $(GRAPHITE_CLOOG_UTIL_H)
+ graphite-ppl.o : graphite-ppl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+-   graphite-cloog-util.h graphite-ppl.h
++   $(GRAPHITE_CLOOG_UTIL_H) graphite-ppl.h
+ graphite-scop-detection.o : graphite-scop-detection.c $(CONFIG_H) $(SYSTEM_H) \
+    coretypes.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) \
+-   sese.h graphite-ppl.h graphite-poly.h graphite-scop-detection.h
++   sese.h graphite-ppl.h $(GRAPHITE_POLY_H) graphite-scop-detection.h
+ graphite-sese-to-poly.o : graphite-sese-to-poly.c $(CONFIG_H) \
+    $(SYSTEM_H) coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
+-   $(TREE_DATA_REF_H) domwalk.h sese.h graphite-ppl.h graphite-poly.h \
++   $(TREE_DATA_REF_H) domwalk.h sese.h graphite-ppl.h $(GRAPHITE_POLY_H) \
+    graphite-sese-to-poly.h
+ tree-vect-loop.o: tree-vect-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+    $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \
+@@ -3483,6 +3485,11 @@
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
+ 		$(out_file) $(OUTPUT_OPTION)
+ 
++graphite%.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++
+ # Build auxiliary files that support ecoff format.
+ mips-tfile: mips-tfile.o version.o $(LIBDEPS)
+ 	$(LINKER) $(LINKERFLAGS) $(LDFLAGS) -o $@ \
+--- a/src/gcc/graphite-cloog-compat.h
++++ b/src/gcc/graphite-cloog-compat.h
+@@ -272,4 +272,277 @@
+    return m->NbRows;
+ }
+ #endif /* CLOOG_ORG  */
++
++#include <dlfcn.h>
++#if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11
++#define DYNSYMS_PPL11
++#else
++#define DYNSYMS_PPL11 \
++  DYNSYM (ppl_new_PIP_Problem_from_constraints); \
++  DYNSYM (ppl_PIP_Problem_is_satisfiable); \
++  DYNSYM (ppl_delete_PIP_Problem);
++#endif
++#define DYNSYMS \
++  DYNSYM (cloog_block_alloc); \
++  DYNSYM (cloog_block_list_free); \
++  DYNSYM (cloog_block_list_malloc); \
++  DYNSYM (cloog_clast_create); \
++  DYNSYM (cloog_clast_free); \
++  DYNSYM (cloog_domain_free); \
++  DYNSYM (cloog_domain_matrix2domain); \
++  DYNSYM (cloog_initialize); \
++  DYNSYM (cloog_loop_malloc); \
++  DYNSYM (cloog_matrix_alloc); \
++  DYNSYM (cloog_matrix_copy); \
++  DYNSYM (cloog_matrix_free); \
++  DYNSYM (cloog_matrix_print); \
++  DYNSYM (cloog_names_malloc); \
++  DYNSYM (cloog_names_scalarize); \
++  DYNSYM (cloog_options_free); \
++  DYNSYM (cloog_options_malloc); \
++  DYNSYM (cloog_program_dump_cloog); \
++  DYNSYM (cloog_program_extract_scalars); \
++  DYNSYM (cloog_program_free); \
++  DYNSYM (cloog_program_generate); \
++  DYNSYM (cloog_program_malloc); \
++  DYNSYM (cloog_program_print); \
++  DYNSYM (cloog_program_scatter); \
++  DYNSYM (cloog_statement_alloc); \
++  DYNSYM (cloog_domain_union); \
++  DYNSYM (cloog_matrix_read); \
++  DYNSYM (cloog_new_pol); \
++  DYNSYM (cloog_vector_gcd); \
++  DYNSYM (ppl_finalize); \
++  DYNSYM (ppl_assign_Coefficient_from_mpz_t); \
++  DYNSYM (ppl_assign_Linear_Expression_from_Linear_Expression); \
++  DYNSYM (ppl_Coefficient_to_mpz_t); \
++  DYNSYM (ppl_Constraint_coefficient); \
++  DYNSYM (ppl_Constraint_inhomogeneous_term); \
++  DYNSYM (ppl_Constraint_space_dimension); \
++  DYNSYM (ppl_Constraint_System_begin); \
++  DYNSYM (ppl_Constraint_System_const_iterator_dereference); \
++  DYNSYM (ppl_Constraint_System_const_iterator_equal_test); \
++  DYNSYM (ppl_Constraint_System_const_iterator_increment); \
++  DYNSYM (ppl_Constraint_System_end); \
++  DYNSYM (ppl_Constraint_System_insert_Constraint); \
++  DYNSYM (ppl_Constraint_System_space_dimension); \
++  DYNSYM (ppl_Constraint_type); \
++  DYNSYM (ppl_delete_Coefficient); \
++  DYNSYM (ppl_delete_Constraint); \
++  DYNSYM (ppl_delete_Constraint_System_const_iterator); \
++  DYNSYM (ppl_delete_Linear_Expression); \
++  DYNSYM (ppl_delete_Pointset_Powerset_C_Polyhedron); \
++  DYNSYM (ppl_delete_Pointset_Powerset_C_Polyhedron_iterator); \
++  DYNSYM (ppl_delete_Polyhedron); \
++  DYNSYM (ppl_Linear_Expression_add_to_coefficient); \
++  DYNSYM (ppl_Linear_Expression_add_to_inhomogeneous); \
++  DYNSYM (ppl_Linear_Expression_coefficient); \
++  DYNSYM (ppl_Linear_Expression_inhomogeneous_term); \
++  DYNSYM (ppl_Linear_Expression_space_dimension); \
++  DYNSYM (ppl_new_Coefficient); \
++  DYNSYM (ppl_new_Coefficient_from_mpz_t); \
++  DYNSYM (ppl_new_Constraint); \
++  DYNSYM (ppl_new_Constraint_System); \
++  DYNSYM (ppl_new_Constraint_System_const_iterator); \
++  DYNSYM (ppl_new_C_Polyhedron_from_C_Polyhedron); \
++  DYNSYM (ppl_new_C_Polyhedron_from_space_dimension); \
++  DYNSYM (ppl_new_C_Polyhedron_recycle_Constraint_System); \
++  DYNSYM (ppl_new_Linear_Expression); \
++  DYNSYM (ppl_new_Linear_Expression_from_Constraint); \
++  DYNSYM (ppl_new_Linear_Expression_from_Linear_Expression); \
++  DYNSYM (ppl_new_Linear_Expression_with_dimension); \
++  DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron); \
++  DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron); \
++  DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension); \
++  DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_iterator); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_add_constraint); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_difference_assign); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_intersection_assign); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_is_empty); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_end); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_increment); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_maximize); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_minimize); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_size); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_space_dimension); \
++  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign); \
++  DYNSYM (ppl_Polyhedron_add_constraint); \
++  DYNSYM (ppl_Polyhedron_add_constraints); \
++  DYNSYM (ppl_Polyhedron_add_space_dimensions_and_embed); \
++  DYNSYM (ppl_Polyhedron_get_constraints); \
++  DYNSYM (ppl_Polyhedron_map_space_dimensions); \
++  DYNSYM (ppl_Polyhedron_remove_space_dimensions); \
++  DYNSYM (ppl_Polyhedron_space_dimension); \
++  DYNSYM (ppl_subtract_Linear_Expression_from_Linear_Expression); \
++  DYNSYM (pprint); \
++  DYNSYM (stmt_block); \
++  DYNSYM (stmt_for); \
++  DYNSYM (stmt_guard); \
++  DYNSYM (stmt_root); \
++  DYNSYM (stmt_user); \
++  DYNSYM (ppl_delete_Constraint_System); \
++  DYNSYM (ppl_initialize); \
++  DYNSYM (ppl_new_Constraint_System_from_Constraint); \
++  DYNSYM (ppl_new_C_Polyhedron_from_Constraint_System); \
++  DYNSYM (ppl_Polyhedron_affine_image); \
++  DYNSYM (ppl_io_fprint_Pointset_Powerset_C_Polyhedron); \
++  DYNSYMS_PPL11
++extern struct
++{
++  bool inited;
++  void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++  DYNSYMS
++#undef DYNSYM
++} cloog_pointers__;
++
++#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
++#define cloog_block_list_free (*cloog_pointers__.p_cloog_block_list_free)
++#define cloog_block_list_malloc (*cloog_pointers__.p_cloog_block_list_malloc)
++#define cloog_clast_create (*cloog_pointers__.p_cloog_clast_create)
++#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
++#define cloog_domain_free (*cloog_pointers__.p_cloog_domain_free)
++#define cloog_domain_matrix2domain (*cloog_pointers__.p_cloog_domain_matrix2domain)
++#define cloog_initialize (*cloog_pointers__.p_cloog_initialize)
++#ifndef CLOOG_ORG
++#undef cloog_loop_malloc
++#define cloog_loop_malloc(STATE) (*cloog_pointers__.p_cloog_loop_malloc) ()
++#else
++#define cloog_loop_malloc (*cloog_pointers__.p_cloog_loop_malloc)
++#endif
++#define cloog_matrix_alloc (*cloog_pointers__.p_cloog_matrix_alloc)
++#define cloog_matrix_copy (*cloog_pointers__.p_cloog_matrix_copy)
++#define cloog_matrix_free (*cloog_pointers__.p_cloog_matrix_free)
++#define cloog_matrix_print (*cloog_pointers__.p_cloog_matrix_print)
++#define cloog_names_malloc (*cloog_pointers__.p_cloog_names_malloc)
++#define cloog_names_scalarize (*cloog_pointers__.p_cloog_names_scalarize)
++#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
++#ifndef CLOOG_ORG
++#undef cloog_options_malloc
++#define cloog_options_malloc(STATE) (*cloog_pointers__.p_cloog_options_malloc) ()
++#undef cloog_program_dump_cloog
++#define cloog_program_dump_cloog(DUMPFILE, PROGRAM, SCATTERINGLIST) \
++  (*cloog_pointers__.p_cloog_program_dump_cloog) (DUMPFILE, PROGRAM)
++#undef cloog_program_extract_scalars
++#define cloog_program_extract_scalars(PROG, SCATT, OPT) \
++  (*cloog_pointers__.p_cloog_program_extract_scalars) (PROG, SCATT)
++#else
++#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
++#define cloog_program_dump_cloog (*cloog_pointers__.p_cloog_program_dump_cloog)
++#define cloog_program_extract_scalars (*cloog_pointers__.p_cloog_program_extract_scalars)
++#endif
++#define cloog_program_free (*cloog_pointers__.p_cloog_program_free)
++#define cloog_program_generate (*cloog_pointers__.p_cloog_program_generate)
++#define cloog_program_malloc (*cloog_pointers__.p_cloog_program_malloc)
++#define cloog_program_print (*cloog_pointers__.p_cloog_program_print)
++#ifndef CLOOG_ORG
++#undef cloog_program_scatter
++#define cloog_program_scatter(PROG, SCATT, OPT) \
++  (*cloog_pointers__.p_cloog_program_scatter) (PROG, SCATT)
++#undef cloog_statement_alloc
++#define cloog_statement_alloc(STATE, INDEX) \
++  (*cloog_pointers__.p_cloog_statement_alloc) (INDEX)
++#else
++#define cloog_program_scatter (*cloog_pointers__.p_cloog_program_scatter)
++#define cloog_statement_alloc (*cloog_pointers__.p_cloog_statement_alloc)
++#endif
++#define cloog_domain_union (*cloog_pointers__.p_cloog_domain_union)
++#define cloog_matrix_read (*cloog_pointers__.p_cloog_matrix_read)
++#define cloog_new_pol (*cloog_pointers__.p_cloog_new_pol)
++#define cloog_vector_gcd (*cloog_pointers__.p_cloog_vector_gcd)
++#define ppl_finalize (*cloog_pointers__.p_ppl_finalize)
++#define ppl_assign_Coefficient_from_mpz_t (*cloog_pointers__.p_ppl_assign_Coefficient_from_mpz_t)
++#define ppl_assign_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_assign_Linear_Expression_from_Linear_Expression)
++#define ppl_Coefficient_to_mpz_t (*cloog_pointers__.p_ppl_Coefficient_to_mpz_t)
++#define ppl_Constraint_coefficient (*cloog_pointers__.p_ppl_Constraint_coefficient)
++#define ppl_Constraint_inhomogeneous_term (*cloog_pointers__.p_ppl_Constraint_inhomogeneous_term)
++#define ppl_Constraint_space_dimension (*cloog_pointers__.p_ppl_Constraint_space_dimension)
++#define ppl_Constraint_System_begin (*cloog_pointers__.p_ppl_Constraint_System_begin)
++#define ppl_Constraint_System_const_iterator_dereference (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_dereference)
++#define ppl_Constraint_System_const_iterator_equal_test (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_equal_test)
++#define ppl_Constraint_System_const_iterator_increment (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_increment)
++#define ppl_Constraint_System_end (*cloog_pointers__.p_ppl_Constraint_System_end)
++#define ppl_Constraint_System_insert_Constraint (*cloog_pointers__.p_ppl_Constraint_System_insert_Constraint)
++#define ppl_Constraint_System_space_dimension (*cloog_pointers__.p_ppl_Constraint_System_space_dimension)
++#define ppl_Constraint_type (*cloog_pointers__.p_ppl_Constraint_type)
++#define ppl_delete_Coefficient (*cloog_pointers__.p_ppl_delete_Coefficient)
++#define ppl_delete_Constraint (*cloog_pointers__.p_ppl_delete_Constraint)
++#define ppl_delete_Constraint_System_const_iterator (*cloog_pointers__.p_ppl_delete_Constraint_System_const_iterator)
++#define ppl_delete_Linear_Expression (*cloog_pointers__.p_ppl_delete_Linear_Expression)
++#define ppl_delete_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_delete_Pointset_Powerset_C_Polyhedron)
++#define ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (*cloog_pointers__.p_ppl_delete_Pointset_Powerset_C_Polyhedron_iterator)
++#define ppl_delete_Polyhedron (*cloog_pointers__.p_ppl_delete_Polyhedron)
++#define ppl_Linear_Expression_add_to_coefficient (*cloog_pointers__.p_ppl_Linear_Expression_add_to_coefficient)
++#define ppl_Linear_Expression_add_to_inhomogeneous (*cloog_pointers__.p_ppl_Linear_Expression_add_to_inhomogeneous)
++#define ppl_Linear_Expression_coefficient (*cloog_pointers__.p_ppl_Linear_Expression_coefficient)
++#define ppl_Linear_Expression_inhomogeneous_term (*cloog_pointers__.p_ppl_Linear_Expression_inhomogeneous_term)
++#define ppl_Linear_Expression_space_dimension (*cloog_pointers__.p_ppl_Linear_Expression_space_dimension)
++#define ppl_new_Coefficient (*cloog_pointers__.p_ppl_new_Coefficient)
++#define ppl_new_Coefficient_from_mpz_t (*cloog_pointers__.p_ppl_new_Coefficient_from_mpz_t)
++#define ppl_new_Constraint (*cloog_pointers__.p_ppl_new_Constraint)
++#define ppl_new_Constraint_System (*cloog_pointers__.p_ppl_new_Constraint_System)
++#define ppl_new_Constraint_System_const_iterator (*cloog_pointers__.p_ppl_new_Constraint_System_const_iterator)
++#define ppl_new_C_Polyhedron_from_C_Polyhedron (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_C_Polyhedron)
++#define ppl_new_C_Polyhedron_from_space_dimension (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_space_dimension)
++#define ppl_new_C_Polyhedron_recycle_Constraint_System (*cloog_pointers__.p_ppl_new_C_Polyhedron_recycle_Constraint_System)
++#define ppl_new_Linear_Expression (*cloog_pointers__.p_ppl_new_Linear_Expression)
++#define ppl_new_Linear_Expression_from_Constraint (*cloog_pointers__.p_ppl_new_Linear_Expression_from_Constraint)
++#define ppl_new_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_new_Linear_Expression_from_Linear_Expression)
++#define ppl_new_Linear_Expression_with_dimension (*cloog_pointers__.p_ppl_new_Linear_Expression_with_dimension)
++#define ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron)
++#define ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron)
++#define ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension)
++#define ppl_new_Pointset_Powerset_C_Polyhedron_iterator (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_iterator)
++#define ppl_Pointset_Powerset_C_Polyhedron_add_constraint (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_add_constraint)
++#define ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed)
++#define ppl_Pointset_Powerset_C_Polyhedron_difference_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_difference_assign)
++#define ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_intersection_assign)
++#define ppl_Pointset_Powerset_C_Polyhedron_is_empty (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_is_empty)
++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_begin)
++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference)
++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_end (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_end)
++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test)
++#define ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_increment)
++#define ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions)
++#define ppl_Pointset_Powerset_C_Polyhedron_maximize (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_maximize)
++#define ppl_Pointset_Powerset_C_Polyhedron_minimize (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_minimize)
++#define ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions)
++#define ppl_Pointset_Powerset_C_Polyhedron_size (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_size)
++#define ppl_Pointset_Powerset_C_Polyhedron_space_dimension (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_space_dimension)
++#define ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign)
++#define ppl_Polyhedron_add_constraint (*cloog_pointers__.p_ppl_Polyhedron_add_constraint)
++#define ppl_Polyhedron_add_constraints (*cloog_pointers__.p_ppl_Polyhedron_add_constraints)
++#define ppl_Polyhedron_add_space_dimensions_and_embed (*cloog_pointers__.p_ppl_Polyhedron_add_space_dimensions_and_embed)
++#define ppl_Polyhedron_get_constraints (*cloog_pointers__.p_ppl_Polyhedron_get_constraints)
++#define ppl_Polyhedron_map_space_dimensions (*cloog_pointers__.p_ppl_Polyhedron_map_space_dimensions)
++#define ppl_Polyhedron_remove_space_dimensions (*cloog_pointers__.p_ppl_Polyhedron_remove_space_dimensions)
++#define ppl_Polyhedron_space_dimension (*cloog_pointers__.p_ppl_Polyhedron_space_dimension)
++#define ppl_subtract_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_subtract_Linear_Expression_from_Linear_Expression)
++#define pprint (*cloog_pointers__.p_pprint)
++#define stmt_block (*cloog_pointers__.p_stmt_block)
++#define stmt_for (*cloog_pointers__.p_stmt_for)
++#define stmt_guard (*cloog_pointers__.p_stmt_guard)
++#define stmt_root (*cloog_pointers__.p_stmt_root)
++#define stmt_user (*cloog_pointers__.p_stmt_user)
++#define ppl_delete_Constraint_System (*cloog_pointers__.p_ppl_delete_Constraint_System)
++#define ppl_initialize (*cloog_pointers__.p_ppl_initialize)
++#define ppl_new_Constraint_System_from_Constraint (*cloog_pointers__.p_ppl_new_Constraint_System_from_Constraint)
++#define ppl_new_C_Polyhedron_from_Constraint_System (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_Constraint_System)
++#define ppl_Polyhedron_affine_image (*cloog_pointers__.p_ppl_Polyhedron_affine_image)
++#define ppl_io_fprint_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_io_fprint_Pointset_Powerset_C_Polyhedron)
++#if !(PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11)
++#define ppl_new_PIP_Problem_from_constraints (*cloog_pointers__.p_ppl_new_PIP_Problem_from_constraints)
++#define ppl_PIP_Problem_is_satisfiable (*cloog_pointers__.p_ppl_PIP_Problem_is_satisfiable)
++#define ppl_delete_PIP_Problem (*cloog_pointers__.p_ppl_delete_PIP_Problem)
++#endif
++
++#define cloog_finalize (*cloog_pointers__.p_ppl_finalize)
++
++
+ #endif /* GRAPHITE_CLOOG_COMPAT_H  */
+--- a/src/gcc/graphite.c
++++ b/src/gcc/graphite.c
+@@ -56,6 +56,35 @@
+ 
+ CloogState *cloog_state;
+ 
++__typeof (cloog_pointers__) cloog_pointers__;
++
++static bool
++init_cloog_pointers (void)
++{
++  void *h;
++
++  if (cloog_pointers__.inited)
++    return cloog_pointers__.h != NULL;
++  h = dlopen ("libcloog-ppl.so.0", RTLD_LAZY);
++  cloog_pointers__.h = h;
++  if (h == NULL)
++    return false;
++#define DYNSYM(x) \
++  do \
++    { \
++      union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
++      u.q = dlsym (h, #x); \
++      if (u.q == NULL) \
++	return false; \
++      cloog_pointers__.p_##x = u.p; \
++    } \
++  while (0)
++  DYNSYMS
++#undef DYNSYM
++  return true;
++}
++
++
+ /* Print global statistics to FILE.  */
+ 
+ static void
+@@ -201,6 +230,12 @@
+       return false;
+     }
+ 
++  if (!init_cloog_pointers ())
++    {
++      sorry ("Graphite loop optimizations can only be used if the libcloog-ppl0 package is installed");
++      return false;
++    }
++
+   scev_reset ();
+   recompute_all_dominators ();
+   initialize_original_copy_tables ();
+--- a/src/gcc/graphite-clast-to-gimple.c
++++ b/src/gcc/graphite-clast-to-gimple.c
+@@ -738,10 +738,10 @@
+    from STMT_FOR.  */
+ 
+ static tree
+-gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_for, int level,
++gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_fora, int level,
+ 			       tree lb_type, tree ub_type)
+ {
+-  struct clast_stmt *stmt = (struct clast_stmt *) stmt_for;
++  struct clast_stmt *stmt = (struct clast_stmt *) stmt_fora;
+   struct clast_user_stmt *body = clast_get_body_of_loop (stmt);
+   CloogStatement *cs = body->statement;
+   poly_bb_p pbb = (poly_bb_p) cloog_statement_usr (cs);
+--- a/src/gcc/graphite-poly.h
++++ b/src/gcc/graphite-poly.h
+@@ -22,6 +22,8 @@
+ #ifndef GCC_GRAPHITE_POLY_H
+ #define GCC_GRAPHITE_POLY_H
+ 
++#include "graphite-cloog-util.h"
++
+ typedef struct poly_dr *poly_dr_p;
+ DEF_VEC_P(poly_dr_p);
+ DEF_VEC_ALLOC_P (poly_dr_p, heap);
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-hash-style-both.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-hash-style-both.diff
@@ -0,0 +1,134 @@
+# DP: Link using --hash-style=both (alpha, amd64, armel, armhf, ia64, i386, powerpc, ppc64, s390, sparc)
+
+2006-07-11  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/i386/linux.h (LINK_SPEC): Add --hash-style=both.
+	* config/i386/linux64.h (LINK_SPEC): Likewise.
+	* config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise.
+	* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32,
+	LINK_OS_LINUX_SPEC64): Likewise.
+	* config/s390/linux.h (LINK_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_SPEC): Likewise.
+	* config/sparc/linux.h (LINK_SPEC): Likewise.
+	* config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC,
+	LINK_ARCH64_SPEC): Likewise.
+	* config/alpha/linux-elf.h (LINK_SPEC): Likewise.
+
+2009-12-21  Matthias Klose  <doko@ubuntu.com>
+
+	* config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=both.
+	
+---
+ gcc/config/alpha/linux-elf.h |    2 +-
+ gcc/config/i386/linux.h      |    2 +-
+ gcc/config/i386/linux64.h    |    2 +-
+ gcc/config/ia64/linux.h      |    2 +-
+ gcc/config/rs6000/linux64.h  |    4 ++--
+ gcc/config/rs6000/sysv4.h    |    2 +-
+ gcc/config/s390/linux.h      |    2 +-
+ gcc/config/sparc/linux.h     |    2 +-
+ 8 files changed, 9 insertions(+), 9 deletions(-)
+
+--- a/src/gcc/config/alpha/linux-elf.h
++++ b/src/gcc/config/alpha/linux-elf.h
+@@ -41,7 +41,7 @@
+ 
+ #define ELF_DYNAMIC_LINKER	LINUX_DYNAMIC_LINKER
+ 
+-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
++#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax}	\
+   %{O*:-O3} %{!O*:-O1}						\
+   %{shared:-shared}						\
+   %{!shared:							\
+--- a/src/gcc/config/i386/linux.h
++++ b/src/gcc/config/i386/linux.h
+@@ -104,7 +104,7 @@
+   { "dynamic_linker", LINUX_DYNAMIC_LINKER }
+ 
+ #undef	LINK_SPEC
+-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
++#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+--- a/src/gcc/config/i386/linux64.h
++++ b/src/gcc/config/i386/linux64.h
+@@ -78,7 +78,7 @@
+  %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
+ 
+ #undef	LINK_SPEC
+-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \
++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -64,7 +64,7 @@
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
+ 
+ #undef LINK_SPEC
+-#define LINK_SPEC "\
++#define LINK_SPEC " --hash-style=both \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+--- a/src/gcc/config/rs6000/linux64.h
++++ b/src/gcc/config/rs6000/linux64.h
+@@ -389,11 +389,11 @@
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+ 
+ 
+-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}"
+ 
+-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}"
+ 
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -830,7 +830,7 @@
+ #define LINUX_DYNAMIC_LINKER \
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ 
+-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " LINUX_DYNAMIC_LINKER "}}"
+ 
+--- a/src/gcc/config/s390/linux.h
++++ b/src/gcc/config/s390/linux.h
+@@ -77,7 +77,7 @@
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC \
+-  "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
++  "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \
+    %{shared:-shared} \
+    %{!shared: \
+       %{static:-static} \
+--- a/src/gcc/config/sparc/linux.h
++++ b/src/gcc/config/sparc/linux.h
+@@ -74,7 +74,7 @@
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
++#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \
+   %{!mno-relax:%{!r:-relax}} \
+   %{!shared: \
+     %{!static: \
+--- a/src/gcc/config/arm/linux-elf.h
++++ b/src/gcc/config/arm/linux-elf.h
+@@ -71,6 +71,7 @@
+    %{rdynamic:-export-dynamic} \
+    -dynamic-linker " LINUX_DYNAMIC_LINKER " \
+    -X \
++   --hash-style=both \
+    %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+    SUBTARGET_EXTRA_LINK_SPEC
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/alpha-ieee.diff
+++ gcc-4.6-4.6.3/debian/patches/alpha-ieee.diff
@@ -0,0 +1,21 @@
+# DP: #212912
+# DP: on alpha-linux, make -mieee default and add -mieee-disable switch
+# DP: to turn default off
+
+---
+ gcc/config/alpha/alpha.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+--- a/src/gcc/config/alpha/alpha.c
++++ b/src/gcc/config/alpha/alpha.c
+@@ -281,6 +281,10 @@ override_options (void)
+ 
+   int i;
+ 
++  /* If not -ffinite-math-only, enable -mieee*/
++  if (!flag_finite_math_only)
++    target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT;
++
+   /* Unicos/Mk doesn't have shared libraries.  */
+   if (TARGET_ABI_UNICOSMK && flag_pic)
+     {
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-powerpc-nof-trunk.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-powerpc-nof-trunk.diff
@@ -0,0 +1,22 @@
+# DP: Don't build nof multlib on powerpc.
+
+--- a/src/gcc/config/rs6000/t-linux64
++++ b/src/gcc/config/rs6000/t-linux64
+@@ -28,12 +28,11 @@
+ # it doesn't tell anything about the 32bit libraries on those systems.  Set
+ # MULTILIB_OSDIRNAMES according to what is found on the target.
+ 
+-MULTILIB_OPTIONS        = m64/m32 msoft-float
+-MULTILIB_DIRNAMES       = 64 32 nof
++MULTILIB_OPTIONS        = m64/m32
++MULTILIB_DIRNAMES       = 64 32
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+-MULTILIB_EXCEPTIONS     = m64/msoft-float
+-MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
++MULTILIB_EXCEPTIONS     =
++MULTILIB_EXCLUSIONS     =
+ MULTILIB_OSDIRNAMES	= ../lib64$(call if_multiarch,:powerpc64-linux-gnu)
+ MULTILIB_OSDIRNAMES    += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
+-MULTILIB_OSDIRNAMES    += nof
+-MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
++MULTILIB_MATCHES        =
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-ice-hack.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-ice-hack.diff
@@ -0,0 +1,311 @@
+# DP: Retry the build on an ice, save the calling options and preprocessed
+# DP: source when the ice is reproducible.
+
+2004-01-23  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.c (execute): Don't free first string early, but at the end
+	of the function.  Call retry_ice if compiler exited with
+	ICE_EXIT_CODE.
+	(retry_ice): New function.
+	* diagnostic.c (diagnostic_count_diagnostic,
+	diagnostic_action_after_output, error_recursion): Exit with
+	ICE_EXIT_CODE instead of FATAL_EXIT_CODE.
+
+#--- a/src/gcc/Makefile.in
+#+++ b/src/gcc/Makefile.in
+#@@ -181,6 +181,8 @@ SYSCALLS.c.X-warn = -Wno-strict-prototypes -Wno-error
+# dfp.o-warn = -Wno-error
+# # mips-tfile.c contains -Wcast-qual warnings.
+# mips-tfile.o-warn = -Wno-error
+#+# gcc-ice-hack
+#+gcc.o-warn = -Wno-error
+# 
+# # All warnings have to be shut off in stage1 if the compiler used then
+# # isn't gcc; configure determines that.  WARN_CFLAGS will be either
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -250,6 +250,9 @@
+ #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
+ static const char *convert_filename (const char *, int, int);
+ #endif
++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
++static void retry_ice (const char *prog, const char **argv);
++#endif
+ 
+ static const char *getenv_spec_function (int, const char **);
+ static const char *if_exists_spec_function (int, const char **);
+@@ -2639,7 +2642,7 @@
+ 	    }
+ 	}
+ 
+-      if (string != commands[i].prog)
++      if (i && string != commands[i].prog)
+ 	free (CONST_CAST (char *, string));
+     }
+ 
+@@ -2692,6 +2695,16 @@
+ 	else if (WIFEXITED (status)
+ 		 && WEXITSTATUS (status) >= MIN_FATAL_STATUS)
+ 	  {
++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
++	    /* For ICEs in cc1, cc1obj, cc1plus see if it is
++	       reproducible or not.  */
++	    const char *p;
++	    if (WEXITSTATUS (status) == ICE_EXIT_CODE
++		&& i == 0
++		&& (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
++		&& ! strncmp (p + 1, "cc1", 3))
++	      retry_ice (commands[0].prog, commands[0].argv);
++#endif
+ 	    if (WEXITSTATUS (status) > greatest_status)
+ 	      greatest_status = WEXITSTATUS (status);
+ 	    ret_code = -1;
+@@ -2749,6 +2762,9 @@
+ 	  }
+       }
+ 
++    if (commands[0].argv[0] != commands[0].prog)
++      free (CONST_CAST (char *, commands[0].argv[0]));
++
+     return ret_code;
+   }
+ }
+@@ -5886,6 +5902,227 @@
+   switches[switchnum].validated = 1;
+ }
+ 
++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
++#define RETRY_ICE_ATTEMPTS 2
++
++static void
++retry_ice (const char *prog, const char **argv)
++{
++  int nargs, out_arg = -1, quiet = 0, attempt;
++  int pid, retries, sleep_interval;
++  const char **new_argv;
++  char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2];
++
++  if (gcc_input_filename == NULL || ! strcmp (gcc_input_filename, "-"))
++    return;
++
++  for (nargs = 0; argv[nargs] != NULL; ++nargs)
++    /* Only retry compiler ICEs, not preprocessor ones.  */
++    if (! strcmp (argv[nargs], "-E"))
++      return;
++    else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o')
++      {
++	if (out_arg == -1)
++	  out_arg = nargs;
++	else
++	  return;
++      }
++    /* If the compiler is going to output any time information,
++       it might varry between invocations.  */
++    else if (! strcmp (argv[nargs], "-quiet"))
++      quiet = 1;
++    else if (! strcmp (argv[nargs], "-ftime-report"))
++      return;
++
++  if (out_arg == -1 || !quiet)
++    return;
++
++  memset (temp_filenames, '\0', sizeof (temp_filenames));
++  new_argv = XALLOCAVEC (const char *, nargs + 3);
++  memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *));
++  new_argv[nargs++] = "-frandom-seed=0";
++  new_argv[nargs] = NULL;
++  if (new_argv[out_arg][2] == '\0')
++    new_argv[out_arg + 1] = "-";
++  else
++    new_argv[out_arg] = "-o-";
++
++  for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt)
++    {
++      int fd = -1;
++      int status;
++
++      temp_filenames[attempt * 2] = make_temp_file (".out");
++      temp_filenames[attempt * 2 + 1] = make_temp_file (".err");
++
++      if (attempt == RETRY_ICE_ATTEMPTS)
++        {
++	  int i;
++	  int fd1, fd2;
++	  struct stat st1, st2;
++	  size_t n, len;
++	  char *buf;
++
++	  buf = XNEWVEC (char, 8192);
++
++	  for (i = 0; i < 2; ++i)
++	    {
++	      fd1 = open (temp_filenames[i], O_RDONLY);
++	      fd2 = open (temp_filenames[2 + i], O_RDONLY);
++
++	      if (fd1 < 0 || fd2 < 0)
++		{
++		  i = -1;
++		  close (fd1);
++		  close (fd2);
++		  break;
++		}
++
++	      if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0)
++		{
++		  i = -1;
++		  close (fd1);
++		  close (fd2);
++		  break;
++		}
++
++	      if (st1.st_size != st2.st_size)
++		{
++		  close (fd1);
++		  close (fd2);
++		  break;
++		}
++
++	      len = 0;
++	      for (n = st1.st_size; n; n -= len)
++		{
++		  len = n;
++		  if (len > 4096)
++		    len = 4096;
++
++		  if (read (fd1, buf, len) != (int) len
++		      || read (fd2, buf + 4096, len) != (int) len)
++		    {
++		      i = -1;
++		      break;
++		    }
++
++		  if (memcmp (buf, buf + 4096, len) != 0)
++		    break;
++		}
++
++	      close (fd1);
++	      close (fd2);
++
++	      if (n)
++		break;
++	    }
++
++	  free (buf);
++	  if (i == -1)
++	    break;
++
++	  if (i != 2)
++	    {
++	      fnotice (stderr, "The bug is not reproducible, so it is"
++			       " likely a hardware or OS problem.\n");
++	      break;
++	    }
++
++          fd = open (temp_filenames[attempt * 2], O_RDWR);
++	  if (fd < 0)
++	    break;
++	  write (fd, "//", 2);
++	  for (i = 0; i < nargs; i++)
++	    {
++	      write (fd, " ", 1);
++	      write (fd, new_argv[i], strlen (new_argv[i]));
++	    }
++	  write (fd, "\n", 1);
++	  new_argv[nargs] = "-E";
++	  new_argv[nargs + 1] = NULL;
++        }
++
++      /* Fork a subprocess; wait and retry if it fails.  */
++      sleep_interval = 1;
++      pid = -1;
++      for (retries = 0; retries < 4; retries++)
++	{
++	  pid = fork ();
++	  if (pid >= 0)
++	    break;
++	  sleep (sleep_interval);
++	  sleep_interval *= 2;
++	}
++
++      if (pid < 0)
++	break;
++      else if (pid == 0)
++	{
++	  if (attempt != RETRY_ICE_ATTEMPTS)
++	    fd = open (temp_filenames[attempt * 2], O_RDWR);
++	  if (fd < 0)
++	    exit (-1);
++	  if (fd != 1)
++	    {
++	      close (1);
++	      dup (fd);
++	      close (fd);
++	    }
++
++	  fd = open (temp_filenames[attempt * 2 + 1], O_RDWR);
++	  if (fd < 0)
++	    exit (-1);
++	  if (fd != 2)
++	    {
++	      close (2);
++	      dup (fd);
++	      close (fd);
++	    }
++
++	  if (prog == new_argv[0])
++	    execvp (prog, CONST_CAST2 (char *const *, const char **, new_argv));
++	  else
++	    execv (new_argv[0], CONST_CAST2 (char *const *, const char **, new_argv));
++	  exit (-1);
++	}
++
++      if (waitpid (pid, &status, 0) < 0)
++	break;
++
++      if (attempt < RETRY_ICE_ATTEMPTS
++	  && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE))
++	{
++	  fnotice (stderr, "The bug is not reproducible, so it is"
++			   " likely a hardware or OS problem.\n");
++	  break;
++	}
++      else if (attempt == RETRY_ICE_ATTEMPTS)
++	{
++	  close (fd);
++	  if (WIFEXITED (status)
++	      && WEXITSTATUS (status) == SUCCESS_EXIT_CODE)
++	    {
++	      fnotice (stderr, "Preprocessed source stored into %s file,"
++			       " please attach this to your bugreport.\n",
++		       temp_filenames[attempt * 2]);
++	      /* Make sure it is not deleted.  */
++	      free (temp_filenames[attempt * 2]);
++	      temp_filenames[attempt * 2] = NULL;
++	      break;
++	    }
++	}
++    }
++
++  for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++)
++    if (temp_filenames[attempt])
++      {
++	unlink (temp_filenames[attempt]);
++	free (temp_filenames[attempt]);
++      }
++}
++#endif
++
+ /* Search for a file named NAME trying various prefixes including the
+    user's -B prefix and some standard ones.
+    Return the absolute file name found.  If nothing is found, return NAME.  */
+--- a/src/gcc/diagnostic.c
++++ b/src/gcc/diagnostic.c
+@@ -247,7 +247,7 @@
+ 	real_abort ();
+       diagnostic_finish (context);
+       fnotice (stderr, "compilation terminated.\n");
+-      exit (FATAL_EXIT_CODE);
++      exit (ICE_EXIT_CODE);
+ 
+     default:
+       gcc_unreachable ();
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-powerpc-nof.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-powerpc-nof.diff
@@ -0,0 +1,23 @@
+# DP: Don't build nof multlib on powerpc.
+
+Index: b/src/gcc/config/rs6000/t-linux64
+===================================================================
+--- a/src/gcc/config/rs6000/t-linux64
++++ b/src/gcc/config/rs6000/t-linux64
+@@ -31,14 +31,11 @@
+ # it doesn't tell anything about the 32bit libraries on those systems.  Set
+ # MULTILIB_OSDIRNAMES according to what is found on the target.
+ 
+-MULTILIB_OPTIONS        = m64/m32 msoft-float
+-MULTILIB_DIRNAMES       = 64 32 nof
++MULTILIB_OPTIONS        = m64/m32
++MULTILIB_DIRNAMES       = 64 32
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+-MULTILIB_EXCEPTIONS     = m64/msoft-float
+-MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
+ MULTILIB_OSDIRNAMES	= ../lib64$(call if_multiarch,:powerpc64-linux-gnu)
+ MULTILIB_OSDIRNAMES    += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
+-MULTILIB_OSDIRNAMES    += nof
+ MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
+ 
+ softfp_wrap_start := '\#ifndef __powerpc64__'
--- gcc-4.6-4.6.3.orig/debian/patches/pr24619.diff
+++ gcc-4.6-4.6.3/debian/patches/pr24619.diff
@@ -0,0 +1,17 @@
+# DP: Proposed patch for PR mudflap/24619 (instrumentation of dlopen)
+
+--- a/src/libmudflap/mf-hooks2.c
++++ b/src/libmudflap/mf-hooks2.c
+@@ -1674,8 +1674,10 @@
+   size_t n;
+   TRACE ("%s\n", __PRETTY_FUNCTION__);
+   n = strlen (path);
+-  MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "dlopen path");
+-  p = dlopen (path, flags);
++  if (NULL != path) {
++    MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "dlopen path");
++    p = dlopen (path, flags);
++  }
+   if (NULL != p) {
+ #ifdef MF_REGISTER_dlopen
+     __mf_register (p, 0, MF_REGISTER_dlopen, "dlopen result");
--- gcc-4.6-4.6.3.orig/debian/patches/cross-biarch.diff
+++ gcc-4.6-4.6.3/debian/patches/cross-biarch.diff
@@ -0,0 +1,79 @@
+# DP: Fix the location of target's libs in cross-build for biarch
+
+---
+
+--- a/src/config-ml.in	2010-08-24 01:48:38.000000000 -0400
++++ b/src/config-ml.in	2010-08-24 03:56:12.000000000 -0400
+@@ -540,7 +540,12 @@
+ 	    else \
+ 	      if [ -d ../$${dir}/$${lib} ]; then \
+ 		flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
+-		if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
++		libsuffix_="$${dir}"; \
++		if [ "$${dir}" = "n32" ]; then libsuffix_=32; fi; \
++		if (cd ../$${dir}/$${lib}; $(MAKE) $(subst \
++				-B$(build_tooldir)/lib/, \
++				-B$(build_tooldir)/lib$${libsuffix_}/, \
++				$(FLAGS_TO_PASS)) \
+ 				CFLAGS="$(CFLAGS) $${flags}" \
+ 				CCASFLAGS="$(CCASFLAGS) $${flags}" \
+ 				FCFLAGS="$(FCFLAGS) $${flags}" \
+@@ -791,6 +796,13 @@
+ 	GCJ_=$GCJ' '
+ 	GFORTRAN_=$GFORTRAN' '
+     else
++	if [ "${ml_dir}" = "." ]; then
++		FILTER_="s!X\\(.*\\)!\\1!p"
++	elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32
++		FILTER_="s!X\\(.*\\)/!\\132/!p"
++	else
++		FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p"
++	fi
+ 	# Create a regular expression that matches any string as long
+ 	# as ML_POPDIR.
+ 	popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'`
+@@ -799,6 +811,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
++	  -B*/lib/)
++	    CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -811,6 +825,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -823,6 +839,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -835,6 +853,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -847,6 +867,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
--- gcc-4.6-4.6.3.orig/debian/patches/ada-link-lib.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-link-lib.diff
@@ -0,0 +1,1865 @@
+# DP: - Install the shared Ada libraries as '.so.1', not '.so' to conform
+# DP:   to the Debian policy.
+# DP: - Don't include a runtime link path (-rpath), when linking binaries.
+# DP: - Build the shared libraries on hppa-linux.
+# DP: - Instead of building libada as a target library only, build it as
+# DP:   both a host and, if different, target library.
+# DP: - Build the GNAT tools in their top-level directory; do not use
+# DP:   recursive makefiles.
+# DP: - Link the GNAT tools dynamically.
+# DP: - Fix a bug in src/gnattools/configure.ac whereby a nonexistent version
+# DP:   of indepsw's body was selected.  Regenerate configure. (PR ada/27300)
+
+# This patch seems large, but the hunks in Makefile.in are actually
+# generated from Makefile.def using autogen.
+
+Index: b/src/gcc/ada/gcc-interface/config-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/config-lang.in
++++ b/src/gcc/ada/gcc-interface/config-lang.in
+@@ -37,7 +37,7 @@
+ outputs="ada/gcc-interface/Makefile ada/Makefile"
+ 
+ target_libs="target-libada"
+-lang_dirs="gnattools"
++lang_dirs="libada gnattools"
+ 
+ # Ada is not enabled by default for the time being.
+ build_by_default=no
+Index: b/src/gcc/ada/link.c
+===================================================================
+--- a/src/gcc/ada/link.c
++++ b/src/gcc/ada/link.c
+@@ -189,9 +189,9 @@
+ 
+ #elif defined (__FreeBSD__)
+ const char *__gnat_object_file_option = "";
+-const char *__gnat_run_path_option = "-Wl,-rpath,";
+-char __gnat_shared_libgnat_default = STATIC;
+-char __gnat_shared_libgcc_default = STATIC;
++const char *__gnat_run_path_option = "";
++char __gnat_shared_libgnat_default = SHARED;
++char __gnat_shared_libgcc_default = SHARED;
+ int __gnat_link_max = 8192;
+ unsigned char __gnat_objlist_file_supported = 1;
+ unsigned char __gnat_using_gnu_linker = 1;
+@@ -213,9 +213,9 @@
+ 
+ #elif defined (linux) || defined(__GLIBC__)
+ const char *__gnat_object_file_option = "";
+-const char *__gnat_run_path_option = "-Wl,-rpath,";
+-char __gnat_shared_libgnat_default = STATIC;
+-char __gnat_shared_libgcc_default = STATIC;
++const char *__gnat_run_path_option = "";
++char __gnat_shared_libgnat_default = SHARED;
++char __gnat_shared_libgcc_default = SHARED;
+ int __gnat_link_max = 8192;
+ unsigned char __gnat_objlist_file_supported = 1;
+ unsigned char __gnat_using_gnu_linker = 1;
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -102,7 +102,7 @@
+ MAKEINFO = makeinfo
+ TEXI2DVI = texi2dvi
+ TEXI2PDF = texi2pdf
+-GNATBIND_FLAGS = -static -x
++GNATBIND_FLAGS = -shared -x
+ ADA_CFLAGS =
+ ADAFLAGS = -W -Wall -gnatpg -gnata
+ SOME_ADAFLAGS =-gnata
+@@ -241,7 +241,6 @@
+ LIBDEPS = $(LIBINTL_DEP) $(LIBIBERTY)
+ # Default is no TGT_LIB; one might be passed down or something
+ TGT_LIB =
+-TOOLS_LIBS = $(EXTRA_GNATTOOLS_OBJS) targext.o link.o $(LIBGNAT) ../../../libiberty/libiberty.a $(SYSLIBS) $(TGT_LIB)
+ 
+ # Specify the directories to be searched for header files.
+ # Both . and srcdir are used, in that order,
+@@ -287,30 +286,6 @@
+ # defined in this file into the environment.
+ .NOEXPORT:
+ 
+-# Lists of files for various purposes.
+-
+-GNATLINK_OBJS = gnatlink.o \
+- a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \
+- gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \
+- osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
+- sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \
+- types.o validsw.o widechar.o
+-
+-GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o \
+- alloc.o atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o\
+- erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \
+- gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \
+- make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \
+- mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o \
+- output.o prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o \
+- prj-conf.o prj-pp.o \
+- prj-err.o prj-ext.o prj-nmsc.o prj-pars.o prj-part.o prj-proc.o prj-strt.o \
+- prj-tree.o prj-util.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
+- scans.o scng.o sdefault.o sfn_scan.o s-purexc.o s-htable.o sinfo.o sinput.o \
+- sinput-c.o sinput-p.o snames.o stand.o stringt.o styleg.o stylesw.o system.o \
+- validsw.o switch.o switch-m.o table.o targparm.o tempdir.o tree_io.o types.o \
+- uintp.o uname.o urealp.o usage.o widechar.o scil_ll.o \
+- $(EXTRA_GNATMAKE_OBJS)
+ 
+ # Convert the target variable into a space separated list of architecture,
+ # manufacturer, and operating system and assign each of those to its own
+@@ -1281,6 +1256,11 @@
+   GMEM_LIB = gmemlib
+ endif
+ 
++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),)
++  GNATLIB_SHARED = gnatlib-shared-dual
++  LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
+ ifeq ($(strip $(filter-out hppa% hp hpux10%,$(targ))),)
+   LIBGNAT_TARGET_PAIRS = \
+   a-excpol.adb<a-excpol-abort.adb \
+@@ -2254,96 +2234,6 @@
+  a-[a-o]*.adb a-[p-z]*.adb a-[a-o]*.ads a-[p-z]*.ads g-*.ad? i-*.ad? \
+  s-[a-o]*.adb s-[p-z]*.adb s-[a-o]*.ads s-[p-z]*.ads
+ 
+-LIBGNAT=../$(RTSDIR)/libgnat.a
+-
+-GCC_LINK=$(CC) $(GCC_LINK_FLAGS) $(ADA_INCLUDES)
+-
+-# when compiling the tools, the runtime has to be first on the path so that
+-# it hides the runtime files lying with the rest of the sources
+-ifeq ($(TOOLSCASE),native)
+-  vpath %.ads ../$(RTSDIR) ../
+-  vpath %.adb ../$(RTSDIR) ../
+-  vpath %.c   ../$(RTSDIR) ../
+-  vpath %.h   ../$(RTSDIR) ../
+-endif
+-
+-# in the cross tools case, everything is compiled with the native
+-# gnatmake/link. Therefore only -I needs to be modified in ADA_INCLUDES
+-ifeq ($(TOOLSCASE),cross)
+-  vpath %.ads ../
+-  vpath %.adb ../
+-  vpath %.c   ../
+-  vpath %.h   ../
+-endif
+-
+-common-tools:
+-	$(GNATMAKE) -c -b $(ADA_INCLUDES) \
+-	  --GNATBIND="$(GNATBIND)" --GCC="$(CC) $(ALL_ADAFLAGS)" \
+-	  gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
+-	  gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
+-	$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-
+-../../gnatsym$(exeext): 
+-	$(GNATMAKE) -c $(ADA_INCLUDES) gnatsym --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatsym
+-	$(GNATLINK) -v gnatsym -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-
+-../../gnatdll$(exeext): 
+-	$(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatdll
+-	$(GNATLINK) -v gnatdll -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-
+-../../vxaddr2line$(exeext): targext.o
+-	$(GNATMAKE) -c  $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line
+-	$(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" targext.o $(CLIB)
+-
+-gnatmake-re:  link.o targext.o
+-	$(GNATMAKE) $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)"
+-	$(GNATMAKE) -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
+-	$(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-
+-# Note the use of the "mv" command in order to allow gnatlink to be linked with
+-# with the former version of gnatlink itself which cannot override itself.
+-gnatlink-re:  link.o targext.o
+-	$(GNATMAKE) -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
+-	$(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
+-		    --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(MV)  ../../gnatlinknew$(exeext)  ../../gnatlink$(exeext)
+-
+-# Needs to be built with CC=gcc
+-# Since the RTL should be built with the latest compiler, remove the
+-#  stamp target in the parent directory whenever gnat1 is rebuilt
+-
+-# Likewise for the tools
+-../../gnatmake$(exeext): $(P) b_gnatm.o link.o targext.o $(GNATMAKE_OBJS)
+-	$(GCC_LINK) $(ALL_CFLAGS) $(LDFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) \
+-		    $(TOOLS_LIBS)
+-
+-../../gnatlink$(exeext): $(P) b_gnatl.o link.o targext.o $(GNATLINK_OBJS)
+-	$(GCC_LINK) $(ALL_CFLAGS) $(LDFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) \
+-		    $(TOOLS_LIBS)
+-
+ ../stamp-gnatlib-$(RTSDIR):
+ 	@if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \
+ 	then \
+@@ -2381,13 +2271,9 @@
+ #     contain the debug information for the shared libraries on darwin)
+ 	for file in gnat gnarl; do \
+ 	   if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \
+-	      $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
++	      $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 			 $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+ 	   fi; \
+-	   if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \
+-	      $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-	      $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \
+-	   fi; \
+ 	   if [ -d $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \
+ 	      $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \
+ 	        $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+@@ -2400,18 +2286,6 @@
+ 	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb
+ 	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads
+ 
+-../stamp-gnatlib2-$(RTSDIR):
+-	$(RM) $(RTSDIR)/s-*.ali
+-	$(RM) $(RTSDIR)/s-*$(objext)
+-	$(RM) $(RTSDIR)/a-*.ali
+-	$(RM) $(RTSDIR)/a-*$(objext)
+-	$(RM) $(RTSDIR)/*.ali
+-	$(RM) $(RTSDIR)/*$(objext)
+-	$(RM) $(RTSDIR)/*$(arext)
+-	$(RM) $(RTSDIR)/*$(soext)
+-	touch ../stamp-gnatlib2-$(RTSDIR)
+-	$(RM) ../stamp-gnatlib-$(RTSDIR)
+-
+ # NOTE: The $(foreach ...) commands assume ";" is the valid separator between
+ #       successive target commands. Although the Gnu make documentation
+ #       implies this is true on all systems, I suspect it may not be, So care
+@@ -2421,7 +2295,7 @@
+ 
+ # GNULLI Begin ###########################################################
+ 
+-../stamp-gnatlib1-$(RTSDIR): Makefile ../stamp-gnatlib2-$(RTSDIR)
++../stamp-gnatlib1-$(RTSDIR): Makefile
+ 	$(RMDIR) $(RTSDIR)
+ 	$(MKDIR) $(RTSDIR)
+ 	$(CHMOD) u+w $(RTSDIR)
+@@ -2486,7 +2360,7 @@
+ # Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS)
+ # is guaranteed to overflow the buffer.
+ 
+-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads
++gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads
+ 	$(MAKE) -C $(RTSDIR) \
+ 		CC="`echo \"$(GCC_FOR_TARGET)\" \
+ 		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
+@@ -2520,36 +2394,49 @@
+ 		  $(RTSDIR)/memtrack.o
+ 		$(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext)
+         endif
+-	$(CHMOD) a-wx $(RTSDIR)/*.ali
+ 	touch ../stamp-gnatlib-$(RTSDIR)
+ 
+ # Warning: this target assumes that LIBRARY_VERSION has been set correctly.
+-gnatlib-shared-default:
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(RM) $(RTSDIR)/libgna*$(soext)
++gnatlib-shared-default: ../stamp-gnatlib1-$(RTSDIR)
++	$(MAKE) -C $(RTSDIR) \
++		CC="`echo \"$(GCC_FOR_TARGET)\" \
++		| sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
++	        INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
++                CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
++		srcdir=$(fsrcdir) \
++	        -f ../Makefile $(LIBGNAT_OBJS)
++	$(MAKE) -C $(RTSDIR) \
++		CC="`echo \"$(GCC_FOR_TARGET)\" \
++		| sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
++	        ADA_INCLUDES="" \
++                CFLAGS="$(GNATLIBCFLAGS) $(GNATLIBCFLAGS_FOR_C) $(TARGET_LIBGCC2_CFLAGS)" \
++	        ADAFLAGS="$(GNATLIBFLAGS)" \
++	        THREAD_KIND="$(THREAD_KIND)" \
++		srcdir=$(fsrcdir) \
++	        -f ../Makefile \
++	        $(GNATRTL_OBJS)
++	$(RM) $(RTSDIR)/libgna*$(soext) $(RTSDIR)/libgna*$(soext).1
+ 	cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
+ 		$(TARGET_LIBGCC2_CFLAGS) \
+-		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
++		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
+ 		g-trasym.o convert_addresses.o \
+-		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
++		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 		$(MISCLIB) -lm
+ 	cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
+ 		$(TARGET_LIBGCC2_CFLAGS) \
+-		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
++		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 		$(GNATRTL_TASKING_OBJS) \
+-		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
++		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 		$(THREADSLIB)
+-	cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		libgnat$(soext)
+-	cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		libgnarl$(soext)
++	cd $(RTSDIR); for lib in gnat gnarl; do \
++		l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \
++		$(LN_S) $$l.1 $$l; \
++	done
++# Delete the object files, lest they be linked statically into the tools
++# executables.  Only the .ali, .a and .so files must remain.
++	rm -f $(RTSDIR)/*.o
++	$(CHMOD) a-wx $(RTSDIR)/*.ali
+ 
+ gnatlib-shared-dual:
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+@@ -2558,36 +2445,32 @@
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib-shared-default
+-	$(MV) $(RTSDIR)/libgna*$(soext) .
+-	$(RM) ../stamp-gnatlib2-$(RTSDIR)
++             gnatlib
++	$(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(MV) libgna*$(soext) $(RTSDIR)
++             gnatlib-shared-default
+ 
+ gnatlib-shared-dual-win32:
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
++	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib-shared-win32
+-	$(MV) $(RTSDIR)/libgna*$(soext) .
+-	$(RM) ../stamp-gnatlib2-$(RTSDIR)
++             gnatlib
++	$(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
++	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(MV) libgna*$(soext) $(RTSDIR)
++             gnatlib-shared-win32
+ 
+ # ??? we need to add the option to support auto-import of arrays/records to
+ # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will
+@@ -2713,22 +2596,6 @@
+ gnat-cross: force
+ 	make $(GNAT1_ADA_OBJS) CC="gcc -B../stage1/" CFLAGS="-S -gnatp"
+ 
+-# Compiling object files from source files.
+-
+-# Note that dependencies on obstack.h are not written
+-# because that file is not part of GCC.
+-# Dependencies on gvarargs.h are not written
+-# because all that file does, when not compiling with GCC,
+-# is include the system varargs.h.
+-
+-b_gnatl.c : $(GNATLINK_OBJS)
+-	$(GNATBIND) -C $(ADA_INCLUDES) -o b_gnatl.c gnatlink.ali
+-b_gnatl.o : b_gnatl.c
+-
+-b_gnatm.c : $(GNATMAKE_OBJS)
+-	$(GNATBIND) -C $(ADA_INCLUDES) -o b_gnatm.c gnatmake.ali
+-b_gnatm.o : b_gnatm.c
+-
+ ADA_INCLUDE_DIR = $(libsubdir)/adainclude
+ ADA_RTL_OBJ_DIR = $(libsubdir)/adalib
+ 
+Index: b/src/gnattools/Makefile.in
+===================================================================
+--- a/src/gnattools/Makefile.in
++++ b/src/gnattools/Makefile.in
+@@ -18,6 +18,10 @@
+ # Default target; must be first.
+ all: gnattools
+ 
++.NOTPARALLEL: # don't run multiple gnatmakes in parallel in the same directory
++
++.SUFFIXES:
++
+ # Standard autoconf-set variables.
+ SHELL = @SHELL@
+ srcdir = @srcdir@
+@@ -33,102 +37,16 @@
+ LN_S=@LN_S@
+ target_noncanonical=@target_noncanonical@
+ 
+-# Variables for the user (or the top level) to override.
+-exeext = @EXEEXT@
+-objext=.o
+-TRACE=no
+-ADA_FOR_BUILD=
+-ADA_FOR_TARGET=
+-LDFLAGS=
+-PWD_COMMAND = $${PWDCMD-pwd}
+-
+-# The tedious process of getting CFLAGS right.
+-CFLAGS=-g
+-LOOSE_WARN = -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
+-GCC_WARN_CFLAGS = $(LOOSE_WARN)
+-WARN_CFLAGS = @warn_cflags@
+-
+-ADA_CFLAGS=@ADA_CFLAGS@
+-
+-# Variables for gnattools.
+-ADAFLAGS= -gnatpg -gnata
+-
+-# For finding the GCC build dir, which is used far too much
+-GCC_DIR=../gcc
+-
+-# Absolute srcdir for gcc (why do we want absolute?  I dunno)
+-fsrcdir := $(shell cd $(srcdir)/../gcc/; ${PWD_COMMAND})
+-
+-# Useful "subroutines" for the excess includes
+-INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir)/ada -I$(fsrcdir)/config \
+-	-I$(fsrcdir)/../include -I$(fsrcdir)
+-ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir)/ada
+-
+-# Variables for gnattools1, native
+-TOOLS_FLAGS_TO_PASS_1= \
+-	"CC=../../xgcc -B../../" \
+-	"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
+-	"LDFLAGS=$(LDFLAGS)" \
+-	"ADAFLAGS=$(ADAFLAGS)" \
+-	"ADA_CFLAGS=$(ADA_CFLAGS)" \
+-	"INCLUDES=$(INCLUDES_FOR_SUBDIR)" \
+-	"ADA_INCLUDES=-I- -I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\
+-	"exeext=$(exeext)" \
+-	"fsrcdir=$(fsrcdir)" \
+-	"srcdir=$(fsrcdir)" \
+-	"GNATBIND=../../gnatbind" \
+-	"TOOLSCASE=native"
+-
+-# Variables for regnattools
+-TOOLS_FLAGS_TO_PASS_1re= \
+-	"CC=../../xgcc -B../../" \
+-	"CFLAGS=$(CFLAGS)" \
+-	"ADAFLAGS=$(ADAFLAGS)" \
+-	"ADA_CFLAGS=$(ADA_CFLAGS)" \
+-	"INCLUDES=$(INCLUDES_FOR_SUBDIR)" \
+-	"ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\
+-	"exeext=$(exeext)" \
+-	"fsrcdir=$(fsrcdir)" \
+-	"srcdir=$(fsrcdir)" \
+-	"GNATMAKE=../../gnatmake" \
+-	"GNATLINK=../../gnatlink" \
+-	"GNATBIND=../../gnatbind" \
+-	"TOOLSCASE=cross" \
+-	"INCLUDES="
+-
+-# Variables for gnattools2, native
+-TOOLS_FLAGS_TO_PASS_NATIVE= \
+-	"CC=../../xgcc -B../../" \
+-	"CFLAGS=$(CFLAGS)" \
+-	"ADAFLAGS=$(ADAFLAGS)" \
+-	"ADA_CFLAGS=$(ADA_CFLAGS)" \
+-	"INCLUDES=$(INCLUDES_FOR_SUBDIR)" \
+-	"ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)" \
+-	"exeext=$(exeext)" \
+-	"fsrcdir=$(fsrcdir)" \
+-	"srcdir=$(fsrcdir)" \
+-	"GNATMAKE=../../gnatmake" \
+-	"GNATLINK=../../gnatlink" \
+-	"GNATBIND=../../gnatbind" \
+-	"TOOLSCASE=native"
+-
+-# Variables for gnattools, cross
+-TOOLS_FLAGS_TO_PASS_CROSS= \
+-	"CC=$(CC)" \
+-	"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
+-	"LDFLAGS=$(LDFLAGS)" \
+-	"ADAFLAGS=$(ADAFLAGS)"	\
+-	"ADA_CFLAGS=$(ADA_CFLAGS)" \
+-	"INCLUDES=$(INCLUDES_FOR_SUBDIR)" \
+-	"ADA_INCLUDES=-I$(RTS_DIR)../adainclude -I$(RTS_DIR) $(ADA_INCLUDES_FOR_SUBDIR)" \
+-	"exeext=$(exeext)" \
+-	"fsrcdir=$(fsrcdir)" \
+-	"srcdir=$(fsrcdir)" \
+-	"GNATMAKE=gnatmake" \
+-	"GNATLINK=gnatlink" \
+-	"GNATBIND=gnatbind" \
+-	"TOOLSCASE=cross" \
+-	"LIBGNAT="
++CFLAGS=-O2 -Wall
++INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc
++ADA_CFLAGS=-O2 -gnatn
++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I@srcdir@/../gcc/ada
++LIB_VERSION=$(strip $(shell grep ' Library_Version :' \
++              @srcdir@/../gcc/ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
++ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION)
++
++# We will use the just-built compiler to compile and link everything.
++GCC=../gcc/xgcc -B../gcc/
+ 
+ # File lists
+ # ----------
+@@ -137,121 +55,236 @@
+ EXTRA_GNATTOOLS = @EXTRA_GNATTOOLS@
+ TOOLS_TARGET_PAIRS = @TOOLS_TARGET_PAIRS@
+ 
++# Stage 1 builds xgcc and gnatbind; we can use them to build
++# gnatmake-static and gnatlink-static, then use gnatmake-static and
++# gnatlink-static to build the other tools.  The reason we first build
++# statically-linked versions of gnatmake and gnatlink is so we can run
++# them with confidence on all build platforms, without LD_LIBRARY_PATH
++# or some such variable.
++
++# The tools we will build using gnatmake-static and gnatlink-static.
++TOOLS := gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatls gnatlink
++TOOLS += gnatmake gnatname gnatprep gnatxref
++
++# Since we don't have gnatmake, we must specify the full list of
++# object files necessary to build gnatmake and gnatlink.
++# TODO: remove from these lists the objects that are part of
++# libgnatvsn and libgnatprj.
++GNATLINK_OBJS = \
++ali.o \
++alloc.o \
++butil.o \
++casing.o \
++csets.o \
++debug.o \
++fmap.o \
++fname.o \
++gnatlink.o \
++gnatvsn.o \
++hostparm.o \
++indepsw.o \
++namet.o \
++opt.o \
++osint.o \
++output.o \
++prefix.o \
++rident.o \
++sdefault.o \
++snames.o \
++stylesw.o \
++switch.o \
++table.o \
++targparm.o \
++tree_io.o \
++types.o \
++validsw.o \
++version.o \
++widechar.o
++
++GNATMAKE_OBJS = \
++ali-util.o \
++ali.o \
++alloc.o \
++atree.o \
++binderr.o \
++butil.o \
++casing.o \
++csets.o \
++debug.o \
++einfo.o\
++elists.o \
++err_vars.o \
++erroutc.o \
++errutil.o \
++fmap.o \
++fname-sf.o \
++fname-uf.o \
++fname.o \
++gnatmake.o \
++gnatvsn.o \
++hostparm.o \
++krunch.o \
++lib.o \
++make.o \
++makeusg.o \
++makeutl.o \
++mlib-fil.o \
++mlib-prj.o \
++mlib-tgt.o \
++mlib-tgt-specific.o \
++mlib-utl.o \
++mlib.o \
++namet.o \
++nlists.o \
++opt.o \
++osint-m.o \
++osint.o \
++output.o \
++prefix.o \
++prj-attr-pm.o \
++prj-attr.o \
++prj-com.o \
++prj-dect.o \
++prj-env.o \
++prj-err.o \
++prj-ext.o \
++prj-nmsc.o \
++prj-pars.o \
++prj-part.o \
++prj-proc.o \
++prj-strt.o \
++prj-tree.o \
++prj-util.o \
++prj.o \
++rident.o \
++scans.o \
++scng.o \
++sdefault.o \
++sfn_scan.o \
++sinfo.o \
++sinput-c.o \
++sinput-p.o \
++sinput.o \
++snames.o \
++stand.o \
++stringt.o \
++styleg.o \
++stylesw.o \
++switch-m.o \
++switch.o \
++table.o \
++targparm.o \
++tempdir.o \
++tree_io.o \
++types.o \
++uintp.o \
++uname.o \
++urealp.o \
++usage.o \
++validsw.o \
++version.o \
++widechar.o \
++$(EXTRA_GNATMAKE_OBJS)
++
+ # Makefile targets
+ # ----------------
+ 
+ .PHONY: gnattools gnattools-native gnattools-cross regnattools
+ gnattools: @default_gnattools_target@
+ 
+-# Sanity check
+-$(GCC_DIR)/stamp-gnatlib-rts:
+-	@if [ ! -f $(GCC_DIR)/stamp-gnatlib-rts ] ; \
+-        then \
+-          echo "Cannot build gnattools while gnatlib is out of date or unbuilt" ; \
+-          false; \
+-        else \
+-          true; \
+-        fi
+-
+-
+ # Build directory for the tools. Let's copy the target-dependent
+ # sources using the same mechanism as for gnatlib. The other sources are
+-# accessed using the vpath directive in ada/Makefile.in
++# accessed using the vpath directive.
++
++stamp-gnattools-sources:
++	$(LN_S) ../gcc/ada/sdefault.adb .
++	$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
++	          rm -f $(word 1,$(subst <, ,$(PAIR)));\
++	          $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \
++	                  $(word 1,$(subst <, ,$(PAIR)));)
++	touch $@
++
++gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so
++gnattools-native: stamp-gnattools-sources
++gnattools-native: $(TOOLS)
++
++$(TOOLS) gnatcmd: | gnatmake-static gnatlink-static
++
++vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc
++vpath %.h @srcdir@/../gcc/ada
++vpath %.adb .:@srcdir@/../gcc/ada
++vpath %.ads @srcdir@/../gcc/ada
++
++# Because the just-built gcc is a host tool like us, we can use some
++# of its object files, e.g. prefix.o and version.o.
++vpath prefix.o ../gcc
++vpath version.o ../gcc
++
++# gnatlink
++
++gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o
++	$(GCC) -o $@ $^ \
++	   ../gcc/ada/rts/libgnat.a \
++	   ../libiberty/libiberty.a
++
++gnatlink: $(GNATLINK_OBJS) b_gnatl.o link.o
++	$(GCC) -o $@ $^ $(ADA_LIBS) ../libiberty/libiberty.a
++
++b_gnatl.o: b_gnatl.c adaint.h
++	$(GCC) -c -o $@ $(CFLAGS) $<
++
++b_gnatl.c: $(GNATLINK_OBJS)
++	../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatlink.ali
++
++# gnatmake
++
++gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o
++	$(GCC) -o $@ $(ADA_CFLAGS) $^ \
++	   ../gcc/ada/rts/libgnat.a \
++	   ../libiberty/libiberty.a
++
++gnatmake: $(GNATMAKE_OBJS) b_gnatm.o link.o
++	$(GCC) -o $@ $(ADA_CFLAGS) $^ $(ADA_LIBS) ../libiberty/libiberty.a
++
++b_gnatm.o: b_gnatm.c adaint.h
++	$(GCC) -c -o $@ $(CFLAGS) $<
++
++b_gnatm.c: $(GNATMAKE_OBJS) adaint.h
++	../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali
++
++# Other tools
++gnatkr: version.o
++	./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \
++	   --GCC="$(GCC)" \
++	   --GNATBIND=../gcc/gnatbind
++	./gnatlink-static -o $@ $@.ali $^ $(ADA_INCLUDES) $(ADA_LIBS) \
++	   --GCC="$(GCC) $(ADA_INCLUDES)"
++
++gnat: gnatcmd
++	cp -lp $< $@
++
++gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref: \
++link.o version.o prefix.o
++	./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \
++	   --GCC="$(GCC)" \
++	   --GNATBIND=../gcc/gnatbind
++	./gnatlink-static -o $@ $@.ali $^ $(ADA_INCLUDES) $(ADA_LIBS) \
++	   ../libiberty/libiberty.a \
++	   --GCC="$(GCC) $(ADA_INCLUDES)"
++
++# Force compiling sdefault.adb, not .ads, to produce sdefault.o
++sdefault.o: sdefault.adb
++
++sdefault.adb: stamp-gnattools-sources
++
++%.o: %.adb
++	$(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES)
++
++%.o: %.ads
++	$(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES)
+ 
+-$(GCC_DIR)/stamp-tools:
+-	-rm -rf $(GCC_DIR)/ada/tools
+-	-mkdir -p $(GCC_DIR)/ada/tools
+-	-(cd $(GCC_DIR)/ada/tools; $(LN_S) ../sdefault.adb ../snames.ads ../snames.adb .)
+-	-$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
+-	          rm -f $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));\
+-	          $(LN_S) $(fsrcdir)/ada/$(word 2,$(subst <, ,$(PAIR))) \
+-	                $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));)
+-	touch $(GCC_DIR)/stamp-tools
+-
+-# gnatmake/link tools cannot always be built with gnatmake/link for bootstrap 
+-# reasons: gnatmake should be built with a recent compiler, a recent compiler
+-# may not generate ALI files compatible with an old gnatmake so it is important
+-# to be able to build gnatmake without a version of gnatmake around. Once 
+-# everything has been compiled once, gnatmake can be recompiled with itself 
+-# (see target regnattools) 
+-gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts
+-	# gnattools1
+-	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
+-	  $(TOOLS_FLAGS_TO_PASS_1) \
+-	  ../../gnatmake$(exeext) ../../gnatlink$(exeext)
+-	# gnattools2
+-	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
+-	  $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools
+-
+-# gnatmake/link can be built with recent gnatmake/link if they are available.
+-# This is especially convenient for building cross tools or for rebuilding
+-# the tools when the original bootstrap has already be done.
+-regnattools: $(GCC_DIR)/stamp-gnatlib-rts
+-	# gnattools1-re
+-	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
+-	  $(TOOLS_FLAGS_TO_PASS_1re) \
+-	  gnatmake-re gnatlink-re
+-	# gnattools2
+-	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
+-	  $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools
+-
+-# For cross builds of gnattools,
+-# put the host RTS dir first in the PATH to hide the default runtime
+-# files that are among the sources
+-# FIXME: This should be done in configure.
+-RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib )))
+-gnattools-cross: $(GCC_DIR)/stamp-tools
+-	# gnattools1-re
+-	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
+-	  $(TOOLS_FLAGS_TO_PASS_CROSS) INCLUDES="" \
+-	  gnatmake-re gnatlink-re
+-	# gnattools2
+-	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
+-	  $(TOOLS_FLAGS_TO_PASS_CROSS) common-tools
+-	# Rename cross tools to where the GCC makefile wants them when
+-	# installing.  FIXME: installation should be done elsewhere.
+-	if [ -f $(GCC_DIR)/gnatbind$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatbind$(exeext) $(GCC_DIR)/gnatbind-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatchop$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatchop$(exeext) $(GCC_DIR)/gnatchop-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnat$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnat$(exeext) $(GCC_DIR)/gnat-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatkr$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatkr$(exeext) $(GCC_DIR)/gnatkr-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatlink$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatlink$(exeext) $(GCC_DIR)/gnatlink-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatls$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatls$(exeext) $(GCC_DIR)/gnatls-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatmake$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatmake$(exeext) $(GCC_DIR)/gnatmake-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatmem$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatmem$(exeext) $(GCC_DIR)/gnatmem-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatname$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatname$(exeext) $(GCC_DIR)/gnatname-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatprep$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatprep$(exeext) $(GCC_DIR)/gnatprep-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatxref$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatxref$(exeext) $(GCC_DIR)/gnatxref-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatfind$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatfind$(exeext) $(GCC_DIR)/gnatfind-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatclean$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatclean$(exeext) $(GCC_DIR)/gnatclean-cross$(exeext); \
+-	fi
+-	if [ -f $(GCC_DIR)/gnatsym$(exeext) ] ; then \
+-	  mv $(GCC_DIR)/gnatsym$(exeext) $(GCC_DIR)/gnatsym-cross$(exeext); \
+-	fi
++%.o: %.c
++	$(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES)
+ 
+ # Other
+ # -----
+@@ -281,6 +314,7 @@
+ 
+ # Installation rules.
+ install:
++	$(INSTALL) -s gnatmake gnatlink $(TOOLS) $(DESTDIR)$(bindir)
+ 
+ install-strip: install
+ 
+@@ -294,8 +328,10 @@
+ 
+ # Cleaning rules.
+ mostlyclean:
++	$(RM) gnatmake gnatlink $(TOOLS) *.o *.ali
+ 
+ clean:
++	$(RM) *.ads *.adb stamp-gnattools-sources
+ 
+ distclean:
+ 	$(RM) Makefile config.status config.log
+Index: b/src/libada/Makefile.in
+===================================================================
+--- a/src/libada/Makefile.in
++++ b/src/libada/Makefile.in
+@@ -63,7 +63,7 @@
+ 
+ # Get target-specific overrides for TARGET_LIBGCC2_CFLAGS.
+ host_subdir = @host_subdir@
+-GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc
++GCC_DIR=$(MULTIBUILDTOP)../$(host_subdir)/gcc
+ include $(GCC_DIR)/libgcc.mvars
+ 
+ target_noncanonical:=@target_noncanonical@
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -144,7 +144,20 @@
+                 missing=distclean;
+                 missing=maintainer-clean; };
+ host_modules= { module= utils; no_check=true; };
+-host_modules= { module= gnattools; };
++host_modules= { module= libada; no_install=true; no_check=true;
++		missing= info;
++		missing= dvi;
++		missing= html;
++		missing= TAGS;
++		missing= install-info;
++		missing= installcheck; };
++host_modules= { module= gnattools; no_check=true;
++		missing= info;
++		missing= dvi;
++		missing= html;
++		missing= TAGS;
++		missing= install-info;
++		missing= installcheck; };
+ host_modules= { module= lto-plugin; bootstrap=true;
+ 		extra_configure_flags=--enable-shared; };
+ 
+@@ -175,7 +188,13 @@
+ target_modules = { module= boehm-gc; };
+ target_modules = { module= qthreads; };
+ target_modules = { module= rda; };
+-target_modules = { module= libada; };
++target_modules = { module= libada; no_install=true; no_check=true;
++		   missing= info;
++		   missing= dvi;
++		   missing= html;
++		   missing= TAGS;
++		   missing= install-info;
++		   missing= installcheck; };
+ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
+ 
+ // These are (some of) the make targets to be done in each subdirectory.
+@@ -362,7 +381,7 @@
+ 
+ dependencies = { module=all-fixincludes; on=all-libiberty; };
+ 
+-dependencies = { module=all-gnattools; on=all-target-libada; };
++dependencies = { module=all-gnattools; on=all-libada; };
+ 
+ dependencies = { module=all-lto-plugin; on=all-libiberty; };
+ 
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -950,6 +950,7 @@
+     maybe-configure-tk \
+     maybe-configure-libtermcap \
+     maybe-configure-utils \
++    maybe-configure-libada \
+     maybe-configure-gnattools \
+     maybe-configure-lto-plugin
+ .PHONY: configure-target
+@@ -1126,6 +1127,7 @@
+ all-host: maybe-all-tk
+ all-host: maybe-all-libtermcap
+ all-host: maybe-all-utils
++all-host: maybe-all-libada
+ all-host: maybe-all-gnattools
+ @if lto-plugin-no-bootstrap
+ all-host: maybe-all-lto-plugin
+@@ -1254,6 +1256,7 @@
+ info-host: maybe-info-tk
+ info-host: maybe-info-libtermcap
+ info-host: maybe-info-utils
++info-host: maybe-info-libada
+ info-host: maybe-info-gnattools
+ info-host: maybe-info-lto-plugin
+ 
+@@ -1369,6 +1372,7 @@
+ dvi-host: maybe-dvi-tk
+ dvi-host: maybe-dvi-libtermcap
+ dvi-host: maybe-dvi-utils
++dvi-host: maybe-dvi-libada
+ dvi-host: maybe-dvi-gnattools
+ dvi-host: maybe-dvi-lto-plugin
+ 
+@@ -1484,6 +1488,7 @@
+ pdf-host: maybe-pdf-tk
+ pdf-host: maybe-pdf-libtermcap
+ pdf-host: maybe-pdf-utils
++pdf-host: maybe-pdf-libada
+ pdf-host: maybe-pdf-gnattools
+ pdf-host: maybe-pdf-lto-plugin
+ 
+@@ -1599,6 +1604,7 @@
+ html-host: maybe-html-tk
+ html-host: maybe-html-libtermcap
+ html-host: maybe-html-utils
++html-host: maybe-html-libada
+ html-host: maybe-html-gnattools
+ html-host: maybe-html-lto-plugin
+ 
+@@ -1714,6 +1720,7 @@
+ TAGS-host: maybe-TAGS-tk
+ TAGS-host: maybe-TAGS-libtermcap
+ TAGS-host: maybe-TAGS-utils
++TAGS-host: maybe-TAGS-libada
+ TAGS-host: maybe-TAGS-gnattools
+ TAGS-host: maybe-TAGS-lto-plugin
+ 
+@@ -1829,6 +1836,7 @@
+ install-info-host: maybe-install-info-tk
+ install-info-host: maybe-install-info-libtermcap
+ install-info-host: maybe-install-info-utils
++install-info-host: maybe-install-info-libada
+ install-info-host: maybe-install-info-gnattools
+ install-info-host: maybe-install-info-lto-plugin
+ 
+@@ -1944,6 +1952,7 @@
+ install-pdf-host: maybe-install-pdf-tk
+ install-pdf-host: maybe-install-pdf-libtermcap
+ install-pdf-host: maybe-install-pdf-utils
++install-pdf-host: maybe-install-pdf-libada
+ install-pdf-host: maybe-install-pdf-gnattools
+ install-pdf-host: maybe-install-pdf-lto-plugin
+ 
+@@ -2059,6 +2068,7 @@
+ install-html-host: maybe-install-html-tk
+ install-html-host: maybe-install-html-libtermcap
+ install-html-host: maybe-install-html-utils
++install-html-host: maybe-install-html-libada
+ install-html-host: maybe-install-html-gnattools
+ install-html-host: maybe-install-html-lto-plugin
+ 
+@@ -2174,6 +2184,7 @@
+ installcheck-host: maybe-installcheck-tk
+ installcheck-host: maybe-installcheck-libtermcap
+ installcheck-host: maybe-installcheck-utils
++installcheck-host: maybe-installcheck-libada
+ installcheck-host: maybe-installcheck-gnattools
+ installcheck-host: maybe-installcheck-lto-plugin
+ 
+@@ -2289,6 +2300,7 @@
+ mostlyclean-host: maybe-mostlyclean-tk
+ mostlyclean-host: maybe-mostlyclean-libtermcap
+ mostlyclean-host: maybe-mostlyclean-utils
++mostlyclean-host: maybe-mostlyclean-libada
+ mostlyclean-host: maybe-mostlyclean-gnattools
+ mostlyclean-host: maybe-mostlyclean-lto-plugin
+ 
+@@ -2404,6 +2416,7 @@
+ clean-host: maybe-clean-tk
+ clean-host: maybe-clean-libtermcap
+ clean-host: maybe-clean-utils
++clean-host: maybe-clean-libada
+ clean-host: maybe-clean-gnattools
+ clean-host: maybe-clean-lto-plugin
+ 
+@@ -2519,6 +2532,7 @@
+ distclean-host: maybe-distclean-tk
+ distclean-host: maybe-distclean-libtermcap
+ distclean-host: maybe-distclean-utils
++distclean-host: maybe-distclean-libada
+ distclean-host: maybe-distclean-gnattools
+ distclean-host: maybe-distclean-lto-plugin
+ 
+@@ -2634,6 +2648,7 @@
+ maintainer-clean-host: maybe-maintainer-clean-tk
+ maintainer-clean-host: maybe-maintainer-clean-libtermcap
+ maintainer-clean-host: maybe-maintainer-clean-utils
++maintainer-clean-host: maybe-maintainer-clean-libada
+ maintainer-clean-host: maybe-maintainer-clean-gnattools
+ maintainer-clean-host: maybe-maintainer-clean-lto-plugin
+ 
+@@ -2804,6 +2819,7 @@
+     maybe-check-tk \
+     maybe-check-libtermcap \
+     maybe-check-utils \
++    maybe-check-libada \
+     maybe-check-gnattools \
+     maybe-check-lto-plugin
+ 
+@@ -2945,6 +2961,7 @@
+     maybe-install-tk \
+     maybe-install-libtermcap \
+     maybe-install-utils \
++    maybe-install-libada \
+     maybe-install-gnattools \
+     maybe-install-lto-plugin
+ 
+@@ -3026,6 +3043,7 @@
+     maybe-install-tk \
+     maybe-install-libtermcap \
+     maybe-install-utils \
++    maybe-install-libada \
+     maybe-install-gnattools \
+     maybe-install-lto-plugin
+ 
+@@ -3160,6 +3178,7 @@
+     maybe-install-strip-tk \
+     maybe-install-strip-libtermcap \
+     maybe-install-strip-utils \
++    maybe-install-strip-libada \
+     maybe-install-strip-gnattools \
+     maybe-install-strip-lto-plugin
+ 
+@@ -44766,6 +44785,331 @@
+ 
+ 
+ 
++.PHONY: configure-libada maybe-configure-libada
++maybe-configure-libada:
++@if gcc-bootstrap
++configure-libada: stage_current
++@endif gcc-bootstrap
++@if libada
++maybe-configure-libada: configure-libada
++configure-libada: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	test ! -f $(HOST_SUBDIR)/libada/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libada ; \
++	$(HOST_EXPORTS)  \
++	echo Configuring in $(HOST_SUBDIR)/libada; \
++	cd "$(HOST_SUBDIR)/libada" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(HOST_SUBDIR)/libada/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	srcdiroption="--srcdir=$${topdir}/libada"; \
++	libsrcdir="$$s/libada"; \
++	$(SHELL) $${libsrcdir}/configure \
++	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
++	  --target=${target_alias} $${srcdiroption}  \
++	  || exit 1
++@endif libada
++
++
++
++
++
++.PHONY: all-libada maybe-all-libada
++maybe-all-libada:
++@if gcc-bootstrap
++all-libada: stage_current
++@endif gcc-bootstrap
++@if libada
++TARGET-libada=all
++maybe-all-libada: all-libada
++all-libada: configure-libada
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS)  \
++	(cd $(HOST_SUBDIR)/libada && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS)  \
++		$(TARGET-libada))
++@endif libada
++
++
++
++
++.PHONY: check-libada maybe-check-libada
++maybe-check-libada:
++@if libada
++maybe-check-libada: check-libada
++
++check-libada:
++
++@endif libada
++
++.PHONY: install-libada maybe-install-libada
++maybe-install-libada:
++@if libada
++maybe-install-libada: install-libada
++
++install-libada:
++
++@endif libada
++
++.PHONY: install-strip-libada maybe-install-strip-libada
++maybe-install-strip-libada:
++@if libada
++maybe-install-strip-libada: install-strip-libada
++
++install-strip-libada:
++
++@endif libada
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-libada info-libada
++maybe-info-libada:
++@if libada
++maybe-info-libada: info-libada
++
++# libada doesn't support info.
++info-libada:
++
++@endif libada
++
++.PHONY: maybe-dvi-libada dvi-libada
++maybe-dvi-libada:
++@if libada
++maybe-dvi-libada: dvi-libada
++
++# libada doesn't support dvi.
++dvi-libada:
++
++@endif libada
++
++.PHONY: maybe-pdf-libada pdf-libada
++maybe-pdf-libada:
++@if libada
++maybe-pdf-libada: pdf-libada
++
++pdf-libada: \
++    configure-libada 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libada/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing pdf in libada" ; \
++	(cd $(HOST_SUBDIR)/libada && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          pdf) \
++	  || exit 1
++
++@endif libada
++
++.PHONY: maybe-html-libada html-libada
++maybe-html-libada:
++@if libada
++maybe-html-libada: html-libada
++
++# libada doesn't support html.
++html-libada:
++
++@endif libada
++
++.PHONY: maybe-TAGS-libada TAGS-libada
++maybe-TAGS-libada:
++@if libada
++maybe-TAGS-libada: TAGS-libada
++
++# libada doesn't support TAGS.
++TAGS-libada:
++
++@endif libada
++
++.PHONY: maybe-install-info-libada install-info-libada
++maybe-install-info-libada:
++@if libada
++maybe-install-info-libada: install-info-libada
++
++# libada doesn't support install-info.
++install-info-libada:
++
++@endif libada
++
++.PHONY: maybe-install-pdf-libada install-pdf-libada
++maybe-install-pdf-libada:
++@if libada
++maybe-install-pdf-libada: install-pdf-libada
++
++install-pdf-libada: \
++    configure-libada \
++    pdf-libada 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libada/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing install-pdf in libada" ; \
++	(cd $(HOST_SUBDIR)/libada && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          install-pdf) \
++	  || exit 1
++
++@endif libada
++
++.PHONY: maybe-install-html-libada install-html-libada
++maybe-install-html-libada:
++@if libada
++maybe-install-html-libada: install-html-libada
++
++install-html-libada: \
++    configure-libada \
++    html-libada 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libada/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing install-html in libada" ; \
++	(cd $(HOST_SUBDIR)/libada && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          install-html) \
++	  || exit 1
++
++@endif libada
++
++.PHONY: maybe-installcheck-libada installcheck-libada
++maybe-installcheck-libada:
++@if libada
++maybe-installcheck-libada: installcheck-libada
++
++# libada doesn't support installcheck.
++installcheck-libada:
++
++@endif libada
++
++.PHONY: maybe-mostlyclean-libada mostlyclean-libada
++maybe-mostlyclean-libada:
++@if libada
++maybe-mostlyclean-libada: mostlyclean-libada
++
++mostlyclean-libada: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libada/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing mostlyclean in libada" ; \
++	(cd $(HOST_SUBDIR)/libada && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          mostlyclean) \
++	  || exit 1
++
++@endif libada
++
++.PHONY: maybe-clean-libada clean-libada
++maybe-clean-libada:
++@if libada
++maybe-clean-libada: clean-libada
++
++clean-libada: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libada/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing clean in libada" ; \
++	(cd $(HOST_SUBDIR)/libada && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          clean) \
++	  || exit 1
++
++@endif libada
++
++.PHONY: maybe-distclean-libada distclean-libada
++maybe-distclean-libada:
++@if libada
++maybe-distclean-libada: distclean-libada
++
++distclean-libada: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libada/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing distclean in libada" ; \
++	(cd $(HOST_SUBDIR)/libada && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          distclean) \
++	  || exit 1
++
++@endif libada
++
++.PHONY: maybe-maintainer-clean-libada maintainer-clean-libada
++maybe-maintainer-clean-libada:
++@if libada
++maybe-maintainer-clean-libada: maintainer-clean-libada
++
++maintainer-clean-libada: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libada/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing maintainer-clean in libada" ; \
++	(cd $(HOST_SUBDIR)/libada && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          maintainer-clean) \
++	  || exit 1
++
++@endif libada
++
++
++
+ .PHONY: configure-gnattools maybe-configure-gnattools
+ maybe-configure-gnattools:
+ @if gcc-bootstrap
+@@ -44826,12 +45170,6 @@
+ maybe-check-gnattools: check-gnattools
+ 
+ check-gnattools:
+-	@: $(MAKE); $(unstage)
+-	@r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(FLAGS_TO_PASS)  check)
+ 
+ @endif gnattools
+ 
+@@ -44872,24 +45210,8 @@
+ @if gnattools
+ maybe-info-gnattools: info-gnattools
+ 
+-info-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing info in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          info) \
+-	  || exit 1
++# gnattools doesn't support info.
++info-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -44898,24 +45220,8 @@
+ @if gnattools
+ maybe-dvi-gnattools: dvi-gnattools
+ 
+-dvi-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing dvi in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          dvi) \
+-	  || exit 1
++# gnattools doesn't support dvi.
++dvi-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -44950,24 +45256,8 @@
+ @if gnattools
+ maybe-html-gnattools: html-gnattools
+ 
+-html-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing html in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          html) \
+-	  || exit 1
++# gnattools doesn't support html.
++html-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -44976,24 +45266,8 @@
+ @if gnattools
+ maybe-TAGS-gnattools: TAGS-gnattools
+ 
+-TAGS-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing TAGS in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          TAGS) \
+-	  || exit 1
++# gnattools doesn't support TAGS.
++TAGS-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -45002,25 +45276,8 @@
+ @if gnattools
+ maybe-install-info-gnattools: install-info-gnattools
+ 
+-install-info-gnattools: \
+-    configure-gnattools \
+-    info-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing install-info in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          install-info) \
+-	  || exit 1
++# gnattools doesn't support install-info.
++install-info-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -45083,24 +45340,8 @@
+ @if gnattools
+ maybe-installcheck-gnattools: installcheck-gnattools
+ 
+-installcheck-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing installcheck in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          installcheck) \
+-	  || exit 1
++# gnattools doesn't support installcheck.
++installcheck-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -56276,13 +56517,8 @@
+ @if target-libada
+ maybe-check-target-libada: check-target-libada
+ 
++# Dummy target for uncheckable module.
+ check-target-libada:
+-	@: $(MAKE); $(unstage)
+-	@r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(TARGET_FLAGS_TO_PASS)   check)
+ 
+ @endif target-libada
+ 
+@@ -56291,13 +56527,8 @@
+ @if target-libada
+ maybe-install-target-libada: install-target-libada
+ 
+-install-target-libada: installdirs
+-	@: $(MAKE); $(unstage)
+-	@r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
++# Dummy target for uninstallable.
++install-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -56306,13 +56537,8 @@
+ @if target-libada
+ maybe-install-strip-target-libada: install-strip-target-libada
+ 
+-install-strip-target-libada: installdirs
+-	@: $(MAKE); $(unstage)
+-	@r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
++# Dummy target for uninstallable.
++install-strip-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -56323,24 +56549,8 @@
+ @if target-libada
+ maybe-info-target-libada: info-target-libada
+ 
+-info-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing info in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           info) \
+-	  || exit 1
++# libada doesn't support info.
++info-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -56349,24 +56559,8 @@
+ @if target-libada
+ maybe-dvi-target-libada: dvi-target-libada
+ 
+-dvi-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing dvi in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           dvi) \
+-	  || exit 1
++# libada doesn't support dvi.
++dvi-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -56401,24 +56595,8 @@
+ @if target-libada
+ maybe-html-target-libada: html-target-libada
+ 
+-html-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing html in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           html) \
+-	  || exit 1
++# libada doesn't support html.
++html-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -56427,24 +56605,8 @@
+ @if target-libada
+ maybe-TAGS-target-libada: TAGS-target-libada
+ 
+-TAGS-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing TAGS in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           TAGS) \
+-	  || exit 1
++# libada doesn't support TAGS.
++TAGS-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -56453,25 +56615,8 @@
+ @if target-libada
+ maybe-install-info-target-libada: install-info-target-libada
+ 
+-install-info-target-libada: \
+-    configure-target-libada \
+-    info-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing install-info in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           install-info) \
+-	  || exit 1
++# libada doesn't support install-info.
++install-info-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -56534,24 +56679,8 @@
+ @if target-libada
+ maybe-installcheck-target-libada: installcheck-target-libada
+ 
+-installcheck-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing installcheck in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           installcheck) \
+-	  || exit 1
++# libada doesn't support installcheck.
++installcheck-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -60051,7 +60180,7 @@
+ all-stageprofile-libcpp: maybe-all-stageprofile-intl
+ all-stagefeedback-libcpp: maybe-all-stagefeedback-intl
+ all-fixincludes: maybe-all-libiberty
+-all-gnattools: maybe-all-target-libada
++all-gnattools: maybe-all-libada
+ all-lto-plugin: maybe-all-libiberty
+ 
+ all-stage1-lto-plugin: maybe-all-stage1-libiberty
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -168,7 +168,7 @@
+ 
+ # these libraries are used by various programs built for the host environment
+ #
+-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv"
++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv libada"
+ 
+ # these tools are built for the host environment
+ # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
+@@ -301,7 +301,7 @@
+ 
+ # Similarly, some are only suitable for cross toolchains.
+ # Remove these if host=target.
+-cross_only="target-libgloss target-newlib target-opcodes"
++cross_only="target-libgloss target-newlib target-opcodes target-libada"
+ 
+ case $is_cross_compiler in
+   no) skipdirs="${skipdirs} ${cross_only}" ;;
--- gcc-4.6-4.6.3.orig/debian/patches/gdc-4.6.diff
+++ gcc-4.6-4.6.3/debian/patches/gdc-4.6.diff
@@ -0,0 +1,349 @@
+# DP: Patches the GCC Directory for D.
+
+--- a/src/gcc/cgraph.c	2011-03-04 18:49:23.000000000 +0000
++++ b/src/gcc/cgraph.c	2011-07-09 20:25:16.517533109 +0100
+@@ -491,6 +491,7 @@ struct cgraph_node *
+ cgraph_node (tree decl)
+ {
+   struct cgraph_node key, *node, **slot;
++  tree context;
+ 
+   gcc_assert (TREE_CODE (decl) == FUNCTION_DECL);
+ 
+@@ -512,11 +513,15 @@ cgraph_node (tree decl)
+   node = cgraph_create_node ();
+   node->decl = decl;
+   *slot = node;
+-  if (DECL_CONTEXT (decl) && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL)
++  if (DECL_STATIC_CHAIN (decl))
+     {
+-      node->origin = cgraph_node (DECL_CONTEXT (decl));
+-      node->next_nested = node->origin->nested;
+-      node->origin->nested = node;
++      context = decl_function_context (decl);
++      if (context)
++	{
++	  node->origin = cgraph_node (context);
++	  node->next_nested = node->origin->nested;
++	  node->origin->nested = node;
++	}
+     }
+   if (assembler_name_hash)
+     {
+--- a/src/gcc/config/i386/i386.c	2011-03-04 17:56:39.000000000 +0000
++++ b/src/gcc/config/i386/i386.c	2011-07-24 12:47:54.466177239 +0100
+@@ -5358,6 +5358,10 @@ ix86_handle_cconv_attribute (tree *node,
+ 	{
+ 	  error ("fastcall and thiscall attributes are not compatible");
+ 	}
++      if (lookup_attribute ("optlink", TYPE_ATTRIBUTES (*node)))
++	{
++	  error ("fastcall and optlink attributes are not compatible");
++	}
+     }
+ 
+   /* Can combine stdcall with fastcall (redundant), regparm and
+@@ -5376,6 +5380,10 @@ ix86_handle_cconv_attribute (tree *node,
+ 	{
+ 	  error ("stdcall and thiscall attributes are not compatible");
+ 	}
++      if (lookup_attribute ("optlink", TYPE_ATTRIBUTES (*node)))
++	{
++	  error ("stdcall and optlink attributes are not compatible");
++	}
+     }
+ 
+   /* Can combine cdecl with regparm and sseregparm.  */
+@@ -5393,6 +5401,10 @@ ix86_handle_cconv_attribute (tree *node,
+ 	{
+ 	  error ("cdecl and thiscall attributes are not compatible");
+ 	}
++      if (lookup_attribute ("optlink", TYPE_ATTRIBUTES (*node)))
++	{
++	  error ("cdecl and optlink attributes are not compatible");
++	}
+     }
+   else if (is_attribute_p ("thiscall", name))
+     {
+@@ -5411,6 +5423,31 @@ ix86_handle_cconv_attribute (tree *node,
+ 	{
+ 	  error ("cdecl and thiscall attributes are not compatible");
+ 	}
++      if (lookup_attribute ("optlink", TYPE_ATTRIBUTES (*node)))
++	{
++	  error ("optlink and thiscall attributes are not compatible");
++	}
++    }
++
++  /* Can combine optlink with regparm and sseregparm.  */
++  else if (is_attribute_p ("optlink", name))
++    {
++      if (lookup_attribute ("cdecl", TYPE_ATTRIBUTES (*node)))
++	{
++	  error ("optlink and cdecl attributes are not compatible");
++	}
++      if (lookup_attribute ("fastcall", TYPE_ATTRIBUTES (*node)))
++	{
++	  error ("optlink and fastcall attributes are not compatible");
++	}
++      if (lookup_attribute ("stdcall", TYPE_ATTRIBUTES (*node)))
++	{
++	  error ("optlink and stdcall attributes are not compatible");
++	}
++      if (lookup_attribute ("thiscall", TYPE_ATTRIBUTES (*node)))
++	{
++	  error ("optlink and thiscall attributes are not compatible");
++	}
+     }
+ 
+   /* Can combine sseregparm with all attributes.  */
+@@ -5644,6 +5681,12 @@ ix86_return_pops_args (tree fundecl, tre
+           || lookup_attribute ("thiscall", TYPE_ATTRIBUTES (funtype)))
+ 	rtd = 1;
+ 
++      /* Optlink functions will pop the stack if floating-point return
++         and if not variable args.  */
++      if (lookup_attribute ("optlink", TYPE_ATTRIBUTES (funtype))
++	  && FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (funtype))))
++	rtd = 1;
++
+       if (rtd && ! stdarg_p (funtype))
+ 	return size;
+     }
+@@ -5991,6 +6034,11 @@ init_cumulative_args (CUMULATIVE_ARGS *c
+ 	    }
+ 	  else
+ 	    cum->nregs = ix86_function_regparm (fntype, fndecl);
++
++	  /* For optlink, last parameter is passed in eax rather than
++	     being pushed on the stack.  */
++	  if (lookup_attribute ("optlink", TYPE_ATTRIBUTES (fntype)))
++	    cum->optlink = 1;
+ 	}
+ 
+       /* Set up the number of SSE registers used for passing SFmode
+@@ -8721,6 +8769,10 @@ ix86_frame_pointer_required (void)
+   if (crtl->profile && !flag_fentry)
+     return true;
+ 
++  /* Optlink mandates the setting up of ebp, unless 'naked' is used.  */
++  if (crtl->args.info.optlink && !cfun->naked)
++    return true;
++
+   return false;
+ }
+ 
+@@ -9366,6 +9418,10 @@ ix86_compute_frame_layout (struct ix86_f
+     frame->red_zone_size = 0;
+   frame->stack_pointer_offset -= frame->red_zone_size;
+ 
++  if (cfun->naked)
++    /* As above, skip return address.  */
++    frame->stack_pointer_offset = UNITS_PER_WORD;
++
+   /* The SEH frame pointer location is near the bottom of the frame.
+      This is enforced by the fact that the difference between the
+      stack pointer and the frame pointer is limited to 240 bytes in
+@@ -29731,7 +29787,7 @@ x86_output_mi_thunk (FILE *file,
+ 	  output_set_got (tmp, NULL_RTX);
+ 
+ 	  xops[1] = tmp;
+-	  output_asm_insn ("mov{l}\t{%0@GOT(%1), %1|%1, %0@GOT[%1]}", xops);
++	  output_asm_insn ("mov{l}\t{%a0@GOT(%1), %1|%1, %a0@GOT[%1]}", xops);
+ 	  output_asm_insn ("jmp\t{*}%1", xops);
+ 	}
+     }
+@@ -32553,6 +32609,8 @@ static const struct attribute_spec ix86_
+   /* Sseregparm attribute says we are using x86_64 calling conventions
+      for FP arguments.  */
+   { "sseregparm", 0, 0, false, true, true, ix86_handle_cconv_attribute },
++  /* Optlink attribute says we are using D calling convention */
++  { "optlink",    0, 0, false, true, true, ix86_handle_cconv_attribute },
+   /* force_align_arg_pointer says this function realigns the stack at entry.  */
+   { (const char *)&ix86_force_align_arg_pointer_string, 0, 0,
+     false, true,  true, ix86_handle_cconv_attribute },
+--- a/src/gcc/config/i386/i386.h	2011-01-14 21:03:22.000000000 +0000
++++ b/src/gcc/config/i386/i386.h	2011-07-09 20:25:16.661533818 +0100
+@@ -1498,6 +1498,7 @@ typedef struct ix86_args {
+   int regno;			/* next available register number */
+   int fastcall;			/* fastcall or thiscall calling convention
+ 				   is used */
++  int optlink;			/* optlink calling convention is used */
+   int sse_words;		/* # sse words passed so far */
+   int sse_nregs;		/* # sse registers available for passing */
+   int warn_avx;			/* True when we want to warn about AVX ABI.  */
+--- a/src/gcc/config/rs6000/rs6000.c	2011-03-15 12:57:37.000000000 +0000
++++ b/src/gcc/config/rs6000/rs6000.c	2011-07-09 20:25:16.721534120 +0100
+@@ -22039,6 +22039,7 @@ rs6000_output_function_epilogue (FILE *f
+ 	 a number, so for now use 9.  LTO isn't assigned a number either,
+ 	 so for now use 0.  */
+       if (! strcmp (language_string, "GNU C")
++	  || ! strcmp (language_string, "GNU D")
+ 	  || ! strcmp (language_string, "GNU GIMPLE")
+	  || ! strcmp (language_string, "GNU Go"))
+ 	i = 0;
+--- a/src/gcc/dojump.c	2010-05-19 21:09:57.000000000 +0100
++++ b/src/gcc/dojump.c	2011-07-12 23:03:55.909624421 +0100
+@@ -80,7 +80,8 @@ void
+ clear_pending_stack_adjust (void)
+ {
+   if (optimize > 0
+-      && (! flag_omit_frame_pointer || cfun->calls_alloca)
++      && ((! flag_omit_frame_pointer && ! cfun->naked)
++	  || cfun->calls_alloca)
+       && EXIT_IGNORE_STACK)
+     discard_pending_stack_adjust ();
+ }
+--- a/src/gcc/dwarf2out.c	2011-03-18 16:22:01.000000000 +0000
++++ b/src/gcc/dwarf2out.c	2011-07-09 20:25:16.781534412 +0100
+@@ -20069,6 +20069,8 @@ gen_compile_unit_die (const char *filena
+   language = DW_LANG_C89;
+   if (strcmp (language_string, "GNU C++") == 0)
+     language = DW_LANG_C_plus_plus;
++  else if (strcmp (language_string, "GNU D") == 0)
++    language = DW_LANG_D;
+   else if (strcmp (language_string, "GNU F77") == 0)
+     language = DW_LANG_Fortran77;
+   else if (strcmp (language_string, "GNU Pascal") == 0)
+@@ -21464,7 +21466,7 @@ dwarf2out_decl (tree decl)
+ 
+       /* For local statics lookup proper context die.  */
+       if (TREE_STATIC (decl) && decl_function_context (decl))
+-	context_die = lookup_decl_die (DECL_CONTEXT (decl));
++	context_die = lookup_decl_die (decl_function_context (decl));
+ 
+       /* If we are in terse mode, don't generate any DIEs to represent any
+ 	 variable declarations or definitions.  */
+--- a/src/gcc/function.c	2011-03-09 20:49:00.000000000 +0000
++++ b/src/gcc/function.c	2011-07-10 18:54:33.562977424 +0100
+@@ -3409,7 +3409,8 @@ assign_parms (tree fndecl)
+       targetm.calls.function_arg_advance (&all.args_so_far, data.promoted_mode,
+ 					  data.passed_type, data.named_arg);
+ 
+-      assign_parm_adjust_stack_rtl (&data);
++      if (!cfun->naked)
++	assign_parm_adjust_stack_rtl (&data);
+ 
+       if (assign_parm_setup_block_p (&data))
+ 	assign_parm_setup_block (&all, parm, &data);
+@@ -3426,7 +3427,8 @@ assign_parms (tree fndecl)
+ 
+   /* Output all parameter conversion instructions (possibly including calls)
+      now that all parameters have been copied out of hard registers.  */
+-  emit_insn (all.first_conversion_insn);
++  if (!cfun->naked)
++    emit_insn (all.first_conversion_insn);
+ 
+   /* Estimate reload stack alignment from scalar return mode.  */
+   if (SUPPORTS_STACK_ALIGNMENT)
+@@ -3590,6 +3592,9 @@ gimplify_parameters (void)
+   VEC(tree, heap) *fnargs;
+   unsigned i;
+ 
++  if (cfun->naked)
++    return NULL;
++
+   assign_parms_initialize_all (&all);
+   fnargs = assign_parms_augmented_arg_list (&all);
+ 
+@@ -5287,6 +5292,9 @@ thread_prologue_and_epilogue_insns (void
+   edge e;
+   edge_iterator ei;
+ 
++  if (cfun->naked)
++    return;
++
+   rtl_profile_for_bb (ENTRY_BLOCK_PTR);
+ 
+   inserted = false;
+--- a/src/gcc/function.h	2011-01-03 20:52:22.000000000 +0000
++++ b/src/gcc/function.h	2011-07-12 23:04:20.197744890 +0100
+@@ -636,6 +636,10 @@ struct GTY(()) function {
+      adjusts one of its arguments and forwards to another
+      function.  */
+   unsigned int is_thunk : 1;
++
++  /* Nonzero if no code should be generated for prologues, copying
++     parameters, etc. */
++  unsigned int naked : 1;
+ };
+ 
+ /* Add the decl D to the local_decls list of FUN.  */
+--- a/src/gcc/gcc.c	2011-02-23 02:04:43.000000000 +0000
++++ b/src/gcc/gcc.c	2011-07-12 21:55:05.805144355 +0100
+@@ -83,6 +83,9 @@ int is_cpp_driver;
+ /* Flag set to nonzero if an @file argument has been supplied to gcc.  */
+ static bool at_file_supplied;
+ 
++/* Flag set by drivers needing Pthreads. */
++int need_pthreads;
++
+ /* Definition of string containing the arguments given to configure.  */
+ #include "configargs.h"
+ 
+@@ -373,6 +376,7 @@ or with constant text in a single argume
+ 	assembler has done its job.
+  %D	Dump out a -L option for each directory in startfile_prefixes.
+ 	If multilib_dir is set, extra entries are generated with it affixed.
++ %N	Output the currently selected multilib directory name.
+  %l     process LINK_SPEC as a spec.
+  %L     process LIB_SPEC as a spec.
+  %G     process LIBGCC_SPEC as a spec.
+@@ -3925,6 +3929,17 @@ process_command (unsigned int decoded_op
+       add_infile ("help-dummy", "c");
+     }
+ 
++  if (need_pthreads)
++    {
++      switches[n_switches].part1 = "pthread";
++      switches[n_switches].args = 0;
++      switches[n_switches].live_cond = 0;
++      /* Do not print an error if there is not expansion for -pthread. */
++      switches[n_switches].validated = 1;
++      switches[n_switches].ordering = 0;
++      n_switches++;
++    }
++
+   alloc_switch ();
+   switches[n_switches].part1 = 0;
+   alloc_infile ();
+@@ -5095,6 +5110,17 @@ do_spec_1 (const char *spec, int inswitc
+ 	      return value;
+ 	    break;
+ 
++          case 'N':
++	    if (multilib_dir)
++	      {
++		arg_going = 1;
++		obstack_grow (&obstack, "-fmultilib-dir=",
++			      strlen ("-fmultilib-dir="));
++		obstack_grow (&obstack, multilib_dir,
++			      strlen (multilib_dir));
++	      }
++	    break;
++
+ 	    /* Here we define characters other than letters and digits.  */
+ 
+ 	  case '{':
+--- a/src/gcc/ira.c	2011-03-08 15:51:12.000000000 +0000
++++ b/src/gcc/ira.c	2011-07-12 23:04:12.433706377 +0100
+@@ -1341,7 +1341,7 @@ ira_setup_eliminable_regset (void)
+      case.  At some point, we should improve this by emitting the
+      sp-adjusting insns for this case.  */
+   int need_fp
+-    = (! flag_omit_frame_pointer
++    = ((! flag_omit_frame_pointer && ! cfun->naked)
+        || (cfun->calls_alloca && EXIT_IGNORE_STACK)
+        /* We need the frame pointer to catch stack overflow exceptions
+ 	  if the stack pointer is moving.  */
+--- a/src/gcc/tree-sra.c	2011-02-17 16:18:24.000000000 +0000
++++ b/src/gcc/tree-sra.c	2011-07-09 20:25:16.941535211 +0100
+@@ -1533,6 +1533,8 @@ is_va_list_type (tree type)
+ /* The very first phase of intraprocedural SRA.  It marks in candidate_bitmap
+    those with type which is suitable for scalarization.  */
+ 
++/* FIXME: Should we do something here for GDC? */
++
+ static bool
+ find_var_candidates (void)
+ {
--- gcc-4.6-4.6.3.orig/debian/patches/config-ml.diff
+++ gcc-4.6-4.6.3/debian/patches/config-ml.diff
@@ -0,0 +1,160 @@
+# DP: - Disable some biarch libraries for biarch builds.
+# DP: - Fix multilib builds on kernels which don't support all multilibs.
+
+Index: b/src/config-ml.in
+===================================================================
+--- a/src/config-ml.in
++++ b/src/config-ml.in
+@@ -467,6 +467,25 @@
+ 	;;
+ esac
+ 
++if [ -z "$biarch_multidir_names" ]; then
++  biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp"
++  echo "WARNING: biarch_multidir_names is unset. Use default value:"
++  echo "  $biarch_multidir_names"
++fi
++ml_srcbase=`basename $ml_realsrcdir`
++old_multidirs="${multidirs}"
++multidirs=""
++for x in ${old_multidirs}; do
++    case " $x " in
++	" 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf ")
++	case "$biarch_multidir_names" in
++	    *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;;
++	esac
++	;;
++	*) multidirs="${multidirs} ${x}" ;;
++    esac
++done
++
+ # Remove extraneous blanks from multidirs.
+ # Tests like `if [ -n "$multidirs" ]' require it.
+ multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
+@@ -654,6 +673,35 @@
+ 
+   for ml_dir in ${multidirs}; do
+ 
++    # a native build fails if the running kernel doesn't support the multilib
++    # variant; force cross compilation for these cases.
++    ml_host_arg=
++    case "${host}" in
++    i[34567]86-*-linux*)
++        case "${ml_dir}" in
++	  64) ml_host_arg="--host=x86_64-linux-gnu";;
++	  x32) ml_host_arg="--host=x86_64-linux-gnux32";;
++	esac
++	;;
++    powerpc-*-linux*)
++	case "${ml_dir}" in
++	  64) ml_host_arg="--host=powerpc64-linux-gnu"
++	esac
++	;;
++    s390-*-linux*)
++	case "${ml_dir}" in
++	  64) ml_host_arg="--host=s390x-linux-gnu"
++	esac
++	;;
++    x86_64-*-linux*)
++	case "${ml_dir}" in
++	  x32) ml_host_arg="--host=x86_64-linux-gnux32"
++	esac
++    esac
++    if [ -n "${ml_host_arg}" ]; then
++       ml_host_arg="${ml_host_arg} --with-default-host-alias=${host_alias}"
++    fi
++
+     if [ "${ml_verbose}" = --verbose ]; then
+       echo "Running configure in multilib subdir ${ml_dir}"
+       echo "pwd: `${PWDCMD-pwd}`"
+@@ -858,9 +906,20 @@
+ 	fi
+     fi
+ 
++    ml_configure_args=
++    for arg in ${ac_configure_args}
++    do
++      case $arg in
++      *CC=*)  ml_configure_args=${ml_config_env} ;;
++      *CXX=*) ml_configure_args=${ml_config_env} ;;
++      *GCJ=*) ml_configure_args=${ml_config_env} ;;
++      *) ;;
++      esac
++    done
++
+     if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
+ 	--with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
+-	${ac_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then
++	${ac_configure_args} ${ml_configure_args} ${ml_host_arg} ${ml_srcdiroption} ; then
+       true
+     else
+       exit 1
+Index: b/src/libstdc++-v3/include/Makefile.am
+===================================================================
+--- a/src/libstdc++-v3/include/Makefile.am
++++ b/src/libstdc++-v3/include/Makefile.am
+@@ -829,8 +829,9 @@
+ endif
+ 
+ host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR)
+-host_builddir = ./${host_alias}/bits
+-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits
++default_host_alias = @default_host_alias@
++host_builddir = ./${default_host_alias}/bits
++host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits
+ host_headers = \
+ 	${host_srcdir}/ctype_base.h \
+ 	${host_srcdir}/ctype_inline.h \
+@@ -1050,6 +1051,7 @@
+ 
+ stamp-${host_alias}:
+ 	@-mkdir -p ${host_builddir}
++	@test ${default_host_alias} = ${host_alias} || ln -sf ${default_host_alias} ${host_alias}
+ 	@$(STAMP) stamp-${host_alias}
+ 
+ # Host includes static.
+Index: b/src/libstdc++-v3/include/Makefile.in
+===================================================================
+--- a/src/libstdc++-v3/include/Makefile.in
++++ b/src/libstdc++-v3/include/Makefile.in
+@@ -1082,8 +1082,9 @@
+ # For --enable-cheaders=c_std
+ @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers}
+ host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR)
+-host_builddir = ./${host_alias}/bits
+-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits
++default_host_alias = @default_host_alias@
++host_builddir = ./${default_host_alias}/bits
++host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits
+ host_headers = \
+ 	${host_srcdir}/ctype_base.h \
+ 	${host_srcdir}/ctype_inline.h \
+@@ -1461,6 +1462,7 @@
+ 
+ stamp-${host_alias}:
+ 	@-mkdir -p ${host_builddir}
++	@test ${default_host_alias} = ${host_alias} || ln -sf ${default_host_alias} ${host_alias}
+ 	@$(STAMP) stamp-${host_alias}
+ 
+ # Host includes static.
+Index: b/src/libstdc++-v3/configure.ac
+===================================================================
+--- a/src/libstdc++-v3/configure.ac
++++ b/src/libstdc++-v3/configure.ac
+@@ -458,6 +458,16 @@
+   multilib_arg=
+ fi
+ 
++AC_ARG_WITH(default-host-alias,
++[AS_HELP_STRING([--with-default-host-alias=TRIPLET],
++                [specifies host triplet used for the default multilib build])],
++[case "${withval}" in
++yes)    AC_MSG_ERROR(bad value ${withval} given for default host triplet) ;;
++no)     default_host_alias='${host_alias}' ;;
++*)      default_host_alias=${withval} ;;
++esac],[default_host_alias='${host_alias}'])
++AC_SUBST(default_host_alias)
++
+ # Export all the install information.
+ GLIBCXX_EXPORT_INSTALL_INFO
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-multilib64-multiarch-trunk.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-multilib64-multiarch-trunk.diff
@@ -0,0 +1,44 @@
+# DP: Use lib instead of lib64 as the 64bit system dir on biarch
+# DP: architectures defaulting to 64bit.
+
+--- a/src/gcc/config/s390/t-linux64
++++ b/src/gcc/config/s390/t-linux64
+@@ -7,5 +7,5 @@
+ 
+ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu)
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu)
+ MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu)
+--- a/src/gcc/config/rs6000/t-linux64
++++ b/src/gcc/config/rs6000/t-linux64
+@@ -33,6 +33,6 @@
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+ MULTILIB_EXCEPTIONS     =
+ MULTILIB_EXCLUSIONS     =
+-MULTILIB_OSDIRNAMES	= ../lib64$(call if_multiarch,:powerpc64-linux-gnu)
++MULTILIB_OSDIRNAMES	= ../lib$(call if_multiarch,:powerpc64-linux-gnu)
+ MULTILIB_OSDIRNAMES    += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
+ MULTILIB_MATCHES        =
+--- a/src/gcc/config/sparc/t-linux64
++++ b/src/gcc/config/sparc/t-linux64
+@@ -26,7 +26,7 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu)
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu)
+ MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu)
+ 
+ LIBGCC = stmp-multilib
+--- a/src/gcc/config/i386/t-linux64
++++ b/src/gcc/config/i386/t-linux64
+@@ -34,7 +34,7 @@
+ comma=,
+ MULTILIB_OPTIONS    = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+ MULTILIB_DIRNAMES   = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
+-MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu)
+ MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
+ MULTILIB_OSDIRNAMES+= mx32=../libx32
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/ada-ppc64.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-ppc64.diff
@@ -0,0 +1,24 @@
+# Fix 32/64 bit detection, broken due to the fact Debian installs 
+# 64-bit libraries in lib and not lib64. Fix based on the s390/s390x
+# detection.
+
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1792,9 +1792,14 @@
+     LIBGNAT_TARGET_PAIRS_64 = \
+     system.ads<system-linux-ppc64.ads
+ 
+-    ifeq ($(strip $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory)),../lib64)
+-      LIBGNAT_TARGET_PAIRS = \
+-      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
++    ifeq ($(strip $(filter-out powerpc64,$(arch))),)
++      ifeq ($(strip $(MULTISUBDIR)),/32)
++        LIBGNAT_TARGET_PAIRS = \
++        $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
++      else
++        LIBGNAT_TARGET_PAIRS = \
++        $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
++      endif
+     else
+       LIBGNAT_TARGET_PAIRS = \
+       $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
--- gcc-4.6-4.6.3.orig/debian/patches/hurd-pthread.diff
+++ gcc-4.6-4.6.3/debian/patches/hurd-pthread.diff
@@ -0,0 +1,181 @@
+# Fix pthread support in a/src/boehm-gc
+
+--- a/src/boehm-gc/dyn_load.c
++++ b/src/boehm-gc/dyn_load.c
+@@ -26,7 +26,7 @@
+  * None of this is safe with dlclose and incremental collection.
+  * But then not much of anything is safe in the presence of dlclose.
+  */
+-#if (defined(__linux__) || defined(__GLIBC__)) && !defined(_GNU_SOURCE)
++#if (defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)) && !defined(_GNU_SOURCE)
+     /* Can't test LINUX, since this must be define before other includes */
+ #   define _GNU_SOURCE
+ #endif
+--- a/src/boehm-gc/pthread_support.c.orig	2009-02-07 22:27:11.828527000 +0000
++++ b/src/boehm-gc/pthread_support.c	2009-02-07 22:27:18.279505000 +0000
+@@ -885,7 +885,7 @@
+ 	  GC_nprocs = pthread_num_processors_np();
+ #       endif
+ #	if defined(GC_OSF1_THREADS) || defined(GC_AIX_THREADS) \
+-	   || defined(GC_SOLARIS_PTHREADS)
++	   || defined(GC_SOLARIS_PTHREADS) || defined(GC_GNU_THREADS)
+ 	  GC_nprocs = sysconf(_SC_NPROCESSORS_ONLN);
+ 	  if (GC_nprocs <= 0) GC_nprocs = 1;
+ #	endif
+--- a/src/boehm-gc/include/gc_config_macros.h.orig	2009-02-07 22:25:08.240177000 +0000
++++ b/src/boehm-gc/include/gc_config_macros.h	2009-02-07 22:28:40.648347000 +0000
+@@ -6,7 +6,8 @@
+ 		             || defined(GC_SOLARIS_PTHREADS) \
+ 			     || defined(GC_HPUX_THREADS) \
+ 			     || defined(GC_AIX_THREADS) \
+-			     || defined(GC_LINUX_THREADS))
++			     || defined(GC_LINUX_THREADS) \
++			     || defined(GC_GNU_THREADS))
+ # define _REENTRANT
+ 	/* Better late than never.  This fails if system headers that	*/
+ 	/* depend on this were previously included.			*/
+@@ -21,7 +22,8 @@
+ 	defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
+ 	defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
+ 	defined(GC_AIX_THREADS) || \
+-        (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__))
++        (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__)) || \
++	defined(GC_GNU_THREADS)
+ #   define GC_PTHREADS
+ # endif
+ 
+--- a/src/boehm-gc/threadlibs.c.orig	2009-02-07 22:34:42.429201000 +0000
++++ b/src/boehm-gc/threadlibs.c	2009-02-07 22:34:49.530544000 +0000
+@@ -12,7 +12,8 @@
+ #   endif
+ #   if defined(GC_LINUX_THREADS) || defined(GC_IRIX_THREADS) \
+ 	|| defined(GC_SOLARIS_PTHREADS) \
+-	|| defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS)
++	|| defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS) \
++	|| defined(GC_GNU_THREADS)
+         printf("-lpthread\n");
+ #   endif
+ #   if defined(GC_FREEBSD_THREADS)
+--- a/src/boehm-gc/configure.ac.orig	2009-02-07 22:30:12.000000000 +0000
++++ b/src/boehm-gc/configure.ac	2009-02-07 22:35:31.717091000 +0000
+@@ -180,6 +180,11 @@
+ 	AM_CPPFLAGS="$AM_CPPFLAGS -pthread"
+ 	THREADLIBS=-pthread
+       	;;
++     *-*-gnu*)
++	AC_DEFINE(GC_GNU_THREADS,1,[support GNU threads])
++	AC_DEFINE(_REENTRANT)
++	AC_DEFINE(THREAD_LOCAL_ALLOC)
++      	;;
+      *-*-solaris2.8*)
+ 	AC_DEFINE(GC_SOLARIS_PTHREADS,1,[support for Solaris pthreads])
+ 	# Need to use alternate thread library, otherwise gctest hangs
+--- a/src/boehm-gc/configure.orig	2009-02-07 22:32:34.000000000 +0000
++++ b/src/boehm-gc/configure	2009-02-07 22:35:28.065650000 +0000
+@@ -14893,6 +14893,20 @@
+ 	AM_CPPFLAGS="$AM_CPPFLAGS -pthread"
+ 	THREADLIBS=-pthread
+       	;;
++     *-*-gnu*)
++cat >>confdefs.h <<\_ACEOF
++#define GC_GNU_THREADS 1
++_ACEOF
++
++       cat >>confdefs.h <<\_ACEOF
++#define _REENTRANT 1
++_ACEOF
++
++cat >>confdefs.h <<\_ACEOF
++#define THREAD_LOCAL_ALLOC 1
++_ACEOF
++
++      	;;
+      *-*-solaris2.8*)
+ 
+ $as_echo "#define GC_SOLARIS_PTHREADS 1" >>confdefs.h
+--- a/src/boehm-gc/os_dep.c.orig	2009-02-07 22:37:20.000000000 +0000
++++ b/src/boehm-gc/os_dep.c	2009-02-07 22:37:40.000000000 +0000
+@@ -312,7 +312,7 @@
+   /* for recent Linux versions.  This seems to be the easiest way to	*/
+   /* cover all versions.						*/
+ 
+-# ifdef LINUX
++# if defined(LINUX) || defined(HURD)
+     /* Some Linux distributions arrange to define __data_start.  Some	*/
+     /* define data_start as a weak symbol.  The latter is technically	*/
+     /* broken, since the user program may define data_start, in which	*/
+@@ -331,7 +331,7 @@
+   {
+     extern ptr_t GC_find_limit();
+ 
+-#   ifdef LINUX
++#   if defined(LINUX) || defined(HURD)
+       /* Try the easy approaches first:	*/
+       if ((ptr_t)__data_start != 0) {
+ 	  GC_data_start = (ptr_t)(__data_start);
+--- a/src/boehm-gc/include/private/gcconfig.h.orig	2009-02-07 22:29:18.000000000 +0000
++++ b/src/boehm-gc/include/private/gcconfig.h	2009-02-07 22:41:24.598684000 +0000
+@@ -1316,8 +1316,9 @@
+ #     define OS_TYPE "HURD"
+ #     define STACK_GROWS_DOWN
+ #     define HEURISTIC2
+-      extern int  __data_start[];
+-#     define DATASTART ( (ptr_t) (__data_start))
++#     define SIG_SUSPEND SIGUSR1
++#     define SIG_THR_RESTART SIGUSR2
++#     define SEARCH_FOR_DATA_START
+       extern int   _end[];
+ #     define DATAEND ( (ptr_t) (_end))
+ /* #     define MPROTECT_VDB  Not quite working yet? */
+@@ -2153,7 +2154,8 @@
+ # if defined(SVR4) || defined(LINUX) || defined(IRIX5) || defined(HPUX) \
+ 	    || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \
+ 	    || defined(DGUX) || defined(BSD) || defined(SUNOS4) \
+-	    || defined(_AIX) || defined(DARWIN) || defined(OSF1)
++	    || defined(_AIX) || defined(DARWIN) || defined(OSF1) \
++	    || defined(HURD)
+ #   define UNIX_LIKE   /* Basic Unix-like system calls work.	*/
+ # endif
+ 
+@@ -2209,7 +2211,7 @@
+ #   define CACHE_LINE_SIZE 32	/* Wild guess	*/
+ # endif
+ 
+-# if defined(LINUX) || defined(__GLIBC__)
++# if defined(LINUX) || defined(HURD) || defined(__GLIBC__)
+ #   define REGISTER_LIBRARIES_EARLY
+     /* We sometimes use dl_iterate_phdr, which may acquire an internal	*/
+     /* lock.  This isn't safe after the world has stopped.  So we must	*/
+@@ -2244,6 +2246,9 @@
+ # if defined(GC_AIX_THREADS) && !defined(_AIX)
+ 	--> inconsistent configuration
+ # endif
++# if defined(GC_GNU_THREADS) && !defined(HURD)
++	--> inconsistent configuration
++# endif
+ # if defined(GC_WIN32_THREADS) && !defined(MSWIN32) && !defined(CYGWIN32)
+ 	--> inconsistent configuration
+ # endif
+--- a/src/boehm-gc/include/gc_config.h.in.orig	2009-02-08 01:51:09.707191000 +0000
++++ b/src/boehm-gc/include/gc_config.h.in	2009-02-08 01:54:06.298757000 +0000
+@@ -33,6 +33,9 @@
+ /* include support for gcj */
+ #undef GC_GCJ_SUPPORT
+ 
++/* support GNU/Hurd threads */
++#undef GC_GNU_THREADS
++
+ /* enables support for HP/UX 11 pthreads */
+ #undef GC_HPUX_THREADS
+ 
+--- a/src/boehm-gc/specific.c.orig	2009-02-08 03:44:40.833287000 +0000
++++ b/src/boehm-gc/specific.c	2009-02-08 03:44:50.865199000 +0000
+@@ -13,7 +13,7 @@
+ 
+ #include "private/gc_priv.h" /* For GC_compare_and_exchange, GC_memory_barrier */
+ 
+-#if defined(GC_LINUX_THREADS)
++#if defined(GC_LINUX_THREADS) || defined(GC_GNU_THREADS)
+ 
+ #include "private/specific.h"
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/ada-sjlj.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-sjlj.diff
@@ -0,0 +1,728 @@
+# DP: There are two exception mechanisms to choose from: zero-cost and
+# DP: setjump/longjump.  The Ada run-time library uses either of them
+# DP: but not both.  Build both versions of the run-time library.
+
+# This patch changes the way the upstream Makefiles build the run-time
+# library.  Before the patch: libada/Makefile calls gcc/ada/Makefile,
+# which builds the "rts" subdirectory containing symbolic links to
+# most source files, and modified copies of a few source files (to
+# take target dependencies into account, and also to select the
+# exception handling mechanism in system.ads).  Then, gcc/ada/Makefile
+# calls itself recursively but in the "rts" subdirectory and builds
+# libgnat.a and libgnarl.a (and a couple other libraries:
+# libgccprefix.a, libgmem.a).  Upon return from this recursive call,
+# it deletes the source and object files from "rts", reconstructs the
+# source files, and builds libgnat.so and libgnarl.so by calling
+# itself recursively a second time in the "rts" directory.
+
+# Furthermore, gcc/ada/Makefile disables parallel makes, so building
+# the static and then shared versions of the RTS is entirely
+# sequential even on SMP systems.
+
+#Â As a consequence of the above, building the SJLJ version of the
+# library would overwrite the ZCX version.  Thus it is necessary to
+# manually save the previous version of the library before building the
+# second one.
+
+# After the patch: libada/Makefile calls gcc/ada/Makefile, which
+# builds the source directory (named gnatlib-sources instead of rts),
+# containing the symbolic links and target-dependent files.
+
+# In a second step, libada/Makefile calls gcc/ada/Makefile again to
+# build the targets gnatlib-shared-zcx, gnatlib-static-zcx and
+# gnatlib-static-sjlj (we could also build gnatlib-shared-sjlj, but
+# that triggers compiler errors on PowerPC).
+
+# Each of these three targets copies the source directory "rts" into a
+# new directory named rts-shared-zcx, rts-static-zcx or
+# rts-static-sjlj.  In the new directory, they change the value of
+# System.ZCX_By_Default, and then they call gcc/ada/Makefile
+# recursively in the new directory to build the library.
+
+# gcc/ada/Makefile.in has a .NOTPARALLEL directive preventing it from
+# launching commands in parallel.  However, libada/Makefile has no
+# such directive and can invoke up to three instances of
+# gcc/ada/Makefile.in in parallel.  This is okay because each of them
+# runs in a different directory.
+
+# This patch also updates libgnat{vsn,prj}/Makefile and
+# gnattools/Makefile to look for the shared ZCX version of the library
+# in the appropriate directory, rather than just "rts", and updates
+# the "make install" and binary targets as well.
+
+Index: b/src/libada/Makefile.in
+===================================================================
+--- a/src/libada/Makefile.in
++++ b/src/libada/Makefile.in
+@@ -16,7 +16,8 @@
+ # <http://www.gnu.org/licenses/>.
+ 
+ # Default target; must be first.
+-all: gnatlib
++GNATLIB = gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx
++all: $(GNATLIB)
+ 	$(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
+ 
+ .PHONY: all
+@@ -97,26 +98,28 @@
+         "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)"
+ 
+ # Rules to build gnatlib.
+-.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
+-gnatlib: @default_gnatlib_target@
++.PHONY: $(GNATLIB) osconstool
+ 
+-gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile
+-	test -f stamp-libada || \
+-	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \
+-	&& touch stamp-libada
+-	-rm -rf adainclude
+-	-rm -rf adalib
+-	$(LN_S) $(ADA_RTS_DIR) adainclude
+-	$(LN_S) $(ADA_RTS_DIR) adalib
+-
+-gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile
+-	test -f stamp-libada || \
+-	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \
+-	&& touch stamp-libada
+-	-rm -rf adainclude
+-	-rm -rf adalib
+-	$(LN_S) $(ADA_RTS_DIR) adainclude
+-	$(LN_S) $(ADA_RTS_DIR) adalib
++$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads:
++	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) \
++	  EH_MECHANISM="" \
++	  gnatlib-sources-sjlj/a-except.ads
++
++$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads:
++	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) \
++	  EH_MECHANISM="-gcc" \
++	  gnatlib-sources-zcx/a-except.ads
++
++$(GNATLIB): osconstool $(GCC_DIR)/ada/Makefile \
++$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads \
++$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads
++	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
++	  GNATLIBFLAGS="$(GNATLIBFLAGS)" \
++	  GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
++	  TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
++	  THREAD_KIND="$(THREAD_KIND)" \
++	  TRACE="$(TRACE)" \
++	  $@
+ 
+ osconstool:
+ 	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -2234,57 +2234,75 @@
+  a-[a-o]*.adb a-[p-z]*.adb a-[a-o]*.ads a-[p-z]*.ads g-*.ad? i-*.ad? \
+  s-[a-o]*.adb s-[p-z]*.adb s-[a-o]*.ads s-[p-z]*.ads
+ 
+-../stamp-gnatlib-$(RTSDIR):
+-	@if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \
+-	then \
+-	  $(ECHO) You must first build the GNAT library: make gnatlib; \
+-	  false; \
+-	else \
+-	  true; \
+-	fi
++libgnat = libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
++libgnat-sjlj = libgnat$(hyphen)sjlj$(hyphen)$(LIBRARY_VERSION)$(soext)
+ 
+-install-gnatlib: ../stamp-gnatlib-$(RTSDIR)
++install-gnatlib: rts-static-zcx/libgnat$(arext) rts-static-sjlj/libgnat$(arext)
++install-gnatlib: rts-shared-zcx/$(libgnat)
+ #	Create the directory before deleting it, in case the directory is
+ #	a list of directories (as it may be on VMS). This ensures we are
+ #	deleting the right one.
+-	-$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
+-	-$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
+-	$(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
+-	$(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
+-	-$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
+-	-$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
+-	for file in $(RTSDIR)/*.ali; do \
+-	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
++	-$(MKDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR)
++	-$(MKDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)
++	$(RMDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR)
++	$(RMDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)
++	-$(MKDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR)
++	-$(MKDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)
++
++	-$(MKDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR)
++	-$(MKDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)
++	$(RMDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR)
++	$(RMDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)
++	-$(MKDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR)
++	-$(MKDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)
++
++	for file in rts-shared-zcx/*.ali; do \
++	$(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \
++	done
++	for file in rts-static-sjlj/*.ali; do \
++	$(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR); \
++	done
++
++	-cd rts-static-zcx; for file in *$(arext);do \
++	$(INSTALL_DATA) $$file $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \
++	$(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR)/$$file; \
+ 	done
+-	-cd $(RTSDIR); for file in *$(arext);do \
+-	    $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+-	    $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \
++	-cd rts-static-sjlj; for file in *$(arext);do \
++	$(INSTALL_DATA) $$file $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR); \
++	$(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR)/$$file; \
+ 	done
++
++	-$(foreach file, $(EXTRA_ADALIB_FILES), \
++	    $(INSTALL_DATA_DATE) rts-static-zcx/$(file) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) && \
++	) true
+ 	-$(foreach file, $(EXTRA_ADALIB_FILES), \
+-	    $(INSTALL_DATA_DATE) $(RTSDIR)/$(file) $(DESTDIR)$(ADA_RTL_OBJ_DIR) && \
++	    $(INSTALL_DATA_DATE) rts-static-sjlj/$(file) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) && \
+ 	) true
+ #     Install the shared libraries, if any, using $(INSTALL) instead
+ #     of $(INSTALL_DATA). The latter may force a mode inappropriate
+ #     for shared libraries on some targets, e.g. on HP-UX where the x
+ #     permission is required.
+-#     Also install the .dSYM directories if they exist (these directories
+-#     contain the debug information for the shared libraries on darwin)
+ 	for file in gnat gnarl; do \
+-	   if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \
+-	      $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+-			 $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+-	   fi; \
+-	   if [ -d $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \
+-	      $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \
+-	        $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
++	   if [ -f rts-shared-zcx/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \
++	      $(INSTALL) rts-shared-zcx/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
++			 $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \
+ 	   fi; \
+ 	done
+ # This copy must be done preserving the date on the original file.
+-	for file in $(RTSDIR)/*.ad?; do \
+-	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR); \
++	for file in rts-shared-zcx/*.adb rts-shared-zcx/*.ads; do \
++	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR); \
+ 	done
+-	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb
+-	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads
++	$(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)/*.adb
++	$(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)/*.ads
++	for file in rts-static-sjlj/*.adb rts-static-sjlj/*.ads; do \
++	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR); \
++	done
++	$(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)/*.adb
++	$(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)/*.ads
++
++	(cd $(DESTDIR)$(libsubdir); \
++	ln -s rts-native/adainclude adainclude; \
++	ln -s rts-native/adalib     adalib;)
+ 
+ # NOTE: The $(foreach ...) commands assume ";" is the valid separator between
+ #       successive target commands. Although the Gnu make documentation
+@@ -2295,30 +2313,37 @@
+ 
+ # GNULLI Begin ###########################################################
+ 
+-../stamp-gnatlib1-$(RTSDIR): Makefile
+-	$(RMDIR) $(RTSDIR)
+-	$(MKDIR) $(RTSDIR)
+-	$(CHMOD) u+w $(RTSDIR)
++replace_zcx_by_default=\
++'s/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := $(zcx_by_default);/'
++
++gnatlib-sources-zcx/a-except.ads: dir=$(dir $@)
++gnatlib-sources-zcx/a-except.ads: zcx_by_default=True
++
++gnatlib-sources-sjlj/a-except.ads: dir=$(dir $@)
++gnatlib-sources-sjlj/a-except.ads: zcx_by_default=False
++
++gnatlib-sources-zcx/a-except.ads gnatlib-sources-sjlj/a-except.ads:
++	$(MKDIR) $(dir)
++	$(CHMOD) u+w $(dir)
+ # Copy target independent sources
+ 	$(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
+-	  $(LN_S) $(fsrcpfx)ada/$(f) $(RTSDIR) ;) true
++	  $(LN_S) $(fsrcpfx)ada/$(f) $(dir) ;) true
+ # Remove files to be replaced by target dependent sources
+ 	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
+-	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
+-	for f in $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb; do \
++	                $(dir)/$(word 1,$(subst <, ,$(PAIR))))
++	for f in $(dir)/*-*-*.ads $(dir)/*-*-*.adb; do \
+ 	  case "$$f" in \
+-	    $(RTSDIR)/s-stratt-*) ;; \
++	    $(dir)/s-stratt-*) ;; \
+ 	    *) $(RM) $$f ;; \
+ 	  esac; \
+ 	done
+ # Copy new target dependent sources
+ 	$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
+ 	          $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \
+-	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
++	                $(dir)/$(word 1,$(subst <, ,$(PAIR)));)
++	sed -e $(replace_zcx_by_default) $(dir)/system.ads > $(dir)/s.ads
+ # Copy tsystem.h
+-	$(CP) $(srcdir)/tsystem.h $(RTSDIR)
+-	$(RM) ../stamp-gnatlib-$(RTSDIR)
+-	touch ../stamp-gnatlib1-$(RTSDIR)
++	$(CP) $(srcdir)/tsystem.h $(dir)
+ 
+ # GNULLI End #############################################################
+ 
+@@ -2347,9 +2372,10 @@
+ 	$(CP) $^ ./bldtools/oscons
+ 	(cd ./bldtools/oscons ; gnatmake -q xoscons)
+ 
+-$(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons
+-	$(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s
+-	(cd $(RTSDIR) ; \
++%/s-oscons.ads: dir = $(dir $@)
++%/s-oscons.ads: s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons
++	$(RM) $(dir)/s-oscons-tmplt.i $(dir)/s-oscons-tmplt.s
++	(cd $(dir) ; \
+ 	    $(OSCONS_CPP) ; \
+ 	    $(OSCONS_EXTRACT) ; \
+ 	    ../bldtools/oscons/xoscons)
+@@ -2360,8 +2386,11 @@
+ # Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS)
+ # is guaranteed to overflow the buffer.
+ 
+-gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads
+-	$(MAKE) -C $(RTSDIR) \
++%/libgnat$(arext): build_dir = $(dir $@)
++%/libgnat$(arext): libgnarl = $(subst libgnat,libgnarl,$@)
++%/libgnat$(arext): libgnala = $(subst libgnat,libgnala,$@)
++%/libgnat$(arext): % %/s-oscons.ads
++	$(MAKE) -C $(build_dir) \
+ 		CC="`echo \"$(GCC_FOR_TARGET)\" \
+ 		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
+ 	        INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
+@@ -2369,7 +2398,7 @@
+ 	        FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
+ 		srcdir=$(fsrcdir) \
+ 	        -f ../Makefile $(LIBGNAT_OBJS)
+-	$(MAKE) -C $(RTSDIR) \
++	$(MAKE) -C $(build_dir) \
+ 		CC="`echo \"$(GCC_FOR_TARGET)\" \
+ 		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
+ 	        ADA_INCLUDES="" \
+@@ -2377,35 +2406,37 @@
+ 	        ADAFLAGS="$(GNATLIBFLAGS)" \
+ 	        FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
+ 		srcdir=$(fsrcdir) \
+-	        -f ../Makefile \
+-	        $(GNATRTL_OBJS)
+-	$(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext)
+-	$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \
+-	   $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o)
+-	$(RANLIB_FOR_TARGET) $(RTSDIR)/libgnat$(arext)
+-	$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnarl$(arext) \
+-	   $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS))
+-	$(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl$(arext)
+-	$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnala$(arext) \
+-	   $(addprefix $(RTSDIR)/,$(GNATRTL_LINEARALGEBRA_OBJS))
+-	$(RANLIB_FOR_TARGET) $(RTSDIR)/libgnala$(arext)
++		-f ../Makefile \
++		$(GNATRTL_OBJS)
++	$(RM) $@ $(libgnarl)
++	$(AR_FOR_TARGET) $(AR_FLAGS) $@ \
++	   $(addprefix $(build_dir),$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o)
++	$(RANLIB_FOR_TARGET) $@
++	$(AR_FOR_TARGET) $(AR_FLAGS) $(libgnarl) \
++	   $(addprefix $(build_dir),$(GNATRTL_TASKING_OBJS))
++	$(RANLIB_FOR_TARGET) $(libgnarl)
++	$(AR_FOR_TARGET) $(AR_FLAGS) $(libgnala) \
++	   $(addprefix $(build_dir),$(GNATRTL_LINEARALGEBRA_OBJS))
++	$(RANLIB_FOR_TARGET) $(libgnala)
+         ifeq ($(GMEM_LIB),gmemlib)
+-		$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgmem$(arext) \
+-		  $(RTSDIR)/memtrack.o
+-		$(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext)
++		$(AR_FOR_TARGET) $(AR_FLAGS) $(build_dir)libgmem$(arext) \
++		  $(build_dir)memtrack.o
++		$(RANLIB_FOR_TARGET) $(build_dir)libgmem$(arext)
+         endif
+-	touch ../stamp-gnatlib-$(RTSDIR)
+ 
+ # Warning: this target assumes that LIBRARY_VERSION has been set correctly.
+-gnatlib-shared-default: ../stamp-gnatlib1-$(RTSDIR)
+-	$(MAKE) -C $(RTSDIR) \
++%/$(libgnat) %/$(libgnat-sjlj): build_dir = $(dir $@)
++%/$(libgnat) %/$(libgnat-sjlj): libgnarl = $(notdir $(subst libgnat,libgnarl,$@))
++%/$(libgnat) %/$(libgnat-sjlj): libgnala = $(notdir $(subst libgnat,libgnala,$@))
++%/$(libgnat) %/$(libgnat-sjlj): % %/s-oscons.ads
++	$(MAKE) -C $(build_dir) \
+ 		CC="`echo \"$(GCC_FOR_TARGET)\" \
+ 		| sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
+ 	        INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
+                 CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
+ 		srcdir=$(fsrcdir) \
+ 	        -f ../Makefile $(LIBGNAT_OBJS)
+-	$(MAKE) -C $(RTSDIR) \
++	$(MAKE) -C $(build_dir) \
+ 		CC="`echo \"$(GCC_FOR_TARGET)\" \
+ 		| sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
+ 	        ADA_INCLUDES="" \
+@@ -2415,160 +2446,56 @@
+ 		srcdir=$(fsrcdir) \
+ 	        -f ../Makefile \
+ 	        $(GNATRTL_OBJS)
+-	$(RM) $(RTSDIR)/libgna*$(soext) $(RTSDIR)/libgna*$(soext).1
+-	cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
++	$(RM) $(build_dir)/libgna*$(soext) $(build_dir)/libgna*$(soext).1
++	cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
+ 		$(TARGET_LIBGCC2_CFLAGS) \
+-		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
++		-o $(notdir $@).1 \
+ 		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
+ 		g-trasym.o convert_addresses.o \
+-		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
++		$(SO_OPTS)$(notdir $@).1 \
+ 		$(MISCLIB) -lm
+-	cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
++	cd $(build_dir); $(LN_S) $(notdir $@).1 $(notdir $@)
++	cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
+ 		$(TARGET_LIBGCC2_CFLAGS) \
+-		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
++		-o $(libgnarl).1 \
+ 		$(GNATRTL_TASKING_OBJS) \
+-		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
++		$(SO_OPTS)$(libgnarl).1 \
+ 		$(THREADSLIB)
+-	cd $(RTSDIR); for lib in gnat gnarl; do \
+-		l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \
+-		$(LN_S) $$l.1 $$l; \
+-	done
+-# Delete the object files, lest they be linked statically into the tools
+-# executables.  Only the .ali, .a and .so files must remain.
+-	rm -f $(RTSDIR)/*.o
+-	$(CHMOD) a-wx $(RTSDIR)/*.ali
+-
+-gnatlib-shared-dual:
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib-shared-default
+-
+-gnatlib-shared-dual-win32:
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib-shared-win32
+-
+-# ??? we need to add the option to support auto-import of arrays/records to
+-# the GNATLIBFLAGS when this will be supported by GNAT. At this point we will
+-# use the gnatlib-shared-dual-win32 target to build the GNAT runtimes on
+-# Windows.
+-gnatlib-shared-win32:
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(RM) $(RTSDIR)/libgna*$(soext)
+-	cd $(RTSDIR); ../../xgcc -B../../ -shared -shared-libgcc \
+-		$(TARGET_LIBGCC2_CFLAGS) \
+-		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
+-		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB)
+-	cd $(RTSDIR); ../../xgcc -B../../ -shared -shared-libgcc \
++	cd $(build_dir); $(LN_S) $(libgnarl).1 $(libgnarl)
++# TODO: enable building the shared libgnala
++ifeq (libgnala-shared-enabled,yes)
++	cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
+ 		$(TARGET_LIBGCC2_CFLAGS) \
+-		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(GNATRTL_TASKING_OBJS) \
+-		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
+-
+-gnatlib-shared-darwin:
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) -fno-common" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-	     gnatlib
+-	$(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext)
+-	cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
+-		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
+-		$(SO_OPTS) \
+-		-Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(MISCLIB) -lm
+-	cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
+-		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(GNATRTL_TASKING_OBJS) \
+-		$(SO_OPTS) \
+-		-Wl,-install_name,@rpath/libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
+-	cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		libgnat$(soext)
+-	cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		libgnarl$(soext)
+-	cd $(RTSDIR); dsymutil libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
+-	cd $(RTSDIR); dsymutil libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext)
++		-o $(libgnala).1 \
++		$(GNATRTL_LINEARALGEBRA_OBJS) \
++		$(SO_OPTS)$(libgnala).1
++	cd $(build_dir); $(LN_S) $(libgnala).1 $(libgnala)
++endif
+ 
+-gnatlib-shared-vms:
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(RM) $(RTSDIR)/libgna*$(soext)
+-	cd $(RTSDIR) && \
+-	../../gnatsym -s SYMVEC_$$$$.opt \
+-	$(LIBGNAT_OBJS) $(GNATRTL_NONTASKING_OBJS) && \
+-	../../xgcc -g -B../../ -shared -shared-libgcc \
+-	   -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) libgnat.a \
+-	   sys\$$library:trace.exe \
+-	   --for-linker=/noinform \
+-	   --for-linker=SYMVEC_$$$$.opt \
+-	   --for-linker=gsmatch=equal,$(GSMATCH_VERSION)
+-	cd $(RTSDIR) && \
+-	../../gnatsym -s SYMVEC_$$$$.opt \
+-	$(GNATRTL_TASKING_OBJS) && \
+-	../../xgcc -g -B../../ -shared -shared-libgcc \
+-	   -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-	   libgnarl.a libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-	   sys\$$library:trace.exe \
+-	   --for-linker=/noinform \
+-	   --for-linker=SYMVEC_$$$$.opt \
+-	   --for-linker=gsmatch=equal,$(GSMATCH_VERSION)
++gnatlib-shared-dual: gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx
+ 
+-gnatlib-shared:
++gnatlib-shared-zcx: rts = $(subst gnatlib,rts,$@)
++gnatlib-shared-zcx: gnatlib-sources-zcx/a-except.ads
++	if [ ! -d $(rts) ] ; then \
++	    cp -a gnatlib-sources-zcx $(rts); \
++	    $(MV) $(rts)/s.ads $(rts)/system.ads; \
++	fi
+ 	$(MAKE) $(FLAGS_TO_PASS) \
++	     EH_MECHANISM="-gcc" \
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+ 	     TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
+-             $(GNATLIB_SHARED)
++	     $(rts)/$(libgnat)
+ 
+-gnatlib-sjlj:
+-	$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \
+-	THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR)
+-	sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
+-	$(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
++gnatlib-static-sjlj: rts = $(subst gnatlib,rts,$@)
++gnatlib-static-sjlj: gnatlib-sources-sjlj/a-except.ads
++	if [ ! -d $(rts) ] ; then \
++	    cp -a gnatlib-sources-sjlj $(rts); \
++	    $(MV) $(rts)/s.ads $(rts)/system.ads; \
++	fi
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+ 	     EH_MECHANISM="" \
+ 	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+@@ -2576,13 +2503,15 @@
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-	     TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib
++	     TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
++	     $(rts)/libgnat$(arext)
+ 
+-gnatlib-zcx:
+-	$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" \
+-	THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR)
+-	sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := True;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
+-	$(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
++gnatlib-static-zcx: rts = $(subst gnatlib,rts,$@)
++gnatlib-static-zcx: gnatlib-sources-zcx/a-except.ads
++	if [ ! -d $(rts) ] ; then \
++	    cp -a gnatlib-sources-zcx $(rts); \
++	    $(MV) $(rts)/s.ads $(rts)/system.ads; \
++	fi
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+ 	     EH_MECHANISM="-gcc" \
+ 	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+@@ -2590,7 +2519,8 @@
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-	     TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib
++	     TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
++	     $(rts)/libgnat$(arext)
+ 
+ # .s files for cross-building
+ gnat-cross: force
+@@ -2598,6 +2528,10 @@
+ 
+ ADA_INCLUDE_DIR = $(libsubdir)/adainclude
+ ADA_RTL_OBJ_DIR = $(libsubdir)/adalib
++ADA_NATIVE_INCLUDE_DIR = $(libsubdir)/rts-native/adainclude
++ADA_NATIVE_RTL_OBJ_DIR = $(libsubdir)/rts-native/adalib
++ADA_SJLJ_INCLUDE_DIR = $(libsubdir)/rts-sjlj/adainclude
++ADA_SJLJ_RTL_OBJ_DIR = $(libsubdir)/rts-sjlj/adalib
+ 
+ # force no sibling call optimization on s-traceb.o so the number of stack
+ # frames to be skipped when computing a call chain is not modified by
+Index: b/src/gnattools/Makefile.in
+===================================================================
+--- a/src/gnattools/Makefile.in
++++ b/src/gnattools/Makefile.in
+@@ -35,12 +35,13 @@
+ LN_S=@LN_S@
+ target_noncanonical=@target_noncanonical@
+ 
++RTS=../gcc/ada/rts-shared-zcx
+ CFLAGS=-O2 -Wall
+ ADA_CFLAGS=-O2 -gnatn
+-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj
++ADA_INCLUDES=-nostdinc -I- -I. -I$(RTS) -I../libgnatvsn -I../libgnatprj
+ LIB_VERSION=$(strip $(shell grep ' Library_Version :' \
+               ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
+-ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION)
++ADA_LIBS := -L$(RTS) -lgnat-$(LIB_VERSION)
+ ADA_LIBS += -L../libgnatvsn -lgnatvsn
+ ADA_LIBS += -L../libgnatprj -lgnatprj
+ 
+@@ -110,6 +111,7 @@
+ 
+ .PHONY: gnattools gnattools-native gnattools-cross regnattools
+ gnattools: @default_gnattools_target@
++	(cd $(RTS); if [ -d obj ]; then mv obj/* .; rmdir obj; fi)
+ 
+ BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f))))
+ SPECS  := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f))))
+@@ -120,9 +122,12 @@
+ 	for file in $(BODIES) $(SPECS); do \
+ 	   $(LN_S) -f $$file .; \
+ 	done
++# Move the RTS object files away lest they be linked statically into the
++# tools.  Only the .ali, .a and .so files must remain.
++	(cd $(RTS); mkdir obj; mv *.o obj; chmod a-wx *.ali)
+ 	touch $@
+ 
+-gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so
++gnattools-native: $(RTS)/libgnat-$(LIB_VERSION).so
+ gnattools-native: ../libgnatvsn/libgnatvsn.so
+ gnattools-native: stamp-gnattools-sources
+ gnattools-native: $(TOOLS)
+@@ -138,7 +143,7 @@
+ 	$(GCC) -o $@ $^ \
+ 	   ../libgnatprj/libgnatprj.a \
+ 	   ../libgnatvsn/libgnatvsn.a \
+-	   ../gcc/ada/rts/libgnat.a \
++	   ../gcc/ada/rts-static-zcx/libgnat.a \
+ 	   ../libiberty/libiberty.a
+ 
+ gnatlink: $(GNATLINK_OBJS) b_gnatl.o
+@@ -156,7 +161,7 @@
+ 	$(GCC) -o $@ $(ADA_CFLAGS) $^ \
+ 	   ../libgnatprj/libgnatprj.a \
+ 	   ../libgnatvsn/libgnatvsn.a \
+-	   ../gcc/ada/rts/libgnat.a \
++	   ../gcc/ada/rts-static-zcx/libgnat.a \
+ 	   ../libiberty/libiberty.a
+ 
+ gnatmake: $(GNATMAKE_OBJS) b_gnatm.o
+Index: b/src/libgnatprj/Makefile.in
+===================================================================
+--- a/src/libgnatprj/Makefile.in
++++ b/src/libgnatprj/Makefile.in
+@@ -25,7 +25,8 @@
+                  @srcdir@/../gcc/ada/gnatvsn.ads | \
+ 	         sed -e 's/.*"\(.*\)".*/\1/'))
+ GCC:=../gcc/xgcc -B../gcc/
+-LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts
++RTS:=../gcc/ada/rts-shared-zcx
++LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS)
+ LIBGNATVSN := -I../libgnatvsn
+ CFLAGS := -g -O2
+ ADAFLAGS := -g -O2 -gnatn
+@@ -70,7 +71,7 @@
+ libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS))
+ 	: # Make libgnatprj.so
+ 	$(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \
+-	   -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \
++	   -L$(RTS) -lgnat-$(LIB_VERSION) \
+ 	   -L../libgnatvsn -lgnatvsn
+ 	$(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so
+ 	chmod a=r obj-shared/*.ali
+Index: b/src/libgnatvsn/Makefile.in
+===================================================================
+--- a/src/libgnatvsn/Makefile.in
++++ b/src/libgnatvsn/Makefile.in
+@@ -25,7 +25,8 @@
+                  @srcdir@/../gcc/ada/gnatvsn.ads | \
+ 	         sed -e 's/.*"\(.*\)".*/\1/'))
+ GCC:=../gcc/xgcc -B../gcc/
+-LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts
++RTS:=../gcc/ada/rts-shared-zcx
++LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS)
+ CFLAGS := -g -O2 -gnatn
+ BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER)
+ DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE)
+@@ -66,7 +67,7 @@
+ libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS))
+ 	: # Make libgnatvsn.so
+ 	$(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \
+-	   -L../gcc/ada/rts -lgnat-$(LIB_VERSION)
++	   -L$(RTS) -lgnat-$(LIB_VERSION)
+ 	ln -s libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so
+ 	chmod a=r obj-shared/*.ali
+ # Make the .ali files, but not the .o files, visible to the gnat tools.
+Index: b/src/gcc/ada/gcc-interface/Make-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Make-lang.in
++++ b/src/gcc/ada/gcc-interface/Make-lang.in
+@@ -70,7 +70,8 @@
+ 	"ADA_FOR_TARGET=$(ADA_FOR_TARGET)"	\
+ 	"INSTALL=$(INSTALL)" 			\
+ 	"INSTALL_DATA=$(INSTALL_DATA)"		\
+-	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)"
++	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)"	\
++	"GCC_FOR_TARGET=$(GCC_FOR_TARGET)"
+ 
+ # Say how to compile Ada programs.
+ .SUFFIXES: .ada .adb .ads
--- gcc-4.6-4.6.3.orig/debian/patches/boehm-gc-nocheck.diff
+++ gcc-4.6-4.6.3/debian/patches/boehm-gc-nocheck.diff
@@ -0,0 +1,18 @@
+# DP: Disable running the boehm-gc testsuite. Hangs the buildd at least on hppa.
+
+---
+ boehm-gc/Makefile.in |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+--- a/src/boehm-gc/Makefile.in
++++ b/src/boehm-gc/Makefile.in
+@@ -684,7 +684,8 @@ check-TESTS: $(TESTS)
+ 	  test "$$failed" -eq 0; \
+ 	else :; fi
+ check-am: $(check_PROGRAMS)
+-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
++	: # $(MAKE) $(AM_MAKEFLAGS) check-TESTS
++	@echo target $@ disabled for Debian build.
+ check: check-recursive
+ all-am: Makefile $(LTLIBRARIES) all-multi
+ installdirs: installdirs-recursive
--- gcc-4.6-4.6.3.orig/debian/patches/pr47955.diff
+++ gcc-4.6-4.6.3/debian/patches/pr47955.diff
@@ -0,0 +1,17 @@
+# DP: Backport m68k bugfix from gcc-4.7/trunk
+
+Index: gcc-4.6-4.6.3/src/gcc/config/m68k/m68k.c
+===================================================================
+--- gcc-4.6-4.6.3.orig/src/gcc/config/m68k/m68k.c	2011-07-31 15:09:25.000000000 +0000
++++ gcc-4.6-4.6.3/src/gcc/config/m68k/m68k.c	2012-03-04 15:55:43.000000000 +0000
+@@ -1074,6 +1074,10 @@
+ 
+   m68k_compute_frame_layout ();
+ 
++  if (flag_stack_usage)
++    current_function_static_stack_size
++      = current_frame.size + current_frame.offset;
++
+   /* If the stack limit is a symbol, we can check it here,
+      before actually allocating the space.  */
+   if (crtl->limit_stack
--- gcc-4.6-4.6.3.orig/debian/patches/pr49944.diff
+++ gcc-4.6-4.6.3/debian/patches/pr49944.diff
@@ -0,0 +1,244 @@
+# DP: apply proposed patch for PR ada/49444.
+# Status: submitted upstream
+
+2011-08-05  Ludovic Brenta <ludovic@ludovic-brenta.org>
+
+	PR ada/49944
+	* s-osinte-freebsd.ads: Update copyright years. Minor reformatting.
+	(Stack_Base_Available): Correct comments.
+	* s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported, nanosleep,
+	clock_id_t, clock_gettime, Stack_Base_Available, Get_Page_Size,
+	mprotect, pthread_mutexattr_setprotocol, pthread_mutexattr_getprotocol,
+	pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling,
+	pthread_attr_setscope, pthread_attr_getscope,
+	pthread_attr_setinheritsched, pthread_attr_getinheritsched,
+	Time_Slice_Supported): Copy from s-osinte-freebsd.ads.
+
+--- a/src/gcc/ada/s-osinte-kfreebsd-gnu.ads
++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads
+@@ -7,7 +7,7 @@
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-1994, Florida State University            --
+---             Copyright (C) 1995-2005,2008 Free Software Foundation, Inc.  --
++--          Copyright (C) 1995-2011, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is free software; you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+@@ -32,7 +32,7 @@
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+---  This is the GNU/kFreeBSD (GNU/LinuxThreads) version of this package
++--  This is the GNU/kFreeBSD (POSIX Threads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+@@ -200,8 +200,24 @@
+    -- Time --
+    ----------
+ 
++   Time_Slice_Supported : constant Boolean := True;
++   --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
++
+    type timespec is private;
+ 
++   function nanosleep (rqtp, rmtp : access timespec) return int;
++   pragma Import (C, nanosleep, "nanosleep");
++
++   type clockid_t is private;
++
++   CLOCK_REALTIME : constant clockid_t;
++
++   function clock_gettime
++     (clock_id : clockid_t;
++      tp       : access timespec)
++      return int;
++   pragma Import (C, clock_gettime, "clock_gettime");
++
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+@@ -273,6 +289,10 @@
+    type pthread_key_t       is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
++   PTHREAD_CREATE_JOINABLE : constant := 0;
++
++   PTHREAD_SCOPE_PROCESS : constant := 0;
++   PTHREAD_SCOPE_SYSTEM  : constant := 2;
+ 
+    -----------
+    -- Stack --
+@@ -296,9 +316,29 @@
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
++   Stack_Base_Available : constant Boolean := False;
++   --  Indicates whether the stack base is available on this target
++
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+-   --  This is a dummy procedure to share some GNULLI files
++   --  returns the stack base of the specified thread. Only call this function
++   --  when Stack_Base_Available is True.
++
++   function Get_Page_Size return size_t;
++   function Get_Page_Size return Address;
++   pragma Import (C, Get_Page_Size, "getpagesize");
++   --  Returns the size of a page
++
++   PROT_NONE  : constant := 0;
++   PROT_READ  : constant := 1;
++   PROT_WRITE : constant := 2;
++   PROT_EXEC  : constant := 4;
++   PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
++   PROT_ON    : constant := PROT_NONE;
++   PROT_OFF   : constant := PROT_ALL;
++
++   function mprotect (addr : Address; len : size_t; prot : int) return int;
++   pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+@@ -387,6 +427,36 @@
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
++   PTHREAD_PRIO_NONE    : constant := 0;
++   PTHREAD_PRIO_PROTECT : constant := 2;
++   PTHREAD_PRIO_INHERIT : constant := 1;
++
++   function pthread_mutexattr_setprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : int) return int;
++   pragma Import
++      (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
++
++   function pthread_mutexattr_getprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : access int) return int;
++   pragma Import
++     (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
++
++   function pthread_mutexattr_setprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : int) return int;
++   pragma Import
++     (C, pthread_mutexattr_setprioceiling,
++      "pthread_mutexattr_setprioceiling");
++
++   function pthread_mutexattr_getprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : access int) return int;
++   pragma Import
++     (C, pthread_mutexattr_getprioceiling,
++      "pthread_mutexattr_getprioceiling");
++
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+    end record;
+@@ -398,6 +468,28 @@
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
++   function pthread_attr_setscope
++     (attr            : access pthread_attr_t;
++      contentionscope : int) return int;
++   pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
++
++   function pthread_attr_getscope
++     (attr            : access pthread_attr_t;
++      contentionscope : access int) return int;
++   pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
++
++   function pthread_attr_setinheritsched
++     (attr            : access pthread_attr_t;
++      inheritsched : int) return int;
++   pragma Import
++     (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched");
++
++   function pthread_attr_getinheritsched
++     (attr         : access pthread_attr_t;
++      inheritsched : access int) return int;
++   pragma Import
++     (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched");
++
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+@@ -508,6 +600,9 @@
+    end record;
+    pragma Convention (C, timespec);
+ 
++   type clockid_t is new int;
++   CLOCK_REALTIME : constant clockid_t := 0;
++
+    type pthread_attr_t is record
+       detachstate   : int;
+       schedpolicy   : int;
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1125,9 +1125,7 @@
+   s-osinte.adb<s-osinte-posix.adb \
+   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
+   s-osprim.adb<s-osprim-posix.adb \
+-  s-taprop.adb<s-taprop-linux.adb \
+-  s-tasinf.ads<s-tasinf-linux.ads \
+-  s-tasinf.adb<s-tasinf-linux.adb \
++  s-taprop.adb<s-taprop-posix.adb \
+   s-taspri.ads<s-taspri-posix.ads \
+   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+   system.ads<system-freebsd-x86.ads
+@@ -1153,9 +1151,7 @@
+   s-osinte.adb<s-osinte-posix.adb \
+   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
+   s-osprim.adb<s-osprim-posix.adb \
+-  s-taprop.adb<s-taprop-linux.adb \
+-  s-tasinf.ads<s-tasinf-linux.ads \
+-  s-tasinf.adb<s-tasinf-linux.adb \
++  s-taprop.adb<s-taprop-posix.adb \
+   s-taspri.ads<s-taspri-posix.ads \
+   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+   system.ads<system-freebsd-x86_64.ads
+--- a/src/gcc/ada/s-osinte-freebsd.ads
++++ b/src/gcc/ada/s-osinte-freebsd.ads
+@@ -7,7 +7,7 @@
+ --                                   S p e c                                --
+ --                                                                          --
+ --             Copyright (C) 1991-1994, Florida State University            --
+---          Copyright (C) 1995-2009, Free Software Foundation, Inc.         --
++--          Copyright (C) 1995-2011, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is free software; you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+@@ -33,7 +33,7 @@
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+---  This is the FreeBSD PTHREADS version of this package
++--  This is the FreeBSD (POSIX Threads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+@@ -199,7 +199,7 @@
+ 
+    type timespec is private;
+ 
+-   function nanosleep (rqtp, rmtp : access timespec)  return int;
++   function nanosleep (rqtp, rmtp : access timespec) return int;
+    pragma Import (C, nanosleep, "nanosleep");
+ 
+    type clockid_t is private;
+@@ -313,10 +313,7 @@
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+-   --  Indicates whether the stack base is available on this target. This
+-   --  allows us to share s-osinte.adb between all the FSU run time. Note that
+-   --  this value can only be true if pthread_t has a complete definition that
+-   --  corresponds exactly to the C header files.
++   --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
--- gcc-4.6-4.6.3.orig/debian/patches/pr48830.diff
+++ gcc-4.6-4.6.3/debian/patches/pr48830.diff
@@ -0,0 +1,223 @@
+# DP: Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk.
+
+ChangeLog.linaro
+
+2011-07-13  Michael Hope  <michael.hope@linaro.org>
+
+	Backport from mainline r174540
+	LP: #807573
+
+	gcc/
+	2011-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR rtl-optimization/48830
+	PR rtl-optimization/48808
+	PR rtl-optimization/48792
+	* reload.c (push_reload): Check contains_reg_of_mode.
+	* reload1.c (strip_paradoxical_subreg): New function.
+	(gen_reload_chain_without_interm_reg_p): Use it to handle
+	paradoxical subregs.
+	(emit_output_reload_insns, gen_reload): Likewise.
+
+	gcc/testsuite/
+	2011-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+		    Hans-Peter Nilsson  <hp@axis.com>
+
+	PR rtl-optimization/48830
+	* gcc.target/sparc/ultrasp12.c: New test.
+
+--- a/src/gcc/reload.c
++++ b/src/gcc/reload.c
+@@ -1017,6 +1017,7 @@
+ #ifdef CANNOT_CHANGE_MODE_CLASS
+       && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SUBREG_REG (in)), inmode, rclass)
+ #endif
++      && contains_reg_of_mode[(int) rclass][(int) GET_MODE (SUBREG_REG (in))]
+       && (CONSTANT_P (SUBREG_REG (in))
+ 	  || GET_CODE (SUBREG_REG (in)) == PLUS
+ 	  || strict_low
+@@ -1123,6 +1124,7 @@
+ #ifdef CANNOT_CHANGE_MODE_CLASS
+       && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SUBREG_REG (out)), outmode, rclass)
+ #endif
++      && contains_reg_of_mode[(int) rclass][(int) GET_MODE (SUBREG_REG (out))]
+       && (CONSTANT_P (SUBREG_REG (out))
+ 	  || strict_low
+ 	  || (((REG_P (SUBREG_REG (out))
+--- a/src/gcc/reload1.c
++++ b/src/gcc/reload1.c
+@@ -4478,6 +4478,43 @@
+ 	}
+     }
+ }
++
++/* *OP_PTR and *OTHER_PTR are two operands to a conceptual reload.
++   If *OP_PTR is a paradoxical subreg, try to remove that subreg
++   and apply the corresponding narrowing subreg to *OTHER_PTR.
++   Return true if the operands were changed, false otherwise.  */
++
++static bool
++strip_paradoxical_subreg (rtx *op_ptr, rtx *other_ptr)
++{
++  rtx op, inner, other, tem;
++
++  op = *op_ptr;
++  if (GET_CODE (op) != SUBREG)
++    return false;
++
++  inner = SUBREG_REG (op);
++  if (GET_MODE_SIZE (GET_MODE (op)) <= GET_MODE_SIZE (GET_MODE (inner)))
++    return false;
++
++  other = *other_ptr;
++  tem = gen_lowpart_common (GET_MODE (inner), other);
++  if (!tem)
++    return false;
++
++  /* If the lowpart operation turned a hard register into a subreg,
++     rather than simplifying it to another hard register, then the
++     mode change cannot be properly represented.  For example, OTHER
++     might be valid in its current mode, but not in the new one.  */
++  if (GET_CODE (tem) == SUBREG
++      && REG_P (other)
++      && HARD_REGISTER_P (other))
++    return false;
++
++  *op_ptr = inner;
++  *other_ptr = tem;
++  return true;
++}
+ 
+ /* A subroutine of reload_as_needed.  If INSN has a REG_EH_REGION note,
+    examine all of the reload insns between PREV and NEXT exclusive, and
+@@ -5558,7 +5595,7 @@
+      chain reloads or do need an intermediate hard registers.  */
+   bool result = true;
+   int regno, n, code;
+-  rtx out, in, tem, insn;
++  rtx out, in, insn;
+   rtx last = get_last_insn ();
+ 
+   /* Make r2 a component of r1.  */
+@@ -5577,11 +5614,7 @@
+ 
+   /* If IN is a paradoxical SUBREG, remove it and try to put the
+      opposite SUBREG on OUT.  Likewise for a paradoxical SUBREG on OUT.  */
+-  if (GET_CODE (in) == SUBREG
+-      && (GET_MODE_SIZE (GET_MODE (in))
+-	  > GET_MODE_SIZE (GET_MODE (SUBREG_REG (in))))
+-      && (tem = gen_lowpart_common (GET_MODE (SUBREG_REG (in)), out)) != 0)
+-    in = SUBREG_REG (in), out = tem;
++  strip_paradoxical_subreg (&in, &out);
+ 
+   if (GET_CODE (in) == PLUS
+       && (REG_P (XEXP (in, 0))
+@@ -7583,7 +7616,6 @@
+ 	      if (tertiary_icode != CODE_FOR_nothing)
+ 		{
+ 		  rtx third_reloadreg = rld[tertiary_reload].reg_rtx;
+-		  rtx tem;
+ 
+ 		  /* Copy primary reload reg to secondary reload reg.
+ 		     (Note that these have been swapped above, then
+@@ -7592,13 +7624,7 @@
+ 		  /* If REAL_OLD is a paradoxical SUBREG, remove it
+ 		     and try to put the opposite SUBREG on
+ 		     RELOADREG.  */
+-		  if (GET_CODE (real_old) == SUBREG
+-		      && (GET_MODE_SIZE (GET_MODE (real_old))
+-			  > GET_MODE_SIZE (GET_MODE (SUBREG_REG (real_old))))
+-		      && 0 != (tem = gen_lowpart_common
+-			       (GET_MODE (SUBREG_REG (real_old)),
+-				reloadreg)))
+-		    real_old = SUBREG_REG (real_old), reloadreg = tem;
++		  strip_paradoxical_subreg (&real_old, &reloadreg);
+ 
+ 		  gen_reload (reloadreg, second_reloadreg,
+ 			      rl->opnum, rl->when_needed);
+@@ -8414,16 +8440,8 @@
+ 
+   /* If IN is a paradoxical SUBREG, remove it and try to put the
+      opposite SUBREG on OUT.  Likewise for a paradoxical SUBREG on OUT.  */
+-  if (GET_CODE (in) == SUBREG
+-      && (GET_MODE_SIZE (GET_MODE (in))
+-	  > GET_MODE_SIZE (GET_MODE (SUBREG_REG (in))))
+-      && (tem = gen_lowpart_common (GET_MODE (SUBREG_REG (in)), out)) != 0)
+-    in = SUBREG_REG (in), out = tem;
+-  else if (GET_CODE (out) == SUBREG
+-	   && (GET_MODE_SIZE (GET_MODE (out))
+-	       > GET_MODE_SIZE (GET_MODE (SUBREG_REG (out))))
+-	   && (tem = gen_lowpart_common (GET_MODE (SUBREG_REG (out)), in)) != 0)
+-    out = SUBREG_REG (out), in = tem;
++  if (!strip_paradoxical_subreg (&in, &out))
++    strip_paradoxical_subreg (&out, &in);
+ 
+   /* How to do this reload can get quite tricky.  Normally, we are being
+      asked to reload a simple operand, such as a MEM, a constant, or a pseudo
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/sparc/ultrasp12.c
+@@ -0,0 +1,64 @@
++/* PR rtl-optimization/48830 */
++/* Testcase by Hans-Peter Nilsson <hp@gcc.gnu.org> */
++
++/* { dg-do compile } */
++/* { dg-require-effective-target lp64 } */
++/* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
++
++typedef unsigned char uint8_t;
++typedef unsigned int uint32_t;
++typedef unsigned long int uint64_t;
++typedef unsigned long int uintmax_t;
++typedef unsigned char rc_vec_t __attribute__((__vector_size__(8)));
++typedef short rc_svec_type_ __attribute__((__vector_size__(8)));
++typedef unsigned char rc_vec4_type_ __attribute__((__vector_size__(4)));
++
++void
++rc_stat_xsum_acc(const uint8_t *__restrict src1, int src1_dim,
++                 const uint8_t *__restrict src2, int src2_dim,
++                 int len, int height, uintmax_t sum[5])
++{
++    uint32_t s1 = 0;
++    uint32_t s2 = 0;
++    uintmax_t s11 = 0;
++    uintmax_t s22 = 0;
++    uintmax_t s12 = 0;
++    int full = len / ((1024) < (1024) ? (1024) : (1024));
++    int rem = len % ((1024) < (1024) ? (1024) : (1024));
++    int rem1 = rem / 1;
++    int y;
++    unsigned int rc_gsr_scale_ __attribute__ ((__unused__)) = 7; unsigned int rc_gsr_align_ __attribute__ ((__unused__)) = 4; unsigned int rc_gsr_set_ __attribute__ ((__unused__)) = 0; register unsigned int rc_gsr_fakedep_ __attribute__ ((__unused__)) = 0; unsigned int rc_gsr_ldinit_ __attribute__ ((__unused__)) = 0;
++    for (y = 0; y < height; y++) {
++        rc_vec_t a1, a2, a11, a22, a12;
++        int i1 = (y)*(src1_dim);
++        int i2 = (y)*(src2_dim);
++        int x;
++        ((a1) = ((rc_vec_t) {0}));
++        ((a2) = ((rc_vec_t) {0}));
++        ((a11) = ((rc_vec_t) {0}));
++        ((a22) = ((rc_vec_t) {0}));
++        ((a12) = ((rc_vec_t) {0}));
++        for (x = 0; x < full; x++) {
++            int k;
++            for (k = 0; k < ((1024) < (1024) ? (1024) : (1024)) /
++                            1; k++)
++            {
++                do { rc_vec_t v1, v2; ((v1) = *(const rc_vec_t*)(&(src1)[i1])); ((v2) = *(const rc_vec_t*)(&(src2)[i2])); ((a1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(__builtin_vis_pdist (v1, ((rc_vec_t) {0}), (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)))).v)); ((a2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(__builtin_vis_pdist (v2, ((rc_vec_t) {0}), (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)))).v)); do { rc_vec_t s1_ = (v1); rc_vec_t s2_ = (v1); rc_vec_t accvin_ = (a11); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a11) = accvout_; } while (0); do { rc_vec_t s1_ = (v2); rc_vec_t s2_ = (v2); rc_vec_t accvin_ = (a22); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a22) = accvout_; } while (0); do { rc_vec_t s1_ = (v1); rc_vec_t s2_ = (v2); rc_vec_t accvin_ = (a12); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a12) = accvout_; } while (0); (i1) += 8; (i2) += 8; } while (0);
++
++            }
++            do { uint32_t t1, t2, t11, t22, t12; ((t1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)); ((t2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a11); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t11) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a22); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t22) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a12); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t12) = maclo_ + machi_ * 256; } while (0); ((a1) = ((rc_vec_t) {0})); ((a2) = ((rc_vec_t) {0})); ((a11) = ((rc_vec_t) {0})); ((a22) = ((rc_vec_t) {0})); ((a12) = ((rc_vec_t) {0})); (s1) += t1; (s2) += t2; (s11) += t11; (s22) += t22; (s12) += t12; } while (0);
++        }
++        for (x = 0; x < rem1; x++) {
++            do { rc_vec_t v1, v2; ((v1) = *(const rc_vec_t*)(&(src1)[i1])); ((v2) = *(const rc_vec_t*)(&(src2)[i2])); ((a1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(__builtin_vis_pdist (v1, ((rc_vec_t) {0}), (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)))).v)); ((a2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(__builtin_vis_pdist (v2, ((rc_vec_t) {0}), (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)))).v)); do { rc_vec_t s1_ = (v1); rc_vec_t s2_ = (v1); rc_vec_t accvin_ = (a11); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a11) = accvout_; } while (0); do { rc_vec_t s1_ = (v2); rc_vec_t s2_ = (v2); rc_vec_t accvin_ = (a22); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a22) = accvout_; } while (0); do { rc_vec_t s1_ = (v1); rc_vec_t s2_ = (v2); rc_vec_t accvin_ = (a12); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a12) = accvout_; } while (0); (i1) += 8; (i2) += 8; } while (0);
++        }
++        do { uint32_t t1, t2, t11, t22, t12; ((t1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)); ((t2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a11); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t11) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a22); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t22) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a12); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t12) = maclo_ + machi_ * 256; } while (0); ((a1) = ((rc_vec_t) {0})); ((a2) = ((rc_vec_t) {0})); ((a11) = ((rc_vec_t) {0})); ((a22) = ((rc_vec_t) {0})); ((a12) = ((rc_vec_t) {0})); (s1) += t1; (s2) += t2; (s11) += t11; (s22) += t22; (s12) += t12; } while (0);
++
++        do { uint32_t t1, t2, t11, t22, t12; ((t1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)); ((t2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a11); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t11) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a22); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t22) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a12); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t12) = maclo_ + machi_ * 256; } while (0); ((a1) = ((rc_vec_t) {0})); ((a2) = ((rc_vec_t) {0})); ((a11) = ((rc_vec_t) {0})); ((a22) = ((rc_vec_t) {0})); ((a12) = ((rc_vec_t) {0})); (s1) += t1; (s2) += t2; (s11) += t11; (s22) += t22; (s12) += t12; } while (0);
++    }
++    sum[0] = s1;
++    sum[1] = s2;
++    sum[2] = s11;
++    sum[3] = s22;
++    sum[4] = s12;
++    ;
++}
--- gcc-4.6-4.6.3.orig/debian/patches/s390-biarch.diff
+++ gcc-4.6-4.6.3/debian/patches/s390-biarch.diff
@@ -0,0 +1,24 @@
+# DP: Build a bi-arch compiler on s390-linux-gnu.
+# DP: http://gcc.gnu.org/ml/gcc-patches/2009-03/msg01044.html
+
+2009-03-23  Arthur Loiret  <aloiret@debian.org>
+
+	* config.gcc (s390-*-linux*): If 'enabled_targets' is 'all', build
+	a bi-arch compiler defaulting to 31-bit. In this case:
+	(tmake_file): Add s390/t-linux64.
+---
+ gcc/config.gcc |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -2304,6 +2304,9 @@
+ 	;;
+ s390-*-linux*)
+ 	tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
++	if test x$enable_targets = xall; then
++		tmake_file="${tmake_file} s390/t-linux64"
++	fi
+ 	;;
+ s390x-*-linux*)
+ 	tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-multiarch-upstream.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-multiarch-upstream.diff
@@ -0,0 +1,782 @@
+# DP: Add multiarch support to GCC (upstreamed chunks).
+
+2012-11-20  Matthias Klose  <doko@ubuntu.com>
+
+	* doc/invoke.texi: Document -print-multiarch.
+	* doc/install.texi: Document --enable-multiarch.
+	* doc/fragments.texi: Document MULTILIB_OSDIRNAMES, MULTIARCH_DIRNAME.
+	* configure.ac: Add --enable-multiarch option.
+	Substitute with_cpu, with_float.
+	* configure: Regenerate.
+	* Makefile.in (s-mlib): Pass MULTIARCH_DIRNAME to genmultilib.
+	enable_multiarch, with_cpu, with_float: New macros.
+	if_multiarch: New macro, define in terms of enable_multiarch.
+	* genmultilib: Add new argument for the multiarch name.
+	* gcc.c (multiarch_dir): Define.
+	(for_each_path): Search for multiarch suffixes.
+	(driver_handle_option): Handle multiarch option.
+	(do_spec_1): Pass -imultiarch if defined.
+	(main): Print multiarch.
+	(set_multilib_dir): Separate multilib and multiarch names
+	from multilib_select.
+	(print_multilib_info): Ignore multiarch names in multilib_select.
+	* incpath.c (add_standard_paths): Search the multiarch include dirs.
+	* cppdefault.h (default_include): Document multiarch in multilib
+	member.
+	* cppdefault.c: [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an
+        include directory for multiarch directories.
+	* common.opt: New options --print-multiarch and -imultilib.
+
+	* config.gcc <i[34567]86-*-gnu*> (tmake_file): Include i386/t-gnu.
+	<i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu> (tmake_file):
+	Include i386/t-kfreebsd.
+	* config/i386/t-linux64: Add multiarch names in
+	MULTILIB_OSDIRNAMES, define MULTIARCH_DIRNAME.
+	* config/i386/t-linux: Define MULTIARCH_DIRNAME.
+	* config/i386/t-gnu: New file.
+	* config/i386/t-kfreebsd: Likewise.
+
+	* config/sparc/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
+	* config/sparc/t-linux: Define MULTIARCH_DIRNAME.
+
+	* config/pa/t-linux, config/pa/t-linux64: Define MULTIARCH_DIRNAME.
+
+	* config/mips/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
+
+	* config/arm/t-linux-eabi: Define MULTIARCH_DIRNAME for linux target.
+
+	* config/rs6000/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
+	* config/rs6000/t-linux: New file; define MULTIARCH_DIRNAME.
+	* config/rs6000/t-fprules (SOFT_FLOAT_CPUS): New macro. Add e300c2
+	to the list.
+	(MULTILIB_MATCHES_FLOAT): Define in terms of SOFT_FLOAT_CPUS.
+	* config/rs6000/t-spe: Define MULTIARCH_DIRNAME.
+	* config.gcc <powerpc-*-linux* | powerpc64-*-linux*> (tmake_file):
+	Include rs6000/t-linux for 32bit non-biarch configurations.
+
+--- a/src/gcc/Makefile.in	(Revision 193700)
++++ b/src/gcc/Makefile.in	(Arbeitskopie)
+@@ -514,6 +514,21 @@
+ extra_opt_files=@extra_opt_files@
+ host_hook_obj=@out_host_hook_obj@
+ 
++# Multiarch support
++enable_multiarch = @enable_multiarch@
++with_cpu = @with_cpu@
++with_float = @with_float@
++ifeq ($(enable_multiarch),yes)
++  if_multiarch = $(1)
++else
++  ifeq ($(enable_multiarch),auto)
++    # SYSTEM_HEADER_DIR is makefile syntax, cannot be evaluated in configure.ac
++    if_multiarch = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib/*/crti.o),$(1))
++  else
++    if_multiarch =
++  endif
++endif
++
+ # ------------------------
+ # Installation directories
+ # ------------------------
+@@ -1941,10 +1956,11 @@
+ 	    "$(MULTILIB_EXTRA_OPTS)" \
+ 	    "$(MULTILIB_EXCLUSIONS)" \
+ 	    "$(MULTILIB_OSDIRNAMES)" \
++	    "$(MULTIARCH_DIRNAME)" \
+ 	    "@enable_multilib@" \
+ 	    > tmp-mlib.h; \
+ 	else \
+-	  $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \
++	  $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' "$(MULTIARCH_DIRNAME)" no \
+ 	    > tmp-mlib.h; \
+ 	fi
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-mlib.h multilib.h
+--- a/src/gcc/config.gcc	(Revision 193700)
++++ b/src/gcc/config.gcc	(Arbeitskopie)
+@@ -2172,6 +2172,7 @@
+ 		;;
+ 	    *)
+ 		tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
++		tmake_file="$tmake_file rs6000/t-linux"
+ 		;;
+ 	esac
+ 	tmake_file="${tmake_file} t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp"
+@@ -3659,11 +3660,15 @@
+ 	i[34567]86-*-darwin* | x86_64-*-darwin*)
+ 		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
+ 		;;
+-	i[34567]86-*-linux* | x86_64-*-linux* | \
+-	  i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
+-	  i[34567]86-*-gnu*)
++	i[34567]86-*-linux* | x86_64-*-linux*)
+ 		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
+ 		;;
++	i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
++		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux i386/t-kfreebsd"
++		;;
++	i[34567]86-*-gnu*)
++		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux i386/t-gnu"
++		;;
+ 	i[34567]86-*-solaris2*)
+ 		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
+ 		;;
+--- a/src/gcc/config/alpha/t-linux	(Revision 193700)
++++ b/src/gcc/config/alpha/t-linux	(Arbeitskopie)
+@@ -1 +1,2 @@
++MULTIARCH_DIRNAME = $(call if_multiarch,alpha-linux-gnu)
+ SHLIB_MAPFILES += $(srcdir)/config/alpha/libgcc-alpha-ldbl.ver
+--- a/src/gcc/config/sparc/t-linux64	(Revision 193700)
++++ b/src/gcc/config/sparc/t-linux64	(Arbeitskopie)
+@@ -1,5 +1,5 @@
+ # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004,
+-# 2006, 2010 Free Software Foundation, Inc.
++# 2006, 2010, 2012 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+@@ -26,7 +26,8 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu)
++MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu)
+ 
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
+--- a/src/gcc/config/sparc/t-linux	(Revision 193700)
++++ b/src/gcc/config/sparc/t-linux	(Arbeitskopie)
+@@ -3,3 +3,5 @@
+ # Avoid the t-linux version file.
+ SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
+ 		 $(srcdir)/config/sparc/libgcc-sparc-glibc.ver
++
++MULTIARCH_DIRNAME = $(call if_multiarch,sparc-linux-gnu)
+--- a/src/gcc/config/s390/t-linux64	(Revision 193700)
++++ b/src/gcc/config/s390/t-linux64	(Arbeitskopie)
+@@ -7,4 +7,5 @@
+ 
+ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu)
++MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu)
+--- a/src/gcc/config/i386/t-gnu	(Revision 0)
++++ b/src/gcc/config/i386/t-gnu	(Arbeitskopie)
+@@ -0,0 +1 @@
++MULTIARCH_DIRNAME = $(call if_multiarch,i386-gnu)
+--- a/src/gcc/config/i386/t-linux	(Revision 193700)
++++ b/src/gcc/config/i386/t-linux	(Arbeitskopie)
+@@ -3,3 +3,7 @@
+ # t-slibgcc-elf-ver and t-linux
+ SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
+ 		 $(srcdir)/config/i386/libgcc-glibc.ver
++
++ifneq (,$(findstring -linux,$(target)))
++MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu)
++endif
+--- a/src/gcc/config/i386/t-kfreebsd	(Revision 0)
++++ b/src/gcc/config/i386/t-kfreebsd	(Arbeitskopie)
+@@ -0,0 +1,5 @@
++MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu)
++
++# MULTILIB_OSDIRNAMES are set in t-linux64.
++KFREEBSD_OS = $(filter kfreebsd%, $(word 3, $(subst -, ,$(target))))
++MULTILIB_OSDIRNAMES := $(subst linux,$(KFREEBSD_OS),$(MULTILIB_OSDIRNAMES))
+--- a/src/gcc/config/i386/t-linux64	(Revision 193700)
++++ b/src/gcc/config/i386/t-linux64	(Arbeitskopie)
+@@ -25,7 +25,8 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32 
+-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:x86_64-linux-gnu) \
++	$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
+ 
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
+--- a/src/gcc/config/rs6000/t-fprules	(Revision 193700)
++++ b/src/gcc/config/rs6000/t-fprules	(Arbeitskopie)
+@@ -16,17 +16,8 @@
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+-MULTILIB_MATCHES_FLOAT	= msoft-float=mcpu?401 \
+-			  msoft-float=mcpu?403 \
+-			  msoft-float=mcpu?405 \
+-			  msoft-float=mcpu?440 \
+-			  msoft-float=mcpu?464 \
+-			  msoft-float=mcpu?476 \
+-			  msoft-float=mcpu?ec603e \
+-			  msoft-float=mcpu?801 \
+-			  msoft-float=mcpu?821 \
+-			  msoft-float=mcpu?823 \
+-			  msoft-float=mcpu?860
++SOFT_FLOAT_CPUS = e300c2 401 403 405 440 464 476 ec603e 801 821 823 860
++MULTILIB_MATCHES_FLOAT = $(foreach cpu, $(SOFT_FLOAT_CPUS), msoft-float=mcpu?$(cpu))
+ 
+ # Build the libraries for both hard and soft floating point by default
+ 
+--- a/src/gcc/config/rs6000/t-spe	(Revision 193700)
++++ b/src/gcc/config/rs6000/t-spe	(Arbeitskopie)
+@@ -84,3 +84,7 @@
+ 			  mabi=altivec/mlittle \
+ 			  maltivec/mlittle \
+ 			  maltivec/mabi=altivec/mlittle
++
++ifneq (,$(findstring linux, $(target)))
++MULTIARCH_DIRNAME = powerpc-linux-gnuspe$(if $(findstring rs6000/e500-double.h, $(tm_file)),,v1)
++endif
+--- a/src/gcc/config/rs6000/t-linux	(Revision 0)
++++ b/src/gcc/config/rs6000/t-linux	(Arbeitskopie)
+@@ -0,0 +1,5 @@
++# do not define the multiarch name if configured for a soft-float cpu
++# or soft-float.
++ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float)))
++MULTIARCH_DIRNAME = powerpc-linux-gnu
++endif
+--- a/src/gcc/config/rs6000/t-linux64	(Revision 193700)
++++ b/src/gcc/config/rs6000/t-linux64	(Arbeitskopie)
+@@ -36,7 +36,9 @@
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+ MULTILIB_EXCEPTIONS     = m64/msoft-float
+ MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
+-MULTILIB_OSDIRNAMES	= ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof
++MULTILIB_OSDIRNAMES	= ../lib64$(call if_multiarch,:powerpc64-linux-gnu)
++MULTILIB_OSDIRNAMES    += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
++MULTILIB_OSDIRNAMES    += nof
+ MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
+ 
+ softfp_wrap_start := '\#ifndef __powerpc64__'
+--- a/src/gcc/config/m68k/t-linux	(Revision 193700)
++++ b/src/gcc/config/m68k/t-linux	(Arbeitskopie)
+@@ -21,6 +21,10 @@
+ # Only include multilibs for 680x0 CPUs with an MMU.
+ M68K_MLIB_CPU += && (CPU ~ "^m680") && (FLAGS ~ "FL_MMU")
+ 
++ifeq ($(M68K_ARCH),m68k)
++MULTIARCH_DIRNAME = $(call if_multiarch,m68k-linux-gnu)
++endif
++
+ # This rule uses MULTILIB_MATCHES to generate a definition of
+ # SYSROOT_SUFFIX_SPEC.
+ sysroot-suffix.h: $(srcdir)/config/m68k/print-sysroot-suffix.sh
+--- a/src/gcc/config/mips/t-linux64	(Revision 193700)
++++ b/src/gcc/config/mips/t-linux64	(Arbeitskopie)
+@@ -1,4 +1,4 @@
+-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++# Copyright (C) 2003, 2004, 2005, 2006, 2012 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+@@ -18,7 +18,12 @@
+ 
+ MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
+ MULTILIB_DIRNAMES = n32 32 64
+-MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64
++MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
++MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
++MULTILIB_OSDIRNAMES = \
++	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
++	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
++	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
+ 
+ EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
+ 
+--- a/src/gcc/config/pa/t-linux	(Revision 193700)
++++ b/src/gcc/config/pa/t-linux	(Arbeitskopie)
+@@ -35,3 +35,5 @@
+ 
+ # Compile crtbeginS.o and crtendS.o as PIC.
+ CRTSTUFF_T_CFLAGS_S = -fPIC
++
++MULTIARCH_DIRNAME = $(call if_multiarch,hppa-linux-gnu)
+--- a/src/gcc/config/pa/t-linux64	(Revision 193700)
++++ b/src/gcc/config/pa/t-linux64	(Arbeitskopie)
+@@ -30,3 +30,5 @@
+ 
+ # Compile libgcc2.a as PIC.
+ TARGET_LIBGCC2_CFLAGS = -fPIC -Dpa64=1 -DELF=1
++
++MULTIARCH_DIRNAME = $(call if_multiarch,hppa-linux-gnu)
+--- a/src/gcc/config/ia64/t-glibc	(Revision 193700)
++++ b/src/gcc/config/ia64/t-glibc	(Arbeitskopie)
+@@ -3,3 +3,5 @@
+   $(srcdir)/unwind-compat.c
+ 
+ SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-glibc.ver
++
++MULTIARCH_DIRNAME = $(call if_multiarch,ia64-linux-gnu)
+--- a/src/gcc/config/arm/t-linux-eabi	(Revision 193700)
++++ b/src/gcc/config/arm/t-linux-eabi	(Arbeitskopie)
+@@ -1,4 +1,4 @@
+-# Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
++# Copyright (C) 2005, 2009, 2010, 2012 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+@@ -28,6 +28,11 @@
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
+ 
++ifneq (,$(findstring gnueabi,$(target)))
++ARM_EB = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),eb)
++MULTIARCH_DIRNAME = $(call if_multiarch,arm$(ARM_EB)-linux-gnueabi$(if $(filter hard,$(with_float)),hf))
++endif
++
+ # Use a version of div0 which raises SIGFPE, and a special __clear_cache.
+ LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx _clear_cache
+ 
+--- a/src/gcc/incpath.c	(Revision 193700)
++++ b/src/gcc/incpath.c	(Arbeitskopie)
+@@ -150,8 +150,14 @@
+ 	      if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len))
+ 		{
+ 		  char *str = concat (iprefix, p->fname + len, NULL);
+-		  if (p->multilib && imultilib)
++		  if (p->multilib == 1 && imultilib)
+ 		    str = concat (str, dir_separator_str, imultilib, NULL);
++		  else if (p->multilib == 2)
++		    {
++		      if (!imultiarch)
++			continue;
++		      str = concat (str, dir_separator_str, imultiarch, NULL);
++		    }
+ 		  add_path (str, SYSTEM, p->cxx_aware, false);
+ 		}
+ 	    }
+@@ -195,8 +201,14 @@
+ 	  else
+ 	    str = update_path (p->fname, p->component);
+ 
+-	  if (p->multilib && imultilib)
++	  if (p->multilib == 1 && imultilib)
+ 	    str = concat (str, dir_separator_str, imultilib, NULL);
++	  else if (p->multilib == 2)
++	    {
++	      if (!imultiarch)
++		continue;
++	      str = concat (str, dir_separator_str, imultiarch, NULL);
++	    }
+ 
+ 	  add_path (str, SYSTEM, p->cxx_aware, false);
+ 	}
+--- a/src/gcc/configure	(Revision 193700)
++++ b/src/gcc/configure	(Arbeitskopie)
+@@ -762,6 +762,9 @@
+ enable_shared
+ enable_fixed_point
+ enable_decimal_float
++with_float
++with_cpu
++enable_multiarch
+ enable_multilib
+ ENABLE_BUILD_WITH_CXX
+ coverage_flags
+@@ -871,6 +874,7 @@
+ enable_build_with_cxx
+ with_stabs
+ enable_multilib
++enable_multiarch
+ enable___cxa_atexit
+ enable_decimal_float
+ enable_fixed_point
+@@ -1572,6 +1576,7 @@
+   --enable-gather-detailed-mem-stats         enable detailed memory allocation stats gathering
+   --enable-build-with-cxx build with C++ compiler instead of C compiler
+   --enable-multilib       enable library support for multiple ABIs
++  --enable-multiarch      enable support for multiarch paths
+   --enable-__cxa_atexit   enable __cxa_atexit for C++
+   --enable-decimal-float={no,yes,bid,dpd}
+ 			enable decimal float extension to C.  Selecting 'bid'
+@@ -6874,6 +6879,37 @@
+ 
+ 
+ 
++# Determine whether or not multiarch is enabled.
++# Check whether --enable-multiarch was given.
++if test "${enable_multiarch+set}" = set; then :
++  enableval=$enable_multiarch; case "${withval}" in
++yes|no|auto) enable_multiarch=$withval;;
++*) as_fn_error "bad value ${withval} given for --enable-multiarch option" "$LINENO" 5 ;;
++esac
++else
++  enable_multiarch=auto
++fi
++
++if test x${enable_multiarch} = xauto; then
++  if test x${with_native_system_header_dir} != x; then
++    ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
++    enable_multiarch=no
++  fi
++  if test x$host != x$target && test "x$with_sysroot" = x; then
++    ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
++    enable_multiarch=no
++  fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for multiarch configuration" >&5
++$as_echo_n "checking for multiarch configuration... " >&6; }
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_multiarch$ma_msg_suffix" >&5
++$as_echo "$enable_multiarch$ma_msg_suffix" >&6; }
++
++# needed for setting the multiarch name for soft-float/hard-float ABIs
++
++
++
+ # Enable __cxa_atexit for C++.
+ # Check whether --enable-__cxa_atexit was given.
+ if test "${enable___cxa_atexit+set}" = set; then :
+@@ -17495,7 +17531,7 @@
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 17498 "configure"
++#line 17534 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -17601,7 +17637,7 @@
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 17604 "configure"
++#line 17640 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+--- a/src/gcc/cppdefault.c	(Revision 193700)
++++ b/src/gcc/cppdefault.c	(Arbeitskopie)
+@@ -64,6 +64,7 @@
+ #endif
+ #ifdef LOCAL_INCLUDE_DIR
+     /* /usr/local/include comes before the fixincluded header files.  */
++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
+     { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
+ #endif
+ #ifdef PREFIX_INCLUDE_DIR
+@@ -95,6 +96,7 @@
+ #endif
+ #ifdef STANDARD_INCLUDE_DIR
+     /* /usr/include comes dead last.  */
++    { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 },
+     { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 },
+ #endif
+     { 0, 0, 0, 0, 0, 0 }
+--- a/src/gcc/cppdefault.h	(Revision 193700)
++++ b/src/gcc/cppdefault.h	(Arbeitskopie)
+@@ -43,9 +43,11 @@
+ 				   C++.  */
+   const char add_sysroot;	/* FNAME should be prefixed by
+ 				   cpp_SYSROOT.  */
+-  const char multilib;		/* FNAME should have the multilib path
+-				   specified with -imultilib
+-				   appended.  */
++  const char multilib;		/* FNAME should have appended
++				   - the multilib path specified with -imultilib
++				     when set to 1,
++				   - the multiarch path specified with
++				     -imultiarch, when set to 2.  */
+ };
+ 
+ extern const struct default_include cpp_include_defaults[];
+--- a/src/gcc/genmultilib	(Revision 193700)
++++ b/src/gcc/genmultilib	(Arbeitskopie)
+@@ -73,6 +73,8 @@
+ # the os directory names are used exclusively.  Use the mapping when
+ # there is no one-to-one equivalence between GCC levels and the OS.
+ 
++# The optional eighth argument is the multiarch name.
++
+ # The last option should be "yes" if multilibs are enabled.  If it is not
+ # "yes", all GCC multilib dir names will be ".".
+ 
+@@ -121,7 +123,8 @@
+ extra=$5
+ exclusions=$6
+ osdirnames=$7
+-enable_multilib=$8
++multiarch=$8
++enable_multilib=$9
+ 
+ echo "static const char *const multilib_raw[] = {"
+ 
+@@ -222,6 +225,9 @@
+ # names.
+ toosdirnames=
+ defaultosdirname=
++if [ -n "${multiarch}" ]; then
++  defaultosdirname=::${multiarch}
++fi
+ if [ -n "${osdirnames}" ]; then
+   set x ${osdirnames}
+   shift
+@@ -229,6 +235,9 @@
+     case "$1" in
+       .=*)
+         defaultosdirname=`echo $1 | sed 's|^.=|:|'`
++	if [ -n "${multiarch}" ]; then
++	  defaultosdirname=${defaultosdirname}:${multiarch}
++	fi
+ 	shift
+ 	;;
+       *=*)
+@@ -314,13 +323,13 @@
+     dirout=`echo ${combo} | sed -e 's/=/-/g'`
+   fi
+   # Remove the leading and trailing slashes.
+-  dirout=`echo ${dirout} | sed -e 's|^/||' -e 's|/$||g'`
++  dirout=`echo ${dirout} | sed -e 's|^/||' -e 's|/*:/*|:|' -e 's|/$||g'`
+ 
+   # Use the OS directory names rather than the option names.
+   if [ -n "${toosdirnames}" ]; then
+     osdirout=`echo ${combo} | sed ${toosdirnames}`
+     # Remove the leading and trailing slashes.
+-    osdirout=`echo ${osdirout} | sed -e 's|^/||' -e 's|/$||g'`
++    osdirout=`echo ${osdirout} | sed -e 's|^/||' -e 's|/*:/*|:|' -e 's|/$||g'`
+     if [ "x${enable_multilib}" != xyes ]; then
+       dirout=".:${osdirout}"
+       disable_multilib=yes
+--- a/src/gcc/configure.ac	(Revision 193700)
++++ b/src/gcc/configure.ac	(Arbeitskopie)
+@@ -606,6 +606,28 @@
+ [], [enable_multilib=yes])
+ AC_SUBST(enable_multilib)
+ 
++# Determine whether or not multiarch is enabled.
++AC_ARG_ENABLE(multiarch,
++[AS_HELP_STRING([--enable-multiarch],
++		[enable support for multiarch paths])],
++[case "${enableval}" in
++yes|no|auto) enable_multiarch=$enableval;;
++*) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
++esac], [enable_multiarch=auto])
++if test x${enable_multiarch} = xauto; then
++  if test x$host != x$target && test "x$with_sysroot" = x; then
++    ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
++    enable_multiarch=no
++  fi
++fi
++AC_MSG_CHECKING(for multiarch configuration)
++AC_SUBST(enable_multiarch)
++AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
++
++# needed for setting the multiarch name for soft-float/hard-float ABIs
++AC_SUBST(with_cpu)
++AC_SUBST(with_float)
++
+ # Enable __cxa_atexit for C++.
+ AC_ARG_ENABLE(__cxa_atexit,
+ [  --enable-__cxa_atexit   enable __cxa_atexit for C++],
+--- a/src/gcc/gcc.c	(Revision 193700)
++++ b/src/gcc/gcc.c	(Arbeitskopie)
+@@ -1132,6 +1132,11 @@
+    set_multilib_dir based on the compilation options.  */
+ 
+ static const char *multilib_os_dir;
++
++/* Subdirectory to use for locating libraries in multiarch conventions.  Set by
++   set_multilib_dir based on the compilation options.  */
++
++static const char *multiarch_dir;
+ 
+ /* Structure to keep track of the specs that have been defined so far.
+    These are accessed using %(specname) or %[specname] in a compiler
+@@ -2045,6 +2050,7 @@
+   struct prefix_list *pl;
+   const char *multi_dir = NULL;
+   const char *multi_os_dir = NULL;
++  const char *multiarch_suffix = NULL;
+   const char *multi_suffix;
+   const char *just_multi_suffix;
+   char *path = NULL;
+@@ -2062,11 +2068,14 @@
+     }
+   if (do_multi && multilib_os_dir && strcmp (multilib_os_dir, ".") != 0)
+     multi_os_dir = concat (multilib_os_dir, dir_separator_str, NULL);
++  if (multiarch_dir)
++    multiarch_suffix = concat (multiarch_dir, dir_separator_str, NULL);
+ 
+   while (1)
+     {
+       size_t multi_dir_len = 0;
+       size_t multi_os_dir_len = 0;
++      size_t multiarch_len = 0;
+       size_t suffix_len;
+       size_t just_suffix_len;
+       size_t len;
+@@ -2075,16 +2084,15 @@
+ 	multi_dir_len = strlen (multi_dir);
+       if (multi_os_dir)
+ 	multi_os_dir_len = strlen (multi_os_dir);
++      if (multiarch_suffix)
++	multiarch_len = strlen (multiarch_suffix);
+       suffix_len = strlen (multi_suffix);
+       just_suffix_len = strlen (just_multi_suffix);
+ 
+       if (path == NULL)
+ 	{
+ 	  len = paths->max_len + extra_space + 1;
+-	  if (suffix_len > multi_os_dir_len)
+-	    len += suffix_len;
+-	  else
+-	    len += multi_os_dir_len;
++	  len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len);
+ 	  path = XNEWVEC (char, len);
+ 	}
+ 
+@@ -2113,6 +2121,16 @@
+ 		break;
+ 	    }
+ 
++	  /* Now try the multiarch path.  */
++	  if (!skip_multi_dir
++	      && !pl->require_machine_suffix && multiarch_dir)
++	    {
++	      memcpy (path + len, multiarch_suffix, multiarch_len + 1);
++	      ret = callback (path, callback_info);
++	      if (ret)
++		break;
++	    }
++
+ 	  /* Now try the base path.  */
+ 	  if (!pl->require_machine_suffix
+ 	      && !(pl->os_multilib ? skip_multi_os_dir : skip_multi_dir))
+@@ -2929,6 +2947,9 @@
+   fputs (_("  -print-libgcc-file-name  Display the name of the compiler's companion library\n"), stdout);
+   fputs (_("  -print-file-name=<lib>   Display the full path to library <lib>\n"), stdout);
+   fputs (_("  -print-prog-name=<prog>  Display the full path to compiler component <prog>\n"), stdout);
++  fputs (_("\
++  -print-multiarch         Display the target's normalized GNU triplet, used as\n\
++                           a component in the library path\n"), stdout);
+   fputs (_("  -print-multi-directory   Display the root directory for versions of libgcc\n"), stdout);
+   fputs (_("\
+   -print-multi-lib         Display the mapping between command line options and\n\
+@@ -3201,6 +3222,7 @@
+     case OPT_print_multi_directory:
+     case OPT_print_sysroot:
+     case OPT_print_multi_os_directory:
++    case OPT_print_multiarch:
+     case OPT_print_sysroot_headers_suffix:
+     case OPT_time:
+     case OPT_wrapper:
+@@ -4851,6 +4873,15 @@
+ 		  do_spec_1 (" ", 0, NULL);
+ 		}
+ 
++	      if (multiarch_dir)
++		{
++		  do_spec_1 ("-imultiarch", 1, NULL);
++		  /* Make this a separate argument.  */
++		  do_spec_1 (" ", 0, NULL);
++		  do_spec_1 (multiarch_dir, 1, NULL);
++		  do_spec_1 (" ", 0, NULL);
++		}
++
+ 	      if (gcc_exec_prefix)
+ 		{
+ 		  do_spec_1 ("-iprefix", 1, NULL);
+@@ -6497,6 +6528,15 @@
+       return (0);
+     }
+ 
++  if (print_multiarch)
++    {
++      if (multiarch_dir == NULL)
++	printf ("\n");
++      else
++	printf ("%s\n", multiarch_dir);
++      return (0);
++    }
++
+   if (print_sysroot)
+     {
+       if (target_system_root)
+@@ -7260,7 +7300,9 @@
+    options are present, then we will ignore this completely. Passing
+    that, gcc will consider each multilib_select in turn using the same
+    rules for matching the options. If a match is found, that subdirectory
+-   will be used.  */
++   will be used.
++   A subdirectory name is optionally followed by a colon and the corresponding
++   multiarch name.  */
+ 
+ static void
+ set_multilib_dir (void)
+@@ -7472,10 +7514,25 @@
+ 	    q++;
+ 	  if (q < end)
+ 	    {
+-	      char *new_multilib_os_dir = XNEWVEC (char, end - q);
+-	      memcpy (new_multilib_os_dir, q + 1, end - q - 1);
+-	      new_multilib_os_dir[end - q - 1] = '\0';
+-	      multilib_os_dir = new_multilib_os_dir;
++	      const char *q2 = q + 1, *ml_end = end;
++	      char *new_multilib_os_dir;
++
++	      while (q2 < end && *q2 != ':')
++		q2++;
++	      if (*q2 == ':')
++		ml_end = q2;
++	      new_multilib_os_dir = XNEWVEC (char, ml_end - q);
++	      memcpy (new_multilib_os_dir, q + 1, ml_end - q - 1);
++	      new_multilib_os_dir[ml_end - q - 1] = '\0';
++	      multilib_os_dir = *new_multilib_os_dir ? new_multilib_os_dir : ".";
++
++	      if (q2 < end && *q2 == ':')
++		{
++		  char *new_multiarch_dir = XNEWVEC (char, end - q2);
++		  memcpy (new_multiarch_dir, q2 + 1, end - q2 - 1);
++		  new_multiarch_dir[end - q2 - 1] = '\0';
++		  multiarch_dir = new_multiarch_dir;
++		}
+ 	      break;
+ 	    }
+ 	}
+@@ -7535,9 +7592,10 @@
+ 	}
+ 
+       /* When --disable-multilib was used but target defines
+-	 MULTILIB_OSDIRNAMES, entries starting with .: are there just
+-	 to find multilib_os_dir, so skip them from output.  */
+-      if (this_path[0] == '.' && this_path[1] == ':')
++	 MULTILIB_OSDIRNAMES, entries starting with .: (and not starting
++         with .:: for multiarch configurations) are there just to find
++         multilib_os_dir, so skip them from output.  */
++      if (this_path[0] == '.' && this_path[1] == ':' && this_path[2] != ':')
+ 	skip = 1;
+ 
+       /* Check for matches with the multilib_exclusions. We don't bother
+--- a/src/gcc/common.opt	(Revision 193700)
++++ b/src/gcc/common.opt	(Arbeitskopie)
+@@ -334,6 +334,9 @@
+ -print-multi-os-directory
+ Driver Alias(print-multi-os-directory)
+ 
++-print-multiarch
++Driver Alias(print-multiarch)
++
+ -print-prog-name
+ Driver Separate Alias(print-prog-name=)
+ 
+@@ -2190,6 +2193,10 @@
+ Common Joined Var(plugindir_string) Init(0)
+ -iplugindir=<dir>	Set <dir> to be the default plugin directory
+ 
++imultiarch
++Common Joined Separate RejectDriver Var(imultiarch) Init(0)
++-imultiarch <dir>	Set <dir> to be the multiarch include subdirectory
++
+ l
+ Driver Joined Separate
+ 
+@@ -2247,6 +2254,9 @@
+ 
+ print-multi-os-directory
+ Driver Var(print_multi_os_directory)
++ 
++print-multiarch
++Driver Var(print_multiarch)
+ 
+ print-prog-name=
+ Driver JoinedOrMissing Var(print_prog_name)
--- gcc-4.6-4.6.3.orig/debian/patches/gold-and-ld.diff
+++ gcc-4.6-4.6.3/debian/patches/gold-and-ld.diff
@@ -0,0 +1,482 @@
+# DP: Enable both gold and ld in a single toolchain.
+# DP: New option -fuse-ld=ld.bfd, -fuse-ld=gold.
+
+--- a/src/gcc/doc/invoke.texi
++++ b/srcgcc/doc/invoke.texi
+@@ -399,7 +399,7 @@
+ -funit-at-a-time -funroll-all-loops -funroll-loops @gol
+ -funsafe-loop-optimizations -funsafe-math-optimizations -funswitch-loops @gol
+ -fvariable-expansion-in-unroller -fvect-cost-model -fvpt -fweb @gol
+--fwhole-program -fwpa -fuse-linker-plugin @gol
++-fwhole-program -fwpa -fuse-ld -fuse-linker-plugin @gol
+ --param @var{name}=@var{value}
+ -O  -O0  -O1  -O2  -O3  -Os -Ofast}
+ 
+@@ -7689,6 +7689,16 @@
+ Enabled by default when LTO support in GCC is enabled and GCC was compiled
+ with linker supporting plugins (GNU ld or @code{gold}).
+ 
++@item -fuse-ld=gold
++Use the @command{gold} linker instead of the default linker.
++This option is only necessary if GCC has been configured with
++@option{--enable-gold} and @option{--enable-ld=default}.
++
++@item -fuse-ld=bfd
++Use the @command{ld.bfd} linker instead of the default linker.
++This option is only necessary if GCC has been configured with
++@option{--enable-gold} and @option{--enable-ld}.
++
+ @item -fcprop-registers
+ @opindex fcprop-registers
+ After register allocation and post-register allocation instruction splitting,
+--- a/src/gcc/gcc.c
++++ b/srcgcc/gcc.c
+@@ -656,6 +656,9 @@
+     }"PLUGIN_COND_CLOSE" \
+     %{flto|flto=*:%<fcompare-debug*} \
+     %{flto} %{flto=*} %l " LINK_PIE_SPEC \
++   "%{fuse-ld=gold:%{fuse-ld=bfd:%e-fuse-ld=gold and -fuse-ld=bfd may not be used together}} \
++    %{fuse-ld=gold:-use-gold} \
++    %{fuse-ld=bfd:-use-ld}" \
+    "%X %{o*} %{e*} %{N} %{n} %{r}\
+     %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\
+     %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
+--- a/src/gcc/opts.c
++++ b/srcgcc/opts.c
+@@ -1691,8 +1691,9 @@
+       dc->max_errors = value;
+       break;
+ 
++    case OPT_fuse_ld_:
+     case OPT_fuse_linker_plugin:
+-      /* No-op. Used by the driver and passed to us because it starts with f.*/
++      /* No-op. Used by the driver and passed to us because it starts with f.  */
+       break;
+ 
+     default:
+--- a/src/gcc/configure.ac
++++ b/srcgcc/configure.ac
+@@ -1937,6 +1937,17 @@
+         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
+ fi])
+ 
++gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
++
++AS_VAR_SET_IF(gcc_cv_gold,, [
++if test -f $gcc_cv_ld_gold_srcdir/configure.ac \
++     && test -f ../gold/Makefile \
++     && test x$build = x$host; then
++	gcc_cv_gold=../gold/ld-new$build_exeext
++else
++        gcc_cv_gold=''
++fi])
++
+ ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
+ PLUGIN_LD=`basename $gcc_cv_ld`
+ AC_ARG_WITH(plugin-ld,
+@@ -1966,6 +1977,9 @@
+   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
+ esac 
+ 
++ORIGINAL_GOLD_FOR_TARGET=$gcc_cv_gold
++AC_SUBST(ORIGINAL_GOLD_FOR_TARGET)
++
+ AC_MSG_CHECKING(what linker to use)
+ if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then
+ 	# Single tree build which includes ld.  We want to prefer it
+--- a/src/gcc/exec-tool.in
++++ b/srcgcc/exec-tool.in
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ 
+-# Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc.
++# Copyright (C) 2007, 2008, 2010, 2011 Free Software Foundation, Inc.
+ # This file is part of GCC.
+ 
+ # GCC is free software; you can redistribute it and/or modify
+@@ -21,11 +21,13 @@
+ 
+ ORIGINAL_AS_FOR_TARGET="@ORIGINAL_AS_FOR_TARGET@"
+ ORIGINAL_LD_FOR_TARGET="@ORIGINAL_LD_FOR_TARGET@"
++ORIGINAL_GOLD_FOR_TARGET="@ORIGINAL_GOLD_FOR_TARGET@"
+ ORIGINAL_PLUGIN_LD_FOR_TARGET="@ORIGINAL_PLUGIN_LD_FOR_TARGET@"
+ ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@"
+ exeext=@host_exeext@
+ fast_install=@enable_fast_install@
+ objdir=@objdir@
++version="1.1"
+ 
+ invoked=`basename "$0"`
+ id=$invoked
+@@ -36,15 +38,44 @@
+     dir=gas
+     ;;
+   collect-ld)
+-    # when using a linker plugin, gcc will always pass '-plugin' as the
+-    # first or second option to the linker.
+-    if test x"$1" = "x-plugin" || test x"$2" = "x-plugin"; then
+-      original=$ORIGINAL_PLUGIN_LD_FOR_TARGET
+-    else
+-      original=$ORIGINAL_LD_FOR_TARGET
++    prog=ld-new$exeext
++    # Look for the a command line option
++    # specifying the linker to be used.
++    case " $* " in
++      *\ -use-gold\ *)
++        original=$ORIGINAL_GOLD_FOR_TARGET
++	dir=gold
++        ;;
++      *\ -use-ld\ * | *\ -use-ld.bfd\ *)
++        original=$ORIGINAL_LD_FOR_TARGET
++        dir=ld
++        ;;
++      *\ -plugin\ *)
++        original=$ORIGINAL_PLUGIN_LD_FOR_TARGET
++        dir=ld
++	;;
++      *)
++        original=$ORIGINAL_LD_FOR_TARGET
++        dir=ld
++	;;
++    esac
++
++    # If the selected linker has not been configured then
++    # try using the others, in the order PLUGIN-LD, LD, GOLD.
++    if test x"$original" = x; then
++      if test x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" != x; then
++        original=$ORIGINAL_PLUGIN_LD_FOR_TARGET
++        dir=ld
++      elif test x"$ORIGINAL_LD_FOR_TARGET" != x; then
++        original=$ORIGINAL_LD_FOR_TARGET
++        dir=ld
++      elif test x"$ORIGINAL_GOLD_FOR_TARGET" != x; then
++        original=$ORIGINAL_GOLD_FOR_TARGET
++        dir=gold
++      # Otherwise do nothing - the case statement below
++      # will issue an error message for us.
++      fi
+     fi
+-    prog=ld-new$exeext
+-    dir=ld
+     id=ld
+     ;;
+   nm)
+@@ -61,29 +92,58 @@
+     scriptdir=`cd "$tdir" && pwd`
+ 
+     if test -x $scriptdir/../$dir/$prog; then
+-      test "$fast_install" = yes || exec $scriptdir/../$dir/$prog ${1+"$@"}
++      if test "$fast_install" = yes; then
++        # If libtool did everything it needs to do, there's a fast path.
++        lt_prog=$scriptdir/../$dir/$objdir/lt-$prog 
+ 
+-      # if libtool did everything it needs to do, there's a fast path
+-      lt_prog=$scriptdir/../$dir/$objdir/lt-$prog 
+-      test -x $lt_prog && exec $lt_prog ${1+"$@"}
+-
+-      # libtool has not relinked ld-new yet, but we cannot just use the
+-      # previous stage (because then the relinking would just never happen!).
+-      # So we take extra care to use prev-ld/ld-new *on recursive calls*.
+-      eval LT_RCU="\${LT_RCU_$id}"
+-      test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"}
+-
+-      eval LT_RCU_$id=1
+-      export LT_RCU_$id
+-      $scriptdir/../$dir/$prog ${1+"$@"}
+-      result=$?
+-      exit $result
+-
++	if test -x $lt_prog; then
++	  original=$lt_prog
++        else
++          # Libtool has not relinked ld-new yet, but we cannot just use the
++          # previous stage (because then the relinking would just never happen!).
++          # So we take extra care to use prev-ld/ld-new *on recursive calls*.
++          eval LT_RCU="\${LT_RCU_$id}"
++          if test x"$LT_RCU" = x"1"; then
++	    original=$scriptdir/../prev-$dir/$prog
++          else
++            eval LT_RCU_$id=1
++            export LT_RCU_$id
++            case " $* " in
++              *\ -v\ *)
++               echo "$invoked $version"
++               echo $scriptdir/../$dir/$prog $*
++               ;;
++            esac
++            $scriptdir/../$dir/$prog ${1+"$@"}
++            result=$?
++            exit $result
++          fi
++        fi
++      else
++	original=$scriptdir/../$dir/$prog
++      fi
+     else
+-      exec $scriptdir/../prev-$dir/$prog ${1+"$@"}
++      original=$scriptdir/../prev-$dir/$prog
+     fi
+     ;;
+-  *)
+-    exec $original ${1+"$@"}
++  "")
++    echo "$invoked: executable not configured"
++    exit 1
+     ;;
+ esac
++
++# If -v has been used then display our version number
++# and then echo the command we are about to invoke.
++case " $* " in
++  *\ -v\ *)
++    echo "$invoked $version"
++    echo $original $*
++    ;;
++esac
++
++if test -x $original; then
++  exec "$original" ${1+"$@"}
++else
++  echo "$invoked: unable to locate executable: $original"
++  exit 1
++fi
+--- a/src/gcc/common.opt
++++ b/srcgcc/common.opt
+@@ -1998,6 +1998,9 @@
+ Common Report Var(flag_unwind_tables) Optimization
+ Just generate unwind tables for exception handling
+ 
++fuse-ld=
++Common Joined Undocumented
++
+ fuse-linker-plugin
+ Common Undocumented
+ 
+--- a/src/gcc/collect2.c
++++ b/srcgcc/collect2.c
+@@ -1075,17 +1075,19 @@
+ int
+ main (int argc, char **argv)
+ {
+-  static const char *const ld_suffix	= "ld";
+-  static const char *const plugin_ld_suffix = PLUGIN_LD;
+-  static const char *const real_ld_suffix = "real-ld";
++  static const char *const ld_suffix	     = "ld";
++  static const char *const gold_suffix       = "gold";
++  static const char *const bfd_ld_suffix     = "ld.bfd";
++  static const char *const plugin_ld_suffix  = PLUGIN_LD;
++  static const char *const real_ld_suffix    = "real-ld";
+   static const char *const collect_ld_suffix = "collect-ld";
+-  static const char *const nm_suffix	= "nm";
+-  static const char *const gnm_suffix	= "gnm";
++  static const char *const nm_suffix	     = "nm";
++  static const char *const gnm_suffix	     = "gnm";
+ #ifdef LDD_SUFFIX
+-  static const char *const ldd_suffix	= LDD_SUFFIX;
++  static const char *const ldd_suffix	     = LDD_SUFFIX;
+ #endif
+-  static const char *const strip_suffix = "strip";
+-  static const char *const gstrip_suffix = "gstrip";
++  static const char *const strip_suffix      = "strip";
++  static const char *const gstrip_suffix     = "gstrip";
+ 
+ #ifdef CROSS_DIRECTORY_STRUCTURE
+   /* If we look for a program in the compiler directories, we just use
+@@ -1095,6 +1097,10 @@
+ 
+   const char *const full_ld_suffix =
+     concat(target_machine, "-", ld_suffix, NULL);
++  const char *const full_gold_suffix =
++    concat (target_machine, "-", gold_suffix, NULL);
++  const char *const full_bfd_ld_suffix =
++    concat (target_machine, "-", bfd_ld_suffix, NULL);
+   const char *const full_plugin_ld_suffix =
+     concat(target_machine, "-", plugin_ld_suffix, NULL);
+   const char *const full_nm_suffix =
+@@ -1110,15 +1116,17 @@
+   const char *const full_gstrip_suffix =
+     concat (target_machine, "-", gstrip_suffix, NULL);
+ #else
+-  const char *const full_ld_suffix	= ld_suffix;
++  const char *const full_ld_suffix	  = ld_suffix;
++  const char *const full_gold_suffix	  = gold_suffix;
++  const char *const full_bfd_ld_suffix	  = bfd_ld_suffix;
+   const char *const full_plugin_ld_suffix = plugin_ld_suffix;
+-  const char *const full_nm_suffix	= nm_suffix;
+-  const char *const full_gnm_suffix	= gnm_suffix;
++  const char *const full_nm_suffix	  = nm_suffix;
++  const char *const full_gnm_suffix	  = gnm_suffix;
+ #ifdef LDD_SUFFIX
+-  const char *const full_ldd_suffix	= ldd_suffix;
++  const char *const full_ldd_suffix	  = ldd_suffix;
+ #endif
+-  const char *const full_strip_suffix	= strip_suffix;
+-  const char *const full_gstrip_suffix	= gstrip_suffix;
++  const char *const full_strip_suffix	  = strip_suffix;
++  const char *const full_gstrip_suffix	  = gstrip_suffix;
+ #endif /* CROSS_DIRECTORY_STRUCTURE */
+ 
+   const char *arg;
+@@ -1132,7 +1140,13 @@
+   const char **c_ptr;
+   char **ld1_argv;
+   const char **ld1;
+-  bool use_plugin = false;
++  enum linker_select
++  {
++    DFLT_LINKER,
++    PLUGIN_LINKER,
++    GOLD_LINKER,
++    BFD_LINKER
++  } selected_linker = DFLT_LINKER;
+ 
+   /* The kinds of symbols we will have to consider when scanning the
+      outcome of a first pass link.  This is ALL to start with, then might
+@@ -1209,15 +1223,21 @@
+         else if (! strcmp (argv[i], "-flto-partition=none"))
+ 	  no_partition = true;
+         else if ((! strncmp (argv[i], "-flto=", 6)
+-		  || ! strcmp (argv[i], "-flto")) && ! use_plugin)
++		  || ! strcmp (argv[i], "-flto"))
++		 && selected_linker != PLUGIN_LINKER)
+ 	  lto_mode = LTO_MODE_WHOPR;
+ 	else if (!strncmp (argv[i], "-fno-lto", 8))
+ 	  lto_mode = LTO_MODE_NONE;
+         else if (! strcmp (argv[i], "-plugin"))
+ 	  {
+-	    use_plugin = true;
++	    selected_linker =  PLUGIN_LINKER;
+ 	    lto_mode = LTO_MODE_NONE;
+ 	  }
++	else if (! strcmp (argv[i], "-use-gold"))
++	  selected_linker = GOLD_LINKER;
++	else if (! strcmp (argv[i], "-use-ld"))
++	  selected_linker = BFD_LINKER;
++
+ #ifdef COLLECT_EXPORT_LIST
+ 	/* since -brtl, -bexport, -b64 are not position dependent
+ 	   also check for them here */
+@@ -1299,36 +1319,109 @@
+   /* Try to discover a valid linker/nm/strip to use.  */
+ 
+   /* Maybe we know the right file to use (if not cross).  */
+-  ld_file_name = 0;
++  ld_file_name = NULL;
+ #ifdef DEFAULT_LINKER
+   if (access (DEFAULT_LINKER, X_OK) == 0)
+     ld_file_name = DEFAULT_LINKER;
+-  if (ld_file_name == 0)
++  if (ld_file_name == NULL)
+ #endif
+ #ifdef REAL_LD_FILE_NAME
+   ld_file_name = find_a_file (&path, REAL_LD_FILE_NAME);
+-  if (ld_file_name == 0)
++  if (ld_file_name == NULL)
+ #endif
+   /* Search the (target-specific) compiler dirs for ld'.  */
+   ld_file_name = find_a_file (&cpath, real_ld_suffix);
+   /* Likewise for `collect-ld'.  */
+-  if (ld_file_name == 0)
++  if (ld_file_name == NULL)
+     ld_file_name = find_a_file (&cpath, collect_ld_suffix);
+   /* Search the compiler directories for `ld'.  We have protection against
+      recursive calls in find_a_file.  */
+-  if (ld_file_name == 0)
+-    ld_file_name = find_a_file (&cpath,
+-				use_plugin
+-				? plugin_ld_suffix
+-				: ld_suffix);
++  if (ld_file_name == NULL)
++    switch (selected_linker)
++      {
++      default:
++      case DFLT_LINKER:
++	ld_file_name = find_a_file (&cpath, ld_suffix);
++	break;
++      case PLUGIN_LINKER:
++	ld_file_name = find_a_file (&cpath, plugin_ld_suffix);
++	break;
++      case GOLD_LINKER:
++	ld_file_name = find_a_file (&cpath, gold_suffix);
++	break;
++      case BFD_LINKER:
++	ld_file_name = find_a_file (&cpath, bfd_ld_suffix);
++	break;
++      }
+   /* Search the ordinary system bin directories
+      for `ld' (if native linking) or `TARGET-ld' (if cross).  */
+-  if (ld_file_name == 0)
+-    ld_file_name = find_a_file (&path,
+-				use_plugin
+-				? full_plugin_ld_suffix
+-				: full_ld_suffix);
++  if (ld_file_name == NULL)
++    switch (selected_linker)
++      {
++      default:
++      case DFLT_LINKER:
++	ld_file_name = find_a_file (&path, full_ld_suffix);
++	break;
++      case PLUGIN_LINKER:
++	ld_file_name = find_a_file (&path, full_plugin_ld_suffix);
++	break;
++      case GOLD_LINKER:
++	ld_file_name = find_a_file (&path, full_gold_suffix);
++	break;
++      case BFD_LINKER:
++	ld_file_name = find_a_file (&path, full_bfd_ld_suffix);
++	break;
++      }
++  /* If we failed to find a plugin-capable linker, try the ordinary one.  */
++  if (ld_file_name == NULL && selected_linker == PLUGIN_LINKER)
++    ld_file_name = find_a_file (&cpath, ld_suffix);
+ 
++  if ((vflag || debug) && ld_file_name == NULL)
++    {
++      struct prefix_list * p;
++      const char * s;
++
++      notice ("collect2: warning: unable to find linker.\n");
++
++#ifdef DEFAULT_LINKER
++      notice (" Searched for this absolute executable:\n");
++      notice (" %s\n", DEFAULT_LINKER);
++#endif
++
++      notice (" Searched in these paths:\n");
++      for (p = cpath.plist; p != NULL; p = p->next)
++	notice ("  %s\n", p->prefix);
++      notice (" For these executables:\n");
++      notice ("  %s\n", real_ld_suffix);
++      notice ("  %s\n", collect_ld_suffix);
++      switch (selected_linker)
++      {
++      default:
++      case DFLT_LINKER:    s = ld_suffix; break;
++      case PLUGIN_LINKER:  s = plugin_ld_suffix; break;
++      case GOLD_LINKER:    s = gold_suffix; break;
++      case BFD_LINKER:     s = bfd_ld_suffix; break;
++      }
++      notice ("  %s\n", s);
++
++      notice (" And searched in these paths:\n");
++      for (p = path.plist; p != NULL; p = p->next)
++	notice ("  %s\n", p->prefix);
++      notice (" For these executables:\n");
++#ifdef REAL_LD_FILE_NAME
++      notice (" %s\n", REAL_LD_FILE_NAME);
++#endif
++      switch (selected_linker)
++      {
++      default:
++      case DFLT_LINKER:    s = full_ld_suffix; break;
++      case PLUGIN_LINKER:  s = full_plugin_ld_suffix; break;
++      case GOLD_LINKER:    s = full_gold_suffix; break;
++      case BFD_LINKER:     s = full_bfd_ld_suffix; break;
++      }
++      notice ("  %s\n", s);
++    }
++
+ #ifdef REAL_NM_FILE_NAME
+   nm_file_name = find_a_file (&path, REAL_NM_FILE_NAME);
+   if (nm_file_name == 0)
--- gcc-4.6-4.6.3.orig/debian/patches/cell-branch.diff
+++ gcc-4.6-4.6.3/debian/patches/cell-branch.diff
@@ -0,0 +1,4 @@
+# DP: Updates from the cell-4_5-branch up to 2010xxxx
+
+svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch@xxxx svn://gcc.gnu.org/svn/gcc/branches/cell-4_5-branch
+
--- gcc-4.6-4.6.3.orig/debian/patches/no_fpr_in_libgcc.diff
+++ gcc-4.6-4.6.3/debian/patches/no_fpr_in_libgcc.diff
@@ -0,0 +1,49 @@
+# DP: It does not really harm by including them since nobody should use them
+# DP: but gas does not wont to assmebly hard float since they are not
+# DP: available on this cpu. Upstream did not respond.
+
+--- a/src/gcc/config/rs6000/crtresfpr.asm
++++ b/src/gcc/config/rs6000/crtresfpr.asm
+@@ -33,6 +33,7 @@
+ 
+ /* On PowerPC64 Linux, these functions are provided by the linker.  */
+ #ifndef __powerpc64__
++#ifndef __NO_FPRS__
+ 
+ /* Routines for restoring floating point registers, called by the compiler.  */
+ /* Called with r11 pointing to the stack header word of the caller of the */
+@@ -79,3 +80,4 @@
+ CFI_ENDPROC
+ 
+ #endif
++#endif
+--- a/src/gcc/config/rs6000/crtresxfpr.asm
++++ b/src/gcc/config/rs6000/crtresxfpr.asm
+@@ -33,6 +33,7 @@
+ 
+ /* On PowerPC64 Linux, these functions are provided by the linker.  */
+ #ifndef __powerpc64__
++#ifndef __NO_FPRS__
+ 
+ /* Routines for restoring floating point registers, called by the compiler.  */
+ /* Called with r11 pointing to the stack header word of the caller of the */
+@@ -124,3 +125,4 @@
+ CFI_ENDPROC
+ 
+ #endif
++#endif
+--- a/src/gcc/config/rs6000/crtsavfpr.asm
++++ b/src/gcc/config/rs6000/crtsavfpr.asm
+@@ -33,6 +33,7 @@
+ 
+ /* On PowerPC64 Linux, these functions are provided by the linker.  */
+ #ifndef __powerpc64__
++#ifndef __NO_FPRS__
+ 
+ /* Routines for saving floating point registers, called by the compiler.  */
+ /* Called with r11 pointing to the stack header word of the caller of the */
+@@ -79,3 +80,4 @@
+ CFI_ENDPROC
+ 
+ #endif
++#endif
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-ppc64-O3.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-ppc64-O3.diff
@@ -0,0 +1,59 @@
+# DP: Replace -O1 and -O2 with -O3, unless the env var DEB_GCC_NO_O3 is set
+
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -413,6 +413,7 @@
+ static const char *find_file_spec_function (int, const char **);
+ static const char *find_plugindir_spec_function (int, const char **);
+ static const char *print_asm_header_spec_function (int, const char **);
++static const char *if_env_unset_spec_function (int, const char **);
+ static const char *compare_debug_dump_opt_spec_function (int, const char **);
+ static const char *compare_debug_self_opt_spec_function (int, const char **);
+ static const char *compare_debug_auxbase_opt_spec_function (int, const char **);
+@@ -895,6 +896,7 @@
+ static const char *cpp_options =
+ "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+  %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\
++ %{O1:%:if-env-unset(DEB_GCC_NO_O3 -O3)} %{O2:%:if-env-unset(DEB_GCC_NO_O3 -O3)}\
+  %{undef} %{save-temps*:-fpch-preprocess}";
+ 
+ /* This contains cpp options which are not passed when the preprocessor
+@@ -908,7 +910,8 @@
+  %1 %{!Q:-quiet} %{!dumpbase:-dumpbase %B} %{d*} %{m*} %{a*}\
+  %{fcompare-debug-second:%:compare-debug-auxbase-opt(%b)} \
+  %{!fcompare-debug-second:%{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}}%{!c:%{!S:-auxbase %b}} \
+- %{g*} %{O*} %{W*&pedantic*} %{w} %{std*&ansi&trigraphs}\
++ %{g*} %{O*} %{O1:%:if-env-unset(DEB_GCC_NO_O3 -O3)} %{O2:%:if-env-unset(DEB_GCC_NO_O3 -O3)}\
++ %{W*&pedantic*} %{w} %{std*&ansi&trigraphs}\
+  %{v:-version} %{pg:-p} %{p} %{f*} %{undef}\
+  %{Qn:-fno-ident} %{--help:--help}\
+  %{--target-help:--target-help}\
+@@ -1736,6 +1739,7 @@
+   { "if-exists-else",		if_exists_else_spec_function },
+   { "replace-outfile",		replace_outfile_spec_function },
+   { "version-compare",		version_compare_spec_function },
++  { "if-env-unset",		if_env_unset_spec_function },
+   { "include",			include_spec_function },
+   { "find-file",		find_file_spec_function },
+   { "find-plugindir",		find_plugindir_spec_function },
+@@ -9105,6 +9109,20 @@
+ }
+ 
+ 
++/* %:if-env-unset spec function.  Add the second argument, if
++   if the environment variable (first argument) is not set. */
++static const char *
++if_env_unset_spec_function (int argc, const char**argv)
++{
++  if (argc != 2)
++    abort ();
++  if (getenv (argv[0]) != NULL)
++    return NULL;
++  else
++    return argv[1];
++}
++
++
+ /* %:print-asm-header spec function.  Print a banner to say that the
+    following output is from the assembler.  */
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/libstdc++-nothumb-check.diff
+++ gcc-4.6-4.6.3/debian/patches/libstdc++-nothumb-check.diff
@@ -0,0 +1,38 @@
+# DP: Don't run the libstdc++-v3 testsuite in thumb mode on armel
+
+Index: testsuite/Makefile.in
+===================================================================
+--- a/src/libstdc++-v3/testsuite/Makefile.in	(revision 156820)
++++ b/src/libstdc++-v3/testsuite/Makefile.in	(working copy)
+@@ -583,6 +583,8 @@
+ 	srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
+ 	EXPECT=$(EXPECT); export EXPECT; \
+ 	runtest=$(RUNTEST); \
++	runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-marm/-marm/'`"; \
++	case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \
+ 	if [ -z "$$runtest" ]; then runtest=runtest; fi; \
+ 	tool=libstdc++; \
+ 	dirs=; \
+@@ -590,7 +592,7 @@
+ 	  normal0) \
+ 	    if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ 	      $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \
+-			$(RUNTESTFLAGS) abi.exp; \
++			$$runtestflags abi.exp; \
+ 	    else echo "WARNING: could not find \`runtest'" 1>&2; :;\
+ 	    fi; \
+ 	    dirs="`cd $$srcdir; echo [013-9][0-9]_*/* [abep]*/*`";; \
+@@ -605,11 +607,11 @@
+ 	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ 	  if [ -n "$$dirs" ]; then \
+ 	    $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \
+-		    $(RUNTESTFLAGS) \
++		    $$runtestflags \
+ 		    "conformance.exp=`echo $$dirs | sed 's/ /* /g;s/$$/*/'`"; \
+ 	  else \
+ 	    $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \
+-		    $(RUNTESTFLAGS); \
++		    $$runtestflags; \
+ 	  fi; \
+ 	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
+ 	fi
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-driver-extra-langs.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-driver-extra-langs.diff
@@ -0,0 +1,20 @@
+# DP: Add options and specs for languages that are not built from a source
+# DP: (but built from separate sources).
+
+---
+ gcc/Makefile.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -503,8 +503,8 @@
+ 		      compile.exp dg.exp \
+ 		      dg-torture.exp,builtins.exp \
+ 		      struct-layout-1.exp,unsorted.exp,stackalign.exp,i386.exp
+-lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
+-lang_specs_files=@lang_specs_files@
++lang_opt_files=$(sort @lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang.opt))
++lang_specs_files=$(sort @lang_specs_files@ $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang-specs.h))
+ lang_tree_files=@lang_tree_files@
+ target_cpu_default=@target_cpu_default@
+ GCC_THREAD_FILE=@thread_file@
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-multilib64.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-multilib64.diff
@@ -0,0 +1,44 @@
+# DP: Use lib instead of lib64 as the 64bit system dir on biarch
+# DP: architectures defaulting to 64bit.
+
+--- a/src/gcc/config/s390/t-linux64
++++ b/src/gcc/config/s390/t-linux64
+@@ -7,4 +7,4 @@
+ 
+ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES = ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
+--- a/src/gcc/config/sparc/t-linux64
++++ b/src/gcc/config/sparc/t-linux64
+@@ -26,7 +26,7 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES = ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
+ 
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
+--- a/src/gcc/config/i386/t-linux64
++++ b/src/gcc/config/i386/t-linux64
+@@ -25,7 +25,7 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32 
+-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES = ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
+ 
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
+--- a/src/gcc/config/rs6000/t-linux64
++++ b/src/gcc/config/rs6000/t-linux64
+@@ -36,7 +36,7 @@
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+ MULTILIB_EXCEPTIONS     =
+ MULTILIB_EXCLUSIONS     =
+-MULTILIB_OSDIRNAMES	= ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES	= ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
+ MULTILIB_MATCHES        =
+ 
+ softfp_wrap_start := '\#ifndef __powerpc64__'
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-hash-style-gnu.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-hash-style-gnu.diff
@@ -0,0 +1,134 @@
+# DP: Link using --hash-style=gnu (alpha, amd64, armel, ia64, i386, powerpc, ppc64, s390, sparc)
+
+2006-07-11  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu.
+	* config/i386/linux64.h (LINK_SPEC): Likewise.
+	* config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise.
+	* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32,
+	LINK_OS_LINUX_SPEC64): Likewise.
+	* config/s390/linux.h (LINK_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_SPEC): Likewise.
+	* config/sparc/linux.h (LINK_SPEC): Likewise.
+	* config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC,
+	LINK_ARCH64_SPEC): Likewise.
+	* config/alpha/linux-elf.h (LINK_SPEC): Likewise.
+
+2009-12-21  Matthias Klose  <doko@ubuntu.com>
+
+	* config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=gnu.
+	
+---
+ gcc/config/alpha/linux-elf.h |    2 +-
+ gcc/config/i386/linux.h      |    2 +-
+ gcc/config/i386/linux64.h    |    2 +-
+ gcc/config/ia64/linux.h      |    2 +-
+ gcc/config/rs6000/linux64.h  |    4 ++--
+ gcc/config/rs6000/sysv4.h    |    2 +-
+ gcc/config/s390/linux.h      |    2 +-
+ gcc/config/sparc/linux.h     |    2 +-
+ 8 files changed, 9 insertions(+), 9 deletions(-)
+
+--- a/src/gcc/config/alpha/linux-elf.h
++++ b/src/gcc/config/alpha/linux-elf.h
+@@ -41,7 +41,7 @@
+ 
+ #define ELF_DYNAMIC_LINKER	LINUX_DYNAMIC_LINKER
+ 
+-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax}	\
+   %{O*:-O3} %{!O*:-O1}						\
+   %{shared:-shared}						\
+   %{!shared:							\
+--- a/src/gcc/config/i386/linux.h
++++ b/src/gcc/config/i386/linux.h
+@@ -104,7 +104,7 @@
+   { "dynamic_linker", LINUX_DYNAMIC_LINKER }
+ 
+ #undef	LINK_SPEC
+-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
++#define LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+--- a/src/gcc/config/i386/linux64.h
++++ b/src/gcc/config/i386/linux64.h
+@@ -75,7 +75,7 @@
+  %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
+ 
+ #undef	LINK_SPEC
+-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \
++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=gnu \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -64,7 +64,7 @@
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
+ 
+ #undef LINK_SPEC
+-#define LINK_SPEC "\
++#define LINK_SPEC " --hash-style=gnu \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+--- a/src/gcc/config/rs6000/linux64.h
++++ b/src/gcc/config/rs6000/linux64.h
+@@ -389,11 +389,11 @@
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+ 
+ 
+-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}"
+ 
+-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=gnu %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}"
+ 
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -830,7 +830,7 @@
+ #define LINUX_DYNAMIC_LINKER \
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ 
+-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " LINUX_DYNAMIC_LINKER "}}"
+ 
+--- a/src/gcc/config/s390/linux.h
++++ b/src/gcc/config/s390/linux.h
+@@ -77,7 +77,7 @@
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC \
+-  "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
++  "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \
+    %{shared:-shared} \
+    %{!shared: \
+       %{static:-static} \
+--- a/src/gcc/config/sparc/linux.h
++++ b/src/gcc/config/sparc/linux.h
+@@ -74,7 +74,7 @@
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \
+   %{!mno-relax:%{!r:-relax}} \
+   %{!shared: \
+     %{!static: \
+--- a/src/gcc/config/arm/linux-elf.h
++++ b/src/gcc/config/arm/linux-elf.h
+@@ -71,6 +71,7 @@
+    %{rdynamic:-export-dynamic} \
+    -dynamic-linker " LINUX_DYNAMIC_LINKER " \
+    -X \
++   --hash-style=gnu \
+    %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+    SUBTARGET_EXTRA_LINK_SPEC
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-default-ssp-ppc64.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-default-ssp-ppc64.diff
@@ -0,0 +1,192 @@
+# DP: Turn on -fstack-protector by default for C, C++, ObjC, ObjC++.
+# DP: Build libgcc using -fno-stack-protector.
+
+---
+ gcc/Makefile.in        |    2 ++
+ gcc/cp/lang-specs.h    |    6 +++---
+ gcc/doc/invoke.texi    |    4 ++++
+ gcc/gcc.c              |   18 ++++++++++++++----
+ gcc/objc/lang-specs.h  |   10 +++++-----
+ gcc/objcp/lang-specs.h |    8 ++++----
+ 6 files changed, 32 insertions(+), 16 deletions(-)
+
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -603,6 +603,14 @@
+ #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
+ #endif
+ 
++#ifndef SSP_DEFAULT_SPEC
++#ifdef TARGET_LIBC_PROVIDES_SSP
++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}"
++#else
++#define SSP_DEFAULT_SPEC ""
++#endif
++#endif
++
+ #ifndef LINK_SSP_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector:}"
+@@ -699,6 +707,7 @@
+ static const char *cc1plus_spec = CC1PLUS_SPEC;
+ static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
+ static const char *link_ssp_spec = LINK_SSP_SPEC;
++static const char *ssp_default_spec = SSP_DEFAULT_SPEC;
+ static const char *asm_spec = ASM_SPEC;
+ static const char *asm_final_spec = ASM_FINAL_SPEC;
+ static const char *link_spec = LINK_SPEC;
+@@ -756,7 +765,7 @@
+ "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+  %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\
+  %{O1:%:if-env-unset(DEB_GCC_NO_O3 -O3)} %{O2:%:if-env-unset(DEB_GCC_NO_O3 -O3)}\
+- %{undef} %{save-temps*:-fpch-preprocess}";
++ %{undef} %{save-temps*:-fpch-preprocess} %(ssp_default)";
+ 
+ /* This contains cpp options which are not passed when the preprocessor
+    output will be used by another program.  */
+@@ -931,9 +940,9 @@
+       %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
+ 	  %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
+ 	    cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
+-	  %(cc1_options)}\
++	  %(cc1_options) %(ssp_default)}\
+       %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
+-	  cc1 %(cpp_unique_options) %(cc1_options)}}}\
++	  cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\
+       %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1},
+   {"-",
+    "%{!E:%e-E or -x required when input is from standard input}\
+@@ -956,7 +965,7 @@
+                     %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
+   {".i", "@cpp-output", 0, 0, 0},
+   {"@cpp-output",
+-   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
++   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {".s", "@assembler", 0, 0, 0},
+   {"@assembler",
+    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
+@@ -1179,6 +1188,7 @@
+   INIT_STATIC_SPEC ("cc1plus",			&cc1plus_spec),
+   INIT_STATIC_SPEC ("link_gcc_c_sequence",	&link_gcc_c_sequence_spec),
+   INIT_STATIC_SPEC ("link_ssp",			&link_ssp_spec),
++  INIT_STATIC_SPEC ("ssp_default",		&ssp_default_spec),
+   INIT_STATIC_SPEC ("endfile",			&endfile_spec),
+   INIT_STATIC_SPEC ("link",			&link_spec),
+   INIT_STATIC_SPEC ("lib",			&lib_spec),
+--- a/src/gcc/cp/lang-specs.h
++++ b/src/gcc/cp/lang-specs.h
+@@ -47,7 +47,7 @@
+ 		%(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+ 	%{!fsyntax-only:%{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\
+         %W{o*:--output-pch=%*}}%V}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+@@ -58,11 +58,11 @@
+ 		%(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+        %{!fsyntax-only:%(invoke_as)}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {".ii", "@c++-cpp-output", 0, 0, 0},
+   {"@c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1plus -fpreprocessed %i %(cc1_options) %2\
++    cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/src/gcc/params.def
++++ b/src/gcc/params.def
+@@ -664,7 +664,7 @@
+ DEFPARAM (PARAM_SSP_BUFFER_SIZE,
+ 	  "ssp-buffer-size",
+ 	  "The lower bound for a buffer to be considered for stack smashing protection",
+-	  8, 1, 0)
++	  4, 1, 0)
+ 
+ /* When we thread through a block we have to make copies of the
+    statements within the block.  Clearly for large blocks the code
+--- a/src/gcc/objc/lang-specs.h
++++ b/src/gcc/objc/lang-specs.h
+@@ -30,9 +30,9 @@
+ 	%{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+ 	%{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+-	    cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\
++	    cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\
+ 	%{!save-temps*:%{!no-integrated-cpp:\
+-	    cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\
++	    cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}}\
+         %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objective-c-header",
+      "%{E|M|MM:cc1obj -E %{traditional|traditional-cpp:-traditional-cpp}\
+@@ -41,18 +41,18 @@
+ 	%{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+ 	%{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+-	    cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++	    cc1obj -fpreprocessed %b.mi %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                         -o %g.s %{!o*:--output-pch=%i.gch}\
+                         %W{o*:--output-pch=%*}%V}\
+ 	%{!save-temps*:%{!no-integrated-cpp:\
+-	    cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++	    cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                         -o %g.s %{!o*:--output-pch=%i.gch}\
+                         %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0},
+   {".mi", "@objective-c-cpp-output", 0, 0, 0},
+   {"@objective-c-cpp-output",
+-     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ 			     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objc-cpp-output",
+       "%nobjc-cpp-output is deprecated; please use objective-c-cpp-output instead\n\
+-       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ 			     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/src/gcc/objcp/lang-specs.h
++++ b/src/gcc/objcp/lang-specs.h
+@@ -36,7 +36,7 @@
+ 		%(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+         -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {"@objective-c++",
+@@ -46,16 +46,16 @@
+ 		%(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+        %{!fsyntax-only:%(invoke_as)}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {".mii", "@objective-c++-cpp-output", 0, 0, 0},
+   {"@objective-c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
++    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objc++-cpp-output",
+    "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output instead\n\
+     %{!M:%{!MM:%{!E:\
+-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
++    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -8193,6 +8193,10 @@
+ when a function is entered and then checked when the function exits.
+ If a guard check fails, an error message is printed and the program exits.
+ 
++NOTE: In Ubuntu 6.10 and later versions this option is enabled by default
++for C, C++, ObjC, ObjC++, if none of @option{-fno-stack-protector},
++@option{-nostdlib}, nor @option{-ffreestanding} are found.
++
+ @item -fstack-protector-all
+ @opindex fstack-protector-all
+ Like @option{-fstack-protector} except that all functions are protected.
--- gcc-4.6-4.6.3.orig/debian/patches/libstdc++-arm-wno-abi.diff
+++ gcc-4.6-4.6.3/debian/patches/libstdc++-arm-wno-abi.diff
@@ -0,0 +1,16 @@
+# DP: Temporary work around:
+# DP: On arm-linux-gnueabi run the libstdc++v3 testsuite with -Wno-abi
+
+--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp
++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp
+@@ -289,6 +289,10 @@
+     }
+     append cxxflags " "
+     append cxxflags [getenv CXXFLAGS]
++    # ARM C++ emits an ABI warning for varargs.
++    if [istarget "arm*"] {
++        append cxxflags " -Wno-abi"
++    }
+     v3track cxxflags 2
+ 
+     # Always use MO files built by this test harness.
--- gcc-4.6-4.6.3.orig/debian/patches/pr43804.diff
+++ gcc-4.6-4.6.3/debian/patches/pr43804.diff
@@ -0,0 +1,20 @@
+# DP: Fix for PR target/43804 backported from SVN
+
+2011-04-24  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	PR target/43804
+	* config/m68k/constraints.md (T): Allow PIC operands that satisfy
+	LEGITIMATE_PIC_OPERAND_P.
+
+--- a/src/gcc/config/m68k/constraints.md
++++ b/src/gcc/config/m68k/constraints.md
+@@ -94,7 +94,8 @@
+ (define_constraint "T"
+   "Used for operands that satisfy 's' when -mpcrel is not in effect."
+   (and (match_code "symbol_ref,label_ref,const")
+-       (match_test "!flag_pic")))
++       (match_test "!TARGET_PCREL")
++       (match_test "!flag_pic || LEGITIMATE_PIC_OPERAND_P (op)")))
+ 
+ (define_memory_constraint "Q"
+   "Means address register indirect addressing mode."
--- gcc-4.6-4.6.3.orig/debian/patches/pr51987.diff
+++ gcc-4.6-4.6.3/debian/patches/pr51987.diff
@@ -0,0 +1,78 @@
+# DP: Fix PR tree-optimization/51987, backport from the trunk
+
+2012-09-18  Matthew Gretton-Dann  <matthew.gretton-dann@linaro.org>
+
+	LP 1029454
+	Backport from mainline r183524:
+
+	gcc/
+	2012-01-25  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/51987
+	* tree-data-ref.c (get_references_in_stmt): Handle references in
+	non-volatile GIMPLE_ASM.
+
+	gcc/testsuite/
+	2012-01-25  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/51987
+	* gcc.target/i386/pr51987.c: New test.
+
+=== added file 'gcc/testsuite/gcc.target/i386/pr51987.c'
+--- a/src/gcc/testsuite/gcc.target/i386/pr51987.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/i386/pr51987.c	2012-09-18 15:28:40 +0000
+@@ -0,0 +1,33 @@
++/* PR tree-optimization/51987 */
++/* { dg-do run { target { ! { ilp32 } } } } */
++/* { dg-options "-O3" } */
++
++extern void abort (void);
++union U { unsigned long long l; struct { unsigned int l, h; } i; };
++
++__attribute__((noinline, noclone)) void
++foo (char *x, char *y)
++{
++  int i;
++  for (i = 0; i < 64; i++)
++    {
++      union U u;
++      asm ("movl %1, %k0; salq $32, %0" : "=r" (u.l) : "r" (i));
++      x[i] = u.i.h;
++      union U v;
++      asm ("movl %1, %k0; salq $32, %0" : "=r" (v.l) : "r" (i));
++      y[i] = v.i.h;
++    }
++}
++
++int
++main ()
++{
++  char a[64], b[64];
++  int i;
++  foo (a, b);
++  for (i = 0; i < 64; i++)
++    if (a[i] != i || b[i] != i)
++      abort ();
++  return 0;
++}
+
+=== modified file 'gcc/tree-data-ref.c'
+--- a/src/gcc/tree-data-ref.c	2012-04-05 02:07:06 +0000
++++ b/src/gcc/tree-data-ref.c	2012-09-18 15:28:40 +0000
+@@ -1,5 +1,5 @@
+ /* Data references and dependences detectors.
+-   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
++   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+    Free Software Foundation, Inc.
+    Contributed by Sebastian Pop <pop@cri.ensmp.fr>
+ 
+@@ -4243,7 +4243,7 @@
+   if ((stmt_code == GIMPLE_CALL
+        && !(gimple_call_flags (stmt) & (ECF_CONST | ECF_PURE)))
+       || (stmt_code == GIMPLE_ASM
+-	  && gimple_asm_volatile_p (stmt)))
++	  && (gimple_asm_volatile_p (stmt) || gimple_vuse (stmt))))
+     clobbers_memory = true;
+ 
+   if (!gimple_vuse (stmt))
+
--- gcc-4.6-4.6.3.orig/debian/patches/libffi-m68k.diff
+++ gcc-4.6-4.6.3/debian/patches/libffi-m68k.diff
@@ -0,0 +1,68 @@
+--- a/src/libffi/src/m68k/sysv.S
++++ b/src/libffi/src/m68k/sysv.S
+@@ -109,7 +109,7 @@
+ retfloat:
+ 	btst	#2,%d2
+ 	jbeq	retdouble
+-#if defined(__MC68881__)
++#if defined(__MC68881__) || defined(__HAVE_68881__)
+ 	fmove.s	%fp0,(%a1)
+ #else
+ 	move.l	%d0,(%a1)
+@@ -119,7 +119,7 @@
+ retdouble:
+ 	btst	#3,%d2
+ 	jbeq	retlongdouble
+-#if defined(__MC68881__)
++#if defined(__MC68881__) || defined(__HAVE_68881__)
+ 	fmove.d	%fp0,(%a1)
+ #else
+ 	move.l	%d0,(%a1)+
+@@ -130,7 +130,7 @@
+ retlongdouble:
+ 	btst	#4,%d2
+ 	jbeq	retpointer
+-#if defined(__MC68881__)
++#if defined(__MC68881__) || defined(__HAVE_68881__)
+ 	fmove.x	%fp0,(%a1)
+ #else
+ 	move.l	%d0,(%a1)+
+@@ -199,7 +199,7 @@
+ 	move.l	(%a0),%d1
+ 	jra	.Lcls_epilogue
+ .Lcls_ret_float:
+-#if defined(__MC68881__)
++#if defined(__MC68881__) || defined(__HAVE_68881__)
+ 	fmove.s	(%a0),%fp0
+ #else
+ 	move.l	(%a0),%d0
+@@ -209,7 +209,7 @@
+ 	lsr.l	#2,%d0
+ 	jne	1f
+ 	jcs	.Lcls_ret_ldouble
+-#if defined(__MC68881__)
++#if defined(__MC68881__) || defined(__HAVE_68881__)
+ 	fmove.d	(%a0),%fp0
+ #else
+ 	move.l	(%a0)+,%d0
+@@ -217,7 +217,7 @@
+ #endif
+ 	jra	.Lcls_epilogue
+ .Lcls_ret_ldouble:
+-#if defined(__MC68881__)
++#if defined(__MC68881__) || defined(__HAVE_68881__)
+ 	fmove.x	(%a0),%fp0
+ #else
+ 	move.l	(%a0)+,%d0
+--- a/src/libffi/src/m68k/ffi.c
++++ b/src/libffi/src/m68k/ffi.c
+@@ -261,7 +261,8 @@
+ 		      void *user_data,
+ 		      void *codeloc)
+ {
+-  FFI_ASSERT (cif->abi == FFI_SYSV);
++  if (cif->abi != FFI_SYSV)
++    return FFI_BAD_ABI;
+ 
+   *(unsigned short *)closure->tramp = 0x207c;
+   *(void **)(closure->tramp + 2) = codeloc;
--- gcc-4.6-4.6.3.orig/debian/patches/ignore-comp-fail.diff
+++ gcc-4.6-4.6.3/debian/patches/ignore-comp-fail.diff
@@ -0,0 +1,19 @@
+# DP: Ignore the bootstrap comparision failure
+
+---
+ Makefile.in |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -53636,7 +53636,9 @@ compare:
+ 	if [ -f .bad_compare ]; then \
+ 	  echo "Bootstrap comparison failure!"; \
+ 	  cat .bad_compare; \
+-	  exit 1; \
++	  echo ""; \
++	  echo "Ignore the comparision failure!"; \
++	  true; \
+ 	else \
+ 	  echo Comparison successful.; \
+ 	fi ; \
--- gcc-4.6-4.6.3.orig/debian/patches/libffi-ro-eh_frame_sect.diff
+++ gcc-4.6-4.6.3/debian/patches/libffi-ro-eh_frame_sect.diff
@@ -0,0 +1,13 @@
+# DP: PR libffi/47248, force a read only eh frame section.
+
+--- a/src/libffi/configure.ac
++++ b/src/libffi/configure.ac
+@@ -347,6 +347,8 @@
+ 		libffi_cv_ro_eh_frame=yes
+ 	    fi
+ 	fi
++	# FIXME: see PR libffi/47248
++	libffi_cv_ro_eh_frame=yes
+ 	rm -f conftest.*
+     ])
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
--- gcc-4.6-4.6.3.orig/debian/patches/sparc-force-cpu.diff
+++ gcc-4.6-4.6.3/debian/patches/sparc-force-cpu.diff
@@ -0,0 +1,18 @@
+# DP: On sparc default to ultrasparc (v9a) in 32bit mode
+
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -3766,6 +3766,13 @@
+ 			;;
+ 		esac
+ 
++		# setting this directly fails to build a biarch defaulting to 32bit
++		case "$target" in sparc*-*-linux*)
++			if test "$option" = cpu; then
++				val=ultrasparc
++			fi
++		esac
++
+ 		if test "x$t" = x
+ 		then
+ 			t="{ \"$option\", \"$val\" }"
--- gcc-4.6-4.6.3.orig/debian/patches/ada-libgnatprj.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-libgnatprj.diff
@@ -0,0 +1,1686 @@
+# DP: - Introduce a new shared library named libgnatprj, containing
+# DP:   the GNAT project file manager licensed under the pure GPL, for
+# DP:   use in GNAT tools, GLADE and GPS.  Link the GNAT tools against
+# DP:   this new library.
+
+# This patch seems large, but the hunks in Makefile.in are actually
+# generated from Makefile.def using autogen.
+
+# !!! Must be applied after ada-libgnatvsn.dpatch
+
+Index: b/src/gcc/ada/gcc-interface/config-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/config-lang.in
++++ b/src/gcc/ada/gcc-interface/config-lang.in
+@@ -36,8 +36,8 @@
+ 
+ outputs="ada/gcc-interface/Makefile ada/Makefile"
+ 
+-target_libs="target-libada target-libgnatvsn"
+-lang_dirs="libada libgnatvsn gnattools"
++target_libs="target-libada target-libgnatvsn target-libgnatprj"
++lang_dirs="libada libgnatvsn libgnatprj gnattools"
+ 
+ # Ada is not enabled by default for the time being.
+ build_by_default=no
+Index: b/src/gnattools/Makefile.in
+===================================================================
+--- a/src/gnattools/Makefile.in
++++ b/src/gnattools/Makefile.in
+@@ -36,13 +36,13 @@
+ target_noncanonical=@target_noncanonical@
+ 
+ CFLAGS=-O2 -Wall
+-INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc
+ ADA_CFLAGS=-O2 -gnatn
+-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn
++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj
+ LIB_VERSION=$(strip $(shell grep ' Library_Version :' \
+               ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
+ ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION)
+ ADA_LIBS += -L../libgnatvsn -lgnatvsn
++ADA_LIBS += -L../libgnatprj -lgnatprj
+ 
+ # We will use the just-built compiler to compile and link everything.
+ GCC=../gcc/xgcc -B../gcc/
+@@ -67,74 +67,18 @@
+ 
+ # Since we don't have gnatmake, we must specify the full list of
+ # object files necessary to build gnatmake and gnatlink.
+-# TODO: remove from these lists the objects that are part of
+-# libgnatprj.
+ GNATLINK_OBJS = \
+-ali.o \
+-butil.o \
+-fmap.o \
+ gnatlink.o \
+ indepsw.o \
+-osint.o \
+-prefix.o \
+-rident.o \
+-sdefault.o \
+-stylesw.o \
+-switch.o \
+-targparm.o \
+ validsw.o
+ 
+ GNATMAKE_OBJS = \
+-ali-util.o \
+-ali.o \
+-binderr.o \
+-butil.o \
+-err_vars.o \
+-erroutc.o \
+-errutil.o \
+-fmap.o \
+ fname-sf.o \
+-fname-uf.o \
+ gnatmake.o \
+ make.o \
+ makeusg.o \
+-makeutl.o \
+-mlib-fil.o \
+ mlib-prj.o \
+-mlib-tgt.o \
+-mlib-tgt-specific.o \
+-mlib-utl.o \
+-mlib.o \
+ osint-m.o \
+-osint.o \
+-prefix.o \
+-prj-attr-pm.o \
+-prj-attr.o \
+-prj-com.o \
+-prj-dect.o \
+-prj-env.o \
+-prj-err.o \
+-prj-ext.o \
+-prj-nmsc.o \
+-prj-pars.o \
+-prj-part.o \
+-prj-proc.o \
+-prj-strt.o \
+-prj-tree.o \
+-prj-util.o \
+-prj.o \
+-rident.o \
+-scng.o \
+-sdefault.o \
+-sfn_scan.o \
+-sinput-c.o \
+-sinput-p.o \
+-styleg.o \
+-stylesw.o \
+-switch-m.o \
+-switch.o \
+-targparm.o \
+-tempdir.o \
+ usage.o \
+ validsw.o \
+ $(EXTRA_GNATMAKE_OBJS)
+@@ -176,11 +120,6 @@
+ 	for file in $(BODIES) $(SPECS); do \
+ 	   $(LN_S) -f $$file .; \
+ 	done
+-	rm -f sdefault.adb; $(LN_S) ../gcc/ada/sdefault.adb .
+-	$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
+-	          rm -f $(word 1,$(subst <, ,$(PAIR)));\
+-	          $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \
+-	                  $(word 1,$(subst <, ,$(PAIR)));)
+ 	touch $@
+ 
+ gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so
+@@ -193,19 +132,16 @@
+ vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc
+ vpath %.h @srcdir@/../gcc/ada
+ 
+-# Because the just-built gcc is a host tool like us, we can use some
+-# of its object files, e.g. prefix.o.
+-vpath prefix.o ../gcc
+-
+ # gnatlink
+ 
+-gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o
++gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o
+ 	$(GCC) -o $@ $^ \
++	   ../libgnatprj/libgnatprj.a \
+ 	   ../libgnatvsn/libgnatvsn.a \
+ 	   ../gcc/ada/rts/libgnat.a \
+ 	   ../libiberty/libiberty.a
+ 
+-gnatlink: $(GNATLINK_OBJS) b_gnatl.o link.o
++gnatlink: $(GNATLINK_OBJS) b_gnatl.o
+ 	$(GCC) -o $@ $^ $(ADA_LIBS) ../libiberty/libiberty.a
+ 
+ b_gnatl.o: b_gnatl.c adaint.h
+@@ -216,13 +152,14 @@
+ 
+ # gnatmake
+ 
+-gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o
++gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o
+ 	$(GCC) -o $@ $(ADA_CFLAGS) $^ \
++	   ../libgnatprj/libgnatprj.a \
+ 	   ../libgnatvsn/libgnatvsn.a \
+ 	   ../gcc/ada/rts/libgnat.a \
+ 	   ../libiberty/libiberty.a
+ 
+-gnatmake: $(GNATMAKE_OBJS) b_gnatm.o link.o
++gnatmake: $(GNATMAKE_OBJS) b_gnatm.o
+ 	$(GCC) -o $@ $(ADA_CFLAGS) $^ $(ADA_LIBS) ../libiberty/libiberty.a
+ 
+ b_gnatm.o: b_gnatm.c adaint.h
+@@ -232,19 +169,11 @@
+ 	../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali
+ 
+ # Other tools
+-gnatkr:
+-	if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi
+-	./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \
+-	   --GCC="$(GCC)" \
+-	   --GNATBIND=../gcc/gnatbind
+-	./gnatlink-static -o $@ $@.ali $^ $(ADA_INCLUDES) $(ADA_LIBS) \
+-	   --GCC="$(GCC) $(ADA_INCLUDES)"
+-
+ gnat: gnatcmd
+ 	cp -lp $< $@
+ 
+-gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref: \
+-link.o prefix.o
++gnatbind gnatchop gnatclean gnatcmd gnatfind gnatkr gnatls gnatname gnatprep \
++gnatxref:
+ 	if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi
+ 	./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \
+ 	   --GCC="$(GCC)" \
+@@ -253,22 +182,12 @@
+ 	   ../libiberty/libiberty.a \
+ 	   --GCC="$(GCC) $(ADA_INCLUDES)"
+ 
+-# Force compiling sdefault.adb, not .ads, to produce sdefault.o
+-sdefault.o: sdefault.adb
+-
+-sdefault.adb: stamp-gnattools-sources
+-
+ %.o: %.adb
+ 	$(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES)
+ 
+ %.o: %.ads
+ 	$(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES)
+ 
+-%.o: %.c
+-	$(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES)
+-
+-prefix.o:
+-
+ # Other
+ # -----
+ 
+Index: b/src/libgnatprj/Makefile.in
+===================================================================
+--- /dev/null
++++ b/src/libgnatprj/Makefile.in
+@@ -0,0 +1,178 @@
++# Makefile for libgnatprj.
++#   Copyright (c) 2006 Ludovic Brenta <ludovic@ludovic-brenta.org>
++#
++# This file 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 2 of the License, or
++# (at your option) any later version.
++# 
++# This program 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 this program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
++
++# Default target; must be first.
++all: libgnatprj
++
++.SUFFIXES:
++
++CPUS := $(shell getconf _NPROCESSORS_ONLN)
++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \
++                 @srcdir@/../gcc/ada/gnatvsn.ads | \
++	         sed -e 's/.*"\(.*\)".*/\1/'))
++GCC:=../gcc/xgcc -B../gcc/
++LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts
++LIBGNATVSN := -I../libgnatvsn
++CFLAGS := -g -O2
++ADAFLAGS := -g -O2 -gnatn
++BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER)
++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE)
++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP)
++TOOLS_TARGET_PAIRS := @TOOLS_TARGET_PAIRS@
++LN_S := @LN_S@
++
++ifneq (@build@,@host@)
++   CFLAGS += -b @host@
++endif
++
++.PHONY: libgnatprj install
++libgnatprj: libgnatprj.so.$(LIB_VERSION) libgnatprj.a
++
++# Here we list one file per Ada unit: the body file if the unit has a
++# body, the spec file otherwise.
++PRJ_SOURCES := ali.adb ali-util.adb butil.adb binderr.adb errout.adb \
++erroutc.adb errutil.adb err_vars.ads fname-uf.adb fmap.adb impunit.adb \
++lib-util.adb makeutl.adb mlib.adb mlib-fil.adb mlib-tgt.adb \
++mlib-tgt-specific.adb mlib-utl.adb osint.adb osint-c.adb prj.adb prj-attr.adb \
++prj-attr-pm.adb prj-com.ads prj-conf.adb prj-dect.adb prj-env.adb prj-err.adb \
++prj-ext.adb prj-nmsc.adb prj-pars.adb prj-part.adb prj-pp.adb prj-proc.adb \
++prj-strt.adb prj-tree.adb prj-util.adb rident.ads scng.adb sfn_scan.adb \
++sinfo-cn.adb sinput-c.adb sinput-p.adb style.adb styleg.adb stylesw.adb \
++switch.adb switch-m.adb targparm.adb tempdir.adb
++
++# Source files generated in build/gcc/ada, not src/gcc/ada.
++GENERATED_SOURCES := sdefault.adb
++
++SOURCES := $(PRJ_SOURCES) $(GENERATED_SOURCES)
++
++OBJECTS := $(patsubst %.ads,%.o,$(SOURCES:.adb=.o))
++
++# Add some object files compiled from C sources.  prefix.o requires
++# some objects from libiberty.
++OBJECTS += concat.o link.o prefix.o xexit.o xmalloc.o xstrdup.o
++
++vpath %.c @srcdir@/../gcc/ada
++
++libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS))
++	: # Make libgnatprj.so
++	$(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \
++	   -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \
++	   -L../libgnatvsn -lgnatvsn
++	$(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so
++	chmod a=r obj-shared/*.ali
++# Make the .ali files, but not the .o files, visible to the gnat tools.
++	cp -lp obj-shared/*.ali .
++
++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatprj-sources obj-shared
++
++obj-shared/%.o: %.adb
++	$(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
++
++obj-shared/%.o: %.ads
++	$(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
++
++obj-shared/%.o: %.c
++	$(GCC) -c -fPIC $(CFLAGS) -I@srcdir@/../gcc $< -o $@
++
++obj-shared/prefix.o: @srcdir@/../gcc/prefix.c
++	$(GCC) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \
++	   -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I../libiberty \
++	   $< -o $@
++
++obj-shared/%.o: @srcdir@/../libiberty/%.c
++	$(GCC) -c -fPIC $(CFLAGS) \
++	   -I@srcdir@/../libiberty -I@srcdir@/../include $< -o $@
++
++obj-shared:
++	-mkdir $@
++
++libgnatprj.a: $(addprefix obj-static/,$(OBJECTS))
++	: # Make libgnatprj.a
++	ar rc $@ $^
++	ranlib $@
++
++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatprj-sources obj-static
++
++obj-static/%.o: %.adb
++	$(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
++
++obj-static/%.o: %.ads
++	$(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
++
++obj-static/%.o: %.c
++	$(GCC) -c $(CFLAGS) -I@srcdir@/../gcc $< -o $@
++
++obj-static/prefix.o: @srcdir@/../gcc/prefix.c
++	$(GCC) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \
++	   -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I../libiberty \
++	   $< -o $@
++
++obj-static/%.o: @srcdir@/../libiberty/%.c
++	$(GCC) -c -fPIC $(CFLAGS) \
++	   -I@srcdir@/../libiberty -I@srcdir@/../include $< -o $@
++
++obj-static:
++	-mkdir $@
++
++$(SOURCES): stamp-libgnatprj-sources
++
++stamp-libgnatprj-sources:
++	for file in $(PRJ_SOURCES); do \
++	   ads=$$(echo $$file | sed 's/\.adb/.ads/'); \
++	   if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) @srcdir@/../gcc/ada/$$file .; fi; \
++	   if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \
++	done
++	for file in $(GENERATED_SOURCES); do \
++	   ads=$$(echo $$file | sed 's/\.adb/.ads/'); \
++	   if [ -f ../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) ../gcc/ada/$$file .; fi; \
++	   if [ -f ../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) ../gcc/ada/$$ads .; \
++	   else \
++	      if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \
++	   fi; \
++	done
++	$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
++	          rm -f $(word 1,$(subst <, ,$(PAIR)));\
++	          $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \
++	                  $(word 1,$(subst <, ,$(PAIR)));)
++	touch $@
++
++# Generate a list of source files (.ads and .adb) to install.  Almost
++# all of them are in src/gcc/ada, but some are generated during build
++# and are in build/gcc/ada.
++BODIES := $(filter %.adb,$(PRJ_SOURCES))
++SPECS := $(filter %.ads,$(PRJ_SOURCES)) $(patsubst %.adb,%.ads,$(BODIES) $(GENERATED_SOURCES))
++SOURCES_TO_INSTALL := \
++$(addprefix  @srcdir@/../gcc/ada/,$(SPECS) $(BODIES)) \
++$(addprefix ../gcc/ada/,$(GENERATED_SOURCES))
++
++libdir = @libdir@
++
++install: libgnatprj
++	$(INSTALL_DATA) libgnatprj.a $(DESTDIR)$(libdir)
++	$(INSTALL_DATA) libgnatprj.so.$(LIB_VERSION) $(DESTDIR)$(libdir)
++	cd $(DESTDIR)$(libdir); ln -sf libgnatprj.so.$(LIB_VERSION) libgnatprj.so
++	mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj
++	$(INSTALL_DATA) $(SOURCES_TO_INSTALL) \
++	   $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj
++	mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj
++	$(INSTALL) -m 0444 obj-shared/*.ali \
++	   $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj
++	chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj/*.ali
++
++.PHONY: clean
++clean:
++	rm -rf *.ali obj-static obj-shared libgnatprj* *.adb *.ads stamp*
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -158,6 +158,13 @@
+ 		missing= TAGS;
+ 		missing= install-info;
+ 		missing= installcheck; };
++host_modules= { module= libgnatprj; no_check=true;
++		missing= info;
++		missing= dvi;
++		missing= html;
++		missing= TAGS;
++		missing= install-info;
++		missing= installcheck; };
+ host_modules= { module= gnattools; no_check=true;
+ 		missing= info;
+ 		missing= dvi;
+@@ -210,6 +217,13 @@
+ 		   missing= TAGS;
+ 		   missing= install-info;
+ 		   missing= installcheck; };
++target_modules = { module= libgnatprj; no_check=true;
++		   missing= info;
++		   missing= dvi;
++		   missing= html;
++		   missing= TAGS;
++		   missing= install-info;
++		   missing= installcheck; };
+ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
+ 
+ // These are (some of) the make targets to be done in each subdirectory.
+@@ -397,7 +411,10 @@
+ 
+ dependencies = { module=all-gnattools; on=all-libada; };
+ dependencies = { module=all-gnattools; on=all-libgnatvsn; };
++dependencies = { module=all-gnattools; on=all-libgnatprj; };
+ dependencies = { module=all-libgnatvsn; on=all-libada; };
++dependencies = { module=all-libgnatprj; on=all-libada; };
++dependencies = { module=all-libgnatprj; on=all-libgnatvsn; };
+ 
+ dependencies = { module=all-lto-plugin; on=all-libiberty; };
+ 
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -952,6 +952,7 @@
+     maybe-configure-utils \
+     maybe-configure-libada \
+     maybe-configure-libgnatvsn \
++    maybe-configure-libgnatprj \
+     maybe-configure-gnattools \
+     maybe-configure-lto-plugin
+ .PHONY: configure-target
+@@ -979,6 +980,7 @@
+     maybe-configure-target-rda \
+     maybe-configure-target-libada \
+     maybe-configure-target-libgnatvsn \
++    maybe-configure-target-libgnatprj \
+     maybe-configure-target-libgomp
+ 
+ # The target built for a native non-bootstrap build.
+@@ -1132,6 +1134,7 @@
+ all-host: maybe-all-utils
+ all-host: maybe-all-libada
+ all-host: maybe-all-libgnatvsn
++all-host: maybe-all-libgnatprj
+ all-host: maybe-all-gnattools
+ @if lto-plugin-no-bootstrap
+ all-host: maybe-all-lto-plugin
+@@ -1166,6 +1169,7 @@
+ all-target: maybe-all-target-rda
+ all-target: maybe-all-target-libada
+ all-target: maybe-all-target-libgnatvsn
++all-target: maybe-all-target-libgnatprj
+ @if target-libgomp-no-bootstrap
+ all-target: maybe-all-target-libgomp
+ @endif target-libgomp-no-bootstrap
+@@ -1264,6 +1268,7 @@
+ info-host: maybe-info-utils
+ info-host: maybe-info-libada
+ info-host: maybe-info-libgnatvsn
++info-host: maybe-info-libgnatprj
+ info-host: maybe-info-gnattools
+ info-host: maybe-info-lto-plugin
+ 
+@@ -1292,6 +1297,7 @@
+ info-target: maybe-info-target-rda
+ info-target: maybe-info-target-libada
+ info-target: maybe-info-target-libgnatvsn
++info-target: maybe-info-target-libgnatprj
+ info-target: maybe-info-target-libgomp
+ 
+ .PHONY: do-dvi
+@@ -1383,6 +1389,7 @@
+ dvi-host: maybe-dvi-utils
+ dvi-host: maybe-dvi-libada
+ dvi-host: maybe-dvi-libgnatvsn
++dvi-host: maybe-dvi-libgnatprj
+ dvi-host: maybe-dvi-gnattools
+ dvi-host: maybe-dvi-lto-plugin
+ 
+@@ -1411,6 +1418,7 @@
+ dvi-target: maybe-dvi-target-rda
+ dvi-target: maybe-dvi-target-libada
+ dvi-target: maybe-dvi-target-libgnatvsn
++dvi-target: maybe-dvi-target-libgnatprj
+ dvi-target: maybe-dvi-target-libgomp
+ 
+ .PHONY: do-pdf
+@@ -1502,6 +1510,7 @@
+ pdf-host: maybe-pdf-utils
+ pdf-host: maybe-pdf-libada
+ pdf-host: maybe-pdf-libgnatvsn
++pdf-host: maybe-pdf-libgnatprj
+ pdf-host: maybe-pdf-gnattools
+ pdf-host: maybe-pdf-lto-plugin
+ 
+@@ -1530,6 +1539,7 @@
+ pdf-target: maybe-pdf-target-rda
+ pdf-target: maybe-pdf-target-libada
+ pdf-target: maybe-pdf-target-libgnatvsn
++pdf-target: maybe-pdf-target-libgnatprj
+ pdf-target: maybe-pdf-target-libgomp
+ 
+ .PHONY: do-html
+@@ -1621,6 +1631,7 @@
+ html-host: maybe-html-utils
+ html-host: maybe-html-libada
+ html-host: maybe-html-libgnatvsn
++html-host: maybe-html-libgnatprj
+ html-host: maybe-html-gnattools
+ html-host: maybe-html-lto-plugin
+ 
+@@ -1649,6 +1660,7 @@
+ html-target: maybe-html-target-rda
+ html-target: maybe-html-target-libada
+ html-target: maybe-html-target-libgnatvsn
++html-target: maybe-html-target-libgnatprj
+ html-target: maybe-html-target-libgomp
+ 
+ .PHONY: do-TAGS
+@@ -1740,6 +1752,7 @@
+ TAGS-host: maybe-TAGS-utils
+ TAGS-host: maybe-TAGS-libada
+ TAGS-host: maybe-TAGS-libgnatvsn
++TAGS-host: maybe-TAGS-libgnatprj
+ TAGS-host: maybe-TAGS-gnattools
+ TAGS-host: maybe-TAGS-lto-plugin
+ 
+@@ -1768,6 +1781,7 @@
+ TAGS-target: maybe-TAGS-target-rda
+ TAGS-target: maybe-TAGS-target-libada
+ TAGS-target: maybe-TAGS-target-libgnatvsn
++TAGS-target: maybe-TAGS-target-libgnatprj
+ TAGS-target: maybe-TAGS-target-libgomp
+ 
+ .PHONY: do-install-info
+@@ -1859,6 +1873,7 @@
+ install-info-host: maybe-install-info-utils
+ install-info-host: maybe-install-info-libada
+ install-info-host: maybe-install-info-libgnatvsn
++install-info-host: maybe-install-info-libgnatprj
+ install-info-host: maybe-install-info-gnattools
+ install-info-host: maybe-install-info-lto-plugin
+ 
+@@ -1887,6 +1902,7 @@
+ install-info-target: maybe-install-info-target-rda
+ install-info-target: maybe-install-info-target-libada
+ install-info-target: maybe-install-info-target-libgnatvsn
++install-info-target: maybe-install-info-target-libgnatprj
+ install-info-target: maybe-install-info-target-libgomp
+ 
+ .PHONY: do-install-pdf
+@@ -1978,6 +1994,7 @@
+ install-pdf-host: maybe-install-pdf-utils
+ install-pdf-host: maybe-install-pdf-libada
+ install-pdf-host: maybe-install-pdf-libgnatvsn
++install-pdf-host: maybe-install-pdf-libgnatprj
+ install-pdf-host: maybe-install-pdf-gnattools
+ install-pdf-host: maybe-install-pdf-lto-plugin
+ 
+@@ -2006,6 +2023,7 @@
+ install-pdf-target: maybe-install-pdf-target-rda
+ install-pdf-target: maybe-install-pdf-target-libada
+ install-pdf-target: maybe-install-pdf-target-libgnatvsn
++install-pdf-target: maybe-install-pdf-target-libgnatprj
+ install-pdf-target: maybe-install-pdf-target-libgomp
+ 
+ .PHONY: do-install-html
+@@ -2097,6 +2115,7 @@
+ install-html-host: maybe-install-html-utils
+ install-html-host: maybe-install-html-libada
+ install-html-host: maybe-install-html-libgnatvsn
++install-html-host: maybe-install-html-libgnatprj
+ install-html-host: maybe-install-html-gnattools
+ install-html-host: maybe-install-html-lto-plugin
+ 
+@@ -2125,6 +2144,7 @@
+ install-html-target: maybe-install-html-target-rda
+ install-html-target: maybe-install-html-target-libada
+ install-html-target: maybe-install-html-target-libgnatvsn
++install-html-target: maybe-install-html-target-libgnatprj
+ install-html-target: maybe-install-html-target-libgomp
+ 
+ .PHONY: do-installcheck
+@@ -2216,6 +2236,7 @@
+ installcheck-host: maybe-installcheck-utils
+ installcheck-host: maybe-installcheck-libada
+ installcheck-host: maybe-installcheck-libgnatvsn
++installcheck-host: maybe-installcheck-libgnatprj
+ installcheck-host: maybe-installcheck-gnattools
+ installcheck-host: maybe-installcheck-lto-plugin
+ 
+@@ -2244,6 +2265,7 @@
+ installcheck-target: maybe-installcheck-target-rda
+ installcheck-target: maybe-installcheck-target-libada
+ installcheck-target: maybe-installcheck-target-libgnatvsn
++installcheck-target: maybe-installcheck-target-libgnatprj
+ installcheck-target: maybe-installcheck-target-libgomp
+ 
+ .PHONY: do-mostlyclean
+@@ -2335,6 +2357,7 @@
+ mostlyclean-host: maybe-mostlyclean-utils
+ mostlyclean-host: maybe-mostlyclean-libada
+ mostlyclean-host: maybe-mostlyclean-libgnatvsn
++mostlyclean-host: maybe-mostlyclean-libgnatprj
+ mostlyclean-host: maybe-mostlyclean-gnattools
+ mostlyclean-host: maybe-mostlyclean-lto-plugin
+ 
+@@ -2363,6 +2386,7 @@
+ mostlyclean-target: maybe-mostlyclean-target-rda
+ mostlyclean-target: maybe-mostlyclean-target-libada
+ mostlyclean-target: maybe-mostlyclean-target-libgnatvsn
++mostlyclean-target: maybe-mostlyclean-target-libgnatprj
+ mostlyclean-target: maybe-mostlyclean-target-libgomp
+ 
+ .PHONY: do-clean
+@@ -2454,6 +2478,7 @@
+ clean-host: maybe-clean-utils
+ clean-host: maybe-clean-libada
+ clean-host: maybe-clean-libgnatvsn
++clean-host: maybe-clean-libgnatprj
+ clean-host: maybe-clean-gnattools
+ clean-host: maybe-clean-lto-plugin
+ 
+@@ -2482,6 +2507,7 @@
+ clean-target: maybe-clean-target-rda
+ clean-target: maybe-clean-target-libada
+ clean-target: maybe-clean-target-libgnatvsn
++clean-target: maybe-clean-target-libgnatprj
+ clean-target: maybe-clean-target-libgomp
+ 
+ .PHONY: do-distclean
+@@ -2573,6 +2599,7 @@
+ distclean-host: maybe-distclean-utils
+ distclean-host: maybe-distclean-libada
+ distclean-host: maybe-distclean-libgnatvsn
++distclean-host: maybe-distclean-libgnatprj
+ distclean-host: maybe-distclean-gnattools
+ distclean-host: maybe-distclean-lto-plugin
+ 
+@@ -2601,6 +2628,7 @@
+ distclean-target: maybe-distclean-target-rda
+ distclean-target: maybe-distclean-target-libada
+ distclean-target: maybe-distclean-target-libgnatvsn
++distclean-target: maybe-distclean-target-libgnatprj
+ distclean-target: maybe-distclean-target-libgomp
+ 
+ .PHONY: do-maintainer-clean
+@@ -2692,6 +2720,7 @@
+ maintainer-clean-host: maybe-maintainer-clean-utils
+ maintainer-clean-host: maybe-maintainer-clean-libada
+ maintainer-clean-host: maybe-maintainer-clean-libgnatvsn
++maintainer-clean-host: maybe-maintainer-clean-libgnatprj
+ maintainer-clean-host: maybe-maintainer-clean-gnattools
+ maintainer-clean-host: maybe-maintainer-clean-lto-plugin
+ 
+@@ -2720,6 +2749,7 @@
+ maintainer-clean-target: maybe-maintainer-clean-target-rda
+ maintainer-clean-target: maybe-maintainer-clean-target-libada
+ maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn
++maintainer-clean-target: maybe-maintainer-clean-target-libgnatprj
+ maintainer-clean-target: maybe-maintainer-clean-target-libgomp
+ 
+ 
+@@ -2866,6 +2896,7 @@
+     maybe-check-utils \
+     maybe-check-libada \
+     maybe-check-libgnatvsn \
++    maybe-check-libgnatprj \
+     maybe-check-gnattools \
+     maybe-check-lto-plugin
+ 
+@@ -2894,6 +2925,7 @@
+     maybe-check-target-rda \
+     maybe-check-target-libada \
+     maybe-check-target-libgnatvsn \
++    maybe-check-target-libgnatprj \
+     maybe-check-target-libgomp
+ 
+ do-check:
+@@ -3011,6 +3043,7 @@
+     maybe-install-utils \
+     maybe-install-libada \
+     maybe-install-libgnatvsn \
++    maybe-install-libgnatprj \
+     maybe-install-gnattools \
+     maybe-install-lto-plugin
+ 
+@@ -3094,6 +3127,7 @@
+     maybe-install-utils \
+     maybe-install-libada \
+     maybe-install-libgnatvsn \
++    maybe-install-libgnatprj \
+     maybe-install-gnattools \
+     maybe-install-lto-plugin
+ 
+@@ -3122,6 +3156,7 @@
+     maybe-install-target-rda \
+     maybe-install-target-libada \
+     maybe-install-target-libgnatvsn \
++    maybe-install-target-libgnatprj \
+     maybe-install-target-libgomp
+ 
+ uninstall:
+@@ -3232,6 +3267,7 @@
+     maybe-install-strip-utils \
+     maybe-install-strip-libada \
+     maybe-install-strip-libgnatvsn \
++    maybe-install-strip-libgnatprj \
+     maybe-install-strip-gnattools \
+     maybe-install-strip-lto-plugin
+ 
+@@ -3260,6 +3296,7 @@
+     maybe-install-strip-target-rda \
+     maybe-install-strip-target-libada \
+     maybe-install-strip-target-libgnatvsn \
++    maybe-install-strip-target-libgnatprj \
+     maybe-install-strip-target-libgomp
+ 
+ 
+@@ -45502,6 +45539,343 @@
+ 
+ 
+ 
++.PHONY: configure-libgnatprj maybe-configure-libgnatprj
++maybe-configure-libgnatprj:
++@if gcc-bootstrap
++configure-libgnatprj: stage_current
++@endif gcc-bootstrap
++@if libgnatprj
++maybe-configure-libgnatprj: configure-libgnatprj
++configure-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	test ! -f $(HOST_SUBDIR)/libgnatprj/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatprj ; \
++	$(HOST_EXPORTS)  \
++	echo Configuring in $(HOST_SUBDIR)/libgnatprj; \
++	cd "$(HOST_SUBDIR)/libgnatprj" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(HOST_SUBDIR)/libgnatprj/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	srcdiroption="--srcdir=$${topdir}/libgnatprj"; \
++	libsrcdir="$$s/libgnatprj"; \
++	$(SHELL) $${libsrcdir}/configure \
++	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
++	  --target=${target_alias} $${srcdiroption}  \
++	  || exit 1
++@endif libgnatprj
++
++
++
++
++
++.PHONY: all-libgnatprj maybe-all-libgnatprj
++maybe-all-libgnatprj:
++@if gcc-bootstrap
++all-libgnatprj: stage_current
++@endif gcc-bootstrap
++@if libgnatprj
++TARGET-libgnatprj=all
++maybe-all-libgnatprj: all-libgnatprj
++all-libgnatprj: configure-libgnatprj
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS)  \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS)  \
++		$(TARGET-libgnatprj))
++@endif libgnatprj
++
++
++
++
++.PHONY: check-libgnatprj maybe-check-libgnatprj
++maybe-check-libgnatprj:
++@if libgnatprj
++maybe-check-libgnatprj: check-libgnatprj
++
++check-libgnatprj:
++
++@endif libgnatprj
++
++.PHONY: install-libgnatprj maybe-install-libgnatprj
++maybe-install-libgnatprj:
++@if libgnatprj
++maybe-install-libgnatprj: install-libgnatprj
++
++install-libgnatprj: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(FLAGS_TO_PASS)  install)
++
++@endif libgnatprj
++
++.PHONY: install-strip-libgnatprj maybe-install-strip-libgnatprj
++maybe-install-strip-libgnatprj:
++@if libgnatprj
++maybe-install-strip-libgnatprj: install-strip-libgnatprj
++
++install-strip-libgnatprj: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(FLAGS_TO_PASS)  install-strip)
++
++@endif libgnatprj
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-libgnatprj info-libgnatprj
++maybe-info-libgnatprj:
++@if libgnatprj
++maybe-info-libgnatprj: info-libgnatprj
++
++# libgnatprj doesn't support info.
++info-libgnatprj:
++
++@endif libgnatprj
++
++.PHONY: maybe-dvi-libgnatprj dvi-libgnatprj
++maybe-dvi-libgnatprj:
++@if libgnatprj
++maybe-dvi-libgnatprj: dvi-libgnatprj
++
++# libgnatprj doesn't support dvi.
++dvi-libgnatprj:
++
++@endif libgnatprj
++
++.PHONY: maybe-pdf-libgnatprj pdf-libgnatprj
++maybe-pdf-libgnatprj:
++@if libgnatprj
++maybe-pdf-libgnatprj: pdf-libgnatprj
++
++pdf-libgnatprj: \
++    configure-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatprj/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing pdf in libgnatprj" ; \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          pdf) \
++	  || exit 1
++
++@endif libgnatprj
++
++.PHONY: maybe-html-libgnatprj html-libgnatprj
++maybe-html-libgnatprj:
++@if libgnatprj
++maybe-html-libgnatprj: html-libgnatprj
++
++# libgnatprj doesn't support html.
++html-libgnatprj:
++
++@endif libgnatprj
++
++.PHONY: maybe-TAGS-libgnatprj TAGS-libgnatprj
++maybe-TAGS-libgnatprj:
++@if libgnatprj
++maybe-TAGS-libgnatprj: TAGS-libgnatprj
++
++# libgnatprj doesn't support TAGS.
++TAGS-libgnatprj:
++
++@endif libgnatprj
++
++.PHONY: maybe-install-info-libgnatprj install-info-libgnatprj
++maybe-install-info-libgnatprj:
++@if libgnatprj
++maybe-install-info-libgnatprj: install-info-libgnatprj
++
++# libgnatprj doesn't support install-info.
++install-info-libgnatprj:
++
++@endif libgnatprj
++
++.PHONY: maybe-install-pdf-libgnatprj install-pdf-libgnatprj
++maybe-install-pdf-libgnatprj:
++@if libgnatprj
++maybe-install-pdf-libgnatprj: install-pdf-libgnatprj
++
++install-pdf-libgnatprj: \
++    configure-libgnatprj \
++    pdf-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatprj/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing install-pdf in libgnatprj" ; \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          install-pdf) \
++	  || exit 1
++
++@endif libgnatprj
++
++.PHONY: maybe-install-html-libgnatprj install-html-libgnatprj
++maybe-install-html-libgnatprj:
++@if libgnatprj
++maybe-install-html-libgnatprj: install-html-libgnatprj
++
++install-html-libgnatprj: \
++    configure-libgnatprj \
++    html-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatprj/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing install-html in libgnatprj" ; \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          install-html) \
++	  || exit 1
++
++@endif libgnatprj
++
++.PHONY: maybe-installcheck-libgnatprj installcheck-libgnatprj
++maybe-installcheck-libgnatprj:
++@if libgnatprj
++maybe-installcheck-libgnatprj: installcheck-libgnatprj
++
++# libgnatprj doesn't support installcheck.
++installcheck-libgnatprj:
++
++@endif libgnatprj
++
++.PHONY: maybe-mostlyclean-libgnatprj mostlyclean-libgnatprj
++maybe-mostlyclean-libgnatprj:
++@if libgnatprj
++maybe-mostlyclean-libgnatprj: mostlyclean-libgnatprj
++
++mostlyclean-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatprj/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing mostlyclean in libgnatprj" ; \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          mostlyclean) \
++	  || exit 1
++
++@endif libgnatprj
++
++.PHONY: maybe-clean-libgnatprj clean-libgnatprj
++maybe-clean-libgnatprj:
++@if libgnatprj
++maybe-clean-libgnatprj: clean-libgnatprj
++
++clean-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatprj/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing clean in libgnatprj" ; \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          clean) \
++	  || exit 1
++
++@endif libgnatprj
++
++.PHONY: maybe-distclean-libgnatprj distclean-libgnatprj
++maybe-distclean-libgnatprj:
++@if libgnatprj
++maybe-distclean-libgnatprj: distclean-libgnatprj
++
++distclean-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatprj/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing distclean in libgnatprj" ; \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          distclean) \
++	  || exit 1
++
++@endif libgnatprj
++
++.PHONY: maybe-maintainer-clean-libgnatprj maintainer-clean-libgnatprj
++maybe-maintainer-clean-libgnatprj:
++@if libgnatprj
++maybe-maintainer-clean-libgnatprj: maintainer-clean-libgnatprj
++
++maintainer-clean-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatprj/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing maintainer-clean in libgnatprj" ; \
++	(cd $(HOST_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          maintainer-clean) \
++	  || exit 1
++
++@endif libgnatprj
++
++
++
+ .PHONY: configure-gnattools maybe-configure-gnattools
+ maybe-configure-gnattools:
+ @if gcc-bootstrap
+@@ -57992,6 +58366,361 @@
+ 
+ 
+ 
++.PHONY: configure-target-libgnatprj maybe-configure-target-libgnatprj
++maybe-configure-target-libgnatprj:
++@if gcc-bootstrap
++configure-target-libgnatprj: stage_current
++@endif gcc-bootstrap
++@if target-libgnatprj
++maybe-configure-target-libgnatprj: configure-target-libgnatprj
++configure-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	echo "Checking multilib configuration for libgnatprj..."; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatprj/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libgnatprj/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libgnatprj/Makefile; \
++	    mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libgnatprj/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	echo Configuring in $(TARGET_SUBDIR)/libgnatprj; \
++	cd "$(TARGET_SUBDIR)/libgnatprj" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libgnatprj/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	srcdiroption="--srcdir=$${topdir}/libgnatprj"; \
++	libsrcdir="$$s/libgnatprj"; \
++	rm -f no-such-file || : ; \
++	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} $${srcdiroption}  \
++	  || exit 1
++@endif target-libgnatprj
++
++
++
++
++
++.PHONY: all-target-libgnatprj maybe-all-target-libgnatprj
++maybe-all-target-libgnatprj:
++@if gcc-bootstrap
++all-target-libgnatprj: stage_current
++@endif gcc-bootstrap
++@if target-libgnatprj
++TARGET-target-libgnatprj=all
++maybe-all-target-libgnatprj: all-target-libgnatprj
++all-target-libgnatprj: configure-target-libgnatprj
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)  \
++		$(TARGET-target-libgnatprj))
++@endif target-libgnatprj
++
++
++
++
++
++.PHONY: check-target-libgnatprj maybe-check-target-libgnatprj
++maybe-check-target-libgnatprj:
++@if target-libgnatprj
++maybe-check-target-libgnatprj: check-target-libgnatprj
++
++# Dummy target for uncheckable module.
++check-target-libgnatprj:
++
++@endif target-libgnatprj
++
++.PHONY: install-target-libgnatprj maybe-install-target-libgnatprj
++maybe-install-target-libgnatprj:
++@if target-libgnatprj
++maybe-install-target-libgnatprj: install-target-libgnatprj
++
++install-target-libgnatprj: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
++
++@endif target-libgnatprj
++
++.PHONY: install-strip-target-libgnatprj maybe-install-strip-target-libgnatprj
++maybe-install-strip-target-libgnatprj:
++@if target-libgnatprj
++maybe-install-strip-target-libgnatprj: install-strip-target-libgnatprj
++
++install-strip-target-libgnatprj: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
++
++@endif target-libgnatprj
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-target-libgnatprj info-target-libgnatprj
++maybe-info-target-libgnatprj:
++@if target-libgnatprj
++maybe-info-target-libgnatprj: info-target-libgnatprj
++
++# libgnatprj doesn't support info.
++info-target-libgnatprj:
++
++@endif target-libgnatprj
++
++.PHONY: maybe-dvi-target-libgnatprj dvi-target-libgnatprj
++maybe-dvi-target-libgnatprj:
++@if target-libgnatprj
++maybe-dvi-target-libgnatprj: dvi-target-libgnatprj
++
++# libgnatprj doesn't support dvi.
++dvi-target-libgnatprj:
++
++@endif target-libgnatprj
++
++.PHONY: maybe-pdf-target-libgnatprj pdf-target-libgnatprj
++maybe-pdf-target-libgnatprj:
++@if target-libgnatprj
++maybe-pdf-target-libgnatprj: pdf-target-libgnatprj
++
++pdf-target-libgnatprj: \
++    configure-target-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing pdf in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           pdf) \
++	  || exit 1
++
++@endif target-libgnatprj
++
++.PHONY: maybe-html-target-libgnatprj html-target-libgnatprj
++maybe-html-target-libgnatprj:
++@if target-libgnatprj
++maybe-html-target-libgnatprj: html-target-libgnatprj
++
++# libgnatprj doesn't support html.
++html-target-libgnatprj:
++
++@endif target-libgnatprj
++
++.PHONY: maybe-TAGS-target-libgnatprj TAGS-target-libgnatprj
++maybe-TAGS-target-libgnatprj:
++@if target-libgnatprj
++maybe-TAGS-target-libgnatprj: TAGS-target-libgnatprj
++
++# libgnatprj doesn't support TAGS.
++TAGS-target-libgnatprj:
++
++@endif target-libgnatprj
++
++.PHONY: maybe-install-info-target-libgnatprj install-info-target-libgnatprj
++maybe-install-info-target-libgnatprj:
++@if target-libgnatprj
++maybe-install-info-target-libgnatprj: install-info-target-libgnatprj
++
++# libgnatprj doesn't support install-info.
++install-info-target-libgnatprj:
++
++@endif target-libgnatprj
++
++.PHONY: maybe-install-pdf-target-libgnatprj install-pdf-target-libgnatprj
++maybe-install-pdf-target-libgnatprj:
++@if target-libgnatprj
++maybe-install-pdf-target-libgnatprj: install-pdf-target-libgnatprj
++
++install-pdf-target-libgnatprj: \
++    configure-target-libgnatprj \
++    pdf-target-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-pdf in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-pdf) \
++	  || exit 1
++
++@endif target-libgnatprj
++
++.PHONY: maybe-install-html-target-libgnatprj install-html-target-libgnatprj
++maybe-install-html-target-libgnatprj:
++@if target-libgnatprj
++maybe-install-html-target-libgnatprj: install-html-target-libgnatprj
++
++install-html-target-libgnatprj: \
++    configure-target-libgnatprj \
++    html-target-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-html in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-html) \
++	  || exit 1
++
++@endif target-libgnatprj
++
++.PHONY: maybe-installcheck-target-libgnatprj installcheck-target-libgnatprj
++maybe-installcheck-target-libgnatprj:
++@if target-libgnatprj
++maybe-installcheck-target-libgnatprj: installcheck-target-libgnatprj
++
++# libgnatprj doesn't support installcheck.
++installcheck-target-libgnatprj:
++
++@endif target-libgnatprj
++
++.PHONY: maybe-mostlyclean-target-libgnatprj mostlyclean-target-libgnatprj
++maybe-mostlyclean-target-libgnatprj:
++@if target-libgnatprj
++maybe-mostlyclean-target-libgnatprj: mostlyclean-target-libgnatprj
++
++mostlyclean-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           mostlyclean) \
++	  || exit 1
++
++@endif target-libgnatprj
++
++.PHONY: maybe-clean-target-libgnatprj clean-target-libgnatprj
++maybe-clean-target-libgnatprj:
++@if target-libgnatprj
++maybe-clean-target-libgnatprj: clean-target-libgnatprj
++
++clean-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing clean in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           clean) \
++	  || exit 1
++
++@endif target-libgnatprj
++
++.PHONY: maybe-distclean-target-libgnatprj distclean-target-libgnatprj
++maybe-distclean-target-libgnatprj:
++@if target-libgnatprj
++maybe-distclean-target-libgnatprj: distclean-target-libgnatprj
++
++distclean-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing distclean in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           distclean) \
++	  || exit 1
++
++@endif target-libgnatprj
++
++.PHONY: maybe-maintainer-clean-target-libgnatprj maintainer-clean-target-libgnatprj
++maybe-maintainer-clean-target-libgnatprj:
++@if target-libgnatprj
++maybe-maintainer-clean-target-libgnatprj: maintainer-clean-target-libgnatprj
++
++maintainer-clean-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           maintainer-clean) \
++	  || exit 1
++
++@endif target-libgnatprj
++
++
++
++
++
+ .PHONY: configure-target-libgomp maybe-configure-target-libgomp
+ maybe-configure-target-libgomp:
+ @if gcc-bootstrap
+@@ -61056,6 +61785,7 @@
+ configure-target-rda: stage_last
+ configure-target-libada: stage_last
+ configure-target-libgnatvsn: stage_last
++configure-target-libgnatprj: stage_last
+ configure-stage1-target-libgomp: maybe-all-stage1-gcc
+ configure-stage2-target-libgomp: maybe-all-stage2-gcc
+ configure-stage3-target-libgomp: maybe-all-stage3-gcc
+@@ -61088,6 +61818,7 @@
+ configure-target-rda: maybe-all-gcc
+ configure-target-libada: maybe-all-gcc
+ configure-target-libgnatvsn: maybe-all-gcc
++configure-target-libgnatprj: maybe-all-gcc
+ configure-target-libgomp: maybe-all-gcc
+ @endif gcc-no-bootstrap
+ 
+@@ -61389,7 +62120,10 @@
+ all-fixincludes: maybe-all-libiberty
+ all-gnattools: maybe-all-libada
+ all-gnattools: maybe-all-libgnatvsn
++all-gnattools: maybe-all-libgnatprj
+ all-libgnatvsn: maybe-all-libada
++all-libgnatprj: maybe-all-libada
++all-libgnatprj: maybe-all-libgnatvsn
+ all-lto-plugin: maybe-all-libiberty
+ 
+ all-stage1-lto-plugin: maybe-all-stage1-libiberty
+@@ -61935,6 +62669,7 @@
+ configure-target-rda: maybe-all-target-libgcc
+ configure-target-libada: maybe-all-target-libgcc
+ configure-target-libgnatvsn: maybe-all-target-libgcc
++configure-target-libgnatprj: maybe-all-target-libgcc
+ configure-target-libgomp: maybe-all-target-libgcc
+ @endif gcc-no-bootstrap
+ 
+@@ -61983,6 +62718,8 @@
+ 
+ configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss
+ 
++configure-target-libgnatprj: maybe-all-target-newlib maybe-all-target-libgloss
++
+ configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss
+ 
+ 
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -168,7 +168,7 @@
+ 
+ # these libraries are used by various programs built for the host environment
+ #
+-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv libada libgnatvsn"
++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv libada libgnatvsn libgnatprj"
+ 
+ # these tools are built for the host environment
+ # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
+@@ -202,6 +202,7 @@
+ 		target-libobjc \
+ 		target-libada \
+ 		target-libgnatvsn \
++		target-libgnatprj \
+ 		target-libgo"
+ 
+ # these tools are built using the target libraries, and are intended to
+@@ -303,7 +304,7 @@
+ 
+ # Similarly, some are only suitable for cross toolchains.
+ # Remove these if host=target.
+-cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn"
++cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn target-libgnatprj"
+ 
+ case $is_cross_compiler in
+   no) skipdirs="${skipdirs} ${cross_only}" ;;
+@@ -487,7 +488,7 @@
+ ENABLE_LIBADA=$enableval,
+ ENABLE_LIBADA=yes)
+ if test "${ENABLE_LIBADA}" != "yes" ; then
+-  noconfigdirs="$noconfigdirs libgnatvsn gnattools"
++  noconfigdirs="$noconfigdirs libgnatvsn libgnatprj gnattools"
+ fi
+ 
+ AC_ARG_ENABLE(libssp,
+Index: b/src/libgnatprj/configure.ac
+===================================================================
+--- /dev/null
++++ b/src/libgnatprj/configure.ac
+@@ -0,0 +1,149 @@
++# Configure script for libada.
++#   Copyright 2003, 2004 Free Software Foundation, Inc.
++#
++# This file 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 2 of the License, or
++# (at your option) any later version.
++#
++# This program 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 this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++AC_INIT
++AC_PREREQ([2.59])
++
++AC_CONFIG_SRCDIR([Makefile.in])
++
++# Start of actual configure tests
++
++AC_PROG_INSTALL
++
++AC_CANONICAL_BUILD
++AC_CANONICAL_HOST
++AC_CANONICAL_TARGET
++
++sinclude(../config/acx.m4)
++ACX_NONCANONICAL_TARGET
++
++# Need to pass this down for now :-P
++AC_PROG_LN_S
++
++# Determine x_ada_cflags
++case $host in
++  hppa*) x_ada_cflags=-mdisable-indexing ;;
++  *) x_ada_cflags= ;;
++esac
++AC_SUBST([x_ada_cflags])
++
++# Determine what to build for 'gnattools'
++if test $build = $target ; then
++  # Note that build=target is almost certainly the wrong test; FIXME
++  default_gnattools_target="gnattools-native"
++else
++  default_gnattools_target="gnattools-cross"
++fi
++AC_SUBST([default_gnattools_target])
++
++# Target-specific stuff (defaults)
++TOOLS_TARGET_PAIRS=
++AC_SUBST(TOOLS_TARGET_PAIRS)
++
++# Per-target case statement
++# ---/----------------------
++case "${target}" in
++  alpha*-dec-vx*) # Unlike all other Vxworks
++    ;;
++  m68k*-wrs-vx* \
++  | powerpc*-wrs-vxworks \
++  | sparc*-wrs-vx* \
++  | *86-wrs-vxworks \
++  | xscale*-wrs-vx* \
++  | xscale*-wrs-coff \
++  | mips*-wrs-vx*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb"
++    ;;
++  sparc-sun-solaris*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
++    ;;
++  *86-*-solaris2*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
++    ;;
++  *86-*-linux* \
++  | arm*-*-linux* \
++  | powerpc*-*-linux* \
++  | *ia64-*-linux* \
++  | alpha*-*-linux* \
++  | sparc*-*-linux* \
++  | hppa*-*-linux* \
++  | mips*-*-linux* \
++  | *x86_64-*-linux* \
++  | *86-*-kfreebsd*-gnu \
++  | *86-*-gnu \
++  | *x86_64-*-kfreebsd*-gnu )
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
++    indepsw.adb<indepsw-gnu.adb"
++    ;;
++  s390*-*-linux*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb"
++    ;;
++  *86-*-freebsd*)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
++    indepsw.adb<indepsw-gnu.adb"
++    ;;
++  mips-sgi-irix*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-irix.adb"
++    ;;
++  hppa*-hp-hpux10*) # Unlike hpux11
++    ;;
++  hppa*-hp-hpux11*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb"
++    ;;
++  *-ibm-aix*)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
++    indepsw.adb<indepsw-aix.adb"
++    ;;
++  alpha*-dec-osf*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-tru64.adb"
++    ;;
++  alpha*-dec-vms* | alpha*-dec-openvms* | alpha*-dec-vms* \
++  | alpha*-hp-vms* | alpha*-hp-openvms* | alpha*-hp-vms*)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-vms-alpha.adb \
++    symbols.adb<symbols-vms.adb \
++    symbols-processing.adb<symbols-processing-vms-alpha.adb"
++    ;;
++  ia64*-dec-vms* | ia64*-dec-openvms* | ia64*-dec-vms* \
++  | ia64*-hp-vms* | ia64*-hp-openvms* | ia64*-hp-vms*)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-vms-ia64.adb \
++    symbols.adb<symbols-vms.adb \
++    symbols-processing.adb<symbols-processing-vms-ia64.adb"
++    ;;
++  *-*-cygwin32* | *-*-mingw32* | *-*-pe)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-mingw.adb \
++    indepsw.adb<indepsw-mingw.adb"
++    ;;
++  powerpc-*-darwin*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb"
++    ;;
++  *-*-lynxos)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
++    indepsw.adb<indepsw-gnu.adb"
++    ;;
++esac
++
++# Output: create a Makefile.
++AC_CONFIG_FILES([Makefile])
++
++AC_OUTPUT
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-sjlj.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-sjlj.diff
@@ -0,0 +1,38 @@
+# DP: Don't try to use _Unwind_Backtrace on SJLJ targets.
+# DP: See bug #387875, #388505, GCC PR 29206.
+
+---
+ libjava/sysdep/generic/backtrace.h |   17 +++++++++++++++++
+ 1 files changed, 17 insertions(+), 0 deletions(-)
+
+--- a/src/libjava/sysdep/generic/backtrace.h
++++ b/src/libjava/sysdep/generic/backtrace.h
+@@ -13,6 +13,20 @@
+ 
+ #include <java-stack.h>
+ 
++#ifdef SJLJ_EXCEPTIONS
++
++#undef _Unwind_GetIPInfo
++#define _Unwind_GetIPInfo(ctx,ip_before_insn) \
++  (abort (), (void) (ctx), *ip_before_insn = 1, 0)
++
++#undef _Unwind_GetRegionStart
++#define _Unwind_GetRegionStart(ctx) \
++  (abort (), (void) (ctx), 0)
++
++#undef _Unwind_Backtrace
++#define _Unwind_Backtrace(trace_fn,state_ptr) \
++  (fallback_backtrace (trace_fn, state_ptr))
++
+ /* Unwind through the call stack calling TRACE_FN with STATE for every stack
+    frame.  Returns the reason why the unwinding was stopped.  */
+ _Unwind_Reason_Code
+@@ -20,4 +34,7 @@
+ {
+   return _URC_NO_REASON;
+ }
++
++#endif /* SJLJ_EXCEPTIONS */
++
+ #endif
--- gcc-4.6-4.6.3.orig/debian/patches/hurd-changes.diff
+++ gcc-4.6-4.6.3/debian/patches/hurd-changes.diff
@@ -0,0 +1,28 @@
+# DP: Traditional GNU systems don't have a /usr directory.  However, Debian
+# DP: systems do, and we support both having a /usr -> . symlink, and having a
+# DP: /usr directory like the other ports.  So this patch should NOT go
+# DP: upstream.
+
+---
+ gcc/config/gnu.h |    3 ++-
+ gcc/config/t-gnu |    2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+--- a/src/gcc/config/gnu.h
++++ b/src/gcc/config/gnu.h
+@@ -30,7 +30,8 @@ along with GCC.  If not, see <http://www.gnu.org/licenses/>.
+ 
+ /* Standard include directory.  In GNU, "/usr" is a four-letter word.  */
+ #undef STANDARD_INCLUDE_DIR
+-#define STANDARD_INCLUDE_DIR "/include"
++/* Overriden for Debian GNU/Hurd.  */
++#define STANDARD_INCLUDE_DIR "/usr/include"
+ 
+ #undef LINUX_TARGET_OS_CPP_BUILTINS
+ #define LINUX_TARGET_OS_CPP_BUILTINS()		\
+--- a/src/gcc/config/t-gnu
++++ b/src/gcc/config/t-gnu
+@@ -1,2 +1,2 @@
+ # In GNU, "/usr" is a four-letter word.
+-NATIVE_SYSTEM_HEADER_DIR = /include
++NATIVE_SYSTEM_HEADER_DIR = /usr/include
--- gcc-4.6-4.6.3.orig/debian/patches/libstdc++-doclink.diff
+++ gcc-4.6-4.6.3/debian/patches/libstdc++-doclink.diff
@@ -0,0 +1,57 @@
+# DP: adjust hrefs to point to the local documentation
+
+---
+ libstdc++-v3/doc/doxygen/mainpage.html |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+--- a/src/libstdc++-v3/doc/doxygen/mainpage.html
++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html
+@@ -29,8 +29,8 @@
+ <p>There are two types of documentation for libstdc++.  One is the
+    distribution documentation, which can be read online
+    <a href="http://gcc.gnu.org/onlinedocs/libstdc++/index.html">here</a>
+-   or offline from the file doc/html/index.html in the library source
+-   directory.
++   or offline in the documentation directory
++   <a href="manual/spine.html">here</a>.
+ </p>
+ 
+ <p>The other type is the source documentation, of which this is the first page.
+@@ -81,9 +81,9 @@
+   This style guide can also be viewed on the <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01apas04.html">web</a>.
+ 
+ <h2>License, Copyright, and Other Lawyerly Verbosity</h2>
+-<p>The libstdc++ documentation is released under
+-   <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01s02.html">
+-   these terms</a>.
++<p>The libstdc++ documentation is released under these terms
++   (<a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html">read online</a>, or
++   <a href="manual/license.html">read offline</a>).
+ </p>
+ <p>Part of the generated documentation involved comments and notes from
+    SGI, who says we gotta say this:
+--- a/src/libstdc++-v3/doc/html/api.html
++++ b/src/libstdc++-v3/doc/html/api.html
+@@ -19,6 +19,8 @@
+   member functions for the library classes, finding out what is in a
+   particular include file, looking at inheritance diagrams, etc.
+ </p><p>
++<a class="ulink" href="index.html"The API documentation, rendered into HTML, can be viewed offline.</a>
++</p><p>
+   The API documentation, rendered into HTML, can be viewed online:
+ </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>
+       <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release
+--- a/src/libstdc++-v3/doc/xml/api.xml
++++ b/src/libstdc++-v3/doc/xml/api.xml
+@@ -36,6 +36,11 @@
+   particular include file, looking at inheritance diagrams, etc.
+ </para>
+ 
++ <para>
++  <ulink url="index.html">The source-level documentation for this release can be viewed offline.
++  </ulink>
++</para>
++
+ <para>
+   The API documentation, rendered into HTML, can be viewed online:
+ </para>
--- gcc-4.6-4.6.3.orig/debian/patches/testsuite-hardening-format.diff
+++ gcc-4.6-4.6.3/debian/patches/testsuite-hardening-format.diff
@@ -0,0 +1,89 @@
+#! /bin/sh -e
+
+# All lines beginning with `# DPATCH:' are a description of the patch.
+# DP: Description: use -Wno-format on tests that cannot be adjusted other ways.
+# DP: Author: Kees Cook <kees@ubuntu.com>
+# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+    dir="$3/"
+elif [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch)
+        patch $pdir -f --no-backup-if-mismatch -p1 < $0
+        #cd ${dir}gcc && autoconf
+        ;;
+    -unpatch)
+        patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
+        #rm ${dir}gcc/configure
+        ;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x
+@@ -0,0 +1,5 @@
++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to
++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567
++
++set additional_flags "-U_FORTIFY_SOURCE"
++return 0
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x
+@@ -0,0 +1,5 @@
++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to
++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567
++
++set additional_flags "-U_FORTIFY_SOURCE"
++return 0
+--- a/src/gcc/testsuite/gcc.dg/charset/builtin2.c
++++ b/src/gcc/testsuite/gcc.dg/charset/builtin2.c
+@@ -3,7 +3,7 @@
+ 
+ /* { dg-do compile } */
+ /* { dg-require-iconv "IBM1047" } */
+-/* { dg-options "-O2 -fexec-charset=IBM1047" } */
++/* { dg-options "-O2 -fexec-charset=IBM1047 -Wno-format" } */
+ /* { dg-final { scan-assembler-not "printf" } } */
+ /* { dg-final { scan-assembler-not "fprintf" } } */
+ /* { dg-final { scan-assembler-not "sprintf" } } */
+--- a/src/gcc/testsuite/gcc.dg/format/format.exp
++++ b/src/gcc/testsuite/gcc.dg/format/format.exp
+@@ -26,7 +26,7 @@
+ load_lib torture-options.exp
+ 
+ torture-init
+-set-torture-options [list { } { -DWIDE } ]
++set-torture-options [list { -Wformat=0 } { -DWIDE -Wformat=0 } ]
+ 
+ dg-init
+ gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] ""
+--- a/src/gcc/testsuite/gcc.dg/pr30473.c
++++ b/src/gcc/testsuite/gcc.dg/pr30473.c
+@@ -1,7 +1,7 @@
+ /* PR middle-end/30473 */
+ /* Make sure this doesn't ICE.  */
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-O2 -Wno-format" } */
+ 
+ extern int sprintf (char *, const char *, ...);
+ 
+--- a/src/gcc/testsuite/gcc.dg/pr38902.c
++++ b/src/gcc/testsuite/gcc.dg/pr38902.c
+@@ -1,6 +1,6 @@
+ /* PR target/38902 */
+ /* { dg-do run } */
+-/* { dg-options "-O2 -fstack-protector" } */
++/* { dg-options "-O2 -fstack-protector -Wno-format" } */
+ /* { dg-require-effective-target fstack_protector } */
+ 
+ #ifdef DEBUG
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-jnipath.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-jnipath.diff
@@ -0,0 +1,121 @@
+# DP: - Add /usr/lib/jni and /usr/lib/<multiarch>/jni to java.library.path.
+# DP: - When running the i386 binaries on amd64, look in
+# DP: - /usr/lib32/gcj-x.y and /usr/lib32/jni instead.
+
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -1533,6 +1533,9 @@
+ 
+ AC_C_BIGENDIAN
+ 
++MULTIARCH_DIR=$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
++AC_SUBST(MULTIARCH_DIR)
++
+ ZLIBS=
+ SYS_ZLIBS=
+ ZINCS=
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -362,6 +362,7 @@
+ 	$(WARNINGS) \
+ 	-D_GNU_SOURCE \
+ 	-DPREFIX="\"$(prefix)\"" \
++	-DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \
+ 	-DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \
+         -DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \
+         -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -626,6 +626,7 @@
+ MAKE = @MAKE@
+ MAKEINFO = @MAKEINFO@
+ MKDIR_P = @MKDIR_P@
++MULTIARCH_DIR = @MULTIARCH_DIR@
+ NM = nm
+ NMEDIT = @NMEDIT@
+ OBJDUMP = @OBJDUMP@
+@@ -1008,6 +1009,7 @@
+ 	$(WARNINGS) \
+ 	-D_GNU_SOURCE \
+ 	-DPREFIX="\"$(prefix)\"" \
++	-DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \
+ 	-DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \
+         -DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \
+         -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \
+--- a/src/libjava/gnu/classpath/natSystemProperties.cc
++++ b/src/libjava/gnu/classpath/natSystemProperties.cc
+@@ -141,6 +141,44 @@
+   return retval;
+ }
+ 
++static char*
++AppendJniLibdir (char *path, struct utsname *u)
++{
++  char* retval;
++  const char* jnilibdir = "/usr/lib/jni";
++#ifdef MULTIARCH_DIR
++  const char* jnilibdir2 = "/usr/lib/" MULTIARCH_DIR "/jni";
++  jsize len2 = strlen (jnilibdir2) + 2;
++#else
++  jsize len2 = 0;
++#endif
++
++#if defined(__linux__) && defined (__i386__)
++  if (! strcmp ("x86_64", u->machine))
++    jnilibdir = "/usr/lib32/jni";
++#endif
++
++  if (path)
++    {
++      jsize total = strlen (path)
++	+ (sizeof (PATH_SEPARATOR) - 1) + strlen (jnilibdir) +len2 + 1;
++      retval = (char*) _Jv_Malloc (total);
++      strcpy (retval, path);
++      strcat (retval, PATH_SEPARATOR);
++      strcat (retval, jnilibdir);
++    }
++  else
++    {
++      retval = (char*) _Jv_Malloc (strlen (jnilibdir) + len2 + 1);
++      strcpy (retval, jnilibdir);
++    }
++#ifdef MULTIARCH_DIR
++  strcat (retval, PATH_SEPARATOR);
++  strcat (retval, jnilibdir2);
++#endif
++  return retval;
++}
++
+ void
+ gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properties *newprops)
+ {
+@@ -373,8 +411,13 @@
+       // Prepend GCJ_VERSIONED_LIBDIR to the module load path so that
+       // libgcj will find its own JNI libraries, like libgtkpeer.so.
+       char* val = PrependVersionedLibdir (path);
+-      _Jv_SetDLLSearchPath (val);
++
++      // Append jnilibdir
++      char* val2 = AppendJniLibdir (val, &u);
++
++      _Jv_SetDLLSearchPath (val2);
+       _Jv_Free (val);
++      _Jv_Free (val2);
+     }
+   else
+     {
+@@ -382,9 +425,12 @@
+ #ifdef USE_LTDL
+       char *libpath = getenv (LTDL_SHLIBPATH_VAR);
+       char* val = _Jv_PrependVersionedLibdir (libpath);
+-      SET ("java.library.path", val);
+-      _Jv_SetDLLSearchPath (val);
++      // Append jnilibdir
++      char* val2 = AppendJniLibdir (val, &u);
++      SET ("java.library.path", val2);
++      _Jv_SetDLLSearchPath (val2);
+       _Jv_Free (val);
++      _Jv_Free (val2);
+ #else
+       SET ("java.library.path", "");
+ #endif
--- gcc-4.6-4.6.3.orig/debian/patches/arm-multilib.diff
+++ gcc-4.6-4.6.3/debian/patches/arm-multilib.diff
@@ -0,0 +1,25 @@
+# DP: ARM hard/soft float multilib
+
+--- a/src/gcc/config/arm/t-linux-eabi
++++ b/src/gcc/config/arm/t-linux-eabi
+@@ -24,6 +24,20 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifeq ($(with_float),hard)
++MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf .
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
++MULTILIB_OSDIRNAMES	= arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++else
++MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES	= . hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
++MULTILIB_OSDIRNAMES	= ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
--- gcc-4.6-4.6.3.orig/debian/patches/address-clauses-timed-entry-calls.diff
+++ gcc-4.6-4.6.3/debian/patches/address-clauses-timed-entry-calls.diff
@@ -0,0 +1,104 @@
+# backport bug fixes about address clauses and timed entry calls
+# taken from gcc-4.7
+#
+# http://gcc.gnu.org/ml/gcc-patches/2011-08/msg02277.html
+# Thanks to Arnaud Charlet
+
+--- a/src/gcc/ada/exp_ch9.adb
++++ b/src/gcc/ada/exp_ch9.adb
+@@ -24,6 +24,7 @@
+ ------------------------------------------------------------------------------
+ 
+ with Atree;    use Atree;
++with Atree.Copy_Separate_List;
+ with Checks;   use Checks;
+ with Einfo;    use Einfo;
+ with Elists;   use Elists;
+@@ -10908,6 +10909,11 @@
+    --          end if;
+    --       end if;
+    --    end;
++   --
++   --  The triggering statement and the timed statements have not been
++   --  analyzed yet (see Analyzed_Timed_Entry_Call).  They may contain local
++   --  declarations, and therefore the copies that are made during expansion
++   --  must be disjoint, as for any other inlining.
+ 
+    procedure Expand_N_Timed_Entry_Call (N : Node_Id) is
+       Loc : constant Source_Ptr := Sloc (N);
+@@ -11199,7 +11205,7 @@
+          --       <timed-statements>
+          --    end if;
+ 
+-         N_Stats := New_Copy_List_Tree (E_Stats);
++         N_Stats := Copy_Separate_List (E_Stats);
+ 
+          Prepend_To (N_Stats,
+            Make_If_Statement (Loc,
+@@ -11242,7 +11248,7 @@
+          --    <dispatching-call>;
+          --    <triggering-statements>
+ 
+-         Lim_Typ_Stmts := New_Copy_List_Tree (E_Stats);
++         Lim_Typ_Stmts := Copy_Separate_List (E_Stats);
+          Prepend_To (Lim_Typ_Stmts, New_Copy_Tree (E_Call));
+ 
+          --  Generate:
+--- /dev/null
++++ b/src/gcc/ada/atree-copy_separate_list.adb
+@@ -0,0 +1,15 @@
++with Nlists;
++
++function Atree.Copy_Separate_List (Source : List_Id) return List_Id is
++   use Atree.Atree_Private_Part.Nodes;
++   use Nlists;
++   Result : constant List_Id := New_List;
++   Nod    : Node_Id;
++begin
++   Nod := Nlists.First (Source);
++   while Present (Nod) loop
++      Append (Copy_Separate_Tree (Nod), Result);
++      Next (Nod);
++   end loop;
++   return Result;
++end Atree.Copy_Separate_List;
+--- /dev/null
++++ b/src/gcc/ada/atree-copy_separate_list.ads
+@@ -0,0 +1 @@
++function Atree.Copy_Separate_List (Source : List_Id) return List_Id;
+--- a/src/gcc/ada/gcc-interface/Make-lang.in
++++ b/src/gcc/ada/gcc-interface/Make-lang.in
+@@ -158,6 +158,7 @@
+  ada/exp_ch7.o	\
+  ada/exp_ch8.o	\
+  ada/exp_ch9.o	\
++ ada/atree-copy_separate_list.o \
+  ada/exp_code.o	\
+  ada/exp_dbug.o	\
+  ada/exp_disp.o	\
+@@ -1371,6 +1372,17 @@
+    ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+ 
++ada/atree-copy_separate_list.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
++   ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
++   ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
++   ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
++   ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
++   ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
++   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
++   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
++   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
++   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
++
+ ada/back_end.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
+    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
+    ada/atree.adb ada/back_end.ads ada/back_end.adb ada/casing.ads \
+@@ -2006,6 +2018,7 @@
+ ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
+    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
+    ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
++   ada/atree-copy_separate_list.ads ada/atree-copy_separate_list.adb \
+    ada/einfo.ads ada/einfo.adb ada/elists.ads ada/elists.adb \
+    ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_aggr.ads \
+    ada/exp_ch11.ads ada/exp_ch3.ads ada/exp_ch6.ads ada/exp_ch7.ads \
--- gcc-4.6-4.6.3.orig/debian/patches/m68k-revert-pr45144.diff
+++ gcc-4.6-4.6.3/debian/patches/m68k-revert-pr45144.diff
@@ -0,0 +1,20 @@
+[revert the minor PR45144 missed-optimization fix because it
+ results in miscompilation of gnat on m68k with gcc-4.6 and 4.5;
+ with gcc-4.7 other changes mask the issue <mikpe@it.uu.se>]
+
+	PR ada/48835
+
+Index: gcc-4.6-4.6.3/src/gcc/tree-sra.c
+===================================================================
+--- gcc-4.6-4.6.3.orig/src/gcc/tree-sra.c	2012-01-05 22:24:45.000000000 +0000
++++ gcc-4.6-4.6.3/src/gcc/tree-sra.c	2012-03-04 16:01:53.000000000 +0000
+@@ -854,9 +854,6 @@
+       {
+ 	tree ft = TREE_TYPE (fld);
+ 
+-	if (DECL_BIT_FIELD (fld))
+-	  return false;
+-
+ 	if (!is_gimple_reg_type (ft)
+ 	    && !type_consists_of_records_p (ft))
+ 	  return false;
--- gcc-4.6-4.6.3.orig/debian/patches/ada-nobiarch-check.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-nobiarch-check.diff
@@ -0,0 +1,20 @@
+# DP: For biarch builds, disable the gnat testsuite for the non-default
+# architecture (no biarch support in gnat yet).
+
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -4510,7 +4510,11 @@
+ 	if [ -f $${rootme}/../expect/expect ] ; then  \
+ 	   TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
+ 	    export TCL_LIBRARY ; fi ; \
+-	$(RUNTEST) --tool $* $(RUNTESTFLAGS))
++	if [ "$*" = gnat ]; then \
++	  runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-m[36][24]//;s/,-mabi=n32//'`"; \
++	  case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \
++	fi; \
++	$(RUNTEST) --tool $* $$runtestflags)
+ 
+ $(patsubst %,%-subtargets,$(filter-out $(lang_checks_parallelized),$(lang_checks))): check-%-subtargets:
+ 	@echo check-$*
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-linaro-revert-106905-doc.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-linaro-revert-106905-doc.diff
@@ -0,0 +1,28 @@
+--- a/src/gcc/doc/tm.texi	2012-08-07 18:13:10 +0000
++++ b/src/gcc/doc/tm.texi	2011-07-01 09:19:21 +0000
+@@ -1118,14 +1118,6 @@
+ If the value of this macro has a type, it should be an unsigned type.
+ @end defmac
+ 
+-@deftypefn {Target Hook} HOST_WIDE_INT TARGET_VECTOR_ALIGNMENT (const_tree @var{type})
+-This hook can be used to define the alignment for a vector of type
+-@var{type}, in order to comply with a platform ABI.  The default is to
+-require natural alignment for vector types.  The alignment returned by
+-this hook must be a power-of-two multiple of the default alignment of
+-the vector element type.
+-@end deftypefn
+-
+ @defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
+ If defined, a C expression to compute the alignment for stack slot.
+ @var{type} is the data type, @var{mode} is the widest mode available,
+--- a/src/gcc/doc/tm.texi.in	2012-08-07 18:13:10 +0000
++++ b/src/gcc/doc/tm.texi.in	2011-07-01 09:19:21 +0000
+@@ -1108,8 +1108,6 @@
+ If the value of this macro has a type, it should be an unsigned type.
+ @end defmac
+ 
+-@hook TARGET_VECTOR_ALIGNMENT
+-
+ @defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
+ If defined, a C expression to compute the alignment for stack slot.
+ @var{type} is the data type, @var{mode} is the widest mode available,
--- gcc-4.6-4.6.3.orig/debian/patches/ada-s-osinte-gnu.ads.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-s-osinte-gnu.ads.diff
@@ -0,0 +1,753 @@
+--- /dev/null	2012-01-30 20:41:15.189616186 +0100
++++ b/src/gcc/ada/s-osinte-gnu.ads	2012-04-11 19:34:45.000000000 +0200
+@@ -0,0 +1,750 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
++--                                                                          --
++--                   S Y S T E M . O S _ I N T E R F A C E                  --
++--                                                                          --
++--                                  S p e c                                 --
++--                                                                          --
++--             Copyright (C) 1991-1994, Florida State University            --
++--          Copyright (C) 1995-2011, Free Software Foundation, Inc.         --
++--                                                                          --
++-- GNARL is free software; you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
++-- sion. GNARL is distributed in the hope that it will be useful, but WITH- --
++-- OUT 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  distributed with GNARL; see file COPYING.  If not, write --
++-- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
++-- Boston, MA 02110-1301, USA.                                              --
++--                                                                          --
++-- As a special exception,  if other files  instantiate  generics from this --
++-- unit, or you link  this unit with other files  to produce an executable, --
++-- this  unit  does not  by itself cause  the resulting  executable  to  be --
++-- covered  by the  GNU  General  Public  License.  This exception does not --
++-- however invalidate  any other reasons why  the executable file  might be --
++-- covered by the  GNU Public License.                                      --
++--                                                                          --
++-- GNARL was developed by the GNARL team at Florida State University.       --
++-- Extensive contributions were provided by Ada Core Technologies, Inc.     --
++--                                                                          --
++------------------------------------------------------------------------------
++
++--  This is the GNU/Hurd version of this package
++
++--  This package encapsulates all direct interfaces to OS services
++--  that are needed by children of System.
++
++--  PLEASE DO NOT add any with-clauses to this package or remove the pragma
++--  Preelaborate. This package is designed to be a bottom-level (leaf) package
++
++with Interfaces.C;
++with Unchecked_Conversion;
++
++package System.OS_Interface is
++   pragma Preelaborate;
++
++   pragma Linker_Options ("-lpthread");
++   pragma Linker_Options ("-lrt");
++
++   subtype int            is Interfaces.C.int;
++   subtype char           is Interfaces.C.char;
++   subtype short          is Interfaces.C.short;
++   subtype long           is Interfaces.C.long;
++   subtype unsigned       is Interfaces.C.unsigned;
++   subtype unsigned_short is Interfaces.C.unsigned_short;
++   subtype unsigned_long  is Interfaces.C.unsigned_long;
++   subtype unsigned_char  is Interfaces.C.unsigned_char;
++   subtype plain_char     is Interfaces.C.plain_char;
++   subtype size_t         is Interfaces.C.size_t;
++
++   -----------
++   -- Errno --
++   -----------
++   --  From /usr/include/i386-gnu/bits/errno.h
++
++   function errno return int;
++   pragma Import (C, errno, "__get_errno");
++
++   EAGAIN   : constant := 1073741859;
++   EINTR    : constant := 1073741828;
++   EINVAL   : constant := 1073741846;
++   ENOMEM   : constant := 1073741836;
++   EPERM    : constant := 1073741825;
++   ETIMEDOUT    : constant := 1073741884;
++
++   -------------
++   -- Signals --
++   -------------
++   --  From /usr/include/i386-gnu/bits/signum.h
++
++   Max_Interrupt : constant := 32;
++   type Signal is new int range 0 .. Max_Interrupt;
++   for Signal'Size use int'Size;
++
++   SIGHUP     : constant := 1; --  hangup
++   SIGINT     : constant := 2; --  interrupt (rubout)
++   SIGQUIT    : constant := 3; --  quit (ASCD FS)
++   SIGILL     : constant := 4; --  illegal instruction (not reset)
++   SIGTRAP    : constant := 5; --  trace trap (not reset)
++   SIGIOT     : constant := 6; --  IOT instruction
++   SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
++   SIGEMT     : constant := 7; --  EMT instruction
++   SIGFPE     : constant := 8; --  floating point exception
++   SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
++   SIGBUS     : constant := 10; --  bus error
++   SIGSEGV    : constant := 11; --  segmentation violation
++   SIGSYS     : constant := 12; --  bad argument to system call
++   SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
++   SIGALRM    : constant := 14; --  alarm clock
++   SIGTERM    : constant := 15; --  software termination signal from kill
++   SIGURG     : constant := 16; --  urgent condition on IO channel
++   SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
++   SIGTSTP    : constant := 18; --  user stop requested from tty
++   SIGCONT    : constant := 19; --  stopped process has been continued
++   SIGCLD     : constant := 20; --  alias for SIGCHLD
++   SIGCHLD    : constant := 20; --  child status change
++   SIGTTIN    : constant := 21; --  background tty read attempted
++   SIGTTOU    : constant := 22; --  background tty write attempted
++   SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
++   SIGPOLL    : constant := 23; --  I/O possible (same as SIGIO?)
++   SIGXCPU    : constant := 24; --  CPU time limit exceeded
++   SIGXFSZ    : constant := 25; --  filesize limit exceeded
++   SIGVTALRM  : constant := 26; --  virtual timer expired
++   SIGPROF    : constant := 27; --  profiling timer expired
++   SIGWINCH   : constant := 28; --  window size change
++   SIGINFO    : constant := 29; --  information request (NetBSD/FreeBSD)
++   SIGUSR1    : constant := 30; --  user defined signal 1
++   SIGUSR2    : constant := 31; --  user defined signal 2
++   SIGLOST    : constant := 32; --  Resource lost (Sun); server died (GNU)
++--   SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
++--   SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
++--   SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
++
++   SIGADAABORT : constant := SIGABRT;
++   --  Change this if you want to use another signal for task abort.
++   --  SIGTERM might be a good one.
++
++   type Signal_Set is array (Natural range <>) of Signal;
++
++   Unmasked    : constant Signal_Set := (
++      SIGTRAP,
++      --  To enable debugging on multithreaded applications, mark SIGTRAP to
++      --  be kept unmasked.
++
++      SIGBUS,
++
++      SIGTTIN, SIGTTOU, SIGTSTP,
++      --  Keep these three signals unmasked so that background processes
++      --  and IO behaves as normal "C" applications
++
++      SIGPROF,
++      --  To avoid confusing the profiler
++
++      SIGKILL, SIGSTOP);
++      --  These two signals actually cannot be masked;
++      --  POSIX simply won't allow it.
++
++   Reserved    : constant Signal_Set :=
++   --  I am not sure why the following signal is reserved.
++   --  I guess they are not supported by this version of GNU/Hurd.
++     (0 .. 0 => SIGVTALRM);
++
++   type sigset_t is private;
++
++   --  From /usr/include/signal.h /usr/include/i386-gnu/bits/sigset.h
++   function sigaddset (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigaddset, "sigaddset");
++
++   function sigdelset (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigdelset, "sigdelset");
++
++   function sigfillset (set : access sigset_t) return int;
++   pragma Import (C, sigfillset, "sigfillset");
++
++   function sigismember (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigismember, "sigismember");
++
++   function sigemptyset (set : access sigset_t) return int;
++   pragma Import (C, sigemptyset, "sigemptyset");
++
++   --  sigcontext is architecture dependent, so define it private
++   type struct_sigcontext is private;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h: Note: arg. order differs
++   type struct_sigaction is record
++      sa_handler : System.Address;
++      sa_mask    : sigset_t;
++      sa_flags   : int;
++   end record;
++   pragma Convention (C, struct_sigaction);
++
++   type struct_sigaction_ptr is access all struct_sigaction;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h
++   SIG_BLOCK   : constant := 1;
++   SIG_UNBLOCK : constant := 2;
++   SIG_SETMASK : constant := 3;
++
++   --  From /usr/include/i386-gnu/bits/signum.h
++   SIG_ERR  : constant := 1;
++   SIG_DFL  : constant := 0;
++   SIG_IGN  : constant := 1;
++   SIG_HOLD : constant := 2;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h
++   SA_SIGINFO : constant := 16#0040#;
++   SA_ONSTACK : constant := 16#0001#;
++
++   function sigaction
++     (sig  : Signal;
++      act  : struct_sigaction_ptr;
++      oact : struct_sigaction_ptr) return int;
++   pragma Import (C, sigaction, "sigaction");
++
++   ----------
++   -- Time --
++   ----------
++
++   Time_Slice_Supported : constant Boolean := True;
++   --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
++
++   type timespec is private;
++
++   function nanosleep (rqtp, rmtp : access timespec) return int;
++   pragma Import (C, nanosleep, "nanosleep");
++
++   type clockid_t is private;
++
++   CLOCK_REALTIME : constant clockid_t;
++
++   --  From: /usr/include/time.h
++   function clock_gettime
++     (clock_id : clockid_t;
++      tp       : access timespec)
++      return int;
++   pragma Import (C, clock_gettime, "clock_gettime");
++
++   function To_Duration (TS : timespec) return Duration;
++   pragma Inline (To_Duration);
++
++   function To_Timespec (D : Duration) return timespec;
++   pragma Inline (To_Timespec);
++
++   --  From: /usr/include/unistd.h
++   function sysconf (name : int) return long;
++   pragma Import (C, sysconf);
++
++   --  From /usr/include/i386-gnu/bits/confname.h
++   SC_CLK_TCK          : constant := 2;
++   SC_NPROCESSORS_ONLN : constant := 84;
++
++   -------------------------
++   -- Priority Scheduling --
++   -------------------------
++   --  From /usr/include/i386-gnu/bits/sched.h
++
++   SCHED_OTHER : constant := 0;
++   SCHED_FIFO  : constant := 1;
++   SCHED_RR    : constant := 2;
++
++   function To_Target_Priority
++     (Prio : System.Any_Priority) return Interfaces.C.int;
++   --  Maps System.Any_Priority to a POSIX priority.
++
++   -------------
++   -- Process --
++   -------------
++
++   type pid_t is private;
++
++   --  From: /usr/include/signal.h
++   function kill (pid : pid_t; sig : Signal) return int;
++   pragma Import (C, kill, "kill");
++
++   --  From: /usr/include/unistd.h
++   function getpid return pid_t;
++   pragma Import (C, getpid, "getpid");
++
++   ---------
++   -- LWP --
++   ---------
++
++   --  From: /usr/include/pthread/pthread.h
++   function lwp_self return System.Address;
++   --  lwp_self does not exist on this thread library, revert to pthread_self
++   --  which is the closest approximation (with getpid). This function is
++   --  needed to share 7staprop.adb across POSIX-like targets.
++   pragma Import (C, lwp_self, "pthread_self");
++
++   -------------
++   -- Threads --
++   -------------
++
++   type Thread_Body is access
++     function (arg : System.Address) return System.Address;
++   pragma Convention (C, Thread_Body);
++
++   function Thread_Body_Access is new
++     Unchecked_Conversion (System.Address, Thread_Body);
++
++   --  From: /usr/include/bits/pthread.h:typedef int __pthread_t;
++   --  /usr/include/pthread/pthreadtypes.h:typedef __pthread_t pthread_t;
++   type pthread_t is new unsigned_long;
++   subtype Thread_Id        is pthread_t;
++
++   function To_pthread_t is new Unchecked_Conversion
++     (unsigned_long, pthread_t);
++
++   type pthread_mutex_t     is limited private;
++   type pthread_cond_t      is limited private;
++   type pthread_attr_t      is limited private;
++   type pthread_mutexattr_t is limited private;
++   type pthread_condattr_t  is limited private;
++   type pthread_key_t       is private;
++
++   --  From /usr/include/pthread/pthreadtypes.h
++   PTHREAD_CREATE_DETACHED : constant := 1;
++   PTHREAD_CREATE_JOINABLE : constant := 0;
++
++   PTHREAD_SCOPE_PROCESS : constant := 1;
++   PTHREAD_SCOPE_SYSTEM  : constant := 0;
++
++   -----------
++   -- Stack --
++   -----------
++
++   --  From: /usr/include/i386-gnu/bits/sigstack.h
++   type stack_t is record
++      ss_sp    : System.Address;
++      ss_size  : size_t;
++      ss_flags : int;
++   end record;
++   pragma Convention (C, stack_t);
++
++   function sigaltstack
++     (ss  : not null access stack_t;
++      oss : access stack_t) return int;
++   pragma Import (C, sigaltstack, "sigaltstack");
++
++   Alternate_Stack : aliased System.Address;
++   --  This is a dummy definition, never used (Alternate_Stack_Size is null)
++
++   Alternate_Stack_Size : constant := 0;
++   --  No alternate signal stack is used on this platform
++
++   Stack_Base_Available : constant Boolean := False;
++   --  Indicates whether the stack base is available on this target
++
++   function Get_Stack_Base (thread : pthread_t) return Address;
++   pragma Inline (Get_Stack_Base);
++   --  returns the stack base of the specified thread. Only call this function
++   --  when Stack_Base_Available is True.
++
++   --  From: /usr/include/i386-gnu/bits/shm.h __getpagesize or getpagesize??
++   function Get_Page_Size return size_t;
++   function Get_Page_Size return Address;
++   pragma Import (C, Get_Page_Size, "__getpagesize");
++   --  Returns the size of a page
++
++   --  From /usr/include/i386-gnu/bits/mman.h
++   PROT_NONE  : constant := 0;
++   PROT_READ  : constant := 4;
++   PROT_WRITE : constant := 2;
++   PROT_EXEC  : constant := 1;
++   PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
++   PROT_ON    : constant := PROT_NONE;
++   PROT_OFF   : constant := PROT_ALL;
++
++   --  From /usr/include/i386-gnu/bits/mman.h
++   function mprotect (addr : Address; len : size_t; prot : int) return int;
++   pragma Import (C, mprotect);
++
++   ---------------------------------------
++   -- Nonstandard Thread Initialization --
++   ---------------------------------------
++
++   procedure pthread_init;
++   pragma Inline (pthread_init);
++   --  This is a dummy procedure to share some GNULLI files
++
++   -------------------------
++   -- POSIX.1c  Section 3 --
++   -------------------------
++
++   --  From: /usr/include/signal.h:
++   --  sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
++   function sigwait (set : access sigset_t; sig : access Signal) return int;
++   pragma Import (C, sigwait, "sigwait");
++
++   --  From: /usr/include/pthread/pthread.h:
++   --  extern int pthread_kill (pthread_t thread, int signo);
++   function pthread_kill (thread : pthread_t; sig : Signal) return int;
++   pragma Import (C, pthread_kill, "pthread_kill");
++
++   --  From: /usr/include/i386-gnu/bits/sigthread.h
++   --  extern int pthread_sigmask (int __how, __const __sigset_t *__newmask,
++   --  __sigset_t *__oldmask) __THROW;
++   function pthread_sigmask
++     (how  : int;
++      set  : access sigset_t;
++      oset : access sigset_t) return int;
++   pragma Import (C, pthread_sigmask, "pthread_sigmask");
++
++   --------------------------
++   -- POSIX.1c  Section 11 --
++   --------------------------
++
++   --  From: /usr/include/pthread/pthread.h and
++   --  /usr/include/pthread/pthreadtypes.h
++   function pthread_mutexattr_init
++     (attr : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
++
++   function pthread_mutexattr_destroy
++     (attr : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
++
++   function pthread_mutex_init
++     (mutex : access pthread_mutex_t;
++      attr  : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
++
++   function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
++
++   function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
++
++   function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
++
++   function pthread_condattr_init
++     (attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
++
++   function pthread_condattr_destroy
++     (attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
++
++   function pthread_cond_init
++     (cond : access pthread_cond_t;
++      attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_cond_init, "pthread_cond_init");
++
++   function pthread_cond_destroy (cond : access pthread_cond_t) return int;
++   pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
++
++   function pthread_cond_signal (cond : access pthread_cond_t) return int;
++   pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
++
++   function pthread_cond_wait
++     (cond  : access pthread_cond_t;
++      mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
++
++   function pthread_cond_timedwait
++     (cond    : access pthread_cond_t;
++      mutex   : access pthread_mutex_t;
++      abstime : access timespec) return int;
++   pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
++
++   Relative_Timed_Wait : constant Boolean := False;
++   --  pthread_cond_timedwait requires an absolute delay time
++
++   --------------------------
++   -- POSIX.1c  Section 13 --
++   --------------------------
++   --  From /usr/include/pthread/pthreadtypes.h
++
++   PTHREAD_PRIO_NONE    : constant := 0;
++   PTHREAD_PRIO_PROTECT : constant := 2;
++   PTHREAD_PRIO_INHERIT : constant := 1;
++
++   --  From: /usr/include/pthread/pthread.h
++   function pthread_mutexattr_setprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : int) return int;
++   pragma Import (C, pthread_mutexattr_setprotocol,
++     "pthread_mutexattr_setprotocol");
++
++   function pthread_mutexattr_getprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : access int) return int;
++   pragma Import (C, pthread_mutexattr_getprotocol,
++     "pthread_mutexattr_getprotocol");
++
++   function pthread_mutexattr_setprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : int) return int;
++   pragma Import (C, pthread_mutexattr_setprioceiling,
++     "pthread_mutexattr_setprioceiling");
++
++   function pthread_mutexattr_getprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : access int) return int;
++   pragma Import (C, pthread_mutexattr_getprioceiling,
++     "pthread_mutexattr_getprioceiling");
++
++   type struct_sched_param is record
++      sched_priority : int;  --  scheduling priority
++   end record;
++   pragma Convention (C, struct_sched_param);
++
++   function pthread_setschedparam
++     (thread : pthread_t;
++      policy : int;
++      param  : access struct_sched_param) return int;
++   pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
++
++   function pthread_attr_setscope
++     (attr            : access pthread_attr_t;
++      contentionscope : int) return int;
++   pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
++
++   function pthread_attr_getscope
++     (attr            : access pthread_attr_t;
++      contentionscope : access int) return int;
++   pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
++
++   function pthread_attr_setinheritsched
++     (attr            : access pthread_attr_t;
++      inheritsched : int) return int;
++   pragma Import (C, pthread_attr_setinheritsched,
++     "pthread_attr_setinheritsched");
++
++   function pthread_attr_getinheritsched
++     (attr         : access pthread_attr_t;
++      inheritsched : access int) return int;
++   pragma Import (C, pthread_attr_getinheritsched,
++     "pthread_attr_getinheritsched");
++
++   function pthread_attr_setschedpolicy
++     (attr   : access pthread_attr_t;
++      policy : int) return int;
++   pragma Import (C, pthread_attr_setschedpolicy, "pthread_setschedpolicy");
++
++   function sched_yield return int;
++   pragma Import (C, sched_yield, "sched_yield");
++
++   ---------------------------
++   -- P1003.1c - Section 16 --
++   ---------------------------
++
++   function pthread_attr_init
++     (attributes : access pthread_attr_t) return int;
++   pragma Import (C, pthread_attr_init, "pthread_attr_init");
++
++   function pthread_attr_destroy
++     (attributes : access pthread_attr_t) return int;
++   pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
++
++   function pthread_attr_setdetachstate
++     (attr        : access pthread_attr_t;
++      detachstate : int) return int;
++   pragma Import
++     (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
++
++   function pthread_attr_setstacksize
++     (attr      : access pthread_attr_t;
++      stacksize : size_t) return int;
++   pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
++
++   --  From: /usr/include/pthread/pthread.h
++   function pthread_create
++     (thread        : access pthread_t;
++      attributes    : access pthread_attr_t;
++      start_routine : Thread_Body;
++      arg           : System.Address) return int;
++   pragma Import (C, pthread_create, "pthread_create");
++
++   procedure pthread_exit (status : System.Address);
++   pragma Import (C, pthread_exit, "pthread_exit");
++
++   function pthread_self return pthread_t;
++   pragma Import (C, pthread_self, "pthread_self");
++
++   --------------------------
++   -- POSIX.1c  Section 17 --
++   --------------------------
++
++   function pthread_setspecific
++     (key   : pthread_key_t;
++      value : System.Address) return int;
++   pragma Import (C, pthread_setspecific, "pthread_setspecific");
++
++   function pthread_getspecific (key : pthread_key_t) return System.Address;
++   pragma Import (C, pthread_getspecific, "pthread_getspecific");
++
++   type destructor_pointer is access procedure (arg : System.Address);
++   pragma Convention (C, destructor_pointer);
++
++   function pthread_key_create
++     (key        : access pthread_key_t;
++      destructor : destructor_pointer) return int;
++   pragma Import (C, pthread_key_create, "pthread_key_create");
++
++   --  From /usr/include/i386-gnu/bits/sched.h
++   --  1_024 == 1024??
++   CPU_SETSIZE : constant := 1_024;
++
++   type bit_field is array (1 .. CPU_SETSIZE) of Boolean;
++   for bit_field'Size use CPU_SETSIZE;
++   pragma Pack (bit_field);
++   pragma Convention (C, bit_field);
++
++   type cpu_set_t is record
++      bits : bit_field;
++   end record;
++   pragma Convention (C, cpu_set_t);
++
++   --  function pthread_setaffinity_np
++   --  (thread     : pthread_t;
++   --   cpusetsize : size_t;
++   --   cpuset     : access cpu_set_t) return int;
++   --   pragma Import (C, pthread_setaffinity_np,
++   --   "__gnat_pthread_setaffinity_np");
++
++private
++
++   type sigset_t is array (1 .. 4) of unsigned;
++
++   --  FIXME:
++   --  In GNU/Hurd the component sa_handler turns out to
++   --  be one a union type, and the selector is a macro:
++   --  #define sa_handler __sigaction_handler.sa_handler
++   --  #define sa_sigaction __sigaction_handler.sa_sigaction
++
++   --  In FreeBSD the component sa_handler turns out to
++   --  be one a union type, and the selector is a macro:
++   --  #define sa_handler __sigaction_u._handler
++   --  #define sa_sigaction __sigaction_u._sigaction
++
++   --  Should we add a signal_context type here ?
++   --  How could it be done independent of the CPU architecture ?
++   --  sigcontext type is opaque, so it is architecturally neutral.
++   --  It is always passed as an access type, so define it as an empty record
++   --  since the contents are not used anywhere.
++   type struct_sigcontext is null record;
++   pragma Convention (C, struct_sigcontext);
++
++   type pid_t is new int;
++
++   type time_t is new long;
++
++   type timespec is record
++      tv_sec  : time_t;
++      tv_nsec : long;
++   end record;
++   pragma Convention (C, timespec);
++
++   type clockid_t is new int;
++   CLOCK_REALTIME : constant clockid_t := 0;
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_attr pthread_attr_t;
++   --  /usr/include/bits/thread-attr.h: struct __pthread_attr...
++   --  /usr/include/pthread/pthreadtypes.h: enum __pthread_contentionscope
++   --   enum __pthread_detachstate detachstate;
++   --   enum __pthread_inheritsched inheritsched;
++   --   enum __pthread_contentionscope contentionscope;
++   --   Not used: schedpolicy   : int;
++   type pthread_attr_t is record
++      schedparam    : struct_sched_param;
++      stackaddr     : System.Address;
++      stacksize     : size_t;
++      guardsize     : size_t;
++      detachstate   : int;
++      inheritsched  : int;
++      contentionscope : int;
++      schedpolicy   : int;
++   end record;
++   pragma Convention (C, pthread_attr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_condattr pthread_condattr_t;
++   --  From: /usr/include/bits/condition-attr.h:
++   --  struct __pthread_condattr {
++   --    enum __pthread_process_shared pshared;
++   --    __Clockid_T Clock;}
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  enum __pthread_process_shared
++   type pthread_condattr_t is record
++      pshared : int;
++      clock   : clockid_t;
++   end record;
++   pragma Convention (C, pthread_condattr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_mutexattr pthread_mutexattr_t; and
++   --  /usr/include/bits/mutex-attr.h
++   --  struct __pthread_mutexattr {
++   --  Int Prioceiling;
++   --  Enum __Pthread_Mutex_Protocol Protocol;
++   --  Enum __Pthread_Process_Shared Pshared;
++   --  Enum __Pthread_Mutex_Type Mutex_Type;};
++   type pthread_mutexattr_t is record
++      prioceiling : int;
++      protocol    : int;
++      pshared     : int;
++      mutex_type  : int;
++   end record;
++   pragma Convention (C, pthread_mutexattr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h
++   --  typedef struct __pthread_mutex pthread_mutex_t; and
++   --  /usr/include/bits/mutex.h:
++   --  struct __pthread_mutex {
++   --  __pthread_spinlock_t __held;
++   --  __pthread_spinlock_t __lock;
++   --  /* in cthreads, mutex_init does not initialized the third
++   --    pointer, as such, we cannot rely on its value for anything.  */
++   --    char *cthreadscompat1;
++   --  struct __pthread *__queue;
++   --  struct __pthread_mutexattr *attr;
++   --  void *data;
++   --  /*  up to this point, we are completely compatible with cthreads
++   --    and what libc expects.  */
++   --    void *owner;
++   --  unsigned locks;
++   --  /* if null then the default attributes apply.  */
++   --    };
++   type pthread_mutex_t is record
++      held          : int;
++      lock          : int;
++      cthreadcompat : System.Address;
++      queue         : System.Address;
++      attr          : System.Address;
++      data          : System.Address;
++      owner         : System.Address;
++      locks         : unsigned;
++   end record;
++   pragma Convention (C, pthread_mutex_t);
++   --  pointer needed?
++   --  type pthread_mutex_t_ptr is access pthread_mutex_t;
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_cond pthread_cond_t;
++   --  typedef struct __pthread_condattr pthread_condattr_t;
++   --  /usr/include/bits/condition.h:struct __pthread_cond{}
++   --  pthread_condattr_t: see above!
++   --  /usr/include/bits/condition.h:    struct __pthread_condimpl *__impl;
++
++   type pthread_cond_t is record
++      lock       : int;
++      queue      : System.Address;
++      condattr   : System.Address;
++      impl       : System.Address;
++      data       : System.Address;
++   end record;
++   pragma Convention (C, pthread_cond_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef __pthread_key pthread_key_t; and
++   --  /usr/include/bits/thread-specific.h:
++   --  typedef int __pthread_key;
++   type pthread_key_t is new int;
++
++end System.OS_Interface;
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-gengtype-fix1.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-gengtype-fix1.diff
@@ -0,0 +1,46 @@
+# DP: Backport patch from the 4.7 branch, fixing gengtype memory issue.
+
+gcc/
+
+2011-04-21  Dimitrios Apostolou  <jimis@gmx.net>
+	    Jeff Law  <law@redhat.com>
+
+	* gengtype-state.c (read_a_state_token): Fix argument to 
+	obstack_free.
+	* gengtype.c (matching_file_name_substitute): Likewise.
+
+Index: gcc/gengtype-state.c
+===================================================================
+--- a/src/gcc/gengtype-state.c	(revision 172831)
++++ b/src/gcc/gengtype-state.c	(revision 172832)
+@@ -303,7 +303,7 @@
+       obstack_1grow (&id_obstack, (char) 0);
+       ids = XOBFINISH (&id_obstack, char *);
+       sid = state_ident_by_name (ids, INSERT);
+-      obstack_free (&id_obstack, ids);
++      obstack_free (&id_obstack, NULL);
+       ids = NULL;
+       tk = XCNEW (struct state_token_st);
+       tk->stok_kind = STOK_NAME;
+@@ -408,7 +408,7 @@
+       tk->stok_file = state_path;
+       tk->stok_next = NULL;
+       strcpy (tk->stok_un.stok_string, cstr);
+-      obstack_free (&bstring_obstack, cstr);
++      obstack_free (&bstring_obstack, NULL);
+ 
+       return tk;
+     }
+Index: gcc/gengtype.c
+===================================================================
+--- a/src/gcc/gengtype.c	(revision 172831)
++++ b/src/gcc/gengtype.c	(revision 172832)
+@@ -1943,7 +1943,7 @@
+   obstack_1grow (&str_obstack, '\0');
+   rawstr = XOBFINISH (&str_obstack, char *);
+   str = xstrdup (rawstr);
+-  obstack_free (&str_obstack, rawstr);
++  obstack_free (&str_obstack, NULL);
+   DBGPRINTF ("matched replacement %s", str);
+   rawstr = NULL;
+   return str;
--- gcc-4.6-4.6.3.orig/debian/patches/pr49169.diff
+++ gcc-4.6-4.6.3/debian/patches/pr49169.diff
@@ -0,0 +1,179 @@
+# DP:  * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit
+# DP:    off function pointers (Richard Sandiford).
+
+2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	gcc/
+	* builtins.c (get_object_alignment): Fix comment.
+	* fold-const.c (get_pointer_modulus_and_residue): Remove
+	allow_func_align.  Use get_object_alignment.
+	(fold_binary_loc): Update caller.
+
+2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	gcc/
+	Backport from mainline:
+
+	2011-06-29  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	PR tree-optimization/49545
+	* builtins.c (get_object_alignment_1): Update function comment.
+	Do not use DECL_ALIGN for functions, but test
+	TARGET_PTRMEMFUNC_VBIT_LOCATION instead.
+	* fold-const.c (get_pointer_modulus_and_residue): Don't check
+	for functions here.
+	* tree-ssa-ccp.c (get_value_from_alignment): Likewise.
+
+	gcc/testsuite/
+	Backport from mainline:
+
+	2011-06-29  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	* gcc.dg/torture/pr49169.c: Restrict to ARM and MIPS targets.
+
+2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	gcc/
+	Backport from mainline:
+
+	2011-07-27  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/49169
+	* fold-const.c (get_pointer_modulus_and_residue): Don't rely on
+	the alignment of function decls.
+
+	gcc/testsuite/
+	Backport from mainline:
+
+	2011-07-27  Michael Hope  <michael.hope@linaro.org>
+		    Richard Sandiford  <richard.sandiford@linaro.org>
+
+	PR tree-optimization/49169
+	* gcc.dg/torture/pr49169.c: New test.
+
+ 
+=== modified file 'gcc/builtins.c'
+--- a/src/gcc/builtins.c
++++ b/src/gcc/builtins.c
+@@ -264,7 +264,14 @@
+ }
+ 
+ /* Return the alignment in bits of EXP, an object.
+-   Don't return more than MAX_ALIGN no matter what.  */
++   Don't return more than MAX_ALIGN no matter what.
++
++   Note that the address (and thus the alignment) computed here is based
++   on the address to which a symbol resolves, whereas DECL_ALIGN is based
++   on the address at which an object is actually located.  These two
++   addresses are not always the same.  For example, on ARM targets,
++   the address &foo of a Thumb function foo() has the lowest bit set,
++   whereas foo() itself starts on an even address.  */
+ 
+ unsigned int
+ get_object_alignment (tree exp, unsigned int max_align)
+@@ -286,7 +293,21 @@
+     exp = DECL_INITIAL (exp);
+   if (DECL_P (exp)
+       && TREE_CODE (exp) != LABEL_DECL)
+-    align = DECL_ALIGN (exp);
++    {
++      if (TREE_CODE (exp) == FUNCTION_DECL)
++	{
++	  /* Function addresses can encode extra information besides their
++	     alignment.  However, if TARGET_PTRMEMFUNC_VBIT_LOCATION
++	     allows the low bit to be used as a virtual bit, we know
++	     that the address itself must be 2-byte aligned.  */
++	  if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn)
++	    align = 2 * BITS_PER_UNIT;
++	  else
++	    align = BITS_PER_UNIT;
++	}
++      else
++	align = DECL_ALIGN (exp);
++    }
+   else if (CONSTANT_CLASS_P (exp))
+     {
+       align = TYPE_ALIGN (TREE_TYPE (exp));
+--- a/src/gcc/fold-const.c
++++ b/src/gcc/fold-const.c
+@@ -9232,15 +9232,10 @@
+    0 <= N < M as is common.  In general, the precise value of P is unknown.
+    M is chosen as large as possible such that constant N can be determined.
+ 
+-   Returns M and sets *RESIDUE to N.
+-
+-   If ALLOW_FUNC_ALIGN is true, do take functions' DECL_ALIGN_UNIT into
+-   account.  This is not always possible due to PR 35705.
+- */
++   Returns M and sets *RESIDUE to N.  */
+ 
+ static unsigned HOST_WIDE_INT
+-get_pointer_modulus_and_residue (tree expr, unsigned HOST_WIDE_INT *residue,
+-				 bool allow_func_align)
++get_pointer_modulus_and_residue (tree expr, unsigned HOST_WIDE_INT *residue)
+ {
+   enum tree_code code;
+ 
+@@ -9270,9 +9265,8 @@
+ 	    }
+ 	}
+ 
+-      if (DECL_P (expr)
+-	  && (allow_func_align || TREE_CODE (expr) != FUNCTION_DECL))
+-	return DECL_ALIGN_UNIT (expr);
++      if (DECL_P (expr))
++	return get_object_alignment (expr, ~0U) / BITS_PER_UNIT;
+     }
+   else if (code == POINTER_PLUS_EXPR)
+     {
+@@ -9282,8 +9276,7 @@
+ 
+       op0 = TREE_OPERAND (expr, 0);
+       STRIP_NOPS (op0);
+-      modulus = get_pointer_modulus_and_residue (op0, residue,
+-						 allow_func_align);
++      modulus = get_pointer_modulus_and_residue (op0, residue);
+ 
+       op1 = TREE_OPERAND (expr, 1);
+       STRIP_NOPS (op1);
+@@ -11163,8 +11156,7 @@
+ 	  unsigned HOST_WIDE_INT modulus, residue;
+ 	  unsigned HOST_WIDE_INT low = TREE_INT_CST_LOW (arg1);
+ 
+-	  modulus = get_pointer_modulus_and_residue (arg0, &residue,
+-						     integer_onep (arg1));
++	  modulus = get_pointer_modulus_and_residue (arg0, &residue);
+ 
+ 	  /* This works because modulus is a power of 2.  If this weren't the
+ 	     case, we'd have to replace it by its greatest power-of-2
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/torture/pr49169.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile { target { arm*-*-* || mips*-*-* } } } */
++
++#include <stdlib.h>
++#include <stdint.h>
++
++int
++main (void)
++{
++  void *p = main;
++  if ((intptr_t) p & 1)
++    abort ();
++  return 0;
++}
++
++/* { dg-final { scan-assembler "abort" } } */
+--- a/src/gcc/tree-ssa-ccp.c
++++ b/src/gcc/tree-ssa-ccp.c
+@@ -522,10 +522,6 @@
+     val = bit_value_binop (PLUS_EXPR, TREE_TYPE (expr),
+ 			   TREE_OPERAND (base, 0), TREE_OPERAND (base, 1));
+   else if (base
+-	   /* ???  While function decls have DECL_ALIGN their addresses
+-	      may encode extra information in the lower bits on some
+-	      targets (PR47239).  Simply punt for function decls for now.  */
+-	   && TREE_CODE (base) != FUNCTION_DECL
+ 	   && ((align = get_object_alignment (base, BIGGEST_ALIGNMENT))
+ 		> BITS_PER_UNIT))
+     {
--- gcc-4.6-4.6.3.orig/debian/patches/pr50114.diff
+++ gcc-4.6-4.6.3/debian/patches/pr50114.diff
@@ -0,0 +1,53 @@
+# DP: Fix PR c++/50114, backport from trunk.
+
+gcc/testsuite/
+
+2011-08-30  Jason Merrill  <jason@redhat.com>
+
+	PR c++/50114
+	* g++.dg/cpp0x/lambda/lambda-for.C: New.
+
+cp/
+
+2011-08-30  Jason Merrill  <jason@redhat.com>
+
+	PR c++/50114
+	* decl.c (poplevel): Disable for scope compatibility hack
+	in C++11 mode.
+
+--- a/src/gcc/testsuite/g++.dg/ext/forscope2.C
++++ b/src/gcc/testsuite/g++.dg/ext/forscope2.C
+@@ -1,5 +1,5 @@
+ // { dg-do compile }
+-// { dg-options -fpermissive }
++// { dg-options "-fpermissive -std=c++98" }
+ 
+ // Copyright (C) 2001 Free Software Foundation, Inc.
+ // Contributed by Nathan Sidwell 4 Sept 2001 <nathan@codesourcery.com>
+--- /dev/null
++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-for.C
+@@ -0,0 +1,12 @@
++// PR c++/50114
++// { dg-options "-std=c++0x -w" }
++
++int open()
++{
++  int *x2feed_i = 0;
++  auto insert_feed = [&](unsigned char venue, int* newfeed)
++  {
++     for(int x2feed_i = 1; 0; ) ;
++     x2feed_i = newfeed;
++  };
++}
+--- a/src/gcc/cp/decl.c
++++ b/src/gcc/cp/decl.c
+@@ -642,6 +642,9 @@
+   for (link = decls; link; link = TREE_CHAIN (link))
+     {
+       if (leaving_for_scope && TREE_CODE (link) == VAR_DECL
++	  /* It's hard to make this ARM compatibility hack play nicely with
++	     lambdas, and it really isn't necessary in C++11 mode.  */
++	  && cxx_dialect < cxx0x
+ 	  && DECL_NAME (link))
+ 	{
+ 	  tree name = DECL_NAME (link);
--- gcc-4.6-4.6.3.orig/debian/patches/ada-s-taprop-gnu.adb.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-s-taprop-gnu.adb.diff
@@ -0,0 +1,1339 @@
+--- /dev/null	2012-01-30 20:41:15.189616186 +0100
++++ b/src/gcc/ada/s-taprop-gnu.adb	2012-04-11 19:17:52.000000000 +0200
+@@ -0,0 +1,1336 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
++--                                                                          --
++--     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
++--                                                                          --
++--                                  B o d y                                 --
++--                                                                          --
++--          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
++--                                                                          --
++-- GNARL is free software; you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
++-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
++-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
++-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
++--                                                                          --
++-- As a special exception under Section 7 of GPL version 3, you are granted --
++-- additional permissions described in the GCC Runtime Library Exception,   --
++-- version 3.1, as published by the Free Software Foundation.               --
++--                                                                          --
++-- You should have received a copy of the GNU General Public License and    --
++-- a copy of the GCC Runtime Library Exception along with this program;     --
++-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
++-- <http://www.gnu.org/licenses/>.                                          --
++--                                                                          --
++-- GNARL was developed by the GNARL team at Florida State University.       --
++-- Extensive contributions were provided by Ada Core Technologies, Inc.     --
++--                                                                          --
++------------------------------------------------------------------------------
++
++--  This is a GNU/Hurd version of this package
++--  Note: Removed the SCHED_FIFO and Ceiling Locking from the posix version
++--  since these functions are not (yet) supported on GNU/Hurd
++
++--  This package contains all the GNULL primitives that interface directly with
++--  the underlying OS.
++
++pragma Polling (Off);
++--  Turn off polling, we do not want ATC polling to take place during tasking
++--  operations. It causes infinite loops and other problems.
++
++with Ada.Unchecked_Conversion;
++with Ada.Unchecked_Deallocation;
++
++with Interfaces.C;
++
++with System.Tasking.Debug;
++with System.Interrupt_Management;
++with System.OS_Primitives;
++with System.Task_Info;
++
++with System.Soft_Links;
++--  We use System.Soft_Links instead of System.Tasking.Initialization
++--  because the later is a higher level package that we shouldn't depend on.
++--  For example when using the restricted run time, it is replaced by
++--  System.Tasking.Restricted.Stages.
++
++package body System.Task_Primitives.Operations is
++
++   package SSL renames System.Soft_Links;
++
++   use System.Tasking.Debug;
++   use System.Tasking;
++   use Interfaces.C;
++   use System.OS_Interface;
++   use System.Parameters;
++   use System.OS_Primitives;
++
++   ----------------
++   -- Local Data --
++   ----------------
++
++   --  The followings are logically constants, but need to be initialized
++   --  at run time.
++
++   Single_RTS_Lock : aliased RTS_Lock;
++   --  This is a lock to allow only one thread of control in the RTS at
++   --  a time; it is used to execute in mutual exclusion from all other tasks.
++   --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
++
++   ATCB_Key : aliased pthread_key_t;
++   --  Key used to find the Ada Task_Id associated with a thread
++
++   Environment_Task_Id : Task_Id;
++   --  A variable to hold Task_Id for the environment task
++
++   Unblocked_Signal_Mask : aliased sigset_t;
++   --  The set of signals that should unblocked in all tasks
++
++   --  The followings are internal configuration constants needed
++
++   Next_Serial_Number : Task_Serial_Number := 100;
++   --  We start at 100, to reserve some special values for
++   --  using in error checking.
++
++   Foreign_Task_Elaborated : aliased Boolean := True;
++   --  Used to identified fake tasks (i.e., non-Ada Threads)
++
++   Use_Alternate_Stack : constant Boolean := Alternate_Stack_Size /= 0;
++   --  Whether to use an alternate signal stack for stack overflows
++
++   Abort_Handler_Installed : Boolean := False;
++   --  True if a handler for the abort signal is installed
++
++   --------------------
++   -- Local Packages --
++   --------------------
++
++   package Specific is
++
++      procedure Initialize (Environment_Task : Task_Id);
++      pragma Inline (Initialize);
++      --  Initialize various data needed by this package
++
++      function Is_Valid_Task return Boolean;
++      pragma Inline (Is_Valid_Task);
++      --  Does executing thread have a TCB?
++
++      procedure Set (Self_Id : Task_Id);
++      pragma Inline (Set);
++      --  Set the self id for the current task
++
++      function Self return Task_Id;
++      pragma Inline (Self);
++      --  Return a pointer to the Ada Task Control Block of the calling task
++
++   end Specific;
++
++   package body Specific is separate;
++   --  The body of this package is target specific
++
++   ---------------------------------
++   -- Support for foreign threads --
++   ---------------------------------
++
++   function Register_Foreign_Thread (Thread : Thread_Id) return Task_Id;
++   --  Allocate and Initialize a new ATCB for the current Thread
++
++   function Register_Foreign_Thread
++     (Thread : Thread_Id) return Task_Id is separate;
++
++   -----------------------
++   -- Local Subprograms --
++   -----------------------
++
++   procedure Abort_Handler (Sig : Signal);
++   --  Signal handler used to implement asynchronous abort.
++   --  See also comment before body, below.
++
++   function To_Address is
++     new Ada.Unchecked_Conversion (Task_Id, System.Address);
++
++   -------------------
++   -- Abort_Handler --
++   -------------------
++
++   --  Target-dependent binding of inter-thread Abort signal to the raising of
++   --  the Abort_Signal exception.
++
++   --  The technical issues and alternatives here are essentially the
++   --  same as for raising exceptions in response to other signals
++   --  (e.g. Storage_Error). See code and comments in the package body
++   --  System.Interrupt_Management.
++
++   --  Some implementations may not allow an exception to be propagated out of
++   --  a handler, and others might leave the signal or interrupt that invoked
++   --  this handler masked after the exceptional return to the application
++   --  code.
++
++   --  GNAT exceptions are originally implemented using setjmp()/longjmp(). On
++   --  most UNIX systems, this will allow transfer out of a signal handler,
++   --  which is usually the only mechanism available for implementing
++   --  asynchronous handlers of this kind. However, some systems do not
++   --  restore the signal mask on longjmp(), leaving the abort signal masked.
++
++   procedure Abort_Handler (Sig : Signal) is
++      pragma Unreferenced (Sig);
++
++      T       : constant Task_Id := Self;
++      Old_Set : aliased sigset_t;
++
++      Result : Interfaces.C.int;
++      pragma Warnings (Off, Result);
++
++   begin
++      --  It's not safe to raise an exception when using GCC ZCX mechanism.
++      --  Note that we still need to install a signal handler, since in some
++      --  cases (e.g. shutdown of the Server_Task in System.Interrupts) we
++      --  need to send the Abort signal to a task.
++
++      if ZCX_By_Default and then GCC_ZCX_Support then
++         return;
++      end if;
++
++      if T.Deferral_Level = 0
++        and then T.Pending_ATC_Level < T.ATC_Nesting_Level and then
++        not T.Aborting
++      then
++         T.Aborting := True;
++
++         --  Make sure signals used for RTS internal purpose are unmasked
++
++         Result := pthread_sigmask (SIG_UNBLOCK,
++           Unblocked_Signal_Mask'Access, Old_Set'Access);
++         pragma Assert (Result = 0);
++
++         raise Standard'Abort_Signal;
++      end if;
++   end Abort_Handler;
++
++   -----------------
++   -- Stack_Guard --
++   -----------------
++
++   procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
++      Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
++      Guard_Page_Address : Address;
++
++      Res : Interfaces.C.int;
++
++   begin
++      if Stack_Base_Available then
++
++         --  Compute the guard page address
++
++         Guard_Page_Address :=
++           Stack_Base - (Stack_Base mod Get_Page_Size) + Get_Page_Size;
++
++         Res :=
++           mprotect (Guard_Page_Address, Get_Page_Size,
++                     prot => (if On then PROT_ON else PROT_OFF));
++         pragma Assert (Res = 0);
++      end if;
++   end Stack_Guard;
++
++   --------------------
++   -- Get_Thread_Id  --
++   --------------------
++
++   function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
++   begin
++      return T.Common.LL.Thread;
++   end Get_Thread_Id;
++
++   ----------
++   -- Self --
++   ----------
++
++   function Self return Task_Id renames Specific.Self;
++
++   ---------------------
++   -- Initialize_Lock --
++   ---------------------
++
++   --  Note: mutexes and cond_variables needed per-task basis are
++   --        initialized in Initialize_TCB and the Storage_Error is
++   --        handled. Other mutexes (such as RTS_Lock, Memory_Lock...)
++   --        used in RTS is initialized before any status change of RTS.
++   --        Therefore raising Storage_Error in the following routines
++   --        should be able to be handled safely.
++
++   procedure Initialize_Lock
++     (Prio : System.Any_Priority;
++      L    : not null access Lock)
++   is
++      pragma Unreferenced (Prio);
++
++      Attributes : aliased pthread_mutexattr_t;
++      Result     : Interfaces.C.int;
++
++   begin
++      Result := pthread_mutexattr_init (Attributes'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result = ENOMEM then
++         raise Storage_Error with "Failed to allocate a lock";
++      end if;
++
++      Result := pthread_mutex_init (L, Attributes'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result = ENOMEM then
++         Result := pthread_mutexattr_destroy (Attributes'Access);
++         raise Storage_Error;
++      end if;
++
++      Result := pthread_mutexattr_destroy (Attributes'Access);
++      pragma Assert (Result = 0);
++   end Initialize_Lock;
++
++   procedure Initialize_Lock
++     (L : not null access RTS_Lock; Level : Lock_Level)
++   is
++      pragma Unreferenced (Level);
++
++      Attributes : aliased pthread_mutexattr_t;
++      Result     : Interfaces.C.int;
++
++   begin
++      Result := pthread_mutexattr_init (Attributes'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result = ENOMEM then
++         raise Storage_Error with "Failed to allocate a lock";
++      end if;
++
++      Result := pthread_mutex_init (L, Attributes'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result = ENOMEM then
++         Result := pthread_mutexattr_destroy (Attributes'Access);
++         raise Storage_Error;
++      end if;
++
++      Result := pthread_mutexattr_destroy (Attributes'Access);
++      pragma Assert (Result = 0);
++   end Initialize_Lock;
++
++   -------------------
++   -- Finalize_Lock --
++   -------------------
++
++   procedure Finalize_Lock (L : not null access Lock) is
++      Result : Interfaces.C.int;
++   begin
++      Result := pthread_mutex_destroy (L);
++      pragma Assert (Result = 0);
++   end Finalize_Lock;
++
++   procedure Finalize_Lock (L : not null access RTS_Lock) is
++      Result : Interfaces.C.int;
++   begin
++      Result := pthread_mutex_destroy (L);
++      pragma Assert (Result = 0);
++   end Finalize_Lock;
++
++   ----------------
++   -- Write_Lock --
++   ----------------
++
++   procedure Write_Lock
++     (L : not null access Lock; Ceiling_Violation : out Boolean)
++   is
++      Result : Interfaces.C.int;
++
++   begin
++      Result := pthread_mutex_lock (L);
++
++      --  Assume that the cause of EINVAL is a priority ceiling violation
++
++      Ceiling_Violation := (Result = EINVAL);
++      pragma Assert (Result = 0 or else Result = EINVAL);
++   end Write_Lock;
++
++   procedure Write_Lock
++     (L           : not null access RTS_Lock;
++      Global_Lock : Boolean := False)
++   is
++      Result : Interfaces.C.int;
++   begin
++      if not Single_Lock or else Global_Lock then
++         Result := pthread_mutex_lock (L);
++         pragma Assert (Result = 0);
++      end if;
++   end Write_Lock;
++
++   procedure Write_Lock (T : Task_Id) is
++      Result : Interfaces.C.int;
++   begin
++      if not Single_Lock then
++         Result := pthread_mutex_lock (T.Common.LL.L'Access);
++         pragma Assert (Result = 0);
++      end if;
++   end Write_Lock;
++
++   ---------------
++   -- Read_Lock --
++   ---------------
++
++   procedure Read_Lock
++     (L : not null access Lock; Ceiling_Violation : out Boolean) is
++   begin
++      Write_Lock (L, Ceiling_Violation);
++   end Read_Lock;
++
++   ------------
++   -- Unlock --
++   ------------
++
++   procedure Unlock (L : not null access Lock) is
++      Result : Interfaces.C.int;
++   begin
++      Result := pthread_mutex_unlock (L);
++      pragma Assert (Result = 0);
++   end Unlock;
++
++   procedure Unlock
++     (L : not null access RTS_Lock; Global_Lock : Boolean := False)
++   is
++      Result : Interfaces.C.int;
++   begin
++      if not Single_Lock or else Global_Lock then
++         Result := pthread_mutex_unlock (L);
++         pragma Assert (Result = 0);
++      end if;
++   end Unlock;
++
++   procedure Unlock (T : Task_Id) is
++      Result : Interfaces.C.int;
++   begin
++      if not Single_Lock then
++         Result := pthread_mutex_unlock (T.Common.LL.L'Access);
++         pragma Assert (Result = 0);
++      end if;
++   end Unlock;
++
++   -----------------
++   -- Set_Ceiling --
++   -----------------
++
++   --  Dynamic priority ceilings are not supported by the underlying system
++
++   procedure Set_Ceiling
++     (L    : not null access Lock;
++      Prio : System.Any_Priority)
++   is
++      pragma Unreferenced (L, Prio);
++   begin
++      null;
++   end Set_Ceiling;
++
++   -----------
++   -- Sleep --
++   -----------
++
++   procedure Sleep
++     (Self_ID : Task_Id;
++      Reason  : System.Tasking.Task_States)
++   is
++      pragma Unreferenced (Reason);
++
++      Result : Interfaces.C.int;
++
++   begin
++      Result :=
++        pthread_cond_wait
++          (cond  => Self_ID.Common.LL.CV'Access,
++           mutex => (if Single_Lock
++                     then Single_RTS_Lock'Access
++                     else Self_ID.Common.LL.L'Access));
++
++      --  EINTR is not considered a failure
++
++      pragma Assert (Result = 0 or else Result = EINTR);
++   end Sleep;
++
++   -----------------
++   -- Timed_Sleep --
++   -----------------
++
++   --  This is for use within the run-time system, so abort is
++   --  assumed to be already deferred, and the caller should be
++   --  holding its own ATCB lock.
++
++   procedure Timed_Sleep
++     (Self_ID  : Task_Id;
++      Time     : Duration;
++      Mode     : ST.Delay_Modes;
++      Reason   : Task_States;
++      Timedout : out Boolean;
++      Yielded  : out Boolean)
++   is
++      pragma Unreferenced (Reason);
++
++      Base_Time  : constant Duration := Monotonic_Clock;
++      Check_Time : Duration := Base_Time;
++      Rel_Time   : Duration;
++      Abs_Time   : Duration;
++      Request    : aliased timespec;
++      Result     : Interfaces.C.int;
++
++   begin
++      Timedout := True;
++      Yielded := False;
++
++      if Mode = Relative then
++         Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
++
++         if Relative_Timed_Wait then
++            Rel_Time := Duration'Min (Max_Sensible_Delay, Time);
++         end if;
++
++      else
++         Abs_Time := Duration'Min (Check_Time + Max_Sensible_Delay, Time);
++
++         if Relative_Timed_Wait then
++            Rel_Time := Duration'Min (Max_Sensible_Delay, Time - Check_Time);
++         end if;
++      end if;
++
++      if Abs_Time > Check_Time then
++         Request :=
++           To_Timespec (if Relative_Timed_Wait then Rel_Time else Abs_Time);
++
++         loop
++            exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
++
++            Result :=
++              pthread_cond_timedwait
++                (cond    => Self_ID.Common.LL.CV'Access,
++                 mutex   => (if Single_Lock
++                             then Single_RTS_Lock'Access
++                             else Self_ID.Common.LL.L'Access),
++                 abstime => Request'Access);
++
++            Check_Time := Monotonic_Clock;
++            exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
++
++            if Result = 0 or Result = EINTR then
++
++               --  Somebody may have called Wakeup for us
++
++               Timedout := False;
++               exit;
++            end if;
++
++            pragma Assert (Result = ETIMEDOUT);
++         end loop;
++      end if;
++   end Timed_Sleep;
++
++   -----------------
++   -- Timed_Delay --
++   -----------------
++
++   --  This is for use in implementing delay statements, so we assume the
++   --  caller is abort-deferred but is holding no locks.
++
++   procedure Timed_Delay
++     (Self_ID : Task_Id;
++      Time    : Duration;
++      Mode    : ST.Delay_Modes)
++   is
++      Base_Time  : constant Duration := Monotonic_Clock;
++      Check_Time : Duration := Base_Time;
++      Abs_Time   : Duration;
++      Rel_Time   : Duration;
++      Request    : aliased timespec;
++
++      Result : Interfaces.C.int;
++      pragma Warnings (Off, Result);
++
++   begin
++      if Single_Lock then
++         Lock_RTS;
++      end if;
++
++      Write_Lock (Self_ID);
++
++      if Mode = Relative then
++         Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
++
++         if Relative_Timed_Wait then
++            Rel_Time := Duration'Min (Max_Sensible_Delay, Time);
++         end if;
++
++      else
++         Abs_Time := Duration'Min (Check_Time + Max_Sensible_Delay, Time);
++
++         if Relative_Timed_Wait then
++            Rel_Time := Duration'Min (Max_Sensible_Delay, Time - Check_Time);
++         end if;
++      end if;
++
++      if Abs_Time > Check_Time then
++         Request :=
++           To_Timespec (if Relative_Timed_Wait then Rel_Time else Abs_Time);
++         Self_ID.Common.State := Delay_Sleep;
++
++         loop
++            exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
++
++            Result :=
++              pthread_cond_timedwait
++                (cond    => Self_ID.Common.LL.CV'Access,
++                 mutex   => (if Single_Lock
++                             then Single_RTS_Lock'Access
++                             else Self_ID.Common.LL.L'Access),
++                 abstime => Request'Access);
++
++            Check_Time := Monotonic_Clock;
++            exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
++
++            pragma Assert (Result = 0
++                             or else Result = ETIMEDOUT
++                             or else Result = EINTR);
++         end loop;
++
++         Self_ID.Common.State := Runnable;
++      end if;
++
++      Unlock (Self_ID);
++
++      if Single_Lock then
++         Unlock_RTS;
++      end if;
++
++      Result := sched_yield;
++   end Timed_Delay;
++
++   ---------------------
++   -- Monotonic_Clock --
++   ---------------------
++
++   function Monotonic_Clock return Duration is
++      TS     : aliased timespec;
++      Result : Interfaces.C.int;
++   begin
++      Result := clock_gettime
++        (clock_id => CLOCK_REALTIME, tp => TS'Unchecked_Access);
++      pragma Assert (Result = 0);
++      return To_Duration (TS);
++   end Monotonic_Clock;
++
++   -------------------
++   -- RT_Resolution --
++   -------------------
++
++   function RT_Resolution return Duration is
++   begin
++      return 10#1.0#E-6;
++   end RT_Resolution;
++
++   ------------
++   -- Wakeup --
++   ------------
++
++   procedure Wakeup (T : Task_Id; Reason : System.Tasking.Task_States) is
++      pragma Unreferenced (Reason);
++      Result : Interfaces.C.int;
++   begin
++      Result := pthread_cond_signal (T.Common.LL.CV'Access);
++      pragma Assert (Result = 0);
++   end Wakeup;
++
++   -----------
++   -- Yield --
++   -----------
++
++   procedure Yield (Do_Yield : Boolean := True) is
++      Result : Interfaces.C.int;
++      pragma Unreferenced (Result);
++   begin
++      if Do_Yield then
++         Result := sched_yield;
++      end if;
++   end Yield;
++
++   ------------------
++   -- Set_Priority --
++   ------------------
++
++   procedure Set_Priority
++     (T                   : Task_Id;
++      Prio                : System.Any_Priority;
++      Loss_Of_Inheritance : Boolean := False)
++   is
++      pragma Unreferenced (Loss_Of_Inheritance);
++
++   begin
++      null;
++   end Set_Priority;
++
++   ------------------
++   -- Get_Priority --
++   ------------------
++
++   function Get_Priority (T : Task_Id) return System.Any_Priority is
++   begin
++      return T.Common.Current_Priority;
++   end Get_Priority;
++
++   ----------------
++   -- Enter_Task --
++   ----------------
++
++   procedure Enter_Task (Self_ID : Task_Id) is
++   begin
++      Self_ID.Common.LL.Thread := pthread_self;
++      Self_ID.Common.LL.LWP := lwp_self;
++
++      Specific.Set (Self_ID);
++
++      if Use_Alternate_Stack then
++         declare
++            Stack  : aliased stack_t;
++            Result : Interfaces.C.int;
++         begin
++            Stack.ss_sp    := Self_ID.Common.Task_Alternate_Stack;
++            Stack.ss_size  := Alternate_Stack_Size;
++            Stack.ss_flags := 0;
++            Result := sigaltstack (Stack'Access, null);
++            pragma Assert (Result = 0);
++         end;
++      end if;
++   end Enter_Task;
++
++   --------------
++   -- New_ATCB --
++   --------------
++
++   function New_ATCB (Entry_Num : Task_Entry_Index) return Task_Id is
++   begin
++      return new Ada_Task_Control_Block (Entry_Num);
++   end New_ATCB;
++
++   -------------------
++   -- Is_Valid_Task --
++   -------------------
++
++   function Is_Valid_Task return Boolean renames Specific.Is_Valid_Task;
++
++   -----------------------------
++   -- Register_Foreign_Thread --
++   -----------------------------
++
++   function Register_Foreign_Thread return Task_Id is
++   begin
++      if Is_Valid_Task then
++         return Self;
++      else
++         return Register_Foreign_Thread (pthread_self);
++      end if;
++   end Register_Foreign_Thread;
++
++   --------------------
++   -- Initialize_TCB --
++   --------------------
++
++   procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
++      Mutex_Attr : aliased pthread_mutexattr_t;
++      Result     : Interfaces.C.int;
++      Cond_Attr  : aliased pthread_condattr_t;
++
++   begin
++      --  Give the task a unique serial number
++
++      Self_ID.Serial_Number := Next_Serial_Number;
++      Next_Serial_Number := Next_Serial_Number + 1;
++      pragma Assert (Next_Serial_Number /= 0);
++
++      if not Single_Lock then
++         Result := pthread_mutexattr_init (Mutex_Attr'Access);
++         pragma Assert (Result = 0 or else Result = ENOMEM);
++
++         if Result = 0 then
++            Result :=
++              pthread_mutex_init
++                (Self_ID.Common.LL.L'Access,
++                 Mutex_Attr'Access);
++            pragma Assert (Result = 0 or else Result = ENOMEM);
++         end if;
++
++         if Result /= 0 then
++            Succeeded := False;
++            return;
++         end if;
++
++         Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
++         pragma Assert (Result = 0);
++      end if;
++
++      Result := pthread_condattr_init (Cond_Attr'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result = 0 then
++         Result :=
++           pthread_cond_init
++             (Self_ID.Common.LL.CV'Access, Cond_Attr'Access);
++         pragma Assert (Result = 0 or else Result = ENOMEM);
++      end if;
++
++      if Result = 0 then
++         Succeeded := True;
++      else
++         if not Single_Lock then
++            Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
++            pragma Assert (Result = 0);
++         end if;
++
++         Succeeded := False;
++      end if;
++
++      Result := pthread_condattr_destroy (Cond_Attr'Access);
++      pragma Assert (Result = 0);
++   end Initialize_TCB;
++
++   -----------------
++   -- Create_Task --
++   -----------------
++
++   procedure Create_Task
++     (T          : Task_Id;
++      Wrapper    : System.Address;
++      Stack_Size : System.Parameters.Size_Type;
++      Priority   : System.Any_Priority;
++      Succeeded  : out Boolean)
++   is
++      Attributes          : aliased pthread_attr_t;
++      Adjusted_Stack_Size : Interfaces.C.size_t;
++      Page_Size           : constant Interfaces.C.size_t := Get_Page_Size;
++      Result              : Interfaces.C.int;
++
++      function Thread_Body_Access is new
++        Ada.Unchecked_Conversion (System.Address, Thread_Body);
++
++      use System.Task_Info;
++
++   begin
++      Adjusted_Stack_Size :=
++         Interfaces.C.size_t (Stack_Size + Alternate_Stack_Size);
++
++      if Stack_Base_Available then
++
++         --  If Stack Checking is supported then allocate 2 additional pages:
++
++         --  In the worst case, stack is allocated at something like
++         --  N * Get_Page_Size - epsilon, we need to add the size for 2 pages
++         --  to be sure the effective stack size is greater than what
++         --  has been asked.
++
++         Adjusted_Stack_Size := Adjusted_Stack_Size + 2 * Page_Size;
++      end if;
++
++      --  Round stack size as this is required by some OSes (Darwin)
++
++      Adjusted_Stack_Size := Adjusted_Stack_Size + Page_Size - 1;
++      Adjusted_Stack_Size :=
++        Adjusted_Stack_Size - Adjusted_Stack_Size mod Page_Size;
++
++      Result := pthread_attr_init (Attributes'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result /= 0 then
++         Succeeded := False;
++         return;
++      end if;
++
++      Result :=
++        pthread_attr_setdetachstate
++          (Attributes'Access, PTHREAD_CREATE_DETACHED);
++      pragma Assert (Result = 0);
++
++      Result :=
++        pthread_attr_setstacksize
++          (Attributes'Access, Adjusted_Stack_Size);
++      pragma Assert (Result = 0);
++
++      --  Since the initial signal mask of a thread is inherited from the
++      --  creator, and the Environment task has all its signals masked, we
++      --  do not need to manipulate caller's signal mask at this point.
++      --  All tasks in RTS will have All_Tasks_Mask initially.
++
++      Result := pthread_create
++        (T.Common.LL.Thread'Access,
++         Attributes'Access,
++         Thread_Body_Access (Wrapper),
++         To_Address (T));
++      pragma Assert (Result = 0 or else Result = EAGAIN);
++
++      Succeeded := Result = 0;
++
++      Result := pthread_attr_destroy (Attributes'Access);
++      pragma Assert (Result = 0);
++
++      if Succeeded then
++         Set_Priority (T, Priority);
++      end if;
++   end Create_Task;
++
++   ------------------
++   -- Finalize_TCB --
++   ------------------
++
++   procedure Finalize_TCB (T : Task_Id) is
++      Result  : Interfaces.C.int;
++      Tmp     : Task_Id := T;
++      Is_Self : constant Boolean := T = Self;
++
++      procedure Free is new
++        Ada.Unchecked_Deallocation (Ada_Task_Control_Block, Task_Id);
++
++   begin
++      if not Single_Lock then
++         Result := pthread_mutex_destroy (T.Common.LL.L'Access);
++         pragma Assert (Result = 0);
++      end if;
++
++      Result := pthread_cond_destroy (T.Common.LL.CV'Access);
++      pragma Assert (Result = 0);
++
++      if T.Known_Tasks_Index /= -1 then
++         Known_Tasks (T.Known_Tasks_Index) := null;
++      end if;
++
++      Free (Tmp);
++
++      if Is_Self then
++         Specific.Set (null);
++      end if;
++   end Finalize_TCB;
++
++   ---------------
++   -- Exit_Task --
++   ---------------
++
++   procedure Exit_Task is
++   begin
++      --  Mark this task as unknown, so that if Self is called, it won't
++      --  return a dangling pointer.
++
++      Specific.Set (null);
++   end Exit_Task;
++
++   ----------------
++   -- Abort_Task --
++   ----------------
++
++   procedure Abort_Task (T : Task_Id) is
++      Result : Interfaces.C.int;
++   begin
++      if Abort_Handler_Installed then
++         Result :=
++           pthread_kill
++             (T.Common.LL.Thread,
++              Signal (System.Interrupt_Management.Abort_Task_Interrupt));
++         pragma Assert (Result = 0);
++      end if;
++   end Abort_Task;
++
++   ----------------
++   -- Initialize --
++   ----------------
++
++   procedure Initialize (S : in out Suspension_Object) is
++      Mutex_Attr : aliased pthread_mutexattr_t;
++      Cond_Attr  : aliased pthread_condattr_t;
++      Result     : Interfaces.C.int;
++
++   begin
++      --  Initialize internal state (always to False (RM D.10 (6)))
++
++      S.State := False;
++      S.Waiting := False;
++
++      --  Initialize internal mutex
++
++      Result := pthread_mutexattr_init (Mutex_Attr'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result = ENOMEM then
++         raise Storage_Error;
++      end if;
++
++      Result := pthread_mutex_init (S.L'Access, Mutex_Attr'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result = ENOMEM then
++         Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
++         pragma Assert (Result = 0);
++
++         raise Storage_Error;
++      end if;
++
++      Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
++      pragma Assert (Result = 0);
++
++      --  Initialize internal condition variable
++
++      Result := pthread_condattr_init (Cond_Attr'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result /= 0 then
++         Result := pthread_mutex_destroy (S.L'Access);
++         pragma Assert (Result = 0);
++
++         if Result = ENOMEM then
++            raise Storage_Error;
++         end if;
++      end if;
++
++      Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
++      pragma Assert (Result = 0 or else Result = ENOMEM);
++
++      if Result /= 0 then
++         Result := pthread_mutex_destroy (S.L'Access);
++         pragma Assert (Result = 0);
++
++         if Result = ENOMEM then
++            Result := pthread_condattr_destroy (Cond_Attr'Access);
++            pragma Assert (Result = 0);
++            raise Storage_Error;
++         end if;
++      end if;
++
++      Result := pthread_condattr_destroy (Cond_Attr'Access);
++      pragma Assert (Result = 0);
++   end Initialize;
++
++   --------------
++   -- Finalize --
++   --------------
++
++   procedure Finalize (S : in out Suspension_Object) is
++      Result : Interfaces.C.int;
++
++   begin
++      --  Destroy internal mutex
++
++      Result := pthread_mutex_destroy (S.L'Access);
++      pragma Assert (Result = 0);
++
++      --  Destroy internal condition variable
++
++      Result := pthread_cond_destroy (S.CV'Access);
++      pragma Assert (Result = 0);
++   end Finalize;
++
++   -------------------
++   -- Current_State --
++   -------------------
++
++   function Current_State (S : Suspension_Object) return Boolean is
++   begin
++      --  We do not want to use lock on this read operation. State is marked
++      --  as Atomic so that we ensure that the value retrieved is correct.
++
++      return S.State;
++   end Current_State;
++
++   ---------------
++   -- Set_False --
++   ---------------
++
++   procedure Set_False (S : in out Suspension_Object) is
++      Result : Interfaces.C.int;
++
++   begin
++      SSL.Abort_Defer.all;
++
++      Result := pthread_mutex_lock (S.L'Access);
++      pragma Assert (Result = 0);
++
++      S.State := False;
++
++      Result := pthread_mutex_unlock (S.L'Access);
++      pragma Assert (Result = 0);
++
++      SSL.Abort_Undefer.all;
++   end Set_False;
++
++   --------------
++   -- Set_True --
++   --------------
++
++   procedure Set_True (S : in out Suspension_Object) is
++      Result : Interfaces.C.int;
++
++   begin
++      SSL.Abort_Defer.all;
++
++      Result := pthread_mutex_lock (S.L'Access);
++      pragma Assert (Result = 0);
++
++      --  If there is already a task waiting on this suspension object then
++      --  we resume it, leaving the state of the suspension object to False,
++      --  as it is specified in (RM D.10(9)). Otherwise, it just leaves
++      --  the state to True.
++
++      if S.Waiting then
++         S.Waiting := False;
++         S.State := False;
++
++         Result := pthread_cond_signal (S.CV'Access);
++         pragma Assert (Result = 0);
++
++      else
++         S.State := True;
++      end if;
++
++      Result := pthread_mutex_unlock (S.L'Access);
++      pragma Assert (Result = 0);
++
++      SSL.Abort_Undefer.all;
++   end Set_True;
++
++   ------------------------
++   -- Suspend_Until_True --
++   ------------------------
++
++   procedure Suspend_Until_True (S : in out Suspension_Object) is
++      Result : Interfaces.C.int;
++
++   begin
++      SSL.Abort_Defer.all;
++
++      Result := pthread_mutex_lock (S.L'Access);
++      pragma Assert (Result = 0);
++
++      if S.Waiting then
++
++         --  Program_Error must be raised upon calling Suspend_Until_True
++         --  if another task is already waiting on that suspension object
++         --  (RM D.10(10)).
++
++         Result := pthread_mutex_unlock (S.L'Access);
++         pragma Assert (Result = 0);
++
++         SSL.Abort_Undefer.all;
++
++         raise Program_Error;
++
++      else
++         --  Suspend the task if the state is False. Otherwise, the task
++         --  continues its execution, and the state of the suspension object
++         --  is set to False (ARM D.10 par. 9).
++
++         if S.State then
++            S.State := False;
++         else
++            S.Waiting := True;
++
++            loop
++               --  Loop in case pthread_cond_wait returns earlier than expected
++               --  (e.g. in case of EINTR caused by a signal).
++
++               Result := pthread_cond_wait (S.CV'Access, S.L'Access);
++               pragma Assert (Result = 0 or else Result = EINTR);
++
++               exit when not S.Waiting;
++            end loop;
++         end if;
++
++         Result := pthread_mutex_unlock (S.L'Access);
++         pragma Assert (Result = 0);
++
++         SSL.Abort_Undefer.all;
++      end if;
++   end Suspend_Until_True;
++
++   ----------------
++   -- Check_Exit --
++   ----------------
++
++   --  Dummy version
++
++   function Check_Exit (Self_ID : ST.Task_Id) return Boolean is
++      pragma Unreferenced (Self_ID);
++   begin
++      return True;
++   end Check_Exit;
++
++   --------------------
++   -- Check_No_Locks --
++   --------------------
++
++   function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean is
++      pragma Unreferenced (Self_ID);
++   begin
++      return True;
++   end Check_No_Locks;
++
++   ----------------------
++   -- Environment_Task --
++   ----------------------
++
++   function Environment_Task return Task_Id is
++   begin
++      return Environment_Task_Id;
++   end Environment_Task;
++
++   --------------
++   -- Lock_RTS --
++   --------------
++
++   procedure Lock_RTS is
++   begin
++      Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
++   end Lock_RTS;
++
++   ----------------
++   -- Unlock_RTS --
++   ----------------
++
++   procedure Unlock_RTS is
++   begin
++      Unlock (Single_RTS_Lock'Access, Global_Lock => True);
++   end Unlock_RTS;
++
++   ------------------
++   -- Suspend_Task --
++   ------------------
++
++   function Suspend_Task
++     (T           : ST.Task_Id;
++      Thread_Self : Thread_Id) return Boolean
++   is
++      pragma Unreferenced (T, Thread_Self);
++   begin
++      return False;
++   end Suspend_Task;
++
++   -----------------
++   -- Resume_Task --
++   -----------------
++
++   function Resume_Task
++     (T           : ST.Task_Id;
++      Thread_Self : Thread_Id) return Boolean
++   is
++      pragma Unreferenced (T, Thread_Self);
++   begin
++      return False;
++   end Resume_Task;
++
++   --------------------
++   -- Stop_All_Tasks --
++   --------------------
++
++   procedure Stop_All_Tasks is
++   begin
++      null;
++   end Stop_All_Tasks;
++
++   ---------------
++   -- Stop_Task --
++   ---------------
++
++   function Stop_Task (T : ST.Task_Id) return Boolean is
++      pragma Unreferenced (T);
++   begin
++      return False;
++   end Stop_Task;
++
++   -------------------
++   -- Continue_Task --
++   -------------------
++
++   function Continue_Task (T : ST.Task_Id) return Boolean is
++      pragma Unreferenced (T);
++   begin
++      return False;
++   end Continue_Task;
++
++   ----------------
++   -- Initialize --
++   ----------------
++
++   procedure Initialize (Environment_Task : Task_Id) is
++      act     : aliased struct_sigaction;
++      old_act : aliased struct_sigaction;
++      Tmp_Set : aliased sigset_t;
++      Result  : Interfaces.C.int;
++
++      function State
++        (Int : System.Interrupt_Management.Interrupt_ID) return Character;
++      pragma Import (C, State, "__gnat_get_interrupt_state");
++      --  Get interrupt state.  Defined in a-init.c
++      --  The input argument is the interrupt number,
++      --  and the result is one of the following:
++
++      Default : constant Character := 's';
++      --    'n'   this interrupt not set by any Interrupt_State pragma
++      --    'u'   Interrupt_State pragma set state to User
++      --    'r'   Interrupt_State pragma set state to Runtime
++      --    's'   Interrupt_State pragma set state to System (use "default"
++      --           system handler)
++
++   begin
++      Environment_Task_Id := Environment_Task;
++
++      Interrupt_Management.Initialize;
++
++      --  Prepare the set of signals that should unblocked in all tasks
++
++      Result := sigemptyset (Unblocked_Signal_Mask'Access);
++      pragma Assert (Result = 0);
++
++      for J in Interrupt_Management.Interrupt_ID loop
++         if System.Interrupt_Management.Keep_Unmasked (J) then
++            Result := sigaddset (Unblocked_Signal_Mask'Access, Signal (J));
++            pragma Assert (Result = 0);
++         end if;
++      end loop;
++
++      --  Initialize the lock used to synchronize chain of all ATCBs
++
++      Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
++
++      Specific.Initialize (Environment_Task);
++
++      if Use_Alternate_Stack then
++         Environment_Task.Common.Task_Alternate_Stack :=
++           Alternate_Stack'Address;
++      end if;
++
++      --  Make environment task known here because it doesn't go through
++      --  Activate_Tasks, which does it for all other tasks.
++
++      Known_Tasks (Known_Tasks'First) := Environment_Task;
++      Environment_Task.Known_Tasks_Index := Known_Tasks'First;
++
++      Enter_Task (Environment_Task);
++
++      if State
++          (System.Interrupt_Management.Abort_Task_Interrupt) /= Default
++      then
++         act.sa_flags := 0;
++         act.sa_handler := Abort_Handler'Address;
++
++         Result := sigemptyset (Tmp_Set'Access);
++         pragma Assert (Result = 0);
++         act.sa_mask := Tmp_Set;
++
++         Result :=
++           sigaction
++             (Signal (System.Interrupt_Management.Abort_Task_Interrupt),
++              act'Unchecked_Access,
++              old_act'Unchecked_Access);
++         pragma Assert (Result = 0);
++         Abort_Handler_Installed := True;
++      end if;
++   end Initialize;
++
++end System.Task_Primitives.Operations;
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-stacktrace.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-stacktrace.diff
@@ -0,0 +1,50 @@
+# DP: libgcj: Lookup source file name and line number in separated
+# DP: debug files found in /usr/lib/debug
+
+---
+ libjava/stacktrace.cc |   27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+--- a/src/libjava/stacktrace.cc
++++ b/src/libjava/stacktrace.cc
+@@ -17,6 +17,11 @@
+ #include <java-stack.h>
+ 
+ #include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#ifdef HAVE_UNISTD_H
++#include <unistd.h>
++#endif
+ 
+ #include <java/lang/Boolean.h>
+ #include <java/lang/Class.h>
+@@ -260,6 +265,28 @@
+       finder->lookup (binaryName, (jlong) offset);
+       *sourceFileName = finder->getSourceFile();
+       *lineNum = finder->getLineNum();
++      if (*lineNum == -1 && info.file_name[0] == '/')
++	{
++	  const char *debugPrefix = "/usr/lib/debug";
++	  char *debugPath = (char *) malloc (strlen(debugPrefix)
++					     + strlen(info.file_name)
++					     + 2);
++
++	  if (debugPath)
++	    {
++	      strcpy (debugPath, debugPrefix);
++	      strcat (debugPath, info.file_name);
++	      //printf ("%s: 0x%x\n", debugPath, offset);
++	      if (!access (debugPath, R_OK))
++		{
++		  binaryName = JvNewStringUTF (debugPath);
++		  finder->lookup (binaryName, (jlong) offset);
++		  *sourceFileName = finder->getSourceFile();
++		  *lineNum = finder->getLineNum();
++		}
++	      free (debugPath);
++	    }
++	}
+       if (*lineNum == -1 && NameFinder::showRaw())
+         {
+           gnu::gcj::runtime::StringBuffer *t =
--- gcc-4.6-4.6.3.orig/debian/patches/link-libs.diff
+++ gcc-4.6-4.6.3/debian/patches/link-libs.diff
@@ -0,0 +1,170 @@
+#DP: Link libraries with -01.
+
+---
+ gcc/config/t-slibgcc-elf-ver |    1 +
+ libffi/Makefile.am           |    2 +-
+ libffi/Makefile.in           |    2 +-
+ libgfortran/Makefile.am      |    2 +-
+ libgfortran/Makefile.in      |    2 +-
+ libjava/Makefile.am          |    2 +-
+ libjava/Makefile.in          |    2 +-
+ libmudflap/Makefile.am       |    4 ++--
+ libmudflap/Makefile.in       |    4 ++--
+ libobjc/Makefile.in          |    2 ++
+ libstdc++-v3/src/Makefile.am |    1 +
+ libstdc++-v3/src/Makefile.in |    1 +
+ 12 files changed, 15 insertions(+), 10 deletions(-)
+
+--- a/src/gcc/config/t-slibgcc-elf-ver.orig	2009-09-10
++++ b/src/gcc/config/t-slibgcc-elf-ver	2009-12-22
+@@ -35,6 +35,7 @@
+ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+ 	-Wl,--soname=$(SHLIB_SONAME) \
+ 	-Wl,--version-script=$(SHLIB_MAP) \
++	-Wl,-O1 \
+ 	-o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
+ 	$(SHLIB_OBJS) $(SHLIB_LC) && \
+ 	rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
+--- a/src/libffi/Makefile.am.orig	2009-08-23
++++ b/src/libffi/Makefile.am	2009-12-22
+@@ -164,7 +164,7 @@
+ 
+ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+ 
+-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS)
++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -Wl,-O1
+ 
+ AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
+ AM_CCASFLAGS = $(AM_CPPFLAGS)
+--- a/src/libffi/Makefile.in.orig	2009-12-07
++++ b/src/libffi/Makefile.in	2009-12-22
+@@ -468,7 +468,7 @@
+ nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
+ AM_CFLAGS = -Wall -g -fexceptions
+ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS)
++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -Wl,-O1
+ AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
+ AM_CCASFLAGS = $(AM_CPPFLAGS)
+ all: fficonfig.h
+--- a/src/libgfortran/Makefile.am.orig	2009-12-01
++++ b/src/libgfortran/Makefile.am	2009-12-22
+@@ -18,7 +18,7 @@
+ 
+ toolexeclib_LTLIBRARIES = libgfortran.la
+ libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
+-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg)
++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg) -Wl,-O1
+ 
+ myexeclib_LTLIBRARIES = libgfortranbegin.la
+ myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
+--- a/src/libgfortran/Makefile.in.orig	2009-12-07
++++ b/src/libgfortran/Makefile.in	2009-12-22
+@@ -976,7 +976,7 @@
+ 
+ toolexeclib_LTLIBRARIES = libgfortran.la
+ libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
+-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg)
++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg) -Wl,-O1
+ myexeclib_LTLIBRARIES = libgfortranbegin.la
+ myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
+ libgfortranbegin_la_SOURCES = fmain.c
+--- a/src/libjava/Makefile.am.orig	2009-12-21
++++ b/src/libjava/Makefile.am	2009-12-22
+@@ -299,7 +299,7 @@
+ GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
+ GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@
+ LIBLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXX) -L$(here) \
+-	  $(JC1FLAGS) $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@
++	  $(JC1FLAGS) $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -Wl,-O1 -o $@
+ CXXLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ 	  $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
+ 
+--- a/src/libjava/Makefile.in.orig	2009-12-21
++++ b/src/libjava/Makefile.in	2009-12-22
+@@ -1073,7 +1073,7 @@
+ 
+ GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@
+ LIBLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXX) -L$(here) \
+-	  $(JC1FLAGS) $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@
++	  $(JC1FLAGS) $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -Wl,-O1 -o $@
+ 
+ CXXLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ 	  $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
+--- a/src/libmudflap/Makefile.am.orig	2009-08-23
++++ b/src/libmudflap/Makefile.am	2009-12-22
+@@ -34,7 +34,7 @@
+ 	mf-hooks2.c
+ libmudflap_la_LIBADD = 
+ libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD)
+-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
++libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1
+ 
+ 
+ libmudflapth_la_SOURCES = \
+@@ -46,7 +46,7 @@
+ libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH
+ libmudflapth_la_LIBADD =
+ libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
+-libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
++libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1
+ 
+ 
+ # XXX hack alert
+--- a/src/libmudflap/Makefile.in.orig	2009-12-07
++++ b/src/libmudflap/Makefile.in	2009-12-22
+@@ -320,7 +320,7 @@
+ 
+ libmudflap_la_LIBADD = 
+ libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD)
+-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
++libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1
+ libmudflapth_la_SOURCES = \
+ 	mf-runtime.c \
+ 	mf-heuristics.c \
+@@ -331,7 +331,7 @@
+ libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH
+ libmudflapth_la_LIBADD = 
+ libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
+-libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
++libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1
+ 
+ # XXX hack alert
+ # From libffi/Makefile.am
+--- a/src/libobjc/Makefile.in.orig	2009-08-23
++++ b/src/libobjc/Makefile.in	2009-12-22
+@@ -282,12 +282,14 @@
+ libobjc$(libsuffix).la: $(OBJS)
+ 	$(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \
+ 		-rpath $(toolexeclibdir) \
++		-Wl,-O1 \
+ 		-version-info $(LIBOBJC_VERSION) $(extra_ldflags_libobjc) \
+ 		$(LTLDFLAGS)
+ 
+ libobjc_gc$(libsuffix).la: $(OBJS_GC)
+ 	$(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) $(OBJC_BOEHM_GC_LIBS) \
+ 		-rpath $(toolexeclibdir) \
++		-Wl,-O1 \
+ 		-version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) \
+ 		$(LTLDFLAGS)
+ 
+--- a/src/libstdc++-v3/src/Makefile.am.orig	2009-12-21
++++ b/src/libstdc++-v3/src/Makefile.am	2009-12-22
+@@ -207,6 +207,7 @@
+ 	$(top_builddir)/libsupc++/libsupc++convenience.la
+ 
+ libstdc___la_LDFLAGS = \
++	-Wl,-O1 \
+ 	-version-info $(libtool_VERSION) ${version_arg} -lm 
+ 
+ libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
+--- a/src/libstdc++-v3/src/Makefile.in.orig	2009-12-21
++++ b/src/libstdc++-v3/src/Makefile.in	2009-12-22
+@@ -444,6 +444,7 @@
+ 	$(top_builddir)/libsupc++/libsupc++convenience.la
+ 
+ libstdc___la_LDFLAGS = \
++	-Wl,-O1 \
+ 	-version-info $(libtool_VERSION) ${version_arg} -lm 
+ 
+ libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
--- gcc-4.6-4.6.3.orig/debian/patches/pr48226.diff
+++ gcc-4.6-4.6.3/debian/patches/pr48226.diff
@@ -0,0 +1,33 @@
+# DP: Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX.
+
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr48226.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_vsx_ok } */
++/* { dg-options "-O3 -mcpu=power7" } */
++
++/* The bug shows up if you compile with -maltivec or -mcpu=power7, due to one
++   of the vector's being eliminated due to rs6000_macro_to_expand being called
++   recursively.  */
++
++struct vector {
++  float v[4];
++};
++
++struct vector vector = { 1.0, 2.0, 3.0, 4.0 };
+--- a/src/gcc/config/rs6000/rs6000-c.c
++++ b/src/gcc/config/rs6000/rs6000-c.c
+@@ -182,7 +182,10 @@
+ 	  expand_this = C_CPP_HASHNODE (__vector_keyword);
+ 	  expand_bool_pixel = __bool_keyword;
+ 	}
+-      else if (ident)
++      /* The boost libraries have code with Iterator::vector vector in it.  If
++	 we allow the normal handling, this module will be called recursively,
++	 and the vector will be skipped.; */
++      else if (ident && (ident != C_CPP_HASHNODE (__vector_keyword)))
+ 	{
+ 	  enum rid rid_code = (enum rid)(ident->rid_code);
+ 	  if (ident->type == NT_MACRO)
--- gcc-4.6-4.6.3.orig/debian/patches/mips-fix-loongson2f-nop.diff
+++ gcc-4.6-4.6.3/debian/patches/mips-fix-loongson2f-nop.diff
@@ -0,0 +1,13 @@
+# DP: On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop
+# DP: is not passed.
+
+--- a/src/gcc/config/mips/mips.h
++++ b/src/gcc/config/mips/mips.h
+@@ -1142,6 +1142,7 @@
+ %{mshared} %{mno-shared} \
+ %{msym32} %{mno-sym32} \
+ %{mtune=*} \
++%{!mno-fix-loongson2f-nop:-mfix-loongson2f-nop} \
+ %(subtarget_asm_spec)"
+ 
+ /* Extra switches sometimes passed to the linker.  */
--- gcc-4.6-4.6.3.orig/debian/patches/pr47487.diff
+++ gcc-4.6-4.6.3/debian/patches/pr47487.diff
@@ -0,0 +1,24 @@
+# DP: Fix PR target/47487 powerpc64 ICE building libgo
+
+
+	PR target/47487
+	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Support
+	GNU Go in traceback table.
+
+--- a/src/gcc/config/rs6000/rs6000.c
++++ b/src/gcc/config/rs6000/rs6000.c
+@@ -22053,10 +22053,11 @@
+ 	 use language_string.
+ 	 C is 0.  Fortran is 1.  Pascal is 2.  Ada is 3.  C++ is 9.
+ 	 Java is 13.  Objective-C is 14.  Objective-C++ isn't assigned
+-	 a number, so for now use 9.  LTO isn't assigned a number either,
+-	 so for now use 0.  */
++	 a number, so for now use 9.  LTO and Go aren't assigned numbers
++	 either, so for now use 0.  */
+       if (! strcmp (language_string, "GNU C")
+-	  || ! strcmp (language_string, "GNU GIMPLE"))
++	  || ! strcmp (language_string, "GNU GIMPLE")
++	  || ! strcmp (language_string, "GNU Go"))
+ 	i = 0;
+       else if (! strcmp (language_string, "GNU F77")
+ 	       || ! strcmp (language_string, "GNU Fortran"))
--- gcc-4.6-4.6.3.orig/debian/patches/libffi-powerpc-sf.diff
+++ gcc-4.6-4.6.3/debian/patches/libffi-powerpc-sf.diff
@@ -0,0 +1,971 @@
+>From 95d80e11f6d14da32c9e117321658c27155e313a Mon Sep 17 00:00:00 2001
+From: Kyle Moffett <Kyle.D.Moffett@boeing.com>
+Date: Tue, 16 Aug 2011 14:46:50 -0400
+Subject: [PATCH] PowerPC: Debug and fix soft-floating-point support
+
+There were a wide range of bugs in this code, including long-double
+register alignment issues, assignments to global constants (which were
+actually stored as non-constant integers).
+
+This passes the testsuite on soft-floating-point PowerPC, and it builds
+and passes the testsuite on PowerPC e500 systems which cannot even
+assemble the regular floating-point instruction set.
+
+Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
+---
+ src/powerpc/ffi.c         |  533 ++++++++++++++++++++++++---------------------
+ src/powerpc/ffitarget.h   |   14 +-
+ src/powerpc/ppc_closure.S |   19 ++
+ src/powerpc/sysv.S        |    6 +
+ 4 files changed, 310 insertions(+), 262 deletions(-)
+
+--- a/src/libffi/src/powerpc/ffi.c
++++ b/src/libffi/src/powerpc/ffi.c
+@@ -39,7 +39,9 @@
+   /* The assembly depends on these exact flags.  */
+   FLAG_RETURNS_SMST	= 1 << (31-31), /* Used for FFI_SYSV small structs.  */
+   FLAG_RETURNS_NOTHING  = 1 << (31-30), /* These go in cr7 */
++#ifndef __NO_FPRS__
+   FLAG_RETURNS_FP       = 1 << (31-29),
++#endif
+   FLAG_RETURNS_64BITS   = 1 << (31-28),
+ 
+   FLAG_RETURNS_128BITS  = 1 << (31-27), /* cr6  */
+@@ -50,21 +52,20 @@
+   /* Bits (31-24) through (31-19) store shift value for SMST */
+ 
+   FLAG_ARG_NEEDS_COPY   = 1 << (31- 7),
++#ifndef __NO_FPRS__
+   FLAG_FP_ARGUMENTS     = 1 << (31- 6), /* cr1.eq; specified by ABI */
++#endif
+   FLAG_4_GPR_ARGUMENTS  = 1 << (31- 5),
+   FLAG_RETVAL_REFERENCE = 1 << (31- 4)
+ };
+ 
+ /* About the SYSV ABI.  */
+-unsigned int NUM_GPR_ARG_REGISTERS = 8;
++#define ASM_NEEDS_REGISTERS 4
++#define NUM_GPR_ARG_REGISTERS 8
+ #ifndef __NO_FPRS__
+-unsigned int NUM_FPR_ARG_REGISTERS = 8;
+-#else
+-unsigned int NUM_FPR_ARG_REGISTERS = 0;
++# define NUM_FPR_ARG_REGISTERS 8
+ #endif
+ 
+-enum { ASM_NEEDS_REGISTERS = 4 };
+-
+ /* ffi_prep_args_SYSV is called by the assembly routine once stack space
+    has been allocated for the function's arguments.
+ 
+@@ -113,10 +114,12 @@
+   valp gpr_base;
+   int intarg_count;
+ 
++#ifndef __NO_FPRS__
+   /* 'fpr_base' points at the space for fpr1, and grows upwards as
+      we use FPR registers.  */
+   valp fpr_base;
+   int fparg_count;
++#endif
+ 
+   /* 'copy_space' grows down as we put structures in it.  It should
+      stay 16-byte aligned.  */
+@@ -125,9 +128,8 @@
+   /* 'next_arg' grows up as we put parameters in it.  */
+   valp next_arg;
+ 
+-  int i, ii MAYBE_UNUSED;
++  int i;
+   ffi_type **ptr;
+-  double double_tmp;
+   union {
+     void **v;
+     char **c;
+@@ -143,15 +145,16 @@
+   size_t struct_copy_size;
+   unsigned gprvalue;
+ 
+-  if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
+-    NUM_FPR_ARG_REGISTERS = 0;
+-
+   stacktop.c = (char *) stack + bytes;
+   gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
+   intarg_count = 0;
++#ifndef __NO_FPRS__
+   fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
+   fparg_count = 0;
+   copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
++#else
++  copy_space.c = gpr_base.c;
++#endif
+   next_arg.u = stack + 2;
+ 
+   /* Check that everything starts aligned properly.  */
+@@ -174,12 +177,29 @@
+        i > 0;
+        i--, ptr++, p_argv.v++)
+     {
+-      switch ((*ptr)->type)
+-	{
++      unsigned short typenum = (*ptr)->type;
++
++      /* We may need to handle some values depending on ABI */
++      if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT) {
++		if (typenum == FFI_TYPE_FLOAT)
++			typenum = FFI_TYPE_UINT32;
++		if (typenum == FFI_TYPE_DOUBLE)
++			typenum = FFI_TYPE_UINT64;
++		if (typenum == FFI_TYPE_LONGDOUBLE)
++			typenum = FFI_TYPE_UINT128;
++      } else if (ecif->cif->abi != FFI_LINUX) {
++#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
++		if (typenum == FFI_TYPE_LONGDOUBLE)
++			typenum = FFI_TYPE_STRUCT;
++#endif
++      }
++
++      /* Now test the translated value */
++      switch (typenum) {
++        double double_tmp;
++#ifndef __NO_FPRS__
+ 	case FFI_TYPE_FLOAT:
+ 	  /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32.  */
+-	  if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	    goto soft_float_prep;
+ 	  double_tmp = **p_argv.f;
+ 	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
+ 	    {
+@@ -195,8 +215,6 @@
+ 
+ 	case FFI_TYPE_DOUBLE:
+ 	  /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64.  */
+-	  if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	    goto soft_double_prep;
+ 	  double_tmp = **p_argv.d;
+ 
+ 	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
+@@ -218,43 +236,6 @@
+ 
+ #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ 	case FFI_TYPE_LONGDOUBLE:
+-	  if ((ecif->cif->abi != FFI_LINUX)
+-		&& (ecif->cif->abi != FFI_LINUX_SOFT_FLOAT))
+-	    goto do_struct;
+-	  /* The soft float ABI for long doubles works like this,
+-	     a long double is passed in four consecutive gprs if available.
+-	     A maximum of 2 long doubles can be passed in gprs.
+-	     If we do not have 4 gprs left, the long double is passed on the
+-	     stack, 4-byte aligned.  */
+-	  if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	    {
+-	      unsigned int int_tmp = (*p_argv.ui)[0];
+-	      if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3)
+-		{
+-		  if (intarg_count < NUM_GPR_ARG_REGISTERS)
+-		    intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
+-		  *next_arg.u = int_tmp;
+-		  next_arg.u++;
+-		  for (ii = 1; ii < 4; ii++)
+-		    {
+-		      int_tmp = (*p_argv.ui)[ii];
+-		      *next_arg.u = int_tmp;
+-		      next_arg.u++;
+-		    }
+-		}
+-	      else
+-		{
+-		  *gpr_base.u++ = int_tmp;
+-		  for (ii = 1; ii < 4; ii++)
+-		    {
+-		      int_tmp = (*p_argv.ui)[ii];
+-		      *gpr_base.u++ = int_tmp;
+-		    }
+-		}
+-	      intarg_count +=4;
+-	    }
+-	  else
+-	    {
+ 	      double_tmp = (*p_argv.d)[0];
+ 
+ 	      if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1)
+@@ -280,13 +261,40 @@
+ 
+ 	      fparg_count += 2;
+ 	      FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
+-	    }
+ 	  break;
+ #endif
++#endif /* have FPRs */
++	
++	/* 
++	 * The soft float ABI for long doubles works like this, a long double
++	 * is passed in four consecutive GPRs if available.  A maximum of 2
++	 * long doubles can be passed in gprs.  If we do not have 4 GPRs
++	 * left, the long double is passed on the stack, 4-byte aligned.
++	 */
++	case FFI_TYPE_UINT128: {
++		unsigned int int_tmp = (*p_argv.ui)[0];
++		unsigned int ii;
++		if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3) {
++			if (intarg_count < NUM_GPR_ARG_REGISTERS)
++				intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
++			*(next_arg.u++) = int_tmp;
++			for (ii = 1; ii < 4; ii++) {
++				int_tmp = (*p_argv.ui)[ii];
++				*(next_arg.u++) = int_tmp;
++			}
++		} else {
++			*(gpr_base.u++) = int_tmp;
++			for (ii = 1; ii < 4; ii++) {
++				int_tmp = (*p_argv.ui)[ii];
++				*(gpr_base.u++) = int_tmp;
++			}
++		}
++		intarg_count += 4;
++		break;
++	}
+ 
+ 	case FFI_TYPE_UINT64:
+ 	case FFI_TYPE_SINT64:
+-	soft_double_prep:
+ 	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1)
+ 	    intarg_count++;
+ 	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
+@@ -319,9 +327,6 @@
+ 	  break;
+ 
+ 	case FFI_TYPE_STRUCT:
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+-	do_struct:
+-#endif
+ 	  struct_copy_size = ((*ptr)->size + 15) & ~0xF;
+ 	  copy_space.c -= struct_copy_size;
+ 	  memcpy (copy_space.c, *p_argv.c, (*ptr)->size);
+@@ -349,7 +354,6 @@
+ 	case FFI_TYPE_UINT32:
+ 	case FFI_TYPE_SINT32:
+ 	case FFI_TYPE_POINTER:
+-	soft_float_prep:
+ 
+ 	  gprvalue = **p_argv.ui;
+ 
+@@ -366,8 +370,10 @@
+   /* Check that we didn't overrun the stack...  */
+   FFI_ASSERT (copy_space.c >= next_arg.c);
+   FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS);
++#ifndef __NO_FPRS__
+   FFI_ASSERT (fpr_base.u
+ 	      <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
++#endif
+   FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
+ }
+ 
+@@ -604,9 +610,6 @@
+   unsigned type = cif->rtype->type;
+   unsigned size = cif->rtype->size;
+ 
+-  if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+-    NUM_FPR_ARG_REGISTERS = 0;
+-
+   if (cif->abi != FFI_LINUX64)
+     {
+       /* All the machine-independent calculation of cif->bytes will be wrong.
+@@ -646,25 +649,38 @@
+      - Single/double FP values in fpr1, long double in fpr1,fpr2.
+      - soft-float float/doubles are treated as UINT32/UINT64 respectivley.
+      - soft-float long doubles are returned in gpr3-gpr6.  */
++  /* First translate for softfloat/nonlinux */
++  if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
++	if (type == FFI_TYPE_FLOAT)
++		type = FFI_TYPE_UINT32;
++	if (type == FFI_TYPE_DOUBLE)
++		type = FFI_TYPE_UINT64;
++	if (type == FFI_TYPE_LONGDOUBLE)
++		type = FFI_TYPE_UINT128;
++  } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
++#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
++	if (type == FFI_TYPE_LONGDOUBLE)
++		type = FFI_TYPE_STRUCT;
++#endif
++  }
++
+   switch (type)
+     {
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
++#ifndef __NO_FPRS__
+     case FFI_TYPE_LONGDOUBLE:
+-      if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64
+-	&& cif->abi != FFI_LINUX_SOFT_FLOAT)
+-	goto byref;
+       flags |= FLAG_RETURNS_128BITS;
+       /* Fall through.  */
+-#endif
+     case FFI_TYPE_DOUBLE:
+       flags |= FLAG_RETURNS_64BITS;
+       /* Fall through.  */
+     case FFI_TYPE_FLOAT:
+-      /* With FFI_LINUX_SOFT_FLOAT no fp registers are used.  */
+-      if (cif->abi != FFI_LINUX_SOFT_FLOAT)
+-	flags |= FLAG_RETURNS_FP;
++      flags |= FLAG_RETURNS_FP;
+       break;
++#endif
+ 
++    case FFI_TYPE_UINT128:
++      flags |= FLAG_RETURNS_128BITS;
++      /* Fall through.  */
+     case FFI_TYPE_UINT64:
+     case FFI_TYPE_SINT64:
+       flags |= FLAG_RETURNS_64BITS;
+@@ -699,9 +715,6 @@
+ 		}
+ 	    }
+ 	}
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+-    byref:
+-#endif
+       intarg_count++;
+       flags |= FLAG_RETVAL_REFERENCE;
+       /* Fall through.  */
+@@ -722,39 +735,36 @@
+        Stuff on the stack needs to keep proper alignment.  */
+     for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
+       {
+-	switch ((*ptr)->type)
+-	  {
++	unsigned short typenum = (*ptr)->type;
++
++	/* We may need to handle some values depending on ABI */
++	if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
++		if (typenum == FFI_TYPE_FLOAT)
++			typenum = FFI_TYPE_UINT32;
++		if (typenum == FFI_TYPE_DOUBLE)
++			typenum = FFI_TYPE_UINT64;
++		if (typenum == FFI_TYPE_LONGDOUBLE)
++			typenum = FFI_TYPE_UINT128;
++	} else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
++#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
++		if (typenum == FFI_TYPE_LONGDOUBLE)
++			typenum = FFI_TYPE_STRUCT;
++#endif
++	}
++
++	switch (typenum) {
++#ifndef __NO_FPRS__
+ 	  case FFI_TYPE_FLOAT:
+-	    /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32.  */
+-	    if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	      goto soft_float_cif;
+ 	    fparg_count++;
+ 	    /* floating singles are not 8-aligned on stack */
+ 	    break;
+ 
+ #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ 	  case FFI_TYPE_LONGDOUBLE:
+-	    if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
+-	      goto do_struct;
+-	    if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	      {
+-		if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3
+-		  || intarg_count < NUM_GPR_ARG_REGISTERS)
+-		  /* A long double in FFI_LINUX_SOFT_FLOAT can use only
+-		     a set of four consecutive gprs. If we have not enough,
+-		     we have to adjust the intarg_count value.  */
+-		  intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
+-		intarg_count += 4;
+-		break;
+-	      }
+-	    else
+-	      fparg_count++;
++	    fparg_count++;
+ 	    /* Fall thru */
+ #endif
+ 	  case FFI_TYPE_DOUBLE:
+-	    /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64.  */
+-	    if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	      goto soft_double_cif;
+ 	    fparg_count++;
+ 	    /* If this FP arg is going on the stack, it must be
+ 	       8-byte-aligned.  */
+@@ -763,10 +773,21 @@
+ 		&& intarg_count % 2 != 0)
+ 	      intarg_count++;
+ 	    break;
++#endif
++	  case FFI_TYPE_UINT128:
++		/* 
++		 * A long double in FFI_LINUX_SOFT_FLOAT can use only a set
++		 * of four consecutive gprs. If we do not have enough, we
++		 * have to adjust the intarg_count value.
++		 */
++		if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3
++				&& intarg_count < NUM_GPR_ARG_REGISTERS)
++			intarg_count = NUM_GPR_ARG_REGISTERS;
++		intarg_count += 4;
++		break;
+ 
+ 	  case FFI_TYPE_UINT64:
+ 	  case FFI_TYPE_SINT64:
+-	  soft_double_cif:
+ 	    /* 'long long' arguments are passed as two words, but
+ 	       either both words must fit in registers or both go
+ 	       on the stack.  If they go on the stack, they must
+@@ -783,9 +804,6 @@
+ 	    break;
+ 
+ 	  case FFI_TYPE_STRUCT:
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+-	  do_struct:
+-#endif
+ 	    /* We must allocate space for a copy of these to enforce
+ 	       pass-by-value.  Pad the space up to a multiple of 16
+ 	       bytes (the maximum alignment required for anything under
+@@ -793,12 +811,20 @@
+ 	    struct_copy_size += ((*ptr)->size + 15) & ~0xF;
+ 	    /* Fall through (allocate space for the pointer).  */
+ 
+-	  default:
+-	  soft_float_cif:
++	  case FFI_TYPE_POINTER:
++	  case FFI_TYPE_INT:
++	  case FFI_TYPE_UINT32:
++	  case FFI_TYPE_SINT32:
++	  case FFI_TYPE_UINT16:
++	  case FFI_TYPE_SINT16:
++	  case FFI_TYPE_UINT8:
++	  case FFI_TYPE_SINT8:
+ 	    /* Everything else is passed as a 4-byte word in a GPR, either
+ 	       the object itself or a pointer to it.  */
+ 	    intarg_count++;
+ 	    break;
++	  default:
++		FFI_ASSERT (0);
+ 	  }
+       }
+   else
+@@ -827,16 +853,29 @@
+ 	    intarg_count += ((*ptr)->size + 7) / 8;
+ 	    break;
+ 
+-	  default:
++	  case FFI_TYPE_POINTER:
++	  case FFI_TYPE_UINT64:
++	  case FFI_TYPE_SINT64:
++	  case FFI_TYPE_INT:
++	  case FFI_TYPE_UINT32:
++	  case FFI_TYPE_SINT32:
++	  case FFI_TYPE_UINT16:
++	  case FFI_TYPE_SINT16:
++	  case FFI_TYPE_UINT8:
++	  case FFI_TYPE_SINT8:
+ 	    /* Everything else is passed as a 8-byte word in a GPR, either
+ 	       the object itself or a pointer to it.  */
+ 	    intarg_count++;
+ 	    break;
++	  default:
++		FFI_ASSERT (0);
+ 	  }
+       }
+ 
++#ifndef __NO_FPRS__
+   if (fparg_count != 0)
+     flags |= FLAG_FP_ARGUMENTS;
++#endif
+   if (intarg_count > 4)
+     flags |= FLAG_4_GPR_ARGUMENTS;
+   if (struct_copy_size != 0)
+@@ -844,21 +883,27 @@
+ 
+   if (cif->abi != FFI_LINUX64)
+     {
++#ifndef __NO_FPRS__
+       /* Space for the FPR registers, if needed.  */
+       if (fparg_count != 0)
+ 	bytes += NUM_FPR_ARG_REGISTERS * sizeof (double);
++#endif
+ 
+       /* Stack space.  */
+       if (intarg_count > NUM_GPR_ARG_REGISTERS)
+ 	bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int);
++#ifndef __NO_FPRS__
+       if (fparg_count > NUM_FPR_ARG_REGISTERS)
+ 	bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double);
++#endif
+     }
+   else
+     {
++#ifndef __NO_FPRS__
+       /* Space for the FPR registers, if needed.  */
+       if (fparg_count != 0)
+ 	bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double);
++#endif
+ 
+       /* Stack space.  */
+       if (intarg_count > NUM_GPR_ARG_REGISTERS64)
+@@ -905,9 +950,11 @@
+   switch (cif->abi)
+     {
+ #ifndef POWERPC64
++# ifndef __NO_FPRS__
+     case FFI_SYSV:
+     case FFI_GCC_SYSV:
+     case FFI_LINUX:
++# endif
+     case FFI_LINUX_SOFT_FLOAT:
+       ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
+       break;
+@@ -1011,32 +1058,38 @@
+   void **          avalue;
+   ffi_type **      arg_types;
+   long             i, avn;
+-  long             nf;   /* number of floating registers already used */
+-  long             ng;   /* number of general registers already used */
+-  ffi_cif *        cif;
+-  double           temp;
+-  unsigned         size;
++#ifndef __NO_FPRS__
++  long             nf = 0;   /* number of floating registers already used */
++#endif
++  long             ng = 0;   /* number of general registers already used */
++
++  ffi_cif *cif = closure->cif;
++  unsigned       size     = cif->rtype->size;
++  unsigned short rtypenum = cif->rtype->type;
+ 
+-  cif = closure->cif;
+   avalue = alloca (cif->nargs * sizeof (void *));
+-  size = cif->rtype->size;
+ 
+-  nf = 0;
+-  ng = 0;
++  /* First translate for softfloat/nonlinux */
++  if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
++	if (rtypenum == FFI_TYPE_FLOAT)
++		rtypenum = FFI_TYPE_UINT32;
++	if (rtypenum == FFI_TYPE_DOUBLE)
++		rtypenum = FFI_TYPE_UINT64;
++	if (rtypenum == FFI_TYPE_LONGDOUBLE)
++		rtypenum = FFI_TYPE_UINT128;
++  } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
++#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
++	if (rtypenum == FFI_TYPE_LONGDOUBLE)
++		rtypenum = FFI_TYPE_STRUCT;
++#endif
++  }
++
+ 
+   /* Copy the caller's structure return value address so that the closure
+      returns the data directly to the caller.
+      For FFI_SYSV the result is passed in r3/r4 if the struct size is less
+      or equal 8 bytes.  */
+-
+-  if ((cif->rtype->type == FFI_TYPE_STRUCT
+-       && !((cif->abi == FFI_SYSV) && (size <= 8)))
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+-      || (cif->rtype->type == FFI_TYPE_LONGDOUBLE
+-	  && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
+-#endif
+-      )
+-    {
++  if (rtypenum == FFI_TYPE_STRUCT && ((cif->abi != FFI_SYSV) || (size > 8))) {
+       rvalue = (void *) *pgr;
+       ng++;
+       pgr++;
+@@ -1047,10 +1100,109 @@
+   arg_types = cif->arg_types;
+ 
+   /* Grab the addresses of the arguments from the stack frame.  */
+-  while (i < avn)
+-    {
+-      switch (arg_types[i]->type)
+-	{
++  while (i < avn) {
++      unsigned short typenum = arg_types[i]->type;
++
++      /* We may need to handle some values depending on ABI */
++      if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
++		if (typenum == FFI_TYPE_FLOAT)
++			typenum = FFI_TYPE_UINT32;
++		if (typenum == FFI_TYPE_DOUBLE)
++			typenum = FFI_TYPE_UINT64;
++		if (typenum == FFI_TYPE_LONGDOUBLE)
++			typenum = FFI_TYPE_UINT128;
++      } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
++#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
++		if (typenum == FFI_TYPE_LONGDOUBLE)
++			typenum = FFI_TYPE_STRUCT;
++#endif
++      }
++
++      switch (typenum) {
++#ifndef __NO_FPRS__
++	case FFI_TYPE_FLOAT:
++	  /* unfortunately float values are stored as doubles
++	   * in the ffi_closure_SYSV code (since we don't check
++	   * the type in that routine).
++	   */
++
++	  /* there are 8 64bit floating point registers */
++
++	  if (nf < 8)
++	    {
++	      double temp = pfr->d;
++	      pfr->f = (float) temp;
++	      avalue[i] = pfr;
++	      nf++;
++	      pfr++;
++	    }
++	  else
++	    {
++	      /* FIXME? here we are really changing the values
++	       * stored in the original calling routines outgoing
++	       * parameter stack.  This is probably a really
++	       * naughty thing to do but...
++	       */
++	      avalue[i] = pst;
++	      pst += 1;
++	    }
++	  break;
++
++	case FFI_TYPE_DOUBLE:
++	  /* On the outgoing stack all values are aligned to 8 */
++	  /* there are 8 64bit floating point registers */
++
++	  if (nf < 8)
++	    {
++	      avalue[i] = pfr;
++	      nf++;
++	      pfr++;
++	    }
++	  else
++	    {
++	      if (((long) pst) & 4)
++		pst++;
++	      avalue[i] = pst;
++	      pst += 2;
++	    }
++	  break;
++
++#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
++	case FFI_TYPE_LONGDOUBLE:
++	  if (nf < 7)
++	    {
++	      avalue[i] = pfr;
++	      pfr += 2;
++	      nf += 2;
++	    }
++	  else
++	    {
++	      if (((long) pst) & 4)
++		pst++;
++	      avalue[i] = pst;
++	      pst += 4;
++	      nf = 8;
++	    }
++	  break;
++#endif
++#endif /* have FPRS */
++
++	case FFI_TYPE_UINT128:
++		/* 
++		 * Test if for the whole long double, 4 gprs are available.
++		 * otherwise the stuff ends up on the stack.
++		 */
++		if (ng < 5) {
++			avalue[i] = pgr;
++			pgr += 4;
++			ng += 4;
++		} else {
++			avalue[i] = pst;
++			pst += 4;
++			ng = 8+4;
++		}
++		break;
++
+ 	case FFI_TYPE_SINT8:
+ 	case FFI_TYPE_UINT8:
+ 	  /* there are 8 gpr registers used to pass values */
+@@ -1086,7 +1238,6 @@
+ 	case FFI_TYPE_SINT32:
+ 	case FFI_TYPE_UINT32:
+ 	case FFI_TYPE_POINTER:
+-	soft_float_closure:
+ 	  /* there are 8 gpr registers used to pass values */
+ 	  if (ng < 8)
+ 	    {
+@@ -1102,9 +1253,6 @@
+ 	  break;
+ 
+ 	case FFI_TYPE_STRUCT:
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+-	do_struct:
+-#endif
+ 	  /* Structs are passed by reference. The address will appear in a
+ 	     gpr if it is one of the first 8 arguments.  */
+ 	  if (ng < 8)
+@@ -1122,7 +1270,6 @@
+ 
+ 	case FFI_TYPE_SINT64:
+ 	case FFI_TYPE_UINT64:
+-	soft_double_closure:
+ 	  /* passing long long ints are complex, they must
+ 	   * be passed in suitable register pairs such as
+ 	   * (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10)
+@@ -1154,99 +1301,8 @@
+ 	    }
+ 	  break;
+ 
+-	case FFI_TYPE_FLOAT:
+-	  /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32.  */
+-	  if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	    goto soft_float_closure;
+-	  /* unfortunately float values are stored as doubles
+-	   * in the ffi_closure_SYSV code (since we don't check
+-	   * the type in that routine).
+-	   */
+-
+-	  /* there are 8 64bit floating point registers */
+-
+-	  if (nf < 8)
+-	    {
+-	      temp = pfr->d;
+-	      pfr->f = (float) temp;
+-	      avalue[i] = pfr;
+-	      nf++;
+-	      pfr++;
+-	    }
+-	  else
+-	    {
+-	      /* FIXME? here we are really changing the values
+-	       * stored in the original calling routines outgoing
+-	       * parameter stack.  This is probably a really
+-	       * naughty thing to do but...
+-	       */
+-	      avalue[i] = pst;
+-	      pst += 1;
+-	    }
+-	  break;
+-
+-	case FFI_TYPE_DOUBLE:
+-	  /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64.  */
+-	  if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	    goto soft_double_closure;
+-	  /* On the outgoing stack all values are aligned to 8 */
+-	  /* there are 8 64bit floating point registers */
+-
+-	  if (nf < 8)
+-	    {
+-	      avalue[i] = pfr;
+-	      nf++;
+-	      pfr++;
+-	    }
+-	  else
+-	    {
+-	      if (((long) pst) & 4)
+-		pst++;
+-	      avalue[i] = pst;
+-	      pst += 2;
+-	    }
+-	  break;
+-
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+-	case FFI_TYPE_LONGDOUBLE:
+-	  if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
+-	    goto do_struct;
+-	  if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+-	    { /* Test if for the whole long double, 4 gprs are available.
+-		 otherwise the stuff ends up on the stack.  */
+-	      if (ng < 5)
+-		{
+-		  avalue[i] = pgr;
+-		  pgr += 4;
+-		  ng += 4;
+-		}
+-	      else
+-		{
+-		  avalue[i] = pst;
+-		  pst += 4;
+-		  ng = 8;
+-		}
+-	      break;
+-	    }
+-	  if (nf < 7)
+-	    {
+-	      avalue[i] = pfr;
+-	      pfr += 2;
+-	      nf += 2;
+-	    }
+-	  else
+-	    {
+-	      if (((long) pst) & 4)
+-		pst++;
+-	      avalue[i] = pst;
+-	      pst += 4;
+-	      nf = 8;
+-	    }
+-	  break;
+-#endif
+-
+ 	default:
+-	  FFI_ASSERT (0);
++		FFI_ASSERT (0);
+ 	}
+ 
+       i++;
+@@ -1263,39 +1319,9 @@
+      already used and we never have a struct with size zero. That is the reason
+      for the subtraction of 1. See the comment in ffitarget.h about ordering.
+   */
+-  if (cif->abi == FFI_SYSV && cif->rtype->type == FFI_TYPE_STRUCT
+-      && size <= 8)
++  if (cif->abi == FFI_SYSV && rtypenum == FFI_TYPE_STRUCT && size <= 8)
+     return (FFI_SYSV_TYPE_SMALL_STRUCT - 1) + size;
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+-  else if (cif->rtype->type == FFI_TYPE_LONGDOUBLE
+-	   && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
+-    return FFI_TYPE_STRUCT;
+-#endif
+-  /* With FFI_LINUX_SOFT_FLOAT floats and doubles are handled like UINT32
+-     respectivley UINT64.  */
+-  if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+-    {
+-      switch (cif->rtype->type)
+-	{
+-	case FFI_TYPE_FLOAT:
+-	  return FFI_TYPE_UINT32;
+-	  break;
+-	case FFI_TYPE_DOUBLE:
+-	  return FFI_TYPE_UINT64;
+-	  break;
+-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+-	case FFI_TYPE_LONGDOUBLE:
+-	  return FFI_TYPE_UINT128;
+-	  break;
+-#endif
+-	default:
+-	  return cif->rtype->type;
+-	}
+-    }
+-  else
+-    {
+-      return cif->rtype->type;
+-    }
++  return rtypenum;
+ }
+ 
+ int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *,
+--- a/src/libffi/src/powerpc/ffitarget.h
++++ b/src/libffi/src/powerpc/ffitarget.h
+@@ -60,18 +60,14 @@
+   FFI_LINUX64,
+   FFI_LINUX,
+   FFI_LINUX_SOFT_FLOAT,
+-# ifdef POWERPC64
++# if defined(POWERPC64)
+   FFI_DEFAULT_ABI = FFI_LINUX64,
+-# else
+-#  if (!defined(__NO_FPRS__) && (__LDBL_MANT_DIG__ == 106))
+-  FFI_DEFAULT_ABI = FFI_LINUX,
+-#  else
+-#   ifdef __NO_FPRS__
++# elif defined(__NO_FPRS__)
+   FFI_DEFAULT_ABI = FFI_LINUX_SOFT_FLOAT,
+-#   else
++# elif (__LDBL_MANT_DIG__ == 106)
++  FFI_DEFAULT_ABI = FFI_LINUX,
++# else
+   FFI_DEFAULT_ABI = FFI_GCC_SYSV,
+-#   endif
+-#  endif
+ # endif
+ #endif
+ 
+--- a/src/libffi/src/powerpc/ppc_closure.S
++++ b/src/libffi/src/powerpc/ppc_closure.S
+@@ -122,22 +122,41 @@
+ 	blr
+ 
+ # case FFI_TYPE_FLOAT
++#ifndef __NO_FPRS__
+ 	lfs %f1,112+0(%r1)
+ 	mtlr %r0
+ 	addi %r1,%r1,144
++#else
++	nop
++	nop
++	nop
++#endif
+ 	blr
+ 
+ # case FFI_TYPE_DOUBLE
++#ifndef __NO_FPRS__
+ 	lfd %f1,112+0(%r1)
+ 	mtlr %r0
+ 	addi %r1,%r1,144
++#else
++	nop
++	nop
++	nop
++#endif
+ 	blr
+ 
+ # case FFI_TYPE_LONGDOUBLE
++#ifndef __NO_FPRS__
+ 	lfd %f1,112+0(%r1)
+ 	lfd %f2,112+8(%r1)
+ 	mtlr %r0
+ 	b .Lfinish
++#else
++	nop
++	nop
++	nop
++	blr
++#endif
+ 
+ # case FFI_TYPE_UINT8
+ 	lbz %r3,112+3(%r1)
+--- a/src/libffi/src/powerpc/sysv.S
++++ b/src/libffi/src/powerpc/sysv.S
+@@ -83,6 +83,7 @@
+ 	nop
+ 1:
+ 
++#ifndef __NO_FPRS__
+ 	/* Load all the FP registers.  */
+ 	bf-	6,2f
+ 	lfd	%f1,-16-(8*4)-(8*8)(%r28)
+@@ -94,6 +95,7 @@
+ 	lfd	%f6,-16-(8*4)-(3*8)(%r28)
+ 	lfd	%f7,-16-(8*4)-(2*8)(%r28)
+ 	lfd	%f8,-16-(8*4)-(1*8)(%r28)
++#endif
+ 2:
+ 
+ 	/* Make the call.  */
+@@ -103,7 +105,9 @@
+ 	mtcrf	0x01,%r31 /* cr7  */
+ 	bt-	31,L(small_struct_return_value)
+ 	bt-	30,L(done_return_value)
++#ifndef __NO_FPRS__
+ 	bt-	29,L(fp_return_value)
++#endif
+ 	stw	%r3,0(%r30)
+ 	bf+	28,L(done_return_value)
+ 	stw	%r4,4(%r30)
+@@ -124,6 +128,7 @@
+ 	lwz	%r1,0(%r1)
+ 	blr
+ 
++#ifndef __NO_FPRS__
+ L(fp_return_value):
+ 	bf	28,L(float_return_value)
+ 	stfd	%f1,0(%r30)
+@@ -134,6 +139,7 @@
+ L(float_return_value):
+ 	stfs	%f1,0(%r30)
+ 	b	L(done_return_value)
++#endif
+ 
+ L(small_struct_return_value):
+ 	extrwi	%r6,%r31,2,19         /* number of bytes padding = shift/8 */
--- gcc-4.6-4.6.3.orig/debian/patches/pr49756.diff
+++ gcc-4.6-4.6.3/debian/patches/pr49756.diff
@@ -0,0 +1,247 @@
+# DP: Fix PR c++/49756, backport from trunk
+
+gcc/
+
+2011-07-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/49756
+	* gcc.c (main): Call stack_limit_increase (64MB).
+	* toplev.c (toplev_main): Likewise.
+
+include/
+
+2011-07-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/49756
+	* libiberty.h (stack_limit_increase): New prototype.
+
+libiberty/
+
+2011-07-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/49756
+	* stack-limit.c: New file.
+	* Makefile.in: Regenerate deps.
+	(CFILES): Add stack-limit.c.
+	(REQUIRED_OFILES): Add ./stack-limit.$(objext).
+	* configure.ac (checkfuncs): Add getrlimit and setrlimit.
+	(AC_CHECK_FUNCS): Likewise.
+	* configure: Regenerated.
+	* config.in: Regenerated.
+
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -6161,6 +6161,10 @@
+   signal (SIGCHLD, SIG_DFL);
+ #endif
+ 
++  /* Parsing and gimplification sometimes need quite large stack.
++     Increase stack size limits if possible.  */
++  stack_limit_increase (64 * 1024 * 1024);
++
+   /* Allocate the argument vector.  */
+   alloc_args ();
+ 
+--- a/src/gcc/toplev.c
++++ b/src/gcc/toplev.c
+@@ -1916,6 +1916,10 @@
+ int
+ toplev_main (int argc, char **argv)
+ {
++  /* Parsing and gimplification sometimes need quite large stack.
++     Increase stack size limits if possible.  */
++  stack_limit_increase (64 * 1024 * 1024);
++
+   expandargv (&argc, &argv);
+ 
+   /* Initialization of GCC's environment, and diagnostics.  */
+--- a/src/include/libiberty.h
++++ b/src/include/libiberty.h
+@@ -1,7 +1,7 @@
+ /* Function declarations for libiberty.
+ 
+    Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+-   2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
++   2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+    
+    Note - certain prototypes declared in this header file are for
+    functions whoes implementation copyright does not belong to the
+@@ -637,6 +637,9 @@
+ /* Set the title of a process */
+ extern void setproctitle (const char *name, ...);
+ 
++/* Increase stack limit if possible.  */
++extern void stack_limit_increase (unsigned long);
++
+ #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+ 
+ /* Drastically simplified alloca configurator.  If we're using GCC,
+--- a/src/libiberty/configure.ac
++++ b/src/libiberty/configure.ac
+@@ -358,10 +358,10 @@
+ 
+ vars="sys_errlist sys_nerr sys_siglist"
+ 
+-checkfuncs="__fsetlocking canonicalize_file_name dup3 getrusage getsysinfo \
+- gettimeofday on_exit psignal pstat_getdynamic pstat_getstatic realpath \
+- sbrk spawnve spawnvpe strerror strsignal sysconf sysctl sysmp table \
+- times wait3 wait4"
++checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \
++ getsysinfo gettimeofday on_exit psignal pstat_getdynamic pstat_getstatic \
++ realpath setrlimit sbrk spawnve spawnvpe strerror strsignal sysconf sysctl \
++ sysmp table times wait3 wait4"
+ 
+ # These are neither executed nor required, but they help keep
+ # autoheader happy without adding a bunch of text to acconfig.h.
+@@ -371,13 +371,13 @@
+     calloc canonicalize_file_name clock \
+     dup3 \
+     ffs __fsetlocking \
+-    getcwd getpagesize getrusage getsysinfo gettimeofday \
++    getcwd getpagesize getrlimit getrusage getsysinfo gettimeofday \
+     index insque \
+     memchr memcmp memcpy memmem memmove memset mkstemps \
+     on_exit \
+     psignal pstat_getdynamic pstat_getstatic putenv \
+     random realpath rename rindex \
+-    sbrk setenv setproctitle sigsetmask snprintf spawnve spawnvpe \
++    sbrk setenv setproctitle setrlimit sigsetmask snprintf spawnve spawnvpe \
+      stpcpy stpncpy strcasecmp strchr strdup \
+      strerror strncasecmp strndup strrchr strsignal strstr strtod strtol \
+      strtoul strverscmp sysconf sysctl sysmp \
+--- a/src/libiberty/Makefile.in
++++ b/src/libiberty/Makefile.in
+@@ -2,7 +2,7 @@
+ # Originally written by K. Richard Pixley <rich@cygnus.com>.
+ #
+ # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+-# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
++# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ # Free Software Foundation
+ #
+ # This file is part of the libiberty library.
+@@ -148,10 +148,10 @@
+ 	 simple-object.c simple-object-coff.c simple-object-elf.c	\
+ 	 simple-object-mach-o.c						\
+          snprintf.c sort.c						\
+-	 spaces.c splay-tree.c stpcpy.c stpncpy.c strcasecmp.c		\
+-	 strchr.c strdup.c strerror.c strncasecmp.c strncmp.c		\
+-	 strrchr.c strsignal.c strstr.c strtod.c strtol.c strtoul.c	\
+-	 strndup.c strverscmp.c						\
++	 spaces.c splay-tree.c stack-limit.c stpcpy.c stpncpy.c		\
++	 strcasecmp.c strchr.c strdup.c strerror.c strncasecmp.c	\
++	 strncmp.c strrchr.c strsignal.c strstr.c strtod.c strtol.c	\
++	 strtoul.c strndup.c strverscmp.c				\
+ 	tmpnam.c							\
+ 	unlink-if-ordinary.c						\
+ 	vasprintf.c vfork.c vfprintf.c vprintf.c vsnprintf.c vsprintf.c	\
+@@ -183,7 +183,8 @@
+ 	./simple-object.$(objext) ./simple-object-coff.$(objext)	\
+ 	./simple-object-elf.$(objext) ./simple-object-mach-o.$(objext)	\
+ 	./sort.$(objext) ./spaces.$(objext)				\
+-	./splay-tree.$(objext) ./strerror.$(objext)			\
++	./splay-tree.$(objext) ./stack-limit.$(objext)			\
++	./strerror.$(objext)						\
+ 	./strsignal.$(objext) ./unlink-if-ordinary.$(objext)		\
+ 	./xatexit.$(objext) ./xexit.$(objext) ./xmalloc.$(objext)	\
+ 	./xmemdup.$(objext) ./xstrdup.$(objext) ./xstrerror.$(objext)	\
+@@ -1033,6 +1034,12 @@
+ 	else true; fi
+ 	$(COMPILE.c) $(srcdir)/splay-tree.c $(OUTPUT_OPTION)
+ 
++./stack-limit.$(objext): $(srcdir)/stack-limit.c config.h
++	if [ x"$(PICFLAG)" != x ]; then \
++	  $(COMPILE.c) $(PICFLAG) $(srcdir)/stack-limit.c -o pic/$@; \
++	else true; fi
++	$(COMPILE.c) $(srcdir)/stack-limit.c $(OUTPUT_OPTION)
++
+ ./stpcpy.$(objext): $(srcdir)/stpcpy.c $(INCDIR)/ansidecl.h
+ 	if [ x"$(PICFLAG)" != x ]; then \
+ 	  $(COMPILE.c) $(PICFLAG) $(srcdir)/stpcpy.c -o pic/$@; \
+--- a/src/libiberty/config.in
++++ b/src/libiberty/config.in
+@@ -109,6 +109,9 @@
+ /* Define to 1 if you have the `getpagesize' function. */
+ #undef HAVE_GETPAGESIZE
+ 
++/* Define to 1 if you have the `getrlimit' function. */
++#undef HAVE_GETRLIMIT
++
+ /* Define to 1 if you have the `getrusage' function. */
+ #undef HAVE_GETRUSAGE
+ 
+@@ -205,6 +208,9 @@
+ /* Define to 1 if you have the `setproctitle' function. */
+ #undef HAVE_SETPROCTITLE
+ 
++/* Define to 1 if you have the `setrlimit' function. */
++#undef HAVE_SETRLIMIT
++
+ /* Define to 1 if you have the `sigsetmask' function. */
+ #undef HAVE_SIGSETMASK
+ 
+--- /dev/null
++++ b/src/libiberty/stack-limit.c
+@@ -0,0 +1,62 @@
++/* Increase stack size limit if possible.
++   Copyright (C) 2011 Free Software Foundation, Inc.
++
++This file is part of the libiberty library.  This library 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 2, or (at your option)
++any later version.
++
++This library 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 GNU CC; see the file COPYING.  If not, write to
++the Free Software Foundation, 51 Franklin Street - Fifth Floor,
++Boston, MA 02110-1301, USA.
++
++As a special exception, if you link this library with files
++compiled with a GNU compiler to produce an executable, this does not cause
++the resulting executable to be covered by the GNU General Public License.
++This exception does not however invalidate any other reasons why
++the executable file might be covered by the GNU General Public License. */
++
++/*
++
++@deftypefn Extension void stack_limit_increase (unsigned long @var{pref})
++
++Attempt to increase stack size limit to @var{pref} bytes if possible.
++
++@end deftypefn
++
++*/
++
++#include "config.h"
++
++#ifdef HAVE_STDINT_H
++#include <stdint.h>
++#endif
++#ifdef HAVE_SYS_RESOURCE_H
++#include <sys/resource.h>
++#endif
++
++void
++stack_limit_increase (unsigned long pref)
++{
++#if defined(HAVE_SETRLIMIT) && defined(HAVE_GETRLIMIT) \
++    && defined(RLIMIT_STACK) && defined(RLIM_INFINITY)
++  struct rlimit rlim;
++  if (getrlimit (RLIMIT_STACK, &rlim) == 0
++      && rlim.rlim_cur != RLIM_INFINITY
++      && rlim.rlim_cur < pref
++      && (rlim.rlim_max == RLIM_INFINITY || rlim.rlim_cur < rlim.rlim_max))
++    {
++      rlim.rlim_cur = pref;
++      if (rlim.rlim_max != RLIM_INFINITY && rlim.rlim_cur > rlim.rlim_max)
++	rlim.rlim_cur = rlim.rlim_max;
++      setrlimit (RLIMIT_STACK, &rlim);
++    }
++#endif
++}
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-gfdl-build.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-gfdl-build.diff
@@ -0,0 +1,34 @@
+# DP: Build a dummy s-tm-texi without access to the texinfo sources
+
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -3681,27 +3681,9 @@
+ # \r is not portable to Solaris tr, therefore we have a special
+ # case for ASCII.  We use \r for other encodings like EBCDIC.
+ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in
+-	$(RUN_GEN) build/genhooks$(build_exeext) \
+-			$(srcdir)/doc/tm.texi.in > tmp-tm.texi
+-	case `echo X|tr X '\101'` in \
+-	  A) tr -d '\015' < tmp-tm.texi > tmp2-tm.texi ;; \
+-	  *) tr -d '\r' < tmp-tm.texi > tmp2-tm.texi ;; \
+-	esac
+-	mv tmp2-tm.texi tmp-tm.texi
++	cat $(srcdir)/doc/tm.texi.in > tmp-tm.texi
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-tm.texi tm.texi
+-	@if cmp -s $(srcdir)/doc/tm.texi tm.texi; then \
+-	  $(STAMP) $@; \
+-	elif test $(srcdir)/doc/tm.texi -nt $(srcdir)/doc/tm.texi.in \
+-	  && test $(srcdir)/doc/tm.texi -nt $(srcdir)/target.def; then \
+-	  echo >&2 ; \
+-	  echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \
+-	  false; \
+-	else \
+-	  echo >&2 ; \
+-	  echo Verify that you have permission to grant a GFDL license for all >&2 ; \
+-	  echo new text in tm.texi, then copy it to $(srcdir)/doc/tm.texi. >&2 ; \
+-	  false; \
+-	fi
++	$(STAMP) $@
+ 
+ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
+   $(srcdir)/vecprim.h $(srcdir)/vecir.h \
--- gcc-4.6-4.6.3.orig/debian/patches/svn-updates.diff
+++ gcc-4.6-4.6.3/debian/patches/svn-updates.diff
@@ -0,0 +1,15513 @@
+# DP: updates from the 4.6 branch upto 20121127 (r193837).
+
+last_updated()
+{
+	cat > ${dir}LAST_UPDATED <<EOF
+Tue Nov 27 06:26:16 CET 2012
+Tue Nov 27 05:26:16 UTC 2012 (revision 193837)
+EOF
+}
+
+svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_6_3_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch \
+	| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
+	| awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
+
+Index: gcc/targhooks.c
+===================================================================
+--- a/src/gcc/targhooks.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/targhooks.c	(.../branches/gcc-4_6-branch)
+@@ -529,6 +529,7 @@
+       case scalar_to_vec:
+       case cond_branch_not_taken:
+       case vec_perm:
++      case vec_promote_demote:
+         return 1;
+ 
+       case unaligned_load:
+@@ -978,6 +979,13 @@
+    return id;
+ }
+ 
++/* Default to natural alignment for vector types.  */
++HOST_WIDE_INT
++default_vector_alignment (const_tree type)
++{
++  return tree_low_cst (TYPE_SIZE (type), 0);
++}
++
+ bool
+ default_builtin_vector_alignment_reachable (const_tree type, bool is_packed)
+ {
+Index: gcc/targhooks.h
+===================================================================
+--- a/src/gcc/targhooks.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/targhooks.h	(.../branches/gcc-4_6-branch)
+@@ -85,6 +85,8 @@
+ 
+ extern tree default_builtin_reciprocal (unsigned int, bool, bool);
+ 
++extern HOST_WIDE_INT default_vector_alignment (const_tree);
++
+ extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
+ extern bool
+ default_builtin_support_vector_misalignment (enum machine_mode mode,
+Index: gcc/tree-pretty-print.c
+===================================================================
+--- a/src/gcc/tree-pretty-print.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/tree-pretty-print.c	(.../branches/gcc-4_6-branch)
+@@ -805,6 +805,8 @@
+ 	       infer them and MEM_ATTR caching will share MEM_REFs
+ 	       with differently-typed op0s.  */
+ 	    && TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST
++	    /* Released SSA_NAMES have no TREE_TYPE.  */
++	    && TREE_TYPE (TREE_OPERAND (node, 0)) != NULL_TREE
+ 	    /* Same pointer types, but ignoring POINTER_TYPE vs.
+ 	       REFERENCE_TYPE.  */
+ 	    && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 0)))
+@@ -1171,6 +1173,8 @@
+ 		     can't infer them and MEM_ATTR caching will share
+ 		     MEM_REFs with differently-typed op0s.  */
+ 		  && TREE_CODE (TREE_OPERAND (op0, 0)) != INTEGER_CST
++		  /* Released SSA_NAMES have no TREE_TYPE.  */
++		  && TREE_TYPE (TREE_OPERAND (op0, 0)) != NULL_TREE
+ 		  /* Same pointer types, but ignoring POINTER_TYPE vs.
+ 		     REFERENCE_TYPE.  */
+ 		  && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0)))
+Index: gcc/target.def
+===================================================================
+--- a/src/gcc/target.def	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/target.def	(.../branches/gcc-4_6-branch)
+@@ -1611,6 +1611,16 @@
+  bool, (enum machine_mode mode),
+  hook_bool_mode_false)
+ 
++DEFHOOK
++(vector_alignment,
++ "This hook can be used to define the alignment for a vector of type\n\
++@var{type}, in order to comply with a platform ABI.  The default is to\n\
++require natural alignment for vector types.  The alignment returned by\n\
++this hook must be a power-of-two multiple of the default alignment of\n\
++the vector element type.",
++ HOST_WIDE_INT, (const_tree type),
++ default_vector_alignment)
++
+ /* Compute cost of moving data from a register of class FROM to one of
+    TO, using MODE.  */
+ DEFHOOK
+Index: gcc/cgraph.c
+===================================================================
+--- a/src/gcc/cgraph.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cgraph.c	(.../branches/gcc-4_6-branch)
+@@ -1700,19 +1700,27 @@
+   free_nodes = node;
+ }
+ 
+-/* Remove the node from cgraph.  */
++/* Remove the node from cgraph and all inline clones inlined into it.
++   Skip however removal of FORBIDDEN_NODE and return true if it needs to be
++   removed.  This allows to call the function from outer loop walking clone
++   tree.  */
+ 
+-void
+-cgraph_remove_node_and_inline_clones (struct cgraph_node *node)
++bool
++cgraph_remove_node_and_inline_clones (struct cgraph_node *node, struct cgraph_node *forbidden_node)
+ {
+   struct cgraph_edge *e, *next;
++  bool found = false;
++
++  if (node == forbidden_node)
++    return true;
+   for (e = node->callees; e; e = next)
+     {
+       next = e->next_callee;
+       if (!e->inline_failed)
+-        cgraph_remove_node_and_inline_clones (e->callee);
++        found |= cgraph_remove_node_and_inline_clones (e->callee, forbidden_node);
+     }
+   cgraph_remove_node (node);
++  return found;
+ }
+ 
+ /* Notify finalize_compilation_unit that given node is reachable.  */
+Index: gcc/cgraph.h
+===================================================================
+--- a/src/gcc/cgraph.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cgraph.h	(.../branches/gcc-4_6-branch)
+@@ -547,7 +547,7 @@
+ void cgraph_insert_node_to_hashtable (struct cgraph_node *node);
+ void cgraph_remove_edge (struct cgraph_edge *);
+ void cgraph_remove_node (struct cgraph_node *);
+-void cgraph_remove_node_and_inline_clones (struct cgraph_node *);
++bool cgraph_remove_node_and_inline_clones (struct cgraph_node *, struct cgraph_node *);
+ void cgraph_release_function_body (struct cgraph_node *);
+ void cgraph_node_remove_callees (struct cgraph_node *node);
+ struct cgraph_edge *cgraph_create_edge (struct cgraph_node *,
+Index: gcc/DATESTAMP
+===================================================================
+--- a/src/gcc/DATESTAMP	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/DATESTAMP	(.../branches/gcc-4_6-branch)
+@@ -1 +1 @@
+-20120301
++20121127
+Index: gcc/target.h
+===================================================================
+--- a/src/gcc/target.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/target.h	(.../branches/gcc-4_6-branch)
+@@ -128,7 +128,8 @@
+   scalar_to_vec,
+   cond_branch_not_taken,
+   cond_branch_taken,
+-  vec_perm
++  vec_perm,
++  vec_promote_demote
+ };
+ 
+ /* Sets of optimization levels at which an option may be enabled by
+Index: gcc/configure
+===================================================================
+--- a/src/gcc/configure	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/configure	(.../branches/gcc-4_6-branch)
+@@ -4842,7 +4842,7 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5
+ $as_echo "$acx_cv_cc_gcc_supports_ada" >&6; }
+ 
+-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
++if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
+   have_gnat=yes
+ else
+   have_gnat=no
+@@ -25529,7 +25529,9 @@
+   $as_echo_n "(cached) " >&6
+ else
+   gcc_cv_ld_no_dot_syms=no
+-    if test $in_tree_ld = yes ; then
++    if test x"$ld_is_gold" = xyes; then
++      gcc_cv_ld_no_dot_syms=yes
++    elif test $in_tree_ld = yes ; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
+         gcc_cv_ld_no_dot_syms=yes
+       fi
+@@ -25573,7 +25575,9 @@
+   $as_echo_n "(cached) " >&6
+ else
+   gcc_cv_ld_large_toc=no
+-    if test $in_tree_ld = yes ; then
++    if test x"$ld_is_gold" = xyes; then
++      gcc_cv_ld_large_toc=yes
++    elif test $in_tree_ld = yes ; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
+         gcc_cv_ld_large_toc=yes
+       fi
+Index: gcc/fold-const.c
+===================================================================
+--- a/src/gcc/fold-const.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fold-const.c	(.../branches/gcc-4_6-branch)
+@@ -6003,10 +6003,11 @@
+     }
+ 
+   /* This transformation is only worthwhile if we don't have to wrap ARG
+-     in a SAVE_EXPR and the operation can be simplified on at least one
+-     of the branches once its pushed inside the COND_EXPR.  */
++     in a SAVE_EXPR and the operation can be simplified without recursing
++     on at least one of the branches once its pushed inside the COND_EXPR.  */
+   if (!TREE_CONSTANT (arg)
+       && (TREE_SIDE_EFFECTS (arg)
++	  || TREE_CODE (arg) == COND_EXPR || TREE_CODE (arg) == VEC_COND_EXPR
+ 	  || TREE_CONSTANT (true_value) || TREE_CONSTANT (false_value)))
+     return NULL_TREE;
+ 
+@@ -6771,12 +6772,14 @@
+ 	   && TREE_TYPE (TREE_OPERAND (arg1, 0)) == inner_type))
+     return NULL_TREE;
+ 
+-  if ((TYPE_UNSIGNED (inner_type) != TYPE_UNSIGNED (outer_type)
+-       || POINTER_TYPE_P (inner_type) != POINTER_TYPE_P (outer_type))
++  if (TYPE_UNSIGNED (inner_type) != TYPE_UNSIGNED (outer_type)
+       && code != NE_EXPR
+       && code != EQ_EXPR)
+     return NULL_TREE;
+ 
++  if (POINTER_TYPE_P (inner_type) != POINTER_TYPE_P (outer_type))
++    return NULL_TREE;
++
+   if (TREE_CODE (arg1) == INTEGER_CST)
+     arg1 = force_fit_type_double (inner_type, tree_to_double_int (arg1),
+ 				  0, TREE_OVERFLOW (arg1));
+Index: gcc/toplev.c
+===================================================================
+--- a/src/gcc/toplev.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/toplev.c	(.../branches/gcc-4_6-branch)
+@@ -1326,6 +1326,13 @@
+ 	   "and -ftree-loop-linear)");
+ #endif
+ 
++  if (flag_strict_volatile_bitfields > 0 && !abi_version_at_least (2))
++    {
++      warning (0, "-fstrict-volatile-bitfields disabled; "
++	       "it is incompatible with ABI versions < 2");
++      flag_strict_volatile_bitfields = 0;
++    }
++
+   /* Unrolling all loops implies that standard loop unrolling must also
+      be done.  */
+   if (flag_unroll_all_loops)
+Index: gcc/cgraphunit.c
+===================================================================
+--- a/src/gcc/cgraphunit.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cgraphunit.c	(.../branches/gcc-4_6-branch)
+@@ -2157,8 +2157,19 @@
+             first_clone->ipa_transforms_to_apply);
+   first_clone->ipa_transforms_to_apply = NULL;
+ 
++  /* When doing recursive inlining, the clone may become unnecessary.
++     This is possible i.e. in the case when the recursive function is proved to be
++     non-throwing and the recursion happens only in the EH landing pad.
++     We can not remove the clone until we are done with saving the body.
++     Remove it now.  */
++  if (!first_clone->callers)
++    {
++      cgraph_remove_node_and_inline_clones (first_clone, NULL);
++      first_clone = NULL;
++    }
+ #ifdef ENABLE_CHECKING
+-  verify_cgraph_node (first_clone);
++  else
++    verify_cgraph_node (first_clone);
+ #endif
+   return first_clone;
+ }
+Index: gcc/ChangeLog
+===================================================================
+--- a/src/gcc/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,742 @@
++2012-11-09  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* doc/install.texi (sparc64-x-solaris2): Mention MPC as well.
++
++2012-11-07  Eric Botcazou  <ebotcazou@adacore.com>
++
++	PR middle-end/55219
++	* fold-const.c (fold_binary_op_with_conditional_arg): Do not fold if
++	the argument is itself a conditional expression.
++
++2012-10-30  Andrey Belevantsev  <abel@ispras.ru>
++
++	Backport from mainline
++	2012-01-25 Andrey Belevantsev <abel@ispras.ru>
++	
++	PR rtl-optimization/48374
++	* sel-sched-ir.h (get_all_loop_exits): Check for zero successors. 	
++
++2012-10-22  Andrey Belevantsev  <abel@ispras.ru>
++
++	Backport from mainline
++	2012-08-09  Andrey Belevantsev  <abel@ispras.ru>
++
++	PR rtl-optimization/53701
++	* sel-sched.c (vinsn_vec_has_expr_p): Clarify function comment.
++	Process not only expr's vinsns but all old vinsns from expr's
++	history of changes.
++
++2012-10-19  Marek Polacek  <polacek@redhat.com>
++
++	Backported from mainline
++	2012-10-19  Marek Polacek  <polacek@redhat.com>
++
++	PR middle-end/54945
++	* fold-const.c (fold_sign_changed_comparison):  Punt if folding
++	pointer/non-pointer comparison.
++
++2012-10-19  Alan Modra  <amodra@gmail.com>
++
++	* configure.ac (HAVE_LD_NO_DOT_SYMS): Set if using gold.
++	(HAVE_LD_LARGE_TOC): Likewise.
++	* configure: Regenerate.
++
++2012-10-17  DJ Delorie  <dj@delorie.com>
++
++	PR target/54950
++	* config/m32c/predicates.md (m32c_const_u16_operand): New.
++	* config/m32c/muldiv.md: Use it.
++
++2012-10-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	* config/pa/pa.md (addhi3): Fix typo in last change.
++
++2012-10-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	* config/pa/pa.md: Adjust unamed HImode add insn pattern.
++
++2012-10-05  Jan Hubicka  <jh@suse.cz>
++	    Jakub Jelinek  <jakub@redhat.com>
++
++	PR tree-optimization/33763
++	* tree-inline.c (expand_call_inline): Silently ignore always_inline
++	attribute for redefined extern inline functions.
++
++2012-10-03  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backported from mainline
++	2012-10-03  Andrew W. Nosenko <andrew.w.nosenko@gmail.com>
++
++	* config/i386/driver-i386.c (host_detect_local_cpu): Fix logic
++	in SSE and YMM state support check for -march=native.
++
++2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backported from mainline
++	2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR target/54785
++	* doc/invoke.texi: Document -mprefer-avx128.
++
++2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backported from mainline
++	2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR target/54741
++	* config/i386/driver-i386.c (XCR_XFEATURE_ENABLED_MASK): New.
++	(XSTATE_FP): Likewise.
++	(XSTATE_SSE): Likewise.
++	(XSTATE_YMM): Likewise.
++	(host_detect_local_cpu): Disable AVX, FMA, FMA4 and XOP if SSE
++	and YMM states aren't supported.
++
++2012-09-21  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/54638
++	Backport from mainline
++	2012-04-19  Richard Guenther  <rguenther@suse.de>
++
++	* ira-int.h (ira_allocno_object_iter_cond): Avoid out-of-bound
++	array access.
++
++2012-09-15  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/54552
++	* c-typeck.c (c_cast_expr): When casting to a type requiring
++	C_MAYBE_CONST_EXPR to be created, pass the inner expression to
++	c_fully_fold first.
++
++2012-09-15  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/54103
++	* c-typeck.c (build_unary_op): Pass original argument of
++	TRUTH_NOT_EXPR to c_objc_common_truthvalue_conversion, then remove
++	any C_MAYBE_CONST_EXPR, if it has integer operands.
++	(build_binary_op): Pass original arguments of TRUTH_ANDIF_EXPR,
++	TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR and TRUTH_XOR_EXPR
++	to c_objc_common_truthvalue_conversion, then remove any
++	C_MAYBE_CONST_EXPR, if they have integer operands.  Use
++	c_objc_common_truthvalue_conversion not
++	c_common_truthvalue_conversion.
++	(c_objc_common_truthvalue_conversion): Build NE_EXPR directly and
++	call note_integer_operands for arguments with integer operands
++	that are not integer constants.
++
++2012-09-14  Wei Guozhi  <carrot@google.com>
++
++	Backport from 2012-02-13 mainline r184169.
++
++	* cselib.c (expand_loc): Return sp, fp, hfp or cfa base reg right
++	away if seen.
++
++2012-09-10  Georg-Johann Lay  <avr@gjlay.de>
++
++	Backport from 2012-09-10 mainline r191132.
++	
++	PR target/54536
++	* config/avr/avr-devices.c (avr_mcu_types["at90usb1287"]): Set
++	.library_name to "usb1287".
++
++2012-09-10  Markus Trippelsdorf  <markus@trippelsdorf.de>
++
++	PR middle-end/54515
++	* tree-sra.c (disqualify_base_of_expr): Check for possible
++	NULL_TREE returned by get_base_address()
++
++2012-09-05  Bin Cheng  <bin.cheng@arm.com>
++
++	Backport from 2012-09-04 mainline r190919
++
++	PR target/45070
++	* config/arm/arm.c (thumb1_extra_regs_pushed): Handle return value of
++	size less than 4 bytes by using macro ARM_NUM_INTS.
++	(thumb1_unexpanded_epilogue): Use macro ARM_NUM_INTS.
++
++2012-09-04  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
++
++	Backport from 2012-09-04 mainline r190914
++
++	PR target/54220
++	* config/avr/avr.c (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): New
++	define to...
++	(avr_allocate_stack_slots_for_args): ...this new static function.
++
++2012-09-03  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backported from mainline
++	2012-08-23  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR driver/54335
++	* doc/invoke.texi: Add -da and remove -dm.
++
++2012-09-02  Eric Botcazou  <ebotcazou@adacore.com>
++
++	PR rtl-optimization/54369
++	* config/mips/mips.c (mips_reorg): Invoke cleanup_barriers before
++	calling dbr_schedule.
++	* config/sparc/sparc.c (sparc_reorg): Likewise.
++
++2012-08-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
++
++	* config/sol2.h (LINK_ARCH32_SPEC_BASE): Add /lib to default
++	linker search path.
++	* config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise for
++	/lib/sparcv9.
++
++2012-08-10  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	Backport from mainline
++	2012-07-30  Ulrich Weigand  <ulrich.weigand@linaro.org>
++		    Richard Earnshaw  <rearnsha@arm.com>
++
++	* target.def (vector_alignment): New target hook.
++	* doc/tm.texi.in (TARGET_VECTOR_ALIGNMENT): Document new hook.
++	* doc/tm.texi: Regenerate.
++	* targhooks.c (default_vector_alignment): New function.
++	* targhooks.h (default_vector_alignment): Add prototype.
++	* stor-layout.c (layout_type): Use targetm.vector_alignment.
++	* config/arm/arm.c (arm_vector_alignment): New function.
++	(TARGET_VECTOR_ALIGNMENT): Define.
++
++	* tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use
++	vector type alignment instead of size.
++	* tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Use
++	element type size directly instead of computing it from alignment.
++	Fix variable naming and comment.
++
++2012-08-09  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-08-09  Uros Bizjak  <ubizjak@gmail.com>
++
++	* config/alpha/alpha.c (alpha_pad_noreturn): Rename to ...
++	(alpha_pad_function_end): ... this.  Also insert NOP between
++	sibling call and GP load.
++	(alpha_reorg): Update call to alpha_pad_function_end.  Expand comment.
++
++2012-07-22  Oleg Endo  <olegendo@gcc.gnu.org>
++
++	PR target/33135
++	* config/sh/sh.opt (mieee): Use Var instead of Mask.  Correct
++	description.
++	* config/sh/sh.c (sh_option_override): Do not change
++	flag_finite_math_only.  Set TARGET_IEEE to complement of
++	flag_finite_math_only.
++	* doc/invoke.texi (SH options): Add mno-ieee.  Correct
++	description of mieee and mno-ieee behavior.
++
++2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>
++
++	Backported from trunk:
++	2012-07-13  Richard Sandiford  <rdsandiford@googlemail.com>
++		    Steven Bosscher  <steven@gcc.gnu.org>
++		    Bernd Schmidt  <bernds@codesourcery.com>
++
++	PR rtl-optimization/53908
++	* df-problems.c	(can_move_insns_across): When doing
++	memory-reference book-keeping, handle call insns.
++
++2012-07-06  Nick Clifton  <nickc@redhat.com>
++
++	* config/mn10300/mn10300.c (mn10300_encode_section_info): Call
++	default_encode_section_info.
++
++2012-07-04  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/53433
++	* tree-ssa-ccp.c (get_base_constructor): Do not return an
++	error_mark_node DECL_INITIAL.
++
++2012-07-02  Martin Jambor  <mjambor@suse.cz>
++
++	PR middle-end/38474
++	* ipa-prop.c (compute_known_type_jump_func): Check for a BINFO before
++	checking for a dynamic type change.
++
++2012-06-28  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/53790
++	* expr.c (expand_expr_real_1): Verify if the type is complete
++	before inspecting its size.
++
++2012-06-22  Richard Guenther  <rguenther@suse.de>
++
++	* gcov-iov.c: Include bconfig.h and system.h.
++
++2012-06-22  Richard Guenther  <rguenther@suse.de>
++
++	PR gcov-profile/53744
++	* gcov-iov.c (main): Treat "" and "prerelease" the same.
++
++2012-06-19  Joey Ye  <joey.ye@arm.com>
++
++	Backported from mainline
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	* config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
++
++2012-06-18  Joey Ye  <joey.ye@arm.com>
++
++	Backported from mainline
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	PR target/48126
++	* config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
++
++2012-06-17  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline:
++	2012-06-17  Uros Bizjak  <ubizjak@gmail.com>
++
++	* config/i386/sse.md (vcvtph2ps): Fix vec_select selector.
++
++2012-06-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	Backport from mainline:
++	2012-06-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	* config/pa/pa.h (MAX_PCREL17F_OFFSET): Define.
++	* config/pa/pa.c (pa_attr_length_millicode_call): Use
++	MAX_PCREL17F_OFFSET instead of fixed offset.
++	(pa_attr_length_call): Likewise.
++	(pa_attr_length_indirect_call): Likewise.
++
++2012-06-12  Christian Bruel  <christian.bruel@st.com>
++
++	PR target/53621
++	* config/sh/sh.c (sh_option_override): Don't force
++	 flag_omit_frame_pointer and maccumulate_outgoing_args.
++	* config/sh/sh.opt (maccumulate-outgoing-args): Init as Var.
++
++2012-06-05  Peter Bergner  <bergner@vnet.ibm.com>
++
++	Backport from mainline
++	2011-08-29  Jakub Jelinek  <jakub@redhat.com>
++
++	* gthr-posix.h (__gthread_active_p): Do not use preprocessor
++	conditionals and comments inside macro arguments.
++
++2012-06-04  Edmar Wienskoski  <edmar@freescale.com>
++
++	PR target/53559
++	* config/rs6000/altivec.md (altivec_stvlx): Change machine mode of
++	operands.
++	(altivec_stvlxl): Ditto.
++	(altivec_stvrx): Ditto.
++	(altivec_stvrxl): Ditto.
++
++2012-06-04  Georg-Johann Lay  <avr@gjlay.de>
++
++	Backport from 2012-06-04 mainline r188172
++
++	PR target/46261
++	* config/avr/avr-stdint.h: New file.
++	* config.gcc (avr-*-*,tm_file): Use avr/avr-stdint.h instead of
++	newlib-stdint.h
++
++2012-06-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR target/52999
++	* config/pa/pa.c (TARGET_SECTION_TYPE_FLAGS): Define.
++	(pa_section_type_flags): New.
++	* config/pa/pa.h (LEGITIMATE_CONSTANT_P): Revert previous change.
++
++2012-05-31  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/53541
++	* tree-pretty-print.c (dump_generic_node): Guard against
++	NULL_TREE TREE_TYPE when dumping MEM_REF offset type.
++
++2012-05-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2012-05-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
++
++	PR target/53385
++	* config/rs6000/rs6000.c (print_operand): Revise code that unsafely
++	relied on signed overflow behavior.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2011-11-10  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/51071
++	* gimple.c (gimple_has_side_effects): Remove checking code
++	that doesn't belong here.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2012-02-28  Richard Guenther  <rguenther@suse.de>
++
++	PR target/52407
++	* config/i386/i386.c (ix86_expand_vector_set): Fix element
++	ordering for the VEC_CONCAT for two element vectors for
++	V2SFmode, V2SImode and V2DImode.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2012-04-12  Richard Guenther  <rguenther@suse.de>
++
++	PR c/52862
++	* convert.c (convert_to_pointer): Remove special-casing of zero.
++
++2012-05-21  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/53418
++	* c-typeck.c (build_conditional_expr): Remove C_MAYBE_CONST_EXPR
++	from folded operands before wrapping another around the
++	conditional expression.
++
++2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backport from mainline
++	2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR target/53416
++	* config/i386/i386.md (UNSPEC_RDRAND): Renamed to ...
++	(UNSPECV_RDRAND): This.
++	(rdrand<mode>_1): Updated.
++
++2012-05-20  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backport from mainline
++	2012-05-20  H.J. Lu  <hongjiu.lu@intel.com>
++
++	* config/i386/driver-i386.c (host_detect_local_cpu): Support
++	RDRND, F16C and FSGSBASE.
++
++2012-05-16  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* configure: Regenerate.
++
++2012-05-14  Uros Bizjak  <ubizjak@gmail.com>
++
++	PR target/46098
++	* config/i386/i386.c (ix86_expand_special_args_builtin): Always
++	generate target register for "load" class builtins.
++
++	Revert:
++	2010-10-22  Uros Bizjak  <ubizjak@gmail.com>
++
++	PR target/46098
++	* config/i386/sse.md (*avx_movu<ssemodesuffix><avxmodesuffix>):
++	Rename from avx_movu<ssemodesuffix><avxmodesuffix>.
++	(avx_movu<ssemodesuffix><avxmodesuffix>): New expander.
++	(*<sse>_movu<ssemodesuffix>): Rename from <sse>_movu<ssemodesuffix>.
++	(<sse>_movu<ssemodesuffix>): New expander.
++	(*avx_movdqu<avxmodesuffix>): Rename from avx_movdqu<avxmodesuffix>.
++	(avx_movdqu<avxmodesuffix>): New expander.
++	(*sse2_movdqu): Rename from sse2_movdqu.
++	(sse2_movdqu): New expander.
++
++2012-05-13  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-05-12  Uros Bizjak  <ubizjak@gmail.com>
++
++	* config/alpha/alpha.c (alpha_emit_conditional_branch): Handle
++	ORDERED and UNORDERED conditions.
++
++2012-05-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR target/52999
++	* config/pa/pa.h (LEGITIMATE_CONSTANT_P): Don't put function labels
++	in constant pool.
++
++2012-05-04  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-05-04  Uros Bizjak  <ubizjak@gmail.com>
++
++	PR target/53228
++	* config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE.
++	(TARGET_CMOV): Rename from TARGET_CMOVE.
++	(TARGET_CMOVE): New define.
++	* config/i386/i386.c (ix86_option_override_internal): Use TARGET_CMOV.
++	Do not set TARGET_CMOVE here.
++
++2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from the mainline
++	2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/53199
++	* config/rs6000/rs6000.md (bswapdi splitters): If
++	-mavoid-indexed-addresses (or -mcpu=power6 which sets it by
++	default) is used, generate an alternate sequence that does not
++	depend on using indexed addressing.
++
++2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-04-27  Paolo Bonzini  <bonzini@gnu.org>
++
++	PR target/53138
++	* config/i386/i386.md (x86_mov<mode>cc_0_m1_neg): Add clobber.
++
++2012-04-24  Jakub Jelinek  <jakub@redhat.com>
++
++	PR middle-end/53084
++	* varasm.c (compute_reloc_for_constant): Handle ADDR_EXPR of MEM_REF.
++	(output_addressed_constants): Likewise.
++
++2012-04-20  Thomas Schwinge  <thomas@codesourcery.com>
++
++	struct siginfo vs. siginfo_t
++
++	Backport from trunk (but apply to gcc/):
++
++	2012-04-20  Thomas Schwinge  <thomas@codesourcery.com>
++
++	* config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use
++	siginfo_t instead of struct siginfo.
++	* config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise.
++	* config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise.
++	* config/ia64/linux-unwind.h (ia64_fallback_frame_state)
++	(ia64_handle_unwabi): Likewise.
++	* config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
++	* config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise.
++	* config/sh/linux-unwind.h (shmedia_fallback_frame_state)
++	(sh_fallback_frame_state): Likewise.
++	* config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise.
++
++2012-04-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2012-04-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/52775
++	* config/rs6000/rs6000.h (TARGET_FCFID): Add TARGET_PPC_GPOPT to
++	the list of options to enable the FCFID instruction.
++
++2012-04-12  Richard Earnshaw  <rearnsha@arm.com>
++
++	PR target/49448
++	* config.gcc (arm*-*-linux*): Use an unambiguous pattern for
++	detecting big-endian triplets.
++
++2012-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR middle-end/52894
++	* varasm.c (process_pending_assemble_externals): Set
++	pending_assemble_externals_processed true.
++	(assemble_external): Call assemble_external_real if the pending
++	assemble externals have been processed.
++
++2012-04-09  Eric Botcazou  <ebotcazou@adacore.com>
++
++	PR target/52717
++	* config/sparc/sparc.c (sparc_file_end): Set TREE_PUBLIC explicitly on
++	the DECL generated for the special GOT helper.
++
++2012-04-06  Matt Turner  <mattst88@gmail.com>
++
++	* doc/install.texi: Correct typo "-mno-lsc" -> "-mno-llsc".
++
++2012-03-29  Uros Bizjak  <ubizjak@gmail.com>
++
++	* config/i386/sse.md (avx_h<plusminus_insn>v4df3): Fix results
++	crossing 128bit lane boundary.
++
++2012-03-29  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backported from mainline
++	2012-03-27  Uros Bizjak  <ubizjak@gmail.com>
++
++	PR target/52698
++	* config/i386/i386-protos.h (ix86_legitimize_reload_address):
++	New prototype.
++	* config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): New define.
++	* config/i386/i386.c: Include reload.h.
++	(ix86_legitimize_reload_address): New function.
++
++2012-03-28  Joey Ye  <joey.ye@arm.com>
++
++	Backported from mainline
++	2011-12-20  Bernd Schmidt  <bernds@codesourcery.com>
++
++	PR middle-end/51200
++	* expr.c (store_field): Avoid a direct store if the mode is larger
++	than the size of the bit field.
++	* stor-layout.c (layout_decl): If flag_strict_volatile_bitfields,
++	treat non-volatile bit fields like volatile ones.
++	* toplev.c (process_options): Disallow combination of
++	-fstrict-volatile-bitfields and ABI versions less than 2.
++	* config/arm/arm.c (arm_option_override): Don't enable
++	flag_strict_volatile_bitfields if the ABI version is less than 2.
++	* config/h8300/h8300.c (h8300_option_override): Likewise.
++	* config/rx/rx.c (rx_option_override): Likewise.
++	* config/m32c/m32c.c (m32c_option_override): Likewise.
++	* config/sh/sh.c (sh_option_override): Likewise.
++
++	2011-12-22  Joey Ye  <joey.ye@arm.com>
++
++	* toplev.c (process_options): Fix typo.
++
++2012-03-28  Martin Jambor  <mjambor@suse.cz>
++
++	Backported from mainline
++	2012-03-27  Martin Jambor  <mjambor@suse.cz>
++
++	PR middle-end/52693
++	* tree-sra.c (sra_modify_assign): Do not call
++	load_assign_lhs_subreplacements when working with an unscalarizable
++	region.
++
++2012-03-28  Georg-Johann Lay  <avr@gjlay.de>
++
++	PR target/52741
++
++	Revert r181936 from 2011-12-02 for:
++	* config/avr/libgcc.S (__prologue_saves__, __epilogue_restores__)
++	* config/avr/avr.md (movhi_sp_r_irq_off, movhi_sp_r_irq_on)
++	* config/avr/avr.c (output_movhi, avr_file_start)
++
++2012-03-28  Jakub Jelinek  <jakub@redhat.com>
++
++	PR target/52736
++	* config/i386/sse.md (sse2_loadlpd splitter): Use offset 0
++	instead of 8 in adjust_address.
++
++2012-03-24  Jan Hubicka  <jh@suse.cz>
++
++	Backport from mainline
++	PR regression/52696
++	* predict.c (predict_paths_for_bb): Fix typo.
++
++2012-03-24  Jan Hubicka  <jh@suse.cz>
++
++	Backport from mainline
++	PR middle-end/51737
++	* cgraph.c (cgraph_remove_node_and_inline_clones): Add FORBIDDEN_NODE
++	parameter.
++	* cgraph.h (cgraph_remove_node_and_inline_clones): Update prototype.
++	* ipa-inline-transform.c (save_inline_function_body): Remove copied
++	clone if needed.
++	* tree-inline.c (delete_unreachable_blocks_update_callgraph): Update.
++
++2012-03-24  Steven Bosscher  <steven@gcc.gnu.org>
++
++	PR middle-end/52640
++	* varasm.c: Include pointer-set.h.
++	(pending_assemble_externals_set): New pointer set.
++	(process_pending_assemble_externals): Destroy the pointer set.
++	(assemble_external): See if decl is in pending_assemble_externals_set,
++	and add it to pending_assemble_externals if necessary.
++	(init_varasm_once): Allocate pending_assemble_externals_set.
++
++2012-03-16  Jan Hubicka  <jh@suse.cz>
++
++	Backport from mainline
++	PR middle-end/48600
++	* predict.c (predict_paths_for_bb): Prevent looping.
++	(predict_paths_leading_to_edge, predict_paths_leading_to): Update.
++
++2012-03-16  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline
++	2011-05-05  Michael Hope  <michael.hope@linaro.org>
++
++	PR pch/45979
++	* config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for
++	__ARM_EABI__ hosts.
++
++2012-03-15  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	Backport from mainline
++	2012-03-10  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	PR rtl-optimization/52528
++	* combine.c (can_combine_p): Add setting of subst_low_luid
++	before call to expand_field_assignment().
++
++2012-03-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	Backport from mainline
++	2011-09-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR Bug middle-end/50232
++	* config/pa/pa.md (return): Define "return" insn pattern.
++	(epilogue): Use it when no epilogue is needed.
++	* config/pa/pa.c (pa_can_use_return_insn): New function.
++	* config/pa/pa-protos.h (pa_can_use_return_insn): Declare.
++
++	Backport for mainline
++	2012-01-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR target/51871
++	* config/pa/pa.c (pa_return_addr_rtx): Add support for PA2.0 export
++	stubs.
++
++2012-03-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	PR target/50310
++	* config/rs6000/vector.md (vector_uneq<mode>): Add support for
++	UNEQ, LTGT, ORDERED, and UNORDERED IEEE vector comparisons.
++	(vector_ltgt<mode>): Likewise.
++	(vector_ordered<mode>): Likewise.
++	(vector_unordered<mode>): Likewise.
++	* config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise.
++
++2012-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	Backport from mainline
++	2012-03-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR target/52408
++	* config/pa/pa.md (zvdep_imm32): Change type of variable x from int to
++	unsigned HOST_WIDE_INT.
++	(zvdep_imm64): Likewise.
++	(vdepi_ior): Change type of variable x from int to HOST_WIDE_INT.
++	(vdepi_and): Likewise.
++	Likewise for unamed 64-bit patterns.
++	* config/pa/predicates.md (lhs_lshift_cint_operand): Update comment.
++
++2012-03-03  Eric Botcazou  <ebotcazou@adacore.com>
++
++	PR target/52425
++	Backport from mainline
++	2011-05-22  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* config/sparc/sparc.c (sparc_delegitimize_address): Handle
++	UNSPEC_MOVE_PIC pattern.
++
++2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
++
++	Backport from mainline
++	2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
++
++	* config/rs6000/vsx.md (vsx_set_<mode>): Reorder operands.
++
++2012-03-02  Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++	    Ira Rosen <irar@il.ibm.com>
++
++	PR tree-optimization/50031
++	PR tree-optimization/50969
++	* targhooks.c (default_builtin_vectorization_cost): Handle
++	vec_promote_demote.
++	* target.h (enum vect_cost_for_stmt): Add vec_promote_demote.
++	* tree-vect-loop.c (vect_get_single_scalar_iteraion_cost): Handle
++	all types of reduction and pattern statements.
++	(vect_estimate_min_profitable_iters): Likewise.
++	* tree-vect-stmts.c (vect_model_promotion_demotion_cost): New function.
++	(vect_model_store_cost): Use vec_perm rather than vector_stmt for
++	statement cost.
++	(vect_model_load_cost): Likewise.
++	(vect_get_load_cost): Likewise; add dump logic for explicit realigns.
++	(vectorizable_type_demotion): Call vect_model_promotion_demotion_cost.
++	(vectorizable_type_promotion): Likewise.
++	* config/spu/spu.c (spu_builtin_vectorization_cost): Handle
++	vec_promote_demote.
++	* config/i386/i386.c (ix86_builtin_vectorization_cost): Likewise.
++	* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Update
++	vec_perm for VSX and handle vec_promote_demote.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: gcc/tree-vect-loop-manip.c
+===================================================================
+--- a/src/gcc/tree-vect-loop-manip.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/tree-vect-loop-manip.c	(.../branches/gcc-4_6-branch)
+@@ -2008,7 +2008,7 @@
+    If the misalignment of DR is known at compile time:
+      addr_mis = int mis = DR_MISALIGNMENT (dr);
+    Else, compute address misalignment in bytes:
+-     addr_mis = addr & (vectype_size - 1)
++     addr_mis = addr & (vectype_align - 1)
+ 
+    prolog_niters = min (LOOP_NITERS, ((VF - addr_mis/elem_size)&(VF-1))/step)
+ 
+@@ -2065,9 +2065,10 @@
+       tree ptr_type = TREE_TYPE (start_addr);
+       tree size = TYPE_SIZE (ptr_type);
+       tree type = lang_hooks.types.type_for_size (tree_low_cst (size, 1), 1);
+-      tree vectype_size_minus_1 = build_int_cst (type, vectype_align - 1);
+-      tree elem_size_log =
+-        build_int_cst (type, exact_log2 (vectype_align/nelements));
++      tree vectype_align_minus_1 = build_int_cst (type, vectype_align - 1);
++      HOST_WIDE_INT elem_size =
++		int_cst_value (TYPE_SIZE_UNIT (TREE_TYPE (vectype)));
++      tree elem_size_log = build_int_cst (type, exact_log2 (elem_size));
+       tree nelements_minus_1 = build_int_cst (type, nelements - 1);
+       tree nelements_tree = build_int_cst (type, nelements);
+       tree byte_misalign;
+@@ -2076,10 +2077,10 @@
+       new_bb = gsi_insert_seq_on_edge_immediate (pe, new_stmts);
+       gcc_assert (!new_bb);
+ 
+-      /* Create:  byte_misalign = addr & (vectype_size - 1)  */
++      /* Create:  byte_misalign = addr & (vectype_align - 1)  */
+       byte_misalign =
+         fold_build2 (BIT_AND_EXPR, type, fold_convert (type, start_addr), 
+-                     vectype_size_minus_1);
++                     vectype_align_minus_1);
+ 
+       /* Create:  elem_misalign = byte_misalign / element_size  */
+       elem_misalign =
+Index: gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,30 @@
++/* { dg-require-effective-target arm_eabi } */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++/* { dg-final { scan-assembler-times "ldr\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
++/* { dg-final { scan-assembler-times "str\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
++/* { dg-final { scan-assembler-not "strb" } } */
++
++struct thing {
++  unsigned a: 8;
++  unsigned b: 8;
++  unsigned c: 8;
++  unsigned d: 8;
++};
++
++struct thing2 {
++  volatile unsigned a: 8;
++  volatile unsigned b: 8;
++  volatile unsigned c: 8;
++  volatile unsigned d: 8;
++};
++
++void test1(volatile struct thing *t)
++{
++  t->a = 5;
++}
++
++void test2(struct thing2 *t)
++{
++  t->a = 5;
++}
+Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "stvrx" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++void sc3(vsc v, long a, void *p)    { __builtin_altivec_stvrx (v,a,p); }
++void srx01(vsf v, long a, vsf *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx02(vsf v, long a, sf *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx03(vbi v, long a, vbi *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx04(vsi v, long a, vsi *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx05(vsi v, long a, si *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx06(vui v, long a, vui *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx07(vui v, long a, ui *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx08(vbs v, long a, vbs *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx09(vp v, long a, vp *p)     { __builtin_vec_stvrx (v,a,p); }
++void srx10(vss v, long a, vss *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx11(vss v, long a, ss *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx12(vus v, long a, vus *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx13(vus v, long a, us *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx14(vbc v, long a, vbc *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx15(vsc v, long a, vsc *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx16(vsc v, long a, sc *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx17(vuc v, long a, vuc *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx18(vuc v, long a, uc *p)    { __builtin_vec_stvrx (v,a,p); }
+Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "stvrxl" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++void sc4(vsc v, long a, void *p)    { __builtin_altivec_stvrxl (v,a,p); }
++void srxl01(vsf v, long a, vsf *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl02(vsf v, long a, sf *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl03(vbi v, long a, vbi *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl04(vsi v, long a, vsi *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl05(vsi v, long a, si *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl06(vui v, long a, vui *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl07(vui v, long a, ui *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl08(vbs v, long a, vbs *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl09(vp v, long a, vp *p)    { __builtin_vec_stvrxl (v,a,p); }
++void srxl10(vss v, long a, vss *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl11(vss v, long a, ss *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl12(vus v, long a, vus *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl13(vus v, long a, us *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl14(vbc v, long a, vbc *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl15(vsc v, long a, vsc *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl16(vsc v, long a, sc *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl17(vuc v, long a, vuc *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl18(vuc v, long a, uc *p)   { __builtin_vec_stvrxl (v,a,p); }
+Index: gcc/testsuite/gcc.target/powerpc/pr52775.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr52775.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr52775.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,16 @@
++/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O1 -mcpu=power4" } */
++/* { dg-final { scan-assembler-times "fcfid" 2 } } */
++
++double
++int_to_double (int *p)
++{
++  return (double)*p;
++}
++
++double
++long_long_to_double (long long *p)
++{
++  return (double)*p;
++}
+Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "lvlx" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++vsc  lc1(long a, void *p)           { return __builtin_altivec_lvlx (a,p); }
++vsf  llx01(long a, vsf *p)          { return __builtin_vec_lvlx (a,p); }
++vsf  llx02(long a, sf *p)           { return __builtin_vec_lvlx (a,p); }
++vbi  llx03(long a, vbi *p)          { return __builtin_vec_lvlx (a,p); }
++vsi  llx04(long a, vsi *p)          { return __builtin_vec_lvlx (a,p); }
++vsi  llx05(long a, si *p)           { return __builtin_vec_lvlx (a,p); }
++vui  llx06(long a, vui *p)          { return __builtin_vec_lvlx (a,p); }
++vui  llx07(long a, ui *p)           { return __builtin_vec_lvlx (a,p); }
++vbs  llx08(long a, vbs *p)          { return __builtin_vec_lvlx (a,p); }
++vp   llx09(long a, vp *p)           { return __builtin_vec_lvlx (a,p); }
++vss  llx10(long a, vss *p)          { return __builtin_vec_lvlx (a,p); }
++vss  llx11(long a, ss *p)           { return __builtin_vec_lvlx (a,p); }
++vus  llx12(long a, vus *p)          { return __builtin_vec_lvlx (a,p); }
++vus  llx13(long a, us *p)           { return __builtin_vec_lvlx (a,p); }
++vbc  llx14(long a, vbc *p)          { return __builtin_vec_lvlx (a,p); }
++vsc  llx15(long a, vsc *p)          { return __builtin_vec_lvlx (a,p); }
++vsc  llx16(long a, sc *p)           { return __builtin_vec_lvlx (a,p); }
++vuc  llx17(long a, vuc *p)          { return __builtin_vec_lvlx (a,p); }
++vuc  llx18(long a, uc *p)           { return __builtin_vec_lvlx (a,p); }
+Index: gcc/testsuite/gcc.target/powerpc/pr52457.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr52457.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr52457.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,34 @@
++/* { dg-do run { target { powerpc*-*-linux* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
++/* { dg-require-effective-target vsx_hw } */
++/* { dg-options "-O1 -mcpu=power7" } */
++
++extern void abort (void);
++
++typedef long long T;
++typedef T vl_t __attribute__((vector_size(2 * sizeof (T))));
++
++vl_t
++buggy_func (T x)
++{
++  vl_t w;
++  T *p = (T *)&w;
++  p[0] = p[1] = x;
++  return w;
++}
++
++int
++main(void)
++{
++  vl_t rval;
++  T *pl;
++
++  pl = (T *) &rval;
++  rval = buggy_func (2);
++
++  if (pl[0] != 2 || pl[1] != 2)
++    abort ();
++
++  return 0;
++}
+Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "lvlxl" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++vsc  lc2(long a, void *p)           { return __builtin_altivec_lvlxl (a,p); }
++vsf  llxl01(long a, vsf *p)         { return __builtin_vec_lvlxl (a,p); }
++vsf  llxl02(long a, sf *p)          { return __builtin_vec_lvlxl (a,p); }
++vbi  llxl03(long a, vbi *p)         { return __builtin_vec_lvlxl (a,p); }
++vsi  llxl04(long a, vsi *p)         { return __builtin_vec_lvlxl (a,p); }
++vsi  llxl05(long a, si *p)          { return __builtin_vec_lvlxl (a,p); }
++vui  llxl06(long a, vui *p)         { return __builtin_vec_lvlxl (a,p); }
++vui  llxl07(long a, ui *p)          { return __builtin_vec_lvlxl (a,p); }
++vbs  llxl08(long a, vbs *p)         { return __builtin_vec_lvlxl (a,p); }
++vp   llxl09(long a, vp *p)          { return __builtin_vec_lvlxl (a,p); }
++vss  llxl10(long a, vss *p)         { return __builtin_vec_lvlxl (a,p); }
++vss  llxl11(long a, ss *p)          { return __builtin_vec_lvlxl (a,p); }
++vus  llxl12(long a, vus *p)         { return __builtin_vec_lvlxl (a,p); }
++vus  llxl13(long a, us *p)          { return __builtin_vec_lvlxl (a,p); }
++vbc  llxl14(long a, vbc *p)         { return __builtin_vec_lvlxl (a,p); }
++vsc  llxl15(long a, vsc *p)         { return __builtin_vec_lvlxl (a,p); }
++vsc  llxl16(long a, sc *p)          { return __builtin_vec_lvlxl (a,p); }
++vuc  llxl17(long a, vuc *p)         { return __builtin_vec_lvlxl (a,p); }
++vuc  llxl18(long a, uc *p)          { return __builtin_vec_lvlxl (a,p); }
+Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "lvrx" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++vsc  lc3(long a, void *p)           { return __builtin_altivec_lvrx (a,p); }
++vsf  lrx01(long a, vsf *p)          { return __builtin_vec_lvrx (a,p); }
++vsf  lrx02(long a, sf *p)           { return __builtin_vec_lvrx (a,p); }
++vbi  lrx03(long a, vbi *p)          { return __builtin_vec_lvrx (a,p); }
++vsi  lrx04(long a, vsi *p)          { return __builtin_vec_lvrx (a,p); }
++vsi  lrx05(long a, si *p)           { return __builtin_vec_lvrx (a,p); }
++vui  lrx06(long a, vui *p)          { return __builtin_vec_lvrx (a,p); }
++vui  lrx07(long a, ui *p)           { return __builtin_vec_lvrx (a,p); }
++vbs  lrx08(long a, vbs *p)          { return __builtin_vec_lvrx (a,p); }
++vp   lrx09(long a, vp *p)           { return __builtin_vec_lvrx (a,p); }
++vss  lrx10(long a, vss *p)          { return __builtin_vec_lvrx (a,p); }
++vss  lrx11(long a, ss *p)           { return __builtin_vec_lvrx (a,p); }
++vus  lrx12(long a, vus *p)          { return __builtin_vec_lvrx (a,p); }
++vus  lrx13(long a, us *p)           { return __builtin_vec_lvrx (a,p); }
++vbc  lrx14(long a, vbc *p)          { return __builtin_vec_lvrx (a,p); }
++vsc  lrx15(long a, vsc *p)          { return __builtin_vec_lvrx (a,p); }
++vsc  lrx16(long a, sc *p)           { return __builtin_vec_lvrx (a,p); }
++vuc  lrx17(long a, vuc *p)          { return __builtin_vec_lvrx (a,p); }
++vuc  lrx18(long a, uc *p)           { return __builtin_vec_lvrx (a,p); }
+Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "lvrxl" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++vsc  lc4(long a, void *p)           { return __builtin_altivec_lvrxl (a,p); }
++vsf  lrxl01(long a, vsf *p)         { return __builtin_vec_lvrxl (a,p); }
++vsf  lrxl02(long a, sf *p)          { return __builtin_vec_lvrxl (a,p); }
++vbi  lrxl03(long a, vbi *p)         { return __builtin_vec_lvrxl (a,p); }
++vsi  lrxl04(long a, vsi *p)         { return __builtin_vec_lvrxl (a,p); }
++vsi  lrxl05(long a, si *p)          { return __builtin_vec_lvrxl (a,p); }
++vui  lrxl06(long a, vui *p)         { return __builtin_vec_lvrxl (a,p); }
++vui  lrxl07(long a, ui *p)          { return __builtin_vec_lvrxl (a,p); }
++vbs  lrxl08(long a, vbs *p)         { return __builtin_vec_lvrxl (a,p); }
++vp   lrxl09(long a, vp *p)          { return __builtin_vec_lvrxl (a,p); }
++vss  lrxl10(long a, vss *p)         { return __builtin_vec_lvrxl (a,p); }
++vss  lrxl11(long a, ss *p)          { return __builtin_vec_lvrxl (a,p); }
++vus  lrxl12(long a, vus *p)         { return __builtin_vec_lvrxl (a,p); }
++vus  lrxl13(long a, us *p)          { return __builtin_vec_lvrxl (a,p); }
++vbc  lrxl14(long a, vbc *p)         { return __builtin_vec_lvrxl (a,p); }
++vsc  lrxl15(long a, vsc *p)         { return __builtin_vec_lvrxl (a,p); }
++vsc  lrxl16(long a, sc *p)          { return __builtin_vec_lvrxl (a,p); }
++vuc  lrxl17(long a, vuc *p)         { return __builtin_vec_lvrxl (a,p); }
++vuc  lrxl18(long a, uc *p)          { return __builtin_vec_lvrxl (a,p); }
+Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "stvlx" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++void sc1(vsc v, long a, void *p)    { __builtin_altivec_stvlx (v,a,p); }
++void slx01(vsf v, long a, vsf *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx02(vsf v, long a, sf *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx03(vbi v, long a, vbi *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx04(vsi v, long a, vsi *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx05(vsi v, long a, si *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx06(vui v, long a, vui *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx07(vui v, long a, ui *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx08(vbs v, long a, vbs *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx09(vp v, long a, vp *p)     { __builtin_vec_stvlx (v,a,p); }
++void slx10(vss v, long a, vss *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx11(vss v, long a, ss *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx12(vus v, long a, vus *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx13(vus v, long a, us *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx14(vbc v, long a, vbc *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx15(vsc v, long a, vsc *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx16(vsc v, long a, sc *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx17(vuc v, long a, vuc *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx18(vuc v, long a, uc *p)    { __builtin_vec_stvlx (v,a,p); }
+Index: gcc/testsuite/gcc.target/powerpc/pr53199.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr53199.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr53199.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,50 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O2 -mcpu=power6 -mavoid-indexed-addresses" } */
++/* { dg-final { scan-assembler-times "lwbrx" 6 } } */
++/* { dg-final { scan-assembler-times "stwbrx" 6 } } */
++
++/* PR 51399: bswap gets an error if -mavoid-indexed-addresses was used in
++   creating the two lwbrx instructions.  */
++
++long long
++load64_reverse_1 (long long *p)
++{
++  return __builtin_bswap64 (*p);
++}
++
++long long
++load64_reverse_2 (long long *p)
++{
++  return __builtin_bswap64 (p[1]);
++}
++
++long long
++load64_reverse_3 (long long *p, int i)
++{
++  return __builtin_bswap64 (p[i]);
++}
++
++void
++store64_reverse_1 (long long *p, long long x)
++{
++  *p = __builtin_bswap64 (x);
++}
++
++void
++store64_reverse_2 (long long *p, long long x)
++{
++  p[1] = __builtin_bswap64 (x);
++}
++
++void
++store64_reverse_3 (long long *p, long long x, int i)
++{
++  p[i] = __builtin_bswap64 (x);
++}
++
++long long
++reg_reverse (long long x)
++{
++  return __builtin_bswap64 (x);
++}
+Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "stvlxl" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++void sc2(vsc v, long a, void *p)    { __builtin_altivec_stvlxl (v,a,p); }
++void slxl01(vsf v, long a, vsf *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl02(vsf v, long a, sf *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl03(vbi v, long a, vbi *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl04(vsi v, long a, vsi *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl05(vsi v, long a, si *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl06(vui v, long a, vui *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl07(vui v, long a, ui *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl08(vbs v, long a, vbs *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl09(vp v, long a, vp *p)    { __builtin_vec_stvlxl (v,a,p); }
++void slxl10(vss v, long a, vss *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl11(vss v, long a, ss *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl12(vus v, long a, vus *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl13(vus v, long a, us *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl14(vbc v, long a, vbc *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl15(vsc v, long a, vsc *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl16(vsc v, long a, sc *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl17(vuc v, long a, vuc *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl18(vuc v, long a, uc *p)   { __builtin_vec_stvlxl (v,a,p); }
+Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c	(.../branches/gcc-4_6-branch)
+@@ -14,6 +14,6 @@
+     c[i] = a[i] * b[i+3];
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movups256/1" } } */
+-/* { dg-final { scan-assembler "\\*avx_movups/1" } } */
++/* { dg-final { scan-assembler-not "avx_movups256/1" } } */
++/* { dg-final { scan-assembler "avx_movups/1" } } */
+ /* { dg-final { scan-assembler "vinsertf128" } } */
+Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c	(.../branches/gcc-4_6-branch)
+@@ -14,6 +14,6 @@
+     c[i] = a[i] * b[i+3];
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movupd256/1" } } */
+-/* { dg-final { scan-assembler "\\*avx_movupd/1" } } */
++/* { dg-final { scan-assembler-not "avx_movupd256/1" } } */
++/* { dg-final { scan-assembler "avx_movupd/1" } } */
+ /* { dg-final { scan-assembler "vinsertf128" } } */
+Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c	(.../branches/gcc-4_6-branch)
+@@ -17,6 +17,6 @@
+     d[i] = c[i] * 20.0;
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movups256/2" } } */
++/* { dg-final { scan-assembler-not "avx_movups256/2" } } */
+ /* { dg-final { scan-assembler "movups.*\\*avx_movv4sf_internal/3" } } */
+ /* { dg-final { scan-assembler "vextractf128" } } */
+Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c	(.../branches/gcc-4_6-branch)
+@@ -17,6 +17,6 @@
+     d[i] = c[i] * 20.0;
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movupd256/2" } } */
++/* { dg-final { scan-assembler-not "avx_movupd256/2" } } */
+ /* { dg-final { scan-assembler "movupd.*\\*avx_movv2df_internal/3" } } */
+ /* { dg-final { scan-assembler "vextractf128" } } */
+Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c	(.../branches/gcc-4_6-branch)
+@@ -24,6 +24,6 @@
+     }
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movdqu256/1" } } */
+-/* { dg-final { scan-assembler "\\*avx_movdqu/1" } } */
++/* { dg-final { scan-assembler-not "avx_movdqu256/1" } } */
++/* { dg-final { scan-assembler "avx_movdqu/1" } } */
+ /* { dg-final { scan-assembler "vinsertf128" } } */
+Index: gcc/testsuite/gcc.target/i386/pr53416.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr53416.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr53416.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,17 @@
++/* PR target/53416 */
++/* { dg-options "-O2 -mrdrnd" } */
++
++int test (void)
++{
++  unsigned int number = 0;
++  int result0, result1, result2, result3;
++
++  result0 = __builtin_ia32_rdrand32_step (&number);
++  result1 = __builtin_ia32_rdrand32_step (&number);
++  result2 = __builtin_ia32_rdrand32_step (&number);
++  result3 = __builtin_ia32_rdrand32_step (&number);
++
++  return result0 + result1 +result2 + result3;
++}
++
++/* { dg-final { scan-assembler-times "rdrand" 4 } } */
+Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c	(.../branches/gcc-4_6-branch)
+@@ -14,6 +14,6 @@
+     b[i] = a[i+3] * 2;
+ }
+ 
+-/* { dg-final { scan-assembler "\\*avx_movups256/1" } } */
+-/* { dg-final { scan-assembler-not "\\*avx_movups/1" } } */
++/* { dg-final { scan-assembler "avx_movups256/1" } } */
++/* { dg-final { scan-assembler-not "avx_movups/1" } } */
+ /* { dg-final { scan-assembler-not "vinsertf128" } } */
+Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c	(.../branches/gcc-4_6-branch)
+@@ -24,6 +24,6 @@
+     }
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movdqu256/2" } } */
++/* { dg-final { scan-assembler-not "avx_movdqu256/2" } } */
+ /* { dg-final { scan-assembler "movdqu.*\\*avx_movv16qi_internal/3" } } */
+ /* { dg-final { scan-assembler "vextractf128" } } */
+Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c	(.../branches/gcc-4_6-branch)
+@@ -14,7 +14,7 @@
+     b[i+3] = a[i] * c[i];
+ }
+ 
+-/* { dg-final { scan-assembler "\\*avx_movups256/2" } } */
+-/* { dg-final { scan-assembler-not "\\*avx_movups/2" } } */
++/* { dg-final { scan-assembler "avx_movups256/2" } } */
++/* { dg-final { scan-assembler-not "avx_movups/2" } } */
+ /* { dg-final { scan-assembler-not "\\*avx_movv4sf_internal/3" } } */
+ /* { dg-final { scan-assembler-not "vextractf128" } } */
+Index: gcc/testsuite/gcc.target/i386/pr52736.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr52736.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr52736.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,29 @@
++/* PR target/52736 */
++/* { dg-do run } */
++/* { dg-options "-O1 -msse2" } */
++/* { dg-require-effective-target sse2_runtime } */
++
++#include <x86intrin.h>
++
++typedef double D __attribute__((may_alias));
++__attribute__((aligned(16))) static const double r[4] = { 1., 5., 1., 3. };
++
++__attribute__((noinline, noclone))
++void
++foo (int x)
++{
++  asm volatile ("" : "+g" (x) : : "memory");
++  if (x != 3)
++    __builtin_abort ();
++}
++
++int
++main ()
++{
++  __m128d t = _mm_set1_pd (5.);
++  ((D *)(&t))[0] = 1.;
++  foo (_mm_movemask_pd (_mm_cmpeq_pd (t, _mm_load_pd (&r[0]))));
++  ((D *)(&t))[1] = 3.;
++  foo (_mm_movemask_pd (_mm_cmpeq_pd (t, _mm_load_pd (&r[2]))));
++  return 0;
++}
+Index: gcc/testsuite/lib/target-supports.exp
+===================================================================
+--- a/src/gcc/testsuite/lib/target-supports.exp	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/lib/target-supports.exp	(.../branches/gcc-4_6-branch)
+@@ -2976,6 +2976,26 @@
+     return $et_natural_alignment_64_saved
+ }
+ 
++# Return 1 if all vector types are naturally aligned (aligned to their
++# type-size), 0 otherwise.
++#
++# This won't change for different subtargets so cache the result.
++
++proc check_effective_target_vect_natural_alignment { } {
++    global et_vect_natural_alignment
++
++    if [info exists et_vect_natural_alignment_saved] {
++        verbose "check_effective_target_vect_natural_alignment: using cached result" 2
++    } else {
++        set et_vect_natural_alignment_saved 1
++        if { [check_effective_target_arm_eabi] } {
++            set et_vect_natural_alignment_saved 0
++        }
++    }
++    verbose "check_effective_target_vect_natural_alignment: returning $et_vect_natural_alignment_saved" 2
++    return $et_vect_natural_alignment_saved
++}
++
+ # Return 1 if vector alignment (for types of size 32 bit or less) is reachable, 0 otherwise.
+ #
+ # This won't change for different subtargets so cache the result.
+Index: gcc/testsuite/gfortran.dg/init_flag_10.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/init_flag_10.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/init_flag_10.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,43 @@
++! { dg-do run }
++! { dg-options "-finit-real=NAN" }
++! { dg-add-options ieee }
++! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
++!
++! PR fortran/50619
++!
++! Contributed by Fred Krogh
++!
++! The NaN initialization used to set the associate name to NaN!
++!
++
++module testa2
++type, public ::  test_ty
++  real :: rmult = 1.0e0
++end type test_ty
++
++contains
++  subroutine test(e, var1)
++    type(test_ty) :: e
++    real :: var1, var2 ! Should get NaN initialized
++
++    ! Should be the default value
++    if (e%rmult /= 1.0) call abort ()
++
++    ! Check that NaN initialization is really turned on
++    if (var1 == var1) call abort () 
++    if (var2 == var2) call abort () 
++
++    ! The following was failing:
++    associate (rmult=>e%rmult)
++      if (e%rmult /= 1.0) call abort ()
++    end associate
++  end subroutine test
++end module testa2
++
++program testa1
++  use testa2
++  type(test_ty) :: e
++  real :: var1 ! Should get NaN initialized
++  call test(e, var1)
++  stop
++end program testa1
+Index: gcc/testsuite/gfortran.dg/intrinsic_8.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/intrinsic_8.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/intrinsic_8.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,23 @@
++! { dg-do compile }
++!
++! PR fortran/52452
++!
++! Contributed by Roger Ferrer Ibanez
++!
++PROGRAM test_etime
++    IMPLICIT NONE
++    INTRINSIC :: etime
++    REAL(4) :: tarray(1:2)
++    REAL(4) :: result
++
++    CALL etime(tarray, result)
++END PROGRAM test_etime
++
++subroutine test_etime2
++    IMPLICIT NONE
++    INTRINSIC :: etime
++    REAL(4) :: tarray(1:2)
++    REAL(4) :: result
++
++    result = etime(tarray)
++END subroutine test_etime2
+Index: gcc/testsuite/gfortran.dg/array_section_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/array_section_3.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/array_section_3.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,17 @@
++! { dg-do compile }
++!
++! PR fortran/54225
++!
++! Contributed by robb wu
++!
++program test
++  implicit none
++  real :: A(2,3)
++
++  print *, A(1, *)  ! { dg-error "Expected array subscript" }
++end program
++
++subroutine test2
++integer, dimension(2) :: a
++a(*) = 1  ! { dg-error "Expected array subscript" }
++end
+Index: gcc/testsuite/gfortran.dg/bound_simplification_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/bound_simplification_3.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/bound_simplification_3.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,23 @@
++! { dg-do compile }
++! { dg-options "-fdump-tree-original" }
++!
++! PR fortran/54208
++! The I and J definitions used to raise an error because ARR's array spec
++! was resolved to late for the LBOUND and UBOUND calls to be simplified to
++! a constant.
++!
++! Contributed by Carlos A. Cruz <carlos.a.cruz@nasa.gov>
++
++program testit
++  integer, parameter :: n=2
++  integer, dimension(1-min(n,2)/2:n) :: arr
++  integer, parameter :: i=lbound(arr,1)
++  integer, parameter :: j=ubound(arr,1)
++  ! write(6,*) i, j
++  if (i /= 0) call abort
++  if (j /= 2) call abort
++end program testit
++
++! { dg-final { scan-tree-dump-times "bound" 0 "original" } }
++! { dg-final { scan-tree-dump-times "abort" 0 "original" } }
++! { dg-final { cleanup-tree-dump "original" } }
+Index: gcc/testsuite/gfortran.dg/implicit_pure_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/implicit_pure_3.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/implicit_pure_3.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,109 @@
++! { dg-do compile }
++! { dg-options "-O2 -fdump-tree-optimized" }
++!
++! PR fortran/54556
++!
++! Contributed by Joost VandeVondele
++!
++MODULE parallel_rng_types
++
++  IMPLICIT NONE
++
++  ! Global parameters in this module
++  INTEGER, PARAMETER :: dp=8
++
++  TYPE rng_stream_type
++    PRIVATE
++    CHARACTER(LEN=40)             :: name
++    INTEGER                       :: distribution_type
++    REAL(KIND=dp), DIMENSION(3,2) :: bg,cg,ig
++    LOGICAL                       :: antithetic,extended_precision
++    REAL(KIND=dp)                 :: buffer
++    LOGICAL                       :: buffer_filled
++  END TYPE rng_stream_type
++
++  REAL(KIND=dp), DIMENSION(3,3) :: a1p0,a1p76,a1p127,&
++                                   a2p0,a2p76,a2p127,&
++                                   inv_a1,inv_a2
++
++  INTEGER, PARAMETER          :: GAUSSIAN = 1,&
++                                 UNIFORM  = 2
++
++  REAL(KIND=dp), PARAMETER :: norm  = 2.328306549295727688e-10_dp,&
++                              m1    = 4294967087.0_dp,&
++                              m2    = 4294944443.0_dp,&
++                              a12   = 1403580.0_dp,&
++                              a13n  = 810728.0_dp,&
++                              a21   = 527612.0_dp,&
++                              a23n  = 1370589.0_dp,&
++                              two17 = 131072.0_dp,&            ! 2**17
++                              two53 = 9007199254740992.0_dp,&  ! 2**53
++                              fact  = 5.9604644775390625e-8_dp ! 1/2**24
++
++
++CONTAINS
++
++  FUNCTION rn32(rng_stream) RESULT(u)
++
++    TYPE(rng_stream_type), POINTER           :: rng_stream
++    REAL(KIND=dp)                            :: u
++
++    INTEGER                                  :: k
++    REAL(KIND=dp)                            :: p1, p2
++
++! -------------------------------------------------------------------------
++! Component 1
++
++    p1 = a12*rng_stream%cg(2,1) - a13n*rng_stream%cg(1,1)
++    k = INT(p1/m1)
++    p1 = p1 - k*m1
++    IF (p1 < 0.0_dp) p1 = p1 + m1
++    rng_stream%cg(1,1) = rng_stream%cg(2,1)
++    rng_stream%cg(2,1) = rng_stream%cg(3,1)
++    rng_stream%cg(3,1) = p1
++
++    ! Component 2
++
++    p2 = a21*rng_stream%cg(3,2) - a23n*rng_stream%cg(1,2)
++    k = INT(p2/m2)
++    p2 = p2 - k*m2
++    IF (p2 < 0.0_dp) p2 = p2 + m2
++    rng_stream%cg(1,2) = rng_stream%cg(2,2)
++    rng_stream%cg(2,2) = rng_stream%cg(3,2)
++    rng_stream%cg(3,2) = p2
++
++    ! Combination
++
++    IF (p1 > p2) THEN
++      u = (p1 - p2)*norm
++    ELSE
++      u = (p1 - p2 + m1)*norm
++    END IF
++
++    IF (rng_stream%antithetic) u = 1.0_dp - u
++
++  END FUNCTION rn32
++
++! *****************************************************************************
++  FUNCTION rn53(rng_stream) RESULT(u)
++
++    TYPE(rng_stream_type), POINTER           :: rng_stream
++    REAL(KIND=dp)                            :: u
++
++    u = rn32(rng_stream)
++
++    IF (rng_stream%antithetic) THEN
++      u = u + (rn32(rng_stream) - 1.0_dp)*fact
++      IF (u < 0.0_dp) u = u + 1.0_dp
++    ELSE
++      u = u + rn32(rng_stream)*fact
++      IF (u >= 1.0_dp) u = u - 1.0_dp
++    END IF
++
++  END FUNCTION rn53
++
++END MODULE
++
++! { dg-final { scan-module-absence "parallel_rng_types" "IMPLICIT_PURE" } }
++! { dg-final { scan-tree-dump-times "rn32 \\(rng_stream" 3 "optimized" } }
++! { dg-final { cleanup-tree-dump "optimized" } }
+Index: gcc/testsuite/gfortran.dg/optional_absent_2.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/optional_absent_2.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/optional_absent_2.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,53 @@
++! { dg-do run }
++!
++! PR fortran/51758
++!
++! Contributed by Mikael Morin
++!
++! Check whether passing NULL() to an elemental procedure works,
++! where NULL() denotes an absent optional argument.
++!
++program p
++
++  integer :: a(2)
++  integer :: b
++
++  a = 0
++  a = foo((/ 1, 1 /), null())
++!  print *, a
++  if (any(a /= 2)) call abort
++
++  a = 0
++  a = bar((/ 1, 1 /), null())
++!  print *, a
++  if (any(a /= 2)) call abort
++
++  b = 0
++  b = bar(1, null())
++!  print *, b
++  if (b /= 2) call abort
++
++contains
++
++  function foo(a, b)
++    integer           :: a(:)
++    integer, optional :: b(:)
++    integer           :: foo(size(a))
++
++    if (present(b)) call abort
++
++    foo = 2
++  end function foo
++
++  elemental function bar(a, b)
++    integer, intent(in)           :: a
++    integer, intent(in), optional :: b
++    integer                       :: bar
++
++    bar = 2
++
++    if (present(b)) bar = 1
++
++  end function bar
++
++end program p
+Index: gcc/testsuite/gfortran.dg/coarray_28.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/coarray_28.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/coarray_28.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,10 @@
++! { dg-do compile }
++! { dg-options "-fcoarray=single" }
++!
++! PR fortran/54225
++!
++
++integer, allocatable :: a[:,:]
++
++allocate (a[*,4]) ! { dg-error "Unexpected '.' for codimension 1 of 2" }
++end
+Index: gcc/testsuite/gfortran.dg/save_4.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/save_4.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/save_4.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,13 @@
++! { dg-do compile }
++! { dg-options "-std=f2003" }
++!
++! PR fortran/53597
++!
++MODULE somemodule
++  IMPLICIT NONE
++  TYPE sometype
++    INTEGER :: i
++    DOUBLE PRECISION, POINTER, DIMENSION(:,:) :: coef => NULL()
++  END TYPE sometype
++  TYPE(sometype) :: somevariable ! { dg-error "Fortran 2008: Implied SAVE for module variable 'somevariable' at .1., needed due to the default initialization" }
++END MODULE somemodule
+Index: gcc/testsuite/gfortran.dg/proc_ptr_34.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_34.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_34.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,79 @@
++! { dg-do compile }
++!
++! PR fortran/52469
++!
++! This was failing as the DECL of the proc pointer "func"
++! was used for the interface of the proc-pointer component "my_f_ptr"
++! rather than the decl of the proc-pointer target
++!
++! Contributed by palott@gmail.com
++!
++
++module ExampleFuncs
++  implicit none
++
++  ! NOTE: "func" is a procedure pointer!
++  pointer :: func
++  interface
++     function func (z)
++        real :: func
++        real, intent (in) :: z
++     end function func
++  end interface
++
++  type Contains_f_ptr
++     procedure (func), pointer, nopass :: my_f_ptr
++  end type Contains_f_ptr
++contains
++
++function f1 (x)
++  real :: f1
++  real, intent (in) :: x
++
++  f1 = 2.0 * x
++
++  return
++end function f1
++
++function f2 (x)
++   real :: f2
++   real, intent (in) :: x
++
++   f2 = 3.0 * x**2
++
++   return
++end function f2
++
++function fancy (func, x)
++   real :: fancy
++   real, intent (in) :: x
++
++   interface AFunc
++      function func (y)
++         real :: func
++         real, intent (in) ::y
++      end function func
++   end interface AFunc
++
++   fancy = func (x) + 3.3 * x
++end function fancy
++
++end module  ExampleFuncs
++
++
++program test_proc_ptr
++  use ExampleFuncs
++  implicit none
++
++  type (Contains_f_ptr), dimension (2) :: NewType
++ 
++  !NewType(1) % my_f_ptr => f1
++  NewType(2) % my_f_ptr => f2
++
++  !write (*, *) NewType(1) % my_f_ptr (3.0), NewType(2) % my_f_ptr (3.0)
++  write (6, *)  NewType(2) % my_f_ptr (3.0) ! < Shall print '27.0'
++
++  stop
++end program test_proc_ptr
++
++! { dg-final { cleanup-modules "examplefuncs" } }
+Index: gcc/testsuite/gfortran.dg/allocate_error_4.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/allocate_error_4.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/allocate_error_4.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,16 @@
++! { dg-do compile }
++! PR fortran/55314 - the second allocate statement was rejected.
++
++program main
++  implicit none
++  integer :: max_nb
++  type comm_mask
++    integer(4), pointer :: mask(:)
++  end type comm_mask
++  type (comm_mask), allocatable, save :: encode(:,:)
++  max_nb=2
++  allocate( encode(1:1,1:max_nb))
++  allocate( encode(1,1)%mask(1),encode(1,2)%mask(1))
++  deallocate( encode(1,1)%mask,encode(1,2)%mask)
++  allocate( encode(1,1)%mask(1),encode(1,1)%mask(1))  ! { dg-error "also appears at" }
++end program main
+Index: gcc/testsuite/gfortran.dg/pointer_intent_6.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pointer_intent_6.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/pointer_intent_6.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,19 @@
++! { dg-do compile }
++!
++! PR fortran/52864
++!
++! Assigning to an intent(in) pointer (which is valid).
++!
++      program test
++         type PoisFFT_Solver3D
++           complex, dimension(:,:,:), &
++                           pointer :: work => null()
++         end type PoisFFT_Solver3D
++      contains
++        subroutine PoisFFT_Solver3D_FullPeriodic(D, p)
++          type(PoisFFT_Solver3D), intent(in) :: D
++          real, intent(in), pointer :: p(:)
++          D%work(i,j,k) = 0.0
++          p = 0.0
++        end subroutine
++      end
+Index: gcc/testsuite/gfortran.dg/coarray_10.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/coarray_10.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/coarray_10.f90	(.../branches/gcc-4_6-branch)
+@@ -30,12 +30,12 @@
+ subroutine rank_mismatch()
+   implicit none
+   integer,allocatable :: A(:)[:,:,:,:]
+-  allocate(A(1)[1,1,1:*])     ! { dg-error "Unexpected ... for codimension" }
++  allocate(A(1)[1,1,1:*])     ! { dg-error "Too few codimensions" }
+   allocate(A(1)[1,1,1,1,1,*]) ! { dg-error "Invalid codimension 5" }
+   allocate(A(1)[1,1,1,*])
+   allocate(A(1)[1,1])     ! { dg-error "Too few codimensions" }
+   allocate(A(1)[1,*])     ! { dg-error "Too few codimensions" }
+-  allocate(A(1)[1,1:*])   ! { dg-error "Unexpected ... for codimension" }
++  allocate(A(1)[1,1:*])   ! { dg-error "Too few codimensions" }
+ 
+   A(1)[1,1,1] = 1       ! { dg-error "Too few codimensions" }
+   A(1)[1,1,1,1,1,1] = 1 ! { dg-error "Invalid codimension 5" }
+Index: gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,40 @@
++! { dg-do run }
++!
++! PR fortran/53389
++!
++! The program was leaking memory before due to
++! realloc on assignment and nested functions.
++!
++module foo
++  implicit none
++  contains
++
++  function filler(array, val)
++    real, dimension(:), intent(in):: array
++    real, dimension(size(array)):: filler
++    real, intent(in):: val
++
++    filler=val
++
++  end function filler
++end module
++
++program test
++  use foo
++  implicit none
++
++  real, dimension(:), allocatable:: x, y
++  integer, parameter:: N=1000 !*1000
++  integer:: i
++
++!  allocate( x(N) )
++  allocate( y(N) )
++  y=0.0
++
++  do i=1, N
++!    print *,i
++    x=filler(filler(y, real(2*i)), real(i))
++    y=y+x
++  end do
++
++end program test
+Index: gcc/testsuite/gcc.c-torture/execute/pr53084.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/pr53084.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr53084.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,18 @@
++/* PR middle-end/53084 */
++
++extern void abort (void);
++
++__attribute__((noinline, noclone)) void
++bar (const char *p)
++{
++  if (p[0] != 'o' || p[1] != 'o' || p[2])
++    abort ();
++}
++
++int
++main ()
++{
++  static const char *const foo[] = {"foo" + 1};
++  bar (foo[0]);
++  return 0;
++}
+Index: gcc/testsuite/gcc.c-torture/execute/20120427-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/20120427-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/20120427-1.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,36 @@
++typedef struct sreal
++{
++  unsigned sig;		/* Significant.  */
++  int exp;		/* Exponent.  */
++} sreal;
++
++sreal_compare (sreal *a, sreal *b)
++{
++  if (a->exp > b->exp)
++    return 1;
++  if (a->exp < b->exp)
++    return -1;
++  if (a->sig > b->sig)
++    return 1;
++  return -(a->sig < b->sig);
++}
++
++sreal a[] = {
++   { 0, 0 },
++   { 1, 0 },
++   { 0, 1 },
++   { 1, 1 }
++};
++
++int main()
++{
++  int i, j;
++  for (i = 0; i <= 3; i++) {
++    for (j = 0; j < 3; j++) {
++      if (i < j && sreal_compare(&a[i], &a[j]) != -1) abort();
++      if (i == j && sreal_compare(&a[i], &a[j]) != 0) abort();
++      if (i > j && sreal_compare(&a[i], &a[j]) != 1) abort();
++    }
++  }
++  return 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/20121107-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/20121107-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/20121107-1.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,14 @@
++/* PR middle-end/55219 */
++/* Testcase by Markus Trippelsdorf <markus@trippelsdorf.de> */
++
++int x, c, d, e, f, g, h, i;
++double j;
++const int k;
++const enum { B } a;
++void
++fn1 (void)
++{
++  h = (g ? c : g ? f : g ? e : g ? i : g ? f : g ? e : g ? d : x)
++      + (a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a
++         ? j : a ? : 0 ? : a ? : a ? : a ? : a ? : a ? : a ? k : a ? : x);
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-2.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  0 / 0 || 0 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr53418-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  int i = (0 ? 1 : 0U / 0);
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-4.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-4.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  0 / 0 && 1 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-6.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-6.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-6.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  0 || 65536*65536 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54552-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54552-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54552-1.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,8 @@
++void
++f (void)
++{
++  unsigned n = 10;
++
++  typedef double T[n];
++  (double (*)[n])((unsigned char (*)[sizeof (T)]){ 0 });
++}
+Index: gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,56 @@
++/* Inspired by the test case for PR middle-end/52640.  */
++
++typedef struct
++{
++    char *value;
++} REFERENCE;
++
++/* Add a few "extern int Xxxxxx ();" declarations.  */
++#undef DEF
++#undef LIM1
++#undef LIM2
++#undef LIM3
++#undef LIM4
++#undef LIM5
++#undef LIM6
++#define DEF(x) 	extern int x ()
++#define LIM1(x) DEF(x##0); DEF(x##1); DEF(x##2); DEF(x##3); DEF(x##4); \
++		DEF(x##5); DEF(x##6); DEF(x##7); DEF(x##8); DEF(x##9);
++#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
++		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
++#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
++		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
++#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
++		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
++#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
++		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
++#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
++		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
++LIM5 (X);
++
++/* Add references to them, or GCC will simply ignore the extern decls.  */
++#undef DEF
++#undef LIM1
++#undef LIM2
++#undef LIM3
++#undef LIM4
++#undef LIM5
++#undef LIM6
++#define DEF(x)	(char *) x
++#define LIM1(x) DEF(x##0), DEF(x##1), DEF(x##2), DEF(x##3), DEF(x##4), \
++		DEF(x##5), DEF(x##6), DEF(x##7), DEF(x##8), DEF(x##9),
++#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
++		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
++#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
++		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
++#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
++		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
++#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
++		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
++#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
++		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
++REFERENCE references[] = {
++  LIM5 (X)
++  0
++};
++
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-1.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  0 || 0 / 0 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-3.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-3.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  1 && 0 / 0 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr53418-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  int i = (1 ? 0U / 0 : 1);
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-5.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-5.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-5.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  !(0 / 0);
++}
+Index: gcc/testsuite/gnat.dg/oconst6.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/oconst6.ads	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/oconst6.ads	(.../branches/gcc-4_6-branch)
+@@ -1,18 +0,0 @@
+--- { dg-do compile }
+--- { dg-final { scan-assembler-not "elabs" } }
+-
+-package OCONST6 is
+-
+-   type Sequence is array (1 .. 1) of Natural;
+-
+-   type Message is record
+-      Data : Sequence;
+-   end record;
+-
+-   for Message'Alignment use 1;
+-   pragma PACK (Message);
+-
+-   ACK : Message := (Data => (others => 1));
+-
+-end;
+-
+Index: gcc/testsuite/gnat.dg/addr1.adb
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/addr1.adb	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/addr1.adb	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,5 @@
++--  { dg-do compile }
++
+ with System;
+ package body addr1 is
+    task type T is
+Index: gcc/testsuite/gnat.dg/addr1.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/addr1.ads	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/addr1.ads	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,3 @@
+---  { dg-do compile }
+-
+ package addr1 is
+    pragma Elaborate_Body;
+ end;
+Index: gcc/testsuite/gnat.dg/discr23.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/discr23.ads	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/discr23.ads	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,3 @@
+--- { dg-do compile }
+-
+ package Discr23 is
+ 
+   procedure Dummy;
+Index: gcc/testsuite/gnat.dg/nested_float_packed.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/nested_float_packed.ads	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/nested_float_packed.ads	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,3 @@
+--- { dg-do compile }
+-
+ package Nested_Float_Packed is
+ 
+    type Float_Type is record
+@@ -20,5 +18,3 @@
+    Data_Block : array (Range_Type)
+      of Data_Type := (others => Default_Data);
+ end;
+-
+-
+Index: gcc/testsuite/gnat.dg/specs/oconst6.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/specs/oconst6.ads	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/specs/oconst6.ads	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,18 @@
++-- { dg-do compile }
++-- { dg-final { scan-assembler-not "elabs" } }
++
++package OCONST6 is
++
++   type Sequence is array (1 .. 1) of Natural;
++
++   type Message is record
++      Data : Sequence;
++   end record;
++
++   for Message'Alignment use 1;
++   pragma PACK (Message);
++
++   ACK : Message := (Data => (others => 1));
++
++end;
++
+Index: gcc/testsuite/gnat.dg/atomic5.adb
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/atomic5.adb	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/atomic5.adb	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,5 @@
++-- { dg-do compile }
++
+ package body Atomic5 is
+ 
+   function Create return R is
+Index: gcc/testsuite/gnat.dg/atomic5.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/atomic5.ads	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/atomic5.ads	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,3 @@
+--- { dg-do compile }
+-
+ with Unchecked_Conversion;
+ 
+ package Atomic5 is
+Index: gcc/testsuite/gnat.dg/discr29.adb
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/discr29.adb	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/discr29.adb	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,5 @@
++-- { dg-do compile }
++
+ package body Discr29 is
+ 
+    procedure Proc (R : out Rec3) is
+Index: gcc/testsuite/gnat.dg/discr29.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/discr29.ads	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gnat.dg/discr29.ads	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,3 @@
+--- { dg-do compile }
+-
+ package Discr29 is
+ 
+    type Rec1 is record
+Index: gcc/testsuite/gcc.dg/pr52862.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr52862.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/pr52862.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-O" } */
++
++void ASMAtomicWritePtrVoid(const void *pv);
++void rtThreadDestroy(void)
++{
++  void * const pvTypeChecked = ((void *)0);
++  ASMAtomicWritePtrVoid((void *)(pvTypeChecked));
++}
+Index: gcc/testsuite/gcc.dg/align-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/align-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/align-2.c	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ /* PR 17962 */
+-/* { dg-do compile } */
++/* { dg-do compile { target vect_natural_alignment } } */
+ /* { dg-options "" } */
+ 
+ typedef float v4 __attribute__((vector_size(sizeof(float)*4)));
+Index: gcc/testsuite/gcc.dg/pr48374.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr48374.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/pr48374.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,17 @@
++/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
++/* { dg-options "-O -fschedule-insns2 -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops -fselective-scheduling2 --param max-sched-extend-regions-iters=2"  } */
++
++void foo (int y)
++{
++  switch (y)
++    {
++    case 3:
++    case 5:
++    case 7:
++    case 11:
++      break;
++    default:
++      __builtin_unreachable ();
++    }
++}
++
+Index: gcc/testsuite/gcc.dg/pr53701.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr53701.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/pr53701.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,59 @@
++/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
++/* { dg-options "-O3 -fselective-scheduling2 -fsel-sched-pipelining" } */
++typedef unsigned short int uint16_t;
++typedef unsigned long int uintptr_t;
++typedef struct GFX_VTABLE
++{
++  int color_depth;
++  unsigned char *line[];
++}
++BITMAP;
++extern int _drawing_mode;
++extern BITMAP *_drawing_pattern;
++extern int _drawing_y_anchor;
++extern unsigned int _drawing_x_mask;
++extern unsigned int _drawing_y_mask;
++extern uintptr_t bmp_write_line (BITMAP *, int);
++  void
++_linear_hline15 (BITMAP * dst, int dx1, int dy, int dx2, int color)
++{
++  int w;
++  if (_drawing_mode == 0)
++  {
++    int x, curw;
++    unsigned short *sline =
++      (unsigned short *) (_drawing_pattern->
++          line[((dy) -
++            _drawing_y_anchor) & _drawing_y_mask]);
++    unsigned short *s;
++    unsigned short *d =
++      ((unsigned short *) (bmp_write_line (dst, dy)) + (dx1));
++    s = ((unsigned short *) (sline) + (x));
++    if (_drawing_mode == 2)
++    {
++    }
++    else if (_drawing_mode == 3)
++    {
++      do
++      {
++        w -= curw;
++        do
++        {
++          unsigned long c = (*(s));
++          if (!((unsigned long) (c) == 0x7C1F))
++          {
++            (*((uint16_t *) ((uintptr_t) (d))) = ((color)));
++          }
++          ((s)++);
++        }
++        while (--curw > 0);
++        s = sline;
++        curw =
++          (((w) <
++            ((int) _drawing_x_mask +
++             1)) ? (w) : ((int) _drawing_x_mask + 1));
++      }
++      while (curw > 0);
++    }
++  }
++}
+Index: gcc/testsuite/gcc.dg/c90-const-expr-8.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/c90-const-expr-8.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/c90-const-expr-8.c	(.../branches/gcc-4_6-branch)
+@@ -22,6 +22,6 @@
+   E5 = 0 * -INT_MIN, /* { dg-warning "12:integer overflow in expression" } */
+   /* { dg-error "3:overflow in constant expression" "constant" { target *-*-* } 22 } */
+   E6 = 0 * !-INT_MIN, /* { dg-warning "13:integer overflow in expression" } */
+-  /* { dg-error "3:not an integer constant" "constant" { target *-*-* } 24 } */
++  /* { dg-error "8:not an integer constant" "constant" { target *-*-* } 24 } */
+   E7 = INT_MIN % -1 /* Not an overflow.  */
+ };
+Index: gcc/testsuite/gcc.dg/stack-usage-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/stack-usage-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/stack-usage-1.c	(.../branches/gcc-4_6-branch)
+@@ -41,6 +41,8 @@
+ #  define SIZE 160 /* 256 -  96 bytes for register save area */
+ #elif defined (__SPU__)
+ #  define SIZE 224
++#elif defined (__sh__)
++#  define SIZE 252
+ #else
+ #  define SIZE 256
+ #endif
+Index: gcc/testsuite/gcc.dg/torture/pr53908.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr53908.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr53908.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,288 @@
++/* { dg-do run } */
++/* SEGV at comment below.  */
++typedef unsigned int size_t;
++typedef enum har {
++  he_fatal = (-199),
++  he_not_initialized,
++  he_bad_input,
++  he_memory_too_small,
++  he_bad_action,
++  he_duplicate,
++  he_bad_nonce,
++  he_stale_nonce,
++  he_bad_credentials,
++  he_bad_user,
++  he_no_such_user,
++  he_bad_passwd,
++  he_unknown_auth_scheme,
++  he_not_found,
++  he_failed_digest_file_check,
++  he_failed_digest_file_save,
++  he_process_not_privileged,
++  he_other,
++  he_end_of_range,
++  ha_no_error = 0,
++  ha_no_value = 1
++} har;
++typedef enum realm_type
++{
++  axis_realm = 0,
++  ws_realm
++} realm_type;
++
++__attribute__((__noclone__, __noinline__))
++har has_www_auth(char *, size_t, realm_type, har);
++
++__attribute__((__noclone__, __noinline__))
++har has_auth_user(const char *, const char *, realm_type, char *, size_t);
++
++__attribute__((__noclone__, __noinline__))
++char *ha_get_string_value(void);
++
++typedef struct
++{
++  unsigned int track_id;
++  char* user;
++  char* realm;
++  char* authent;
++  int internal_realm;
++} request;
++enum user_response {
++  file_not_found_user_response = -3,
++  access_denied_user_response = -2,
++  no_user_response = -1,
++  ok_user_response = 0
++};
++struct realm_group {
++  char *name;
++  int id;
++  struct realm_group *next;
++};
++struct realm {
++  char *name;
++  char *space;
++  struct realm_group *groups;
++  struct realm *next;
++};
++struct user_info {
++  char *name;
++  int no_groups;
++  int groups[128];
++  struct user_info *next;
++};
++static struct user_info *find_user(const char *user_name);
++static int is_member_of_groups(const struct user_info *user_item,
++                                const struct realm_group *groups);
++int authent_author(request *req);
++struct realm *realms = ((void *)0);
++struct user_info *users = ((void *)0);
++static struct user_info*
++find_user(const char *user_name)
++{
++  struct user_info *user_item;
++  user_item = users;
++  while (user_item != ((void *)0)) {
++    /* SEGV due to NULL access here on user_name.  See also comment below.  */
++    if ((__builtin_strcmp(user_item->name, user_name) == 0))
++      break;
++    user_item = user_item->next;
++  }
++  return user_item;
++}
++static int
++is_member_of_groups(const struct user_info *user_item,
++                    const struct realm_group *groups)
++{
++  const struct realm_group *group_item;
++  int i;
++  group_item = groups;
++  while (group_item != ((void *)0)) {
++    for (i = 0; i < user_item->no_groups; i++)
++      if (user_item->groups[i] == group_item->id)
++	return 0;
++    group_item = group_item->next;
++  }
++  return -1;
++}
++char *foo (void) __attribute__((__noclone__, __noinline__));
++char* g_strdup (const char *str) __attribute__((__malloc__, __noclone__, __noinline__));
++int g_strcmp0 (const char *str1, const char *str2);
++static int
++is_basic(char **user)
++{
++  char *passwd_ptr;
++  char *authent = foo();
++  passwd_ptr = __builtin_strchr(authent, ':');
++  if (passwd_ptr != ((void *)0)) {
++    *user = g_strdup(authent);
++    return 0;
++  }
++  return -1;
++}
++static int
++is_digest(char **user)
++{
++  int ret_val = -1;
++  char *authent;
++  authent = ha_get_string_value();
++  if (authent) {
++    *user = g_strdup(authent);
++    ret_val = 0;
++  }
++  return ret_val;
++}
++__attribute__((__noclone__, __noinline__))
++void g_free (void * mem);
++static enum user_response
++get_user_info_from_header(const realm_type type,
++                          char **user_name,
++                          struct user_info **user_item)
++{
++  int ret_val = no_user_response;
++  if ((type == ws_realm)) {
++    if (is_basic(user_name) == 0)
++      ret_val = access_denied_user_response;
++    if (is_digest(user_name) == 0)
++      ret_val = ok_user_response;
++  } else {
++    if (is_basic(user_name) < 0 &&
++	/* Load of *user_name here, but not after the is_digest call.  */
++	is_digest(user_name) < 0)
++      ;
++    else if ((*user_item = find_user(*user_name)) != ((void *)0))
++      ret_val = ok_user_response;
++    else
++      ret_val = access_denied_user_response;
++    if (ret_val != ok_user_response)
++      g_free(*user_name);
++  }
++  return ret_val;
++}
++static enum user_response
++authenticate_user(request *req,
++                  char **user_name,
++                  struct user_info **user_item)
++{
++  char *authent = ((void *)0);
++  har resp = ha_no_value;
++  enum user_response user_resp;
++  int ret_val = no_user_response;
++  if (req->authent && __builtin_strlen(req->authent)) {
++    authent = req->authent;
++    user_resp = get_user_info_from_header(req->internal_realm,
++                                          user_name,
++                                          user_item);
++    if (user_resp == ok_user_response) {
++      resp = has_auth_user(authent, 0, req->internal_realm, "", 1);
++      if (resp == ha_no_error)
++	ret_val = ok_user_response;
++      else if (resp != he_stale_nonce)
++	ret_val = access_denied_user_response;
++    } else if (user_resp == access_denied_user_response)
++      ret_val = access_denied_user_response;
++  }
++  if (resp != he_memory_too_small && resp != ha_no_error)
++    resp = has_www_auth("", 1, req->internal_realm, resp);
++  return ret_val;
++}
++
++int __attribute__ ((__noinline__, __noclone__))
++authent_author(request *req)
++{
++  struct realm *realm;
++  char *user_name = ((void *)0);
++  struct user_info *user_item = ((void *)0);
++  int res = 0;
++  asm ("");
++  realm = realms;
++  if (__builtin_strcmp("Wsd", realm->name) == 0) {
++    req->internal_realm = ws_realm;
++    is_digest(&user_name);
++  }
++  if (authenticate_user(req, &user_name, &user_item) < 0) {
++    if (user_name != ((void *)0))
++      req->user = user_name;
++    res = -2;
++    goto authent_author_return;
++  }
++  if (is_member_of_groups(user_item, realm->groups) < 0)
++    res = -1;
++authent_author_return:
++  return res;
++}
++
++int good0, good1, good2;
++
++__attribute__ ((__noinline__, __noclone__))
++char *foo(void)
++{
++  asm ("");
++  good0++;
++  return "";
++}
++
++__attribute__ ((__noinline__, __noclone__))
++char *ha_get_string_value(void)
++{
++  asm ("");
++  good1++;
++  return "f";
++}
++
++__attribute__ ((__noinline__, __noclone__))
++har has_auth_user(const char *a, const char *b, realm_type c, char *d, size_t e)
++{
++  asm ("");
++  if (*a != 'z' || a[1] != 0 || b != 0 || c != axis_realm || *d != 0
++      || e != 1)
++    __builtin_abort ();
++  return ha_no_error;
++}
++
++__attribute__ ((__noinline__, __noclone__))
++har has_www_auth(char *a, size_t b, realm_type c, har d)
++{
++  (void)(*a+b+c+d);
++  asm ("");
++  __builtin_abort ();
++}
++
++
++char *strdupped_user = "me";
++__attribute__((__malloc__, __noclone__, __noinline__))
++char* g_strdup (const char *str)
++{
++  asm ("");
++  if (*str != 'f')
++    __builtin_abort ();
++  good2++;
++  return strdupped_user;
++}
++
++__attribute__((__noclone__, __noinline__))
++void g_free (void * mem)
++{
++  (void)mem;
++  asm ("");
++  __builtin_abort ();
++}
++
++struct user_info me = { .name = "me", .no_groups = 1, .groups = {42}, .next = 0};
++struct user_info you = { .name = "you", .next = &me};
++struct realm_group xgroups = { .name = "*", .id = 42, .next = 0};
++
++int main(void)
++{
++  char *orig_user = "?";
++  struct realm r = { .name = "x", .space = "space?", .groups = &xgroups, .next = 0};
++  request req = { .user = orig_user, .realm = "!", .authent = "z",
++		  .internal_realm = axis_realm};
++  realms = &r;
++  users = &you;
++  if (authent_author (&req) != 0 || good0 != 1 || good1 != 1 || good2 != 1
++      || req.user != orig_user
++      || req.internal_realm != axis_realm)
++    __builtin_abort ();
++  __builtin_exit (0);
++}
++
+Index: gcc/testsuite/gcc.dg/torture/pr52693.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr52693.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr52693.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,33 @@
++/* { dg-do run } */
++
++struct pair
++{
++  int x;
++  int y;
++};
++
++struct array
++{
++  struct pair elems[ 2 ];
++  unsigned index;
++};
++
++extern void abort ();
++
++void __attribute__ ((noinline,noclone))
++test_results (int x1, int y1, int x2, int y2)
++{
++  if (x1 != x2 || y1 != y2)
++    abort ();
++}
++
++int
++main (void)
++{
++  struct array arr = {{{1,2}, {3,4}}, 1};
++  struct pair last = arr.elems[arr.index];
++
++  test_results ( last.x, last.y, arr.elems[1].x, arr.elems[1].y);
++
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/torture/pr53790.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr53790.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr53790.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++
++typedef struct s {
++    int value;
++} s_t;
++
++static inline int 
++read(s_t const *var)
++{
++  return var->value;
++}
++
++int main()
++{
++  extern union u extern_var;
++  return read((s_t *)&extern_var);
++}
+Index: gcc/testsuite/gcc.dg/torture/pr52407.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr52407.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr52407.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,33 @@
++/* { dg-do run } */
++
++extern void abort (void);
++
++typedef long long T;
++typedef T vl_t __attribute__((vector_size(2 * sizeof (T))));
++
++vl_t	ul[4], vl[4] = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
++
++static void
++mul_vl_l(vl_t *u, vl_t *v, T x, int m)
++{
++  vl_t	 w;
++  T *p = (T *)&w;
++  p[0] = p[1] = x;
++  while (m--)
++    *u++ = *v++ * w;
++}
++
++int
++main(int argc, char *argv[])
++{
++  int i;
++  T *pl;
++
++  pl = (T *) &ul;
++  mul_vl_l(ul, vl, 2, 4);
++  for (i = 0; i < 8; i++)
++    if (pl[i] != 2 * (i + 1))
++      abort ();
++
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/torture/pr51071-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr51071-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr51071-2.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,38 @@
++/* { dg-do compile } */
++/* { dg-options "-fno-delete-null-pointer-checks" } */
++
++extern struct module __this_module;
++static inline void
++trace_module_get  (struct module *mod, unsigned long ip) { }
++struct module;
++static inline __attribute__((no_instrument_function))
++int try_module_get(struct module *module)
++{
++  int ret = 1;
++  if (module)
++    {
++      if (module_is_live(module))
++	{
++	  __label__ __here;
++	  asm("");
++	  __here:
++	  trace_module_get(module, (unsigned long)&&__here);
++	}
++      else
++	ret = 0;
++    }
++  return ret;
++}
++struct net_device;
++struct net_device_ops {
++    int (*ndo_open)(struct net_device *dev);
++};
++int t3e3_open(struct net_device *dev)
++{
++  int ret = hdlc_open(dev);
++  if (ret)
++    return ret;
++  try_module_get((&__this_module));
++  return 0;
++}
++const struct net_device_ops t3e3_ops = { .ndo_open = t3e3_open };
+Index: gcc/testsuite/gcc.dg/torture/pr51071.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr51071.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr51071.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,33 @@
++/* { dg-do compile } */
++
++void foo (void);
++void bar (void *);
++extern int t;
++
++static void kmalloc_large (int size, int flags)
++{
++  (void) size;
++  (void) flags;
++  foo ();
++  bar (({__here:&&__here;}));
++}
++
++static void kmalloc (int size, int flags)
++{
++  if (size)
++    {
++      if ((unsigned long) size > 0x1000)
++	kmalloc_large (size, flags);
++
++      if (flags)
++	bar (({__here:&&__here;}));
++    }
++}
++
++void compress_file_range (int i, int j, int k)
++{
++  int nr_pages = ({j < k;});
++
++  if (i || t)
++    kmalloc (0x1000UL * nr_pages, 0x40UL);
++}
+Index: gcc/testsuite/gcc.dg/volatile-bitfields-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/volatile-bitfields-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/volatile-bitfields-2.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,15 @@
++/* { dg-do run } */
++/* { dg-options "-fstrict-volatile-bitfields" } */
++
++extern void abort(void);
++struct thing {
++  volatile unsigned short a: 8;
++  volatile unsigned short b: 8;
++} t = {1,2};
++
++int main()
++{
++  t.a = 3;
++  if (t.a !=3 || t.b !=2) abort();
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/20020201-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/20020201-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/20020201-1.c	(.../branches/gcc-4_6-branch)
+@@ -7,12 +7,8 @@
+ /* { dg-options "-fprofile-arcs" } */
+ /* { dg-do run { target native } } */
+ 
+-extern void abort (void);
+-extern void exit (int);
++#include <stdlib.h>
+ 
+-int rand (void);
+-void srand (unsigned int seed);
+-
+ int globvar;
+ 
+ void
+Index: gcc/testsuite/gcc.dg/pr49948.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr49948.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/pr49948.c	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,6 @@
+ /* PR tree-optimization/49948 */
+ /* { dg-do compile } */
++/* { dg-require-effective-target pthread } */
+ /* { dg-options "-O3 -ftree-parallelize-loops=2" } */
+ 
+ extern int a, *b;
+Index: gcc/testsuite/gcc.dg/vect/vect-peel-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c	(.../branches/gcc-4_6-branch)
+@@ -49,6 +49,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_element_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/vect-peel-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c	(.../branches/gcc-4_6-branch)
+@@ -50,6 +50,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_element_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vect_element_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/vect-peel-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c	(.../branches/gcc-4_6-branch)
+@@ -4,10 +4,8 @@
+ #include "tree-vect.h"
+ 
+ #define N 128
+-#define RES 21888 
++#define RES 21640 
+ 
+-/* unaligned store.  */
+-
+ int ib[N+10];
+ int ia[N+10];
+ int ic[N+10];
+@@ -18,11 +16,11 @@
+   int i, suma = 0, sumb = 0, sumc = 0;
+ 
+   /* ib and ic have same misalignment, we peel to align them.  */
+-  for (i = 1; i <= N; i++)
++  for (i = 0; i <= N; i++)
+     {
+       suma += ia[i];
+-      sumb += ib[i+6];
+-      sumc += ic[i+2];
++      sumb += ib[i+5];
++      sumc += ic[i+1];
+     }
+ 
+   /* check results:  */
+@@ -49,7 +47,7 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/vect-peel-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c	(.../branches/gcc-4_6-branch)
+@@ -16,13 +16,13 @@
+   /* Don't peel keeping one load and the store aligned.  */
+   for (i = 0; i <= N; i++)
+     {
+-      ia[i] = ib[i] + ib[i+6];
++      ia[i] = ib[i] + ib[i+5];
+     }
+ 
+   /* check results:  */
+   for (i = 1; i <= N; i++)
+     {
+-      if (ia[i] != ib[i] + ib[i+6])
++      if (ia[i] != ib[i] + ib[i+5])
+         abort ();
+     }
+ 
+@@ -44,7 +44,7 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/slp-25.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-25.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-25.c	(.../branches/gcc-4_6-branch)
+@@ -57,5 +57,5 @@
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || { ! vect_natural_alignment } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/ChangeLog
+===================================================================
+--- a/src/gcc/testsuite/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,355 @@
++2012-11-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
++
++	PR fortran/55314
++	Backport from trunk
++	* gfortran.dg/allocate_error_4.f90:  New test.
++
++2012-11-07  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* gcc.c-torture/compile/20121107-1.c: New test.
++
++2012-10-30  Andrey Belevantsev  <abel@ispras.ru>
++
++	Backport from mainline
++	2012-01-25 Andrey Belevantsev <abel@ispras.ru>
++
++	PR rtl-optimization/48374
++	* gcc.dg/pr48374.c: New test.
++
++2012-10-22  Andrey Belevantsev  <abel@ispras.ru>
++
++	Backport from mainline
++	2012-08-09  Andrey Belevantsev  <abel@ispras.ru>
++
++	PR rtl-optimization/53701
++	* gcc.dg/pr53701.c: New test.
++
++2012-10-11  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2011-08-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
++
++	* gcc.dg/pr49948.c: Require pthread effective target.
++
++2012-10-05  Jakub Jelinek  <jakub@redhat.com>
++
++	PR tree-optimization/33763
++	* c-c++-common/pr33763.c: New test.
++
++2012-09-20  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* gnat.dg/addr1.ads: Move dg directive to...
++	* gnat.dg/addr1.adb: ...here.
++	* gnat.dg/atomic5.ad[sb]: Likewise.
++	* gnat.dg/discr29.ad[sb]: Likewise.
++	* gnat.dg/discr23.ads: Remove dg directive.
++	* gnat.dg/nested_float_packed.ads: Likewise.
++	* gnat.dg/oconst6.ads: Move to...
++	* gnat.dg/specs/oconst6.ads: ...here.
++
++2012-09-15  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/54552
++	* gcc.c-torture/compile/pr54552-1.c: New test.
++
++2012-09-15  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/54103
++	* gcc.c-torture/compile/pr54103-1.c,
++	gcc.c-torture/compile/pr54103-2.c,
++	gcc.c-torture/compile/pr54103-3.c,
++	gcc.c-torture/compile/pr54103-4.c,
++	gcc.c-torture/compile/pr54103-5.c,
++	gcc.c-torture/compile/pr54103-6.c: New tests.
++	* gcc.dg/c90-const-expr-8.c: Update expected column number.
++
++2012-09-13  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/54225
++	PR fortran/53306
++	* gfortran.dg/coarray_10.f90: Update dg-error.
++	* gfortran.dg/coarray_28.f90: New.
++	* gfortran.dg/array_section_3.f90: New.
++
++2012-09-13  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/54556
++	* gfortran.dg/implicit_pure_3.f90: New.
++
++2012-09-13  Jason Merrill  <jason@redhat.com>
++
++	PR c++/54511
++	* g++.dg/template/anonunion2.C: New.
++
++2012-09-12  Mikael Morin  <mikael@gcc.gnu.org>
++
++	PR fortran/54208
++	* gfortran.dg/bound_simplification_3.f90: New test.
++
++2012-09-10  Markus Trippelsdorf  <markus@trippelsdorf.de>
++
++	PR middle-end/54515
++	* g++.dg/tree-ssa/pr54515.C: new testcase
++
++2012-08-10  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	Backport from mainline
++	2012-07-30  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	* lib/target-supports.exp
++	(check_effective_target_vect_natural_alignment): New function.
++	* gcc.dg/align-2.c: Only run on targets with natural alignment
++	of vector types.
++	* gcc.dg/vect/slp-25.c: Adjust tests for targets without natural
++	alignment of vector types.
++
++	2011-12-21  Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
++
++	* gcc.dg/vect/vect-peel-1.c: Adjust test diag-scans to fix fail on AVX.
++	* gcc.dg/vect/vect-peel-2.c: Ditto.
++
++	2011-06-21  Ira Rosen  <ira.rosen@linaro.org>
++
++	PR testsuite/49443
++	* gcc.dg/vect/vect-peel-3.c: Expect to fail on vect_no_align
++	targets.
++	* gcc.dg/vect/vect-peel-4.c: Likewise.
++
++	2011-06-14  Ira Rosen  <ira.rosen@linaro.org>
++
++	* gcc.dg/vect/vect-peel-3.c: Adjust misalignment values
++	for double-word vectors.
++	* gcc.dg/vect/vect-peel-4.c: Likewise.
++
++2012-08-06  Anna Tikhonova  <anna.m.tikhonova@gmail.com>
++
++	* gcc.dg/20020201-1.c: Remove declarations for exit, abort,
++	rand, srand. Include <stdlib.h>.
++
++2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>
++
++	Backport from trunk:
++	2012-07-13  Hans-Peter Nilsson  <hp@axis.com>
++
++	PR rtl-optimization/53908
++	* gcc.dg/torture/pr53908.c: New test.
++
++2012-07-14  Mikael Morin  <mikael.morin@gcc.gnu.org>
++
++	Backport from trunk:
++	2012-01-09  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/51758
++	* gfortran.dg/optional_absent_2.f90: New.
++
++2012-07-03  Michael Hope  <michael.hope@linaro.org>
++
++	PR c++/53814
++	* g++.dg/cpp0x/nullptr28.C: Change selector for explicit
++	options.
++
++2012-06-28  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/53790
++	* gcc.dg/torture/pr53790.c: New testcase.
++
++2012-06-25  Jason Merrill  <jason@redhat.com>
++
++	PR c++/52988
++	* g++.dg/cpp0x/nullptr28.C: New.
++
++2012-06-19  Kaz Kojima  <kkojima@gcc.gnu.org>
++
++	* gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets
++	and add __sh__ case.
++
++2012-06-14  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53597
++	* gfortran.dg/save_4.f90: New.
++
++2012-06-13  Christian Bruel  <christian.bruel@st.com>
++
++	PR target/53621
++	* gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH.
++
++2012-06-05  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/50619
++	* gfortran.dg/init_flag_10.f90: New.
++
++2012-06-04  Edmar Wienskoski  <edmar@freescale.com>
++
++	PR target/53559
++	* gcc.target/powerpc/cell_builtin_1.c: New test case.
++	* gcc.target/powerpc/cell_builtin_2.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_3.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_4.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_5.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_6.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_7.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_8.c: Ditto.
++
++2012-05-23  Michael Hope  <michael.hope@linaro.org>
++
++	PR c++/52796
++	* g++.dg/cpp0x/variadic-value1.C: Change selector for explicit
++	options.
++
++2012-05-23  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53389
++	* gfortran.dg/realloc_on_assign_15.f90: New.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2011-11-10  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/51071
++	* gcc.dg/torture/pr51071.c: New testcase.
++	* gcc.dg/torture/pr51071-2.c: Likewise.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2012-02-28  Richard Guenther  <rguenther@suse.de>
++
++	PR target/52407
++	* gcc.dg/torture/pr52407.c: New testcase.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2012-04-12  Richard Guenther  <rguenther@suse.de>
++
++	PR c/52862
++	* gcc.dg/pr52862.c: New testcase.
++
++2012-05-21  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/53418
++	* gcc.c-torture/compile/pr53418-1.c,
++	gcc.c-torture/compile/pr53418-2.c: New tests.
++
++2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backport from mainline
++	2012-05-21  Uros Bizjak  <ubizjak@gmail.com>
++		    H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR target/53416
++	* gcc.target/i386/pr53416.c: New file.
++
++2012-05-14  Uros Bizjak  <ubizjak@gmail.com>
++
++	* gcc.target/i386/avx256-unaligned-load-[1234].c: Update scan strings.
++	* gcc.target/i386/avx256-unaligned-store-[1234].c: Ditto.
++
++2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/53199
++	* gcc.target/powwerpc/pr53199.c: New file.
++
++2012-05-02  Tobias Burnus  <burnus@net-b.de>
++
++	Backport from mainline
++	2012-04-16  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52864
++	* gfortran.dg/pointer_intent_6.f90: New.
++
++2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-04-27  Paolo Bonzini  <bonzini@gnu.org>
++
++	PR target/53138
++	* gcc.c-torture/execute/20120427-1.c: New testcase.
++
++2012-04-24  Jakub Jelinek  <jakub@redhat.com>
++
++	PR middle-end/53084
++	* gcc.c-torture/execute/pr53084.c: New test.
++
++2012-04-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2012-04-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/52775
++	* gcc.target/powerpc/pr52775.c: New file.
++
++2012-04-03  Jason Merrill  <jason@redhat.com>
++
++	PR c++/52796
++	* g++.dg/cpp0x/variadic-value1.C: New.
++
++2012-03-28  Joey Ye  <joey.ye@arm.com>
++
++	Backported from mainline
++	2011-12-20  Bernd Schmidt  <bernds@codesourcery.com>
++
++	PR middle-end/51200
++	* gcc.target/arm/volatile-bitfields-4.c: New test.
++	* c-c++-common/abi-bf.c: New test.
++
++	2011-12-26  Joey Ye  <joey.ye@arm.com>
++
++	PR middle-end/51200
++	* gcc.dg/volatile-bitfields-2.c: New test.
++
++2012-03-28  Martin Jambor  <mjambor@suse.cz>
++
++	Backported from mainline
++	2012-03-27  Martin Jambor  <mjambor@suse.cz>
++
++	PR middle-end/52693
++	* gcc.dg/torture/pr52693.c: New test.
++
++2012-03-28  Jakub Jelinek  <jakub@redhat.com>
++
++	PR target/52736
++	* gcc.target/i386/pr52736.c: New test.
++
++2012-03-24  Jan Hubicka  <jh@suse.cz>
++
++	PR middle-end/51737
++	* g++.dg/torture/pr51737.C: New testcase
++
++2012-03-24  Steven Bosscher  <steven@gcc.gnu.org>
++
++	PR middle-end/52640
++	* gcc.c-torture/compile/limits-externdecl.c: New test.
++
++2012-03-16  Jan Hubicka  <jh@suse.cz>
++
++	PR middle-end/48600
++	* g++.dg/torture/pr48600.C: New testcase.
++
++2012-03-10  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52469
++	* gfortran.dg/proc_ptr_34.f90: New.
++
++2012-03-06  Tobias Burnus  <burnus@net-b.de>
++
++	Backport from mainline
++	2012-03-02  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52452
++	* gfortran.dg/intrinsic_8.f90: New.
++
++2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
++
++	Backport from mainline
++	2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
++
++	* gcc.target/powerpc/pr52457.c: New test.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: gcc/testsuite/g++.dg/tree-ssa/pr54515.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr54515.C	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr54515.C	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,19 @@
++// { dg-do compile }
++// { dg-options "-O2" }
++
++template < typename T > T h2le (T)
++{
++    T a;
++    unsigned short &b = a;
++    short c = 0;
++    unsigned char (&d)[2] = reinterpret_cast < unsigned char (&)[2] > (c);
++    unsigned char (&e)[2] = reinterpret_cast < unsigned char (&)[2] > (b);
++    e[0] = d[0];
++    return a;
++}
++
++void
++bar ()
++{
++    h2le ((unsigned short) 0);
++}
+Index: gcc/testsuite/g++.dg/cpp0x/variadic-value1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-value1.C	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-value1.C	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,24 @@
++// PR c++/52796
++// { dg-options "-std=c++0x -pedantic-errors" }
++
++inline void *operator new(__SIZE_TYPE__ s, void *p) { return p; }
++
++struct A
++{
++  int i;
++  template<class... Ts>
++  A(Ts&&... ts): i(ts...) { }
++};
++
++static union {
++  unsigned char c[sizeof(A)];
++  int i;
++};
++
++int main()
++{
++  i = 0xdeadbeef;
++  new(c) A;
++  if (i != 0)
++    __builtin_abort();
++}
+Index: gcc/testsuite/g++.dg/cpp0x/nullptr28.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/nullptr28.C	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/nullptr28.C	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,17 @@
++// { dg-do run }
++// { dg-options "-std=c++0x -pedantic-errors" }
++
++typedef decltype(nullptr) nullptr_t;
++
++int i;
++nullptr_t n;
++const nullptr_t& f() { ++i; return n; }
++
++nullptr_t g() { return f(); }
++
++int main()
++{
++  g();
++  if (i != 1)
++    __builtin_abort ();
++}
+Index: gcc/testsuite/g++.dg/template/anonunion2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/template/anonunion2.C	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/g++.dg/template/anonunion2.C	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,6 @@
++template <int i>
++struct S
++{
++  S () { union { int a; }; a = 0; }
++};
++S<0> s;
+Index: gcc/testsuite/c-c++-common/pr33763.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/pr33763.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/c-c++-common/pr33763.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,60 @@
++/* PR tree-optimization/33763 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++typedef struct
++{
++  void *a;
++  void *b;
++} T;
++extern void *foo (const char *, const char *);
++extern void *bar (void *, const char *, T);
++extern int baz (const char *, int);
++
++extern inline __attribute__ ((always_inline, gnu_inline)) int
++baz (const char *x, int y)
++{
++  return 2;
++}
++
++int
++baz (const char *x, int y)
++{
++  return 1;
++}
++
++int xa, xb;
++
++static void *
++inl (const char *x, const char *y)
++{
++  T t = { &xa, &xb };
++  int *f = (int *) __builtin_malloc (sizeof (int));
++  const char *z;
++  int o = 0;
++  void *r = 0;
++
++  for (z = y; *z; z++)
++    {
++      if (*z == 'r')
++	o |= 1;
++      if (*z == 'w')
++	o |= 2;
++    }
++  if (o == 1)
++    *f = baz (x, 0);
++  if (o == 2)
++    *f = baz (x, 1);
++  if (o == 3)
++    *f = baz (x, 2);
++
++  if (o && *f > 0)
++    r = bar (f, "w", t);
++  return r;
++}
++
++void *
++foo (const char *x, const char *y)
++{
++  return inl (x, y);
++}
+Index: gcc/testsuite/c-c++-common/abi-bf.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/abi-bf.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/testsuite/c-c++-common/abi-bf.c	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,3 @@
++/* { dg-warning "incompatible" } */
++/* { dg-do compile } */
++/* { dg-options "-fstrict-volatile-bitfields -fabi-version=1" } */
+Index: gcc/cp/typeck.c
+===================================================================
+--- a/src/gcc/cp/typeck.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cp/typeck.c	(.../branches/gcc-4_6-branch)
+@@ -1822,7 +1822,7 @@
+   if (error_operand_p (exp))
+     return error_mark_node;
+ 
+-  if (NULLPTR_TYPE_P (type))
++  if (NULLPTR_TYPE_P (type) && !TREE_SIDE_EFFECTS (exp))
+     return nullptr_node;
+ 
+   /* build_c_cast puts on a NOP_EXPR to make the result not an lvalue.
+Index: gcc/cp/decl.c
+===================================================================
+--- a/src/gcc/cp/decl.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cp/decl.c	(.../branches/gcc-4_6-branch)
+@@ -3636,7 +3636,7 @@
+     TYPE_SIZE_UNIT (nullptr_type_node) = size_int (GET_MODE_SIZE (ptr_mode));
+     TYPE_UNSIGNED (nullptr_type_node) = 1;
+     TYPE_PRECISION (nullptr_type_node) = GET_MODE_BITSIZE (ptr_mode);
+-    SET_TYPE_MODE (nullptr_type_node, Pmode);
++    SET_TYPE_MODE (nullptr_type_node, ptr_mode);
+     record_builtin_type (RID_MAX, "decltype(nullptr)", nullptr_type_node);
+     nullptr_node = build_int_cst (nullptr_type_node, 0);
+   }
+Index: gcc/cp/ChangeLog
+===================================================================
+--- a/src/gcc/cp/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cp/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,25 @@
++2012-09-13  Jason Merrill  <jason@redhat.com>
++
++	PR c++/54511
++	* pt.c (tsubst_decl) [VAR_DECL]: Handle DECL_ANON_UNION_VAR_P.
++
++2012-06-25  Jason Merrill  <jason@redhat.com>
++
++	PR c++/52988
++	* typeck.c (decay_conversion): Don't discard side-effects from
++	expressions of nullptr_t.
++
++2012-04-04  Steve Ellcey <sje@cup.hp.com>
++
++	Backported from mainline.
++	* decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
++
++2012-04-03  Jason Merrill  <jason@redhat.com>
++
++	PR c++/52796
++	* pt.c (tsubst_initializer_list): A pack expansion with no elements
++	means value-initialization.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: gcc/cp/pt.c
+===================================================================
+--- a/src/gcc/cp/pt.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cp/pt.c	(.../branches/gcc-4_6-branch)
+@@ -10028,6 +10028,16 @@
+ 	    break;
+ 	  }
+ 
++	if (TREE_CODE (t) == VAR_DECL && DECL_ANON_UNION_VAR_P (t))
++	  {
++	    /* Just use name lookup to find a member alias for an anonymous
++	       union, but then add it to the hash table.  */
++	    r = lookup_name (DECL_NAME (t));
++	    gcc_assert (DECL_ANON_UNION_VAR_P (r));
++	    register_local_specialization (r, t);
++	    break;
++	  }
++
+ 	/* Create a new node for the specialization we need.  */
+ 	r = copy_decl (t);
+ 	if (type == NULL_TREE)
+@@ -17785,6 +17795,7 @@
+             }
+           else
+             {
++	      tree tmp;
+               decl = tsubst_copy (TREE_PURPOSE (t), argvec, 
+                                   tf_warning_or_error, NULL_TREE);
+ 
+@@ -17793,10 +17804,17 @@
+                 in_base_initializer = 1;
+ 
+ 	      init = TREE_VALUE (t);
++	      tmp = init;
+ 	      if (init != void_type_node)
+ 		init = tsubst_expr (init, argvec,
+ 				    tf_warning_or_error, NULL_TREE,
+ 				    /*integral_constant_expression_p=*/false);
++	      if (init == NULL_TREE && tmp != NULL_TREE)
++		/* If we had an initializer but it instantiated to nothing,
++		   value-initialize the object.  This will only occur when
++		   the initializer was a pack expansion where the parameter
++		   packs used in that expansion were of length zero.  */
++		init = void_type_node;
+               in_base_initializer = 0;
+             }
+ 
+Index: gcc/cp/semantics.c
+===================================================================
+--- a/src/gcc/cp/semantics.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cp/semantics.c	(.../branches/gcc-4_6-branch)
+@@ -6763,7 +6763,6 @@
+ 
+   STRIP_NOPS (sub);
+   subtype = TREE_TYPE (sub);
+-  gcc_assert (POINTER_TYPE_P (subtype));
+ 
+   if (TREE_CODE (sub) == ADDR_EXPR)
+     {
+Index: gcc/tree-ssa-ccp.c
+===================================================================
+--- a/src/gcc/tree-ssa-ccp.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/tree-ssa-ccp.c	(.../branches/gcc-4_6-branch)
+@@ -1364,6 +1364,10 @@
+       if (!DECL_INITIAL (base)
+ 	  && (TREE_STATIC (base) || DECL_EXTERNAL (base)))
+         return error_mark_node;
++      /* Do not return an error_mark_node DECL_INITIAL.  LTO uses this
++	 as special marker (_not_ zero ...) for its own purposes.  */
++      if (DECL_INITIAL (base) == error_mark_node)
++	return NULL_TREE;
+       return DECL_INITIAL (base);
+ 
+     case ARRAY_REF:
+Index: gcc/ira-int.h
+===================================================================
+--- a/src/gcc/ira-int.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/ira-int.h	(.../branches/gcc-4_6-branch)
+@@ -1123,8 +1123,13 @@
+ ira_allocno_object_iter_cond (ira_allocno_object_iterator *i, ira_allocno_t a,
+ 			      ira_object_t *o)
+ {
+-  *o = ALLOCNO_OBJECT (a, i->n);
+-  return i->n++ < ALLOCNO_NUM_OBJECTS (a);
++  int n = i->n++;
++  if (n < ALLOCNO_NUM_OBJECTS (a))
++    {
++      *o = ALLOCNO_OBJECT (a, n);
++      return true;
++    }
++  return false;
+ }
+ 
+ /* Loop over all objects associated with allocno A.  In each
+Index: gcc/sel-sched.c
+===================================================================
+--- a/src/gcc/sel-sched.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/sel-sched.c	(.../branches/gcc-4_6-branch)
+@@ -3578,29 +3578,41 @@
+   return NULL;
+ }
+ 
+-/* Lookup EXPR in VINSN_VEC and return TRUE if found.  */
++/* Lookup EXPR in VINSN_VEC and return TRUE if found.  Also check patterns from
++   EXPR's history of changes.  */
+ static bool
+ vinsn_vec_has_expr_p (vinsn_vec_t vinsn_vec, expr_t expr)
+ {
+-  vinsn_t vinsn;
++  vinsn_t vinsn, expr_vinsn;
+   int n;
++  unsigned i;
+ 
+-  FOR_EACH_VEC_ELT (vinsn_t, vinsn_vec, n, vinsn)
+-    if (VINSN_SEPARABLE_P (vinsn))
+-      {
+-        if (vinsn_equal_p (vinsn, EXPR_VINSN (expr)))
+-          return true;
+-      }
+-    else
+-      {
+-        /* For non-separable instructions, the blocking insn can have
+-           another pattern due to substitution, and we can't choose
+-           different register as in the above case.  Check all registers
+-           being written instead.  */
+-        if (bitmap_intersect_p (VINSN_REG_SETS (vinsn),
+-                                VINSN_REG_SETS (EXPR_VINSN (expr))))
+-          return true;
+-      }
++  /* Start with checking expr itself and then proceed with all the old forms
++     of expr taken from its history vector.  */
++  for (i = 0, expr_vinsn = EXPR_VINSN (expr);
++       expr_vinsn;
++       expr_vinsn = (i < VEC_length (expr_history_def,
++				     EXPR_HISTORY_OF_CHANGES (expr))
++		     ? VEC_index (expr_history_def,
++				  EXPR_HISTORY_OF_CHANGES (expr),
++				  i++)->old_expr_vinsn
++		     : NULL))
++    FOR_EACH_VEC_ELT (vinsn_t, vinsn_vec, n, vinsn)
++      if (VINSN_SEPARABLE_P (vinsn))
++	{
++	  if (vinsn_equal_p (vinsn, expr_vinsn))
++	    return true;
++	}
++      else
++	{
++	  /* For non-separable instructions, the blocking insn can have
++	     another pattern due to substitution, and we can't choose
++	     different register as in the above case.  Check all registers
++	     being written instead.  */
++	  if (bitmap_intersect_p (VINSN_REG_SETS (vinsn),
++				  VINSN_REG_SETS (expr_vinsn)))
++	    return true;
++	}
+ 
+   return false;
+ }
+@@ -5700,8 +5712,8 @@
+               || EXPR_TARGET_AVAILABLE (new_expr)
+ 		 != EXPR_TARGET_AVAILABLE (cur_expr))
+ 	    /* Unfortunately, the below code could be also fired up on
+-	       separable insns.
+-	       FIXME: add an example of how this could happen.  */
++	       separable insns, e.g. when moving insns through the new
++	       speculation check as in PR 53701.  */
+             vinsn_vec_add (&vec_bookkeeping_blocked_vinsns, cur_expr);
+         }
+ 
+Index: gcc/expr.c
+===================================================================
+--- a/src/gcc/expr.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/expr.c	(.../branches/gcc-4_6-branch)
+@@ -5971,6 +5971,8 @@
+ 		|| bitpos % GET_MODE_ALIGNMENT (mode))
+ 	       && SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (target)))
+ 	      || (bitpos % BITS_PER_UNIT != 0)))
++      || (bitsize >= 0 && mode != BLKmode
++	  && GET_MODE_BITSIZE (mode) > bitsize)
+       /* If the RHS and field are a constant size and the size of the
+ 	 RHS isn't the same size as the bitfield, we must use bitfield
+ 	 operations.  */
+@@ -9182,6 +9184,7 @@
+ 	orig_op0 = op0
+ 	  = expand_expr (tem,
+ 			 (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE
++			  && COMPLETE_TYPE_P (TREE_TYPE (tem))
+ 			  && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem)))
+ 			      != INTEGER_CST)
+ 			  && modifier != EXPAND_STACK_PARM
+Index: gcc/gcov-iov.c
+===================================================================
+--- a/src/gcc/gcov-iov.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/gcov-iov.c	(.../branches/gcc-4_6-branch)
+@@ -19,8 +19,8 @@
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+-#include <stdio.h>
+-#include <stdlib.h>
++#include "bconfig.h"
++#include "system.h"
+ 
+ /* Command line arguments are the base GCC version and the development
+    phase (the latter may be an empty string).  */
+@@ -48,8 +48,14 @@
+   if (*ptr == '.')
+     minor = strtoul (ptr + 1, 0, 10);
+ 
++  /* For releases the development phase is an empty string, for
++     prerelease versions on a release branch it is "prerelease".
++     Consider both equal as patch-level releases do not change
++     the GCOV version either.
++     On the trunk the development phase is "experimental".  */
+   phase = argv[2][0];
+-  if (phase == '\0')
++  if (phase == '\0'
++      || strcmp (argv[2], "prerelease") == 0)
+     phase = '*';
+ 
+   v[0] = (major < 10 ? '0' : 'A' - 10) + major;
+Index: gcc/predict.c
+===================================================================
+--- a/src/gcc/predict.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/predict.c	(.../branches/gcc-4_6-branch)
+@@ -1790,7 +1790,8 @@
+ static void
+ predict_paths_for_bb (basic_block cur, basic_block bb,
+ 		      enum br_predictor pred,
+-		      enum prediction taken)
++		      enum prediction taken,
++		      bitmap visited)
+ {
+   edge e;
+   edge_iterator ei;
+@@ -1811,7 +1812,7 @@
+ 	continue;
+       gcc_assert (bb == cur || dominated_by_p (CDI_POST_DOMINATORS, cur, bb));
+ 
+-      /* See if there is how many edge from e->src that is not abnormal
++      /* See if there is an edge from e->src that is not abnormal
+ 	 and does not lead to BB.  */
+       FOR_EACH_EDGE (e2, ei2, e->src->succs)
+ 	if (e2 != e
+@@ -1824,16 +1825,20 @@
+ 
+       /* If there is non-abnormal path leaving e->src, predict edge
+ 	 using predictor.  Otherwise we need to look for paths
+-	 leading to e->src.  */
++	 leading to e->src.
++
++	 The second may lead to infinite loop in the case we are predicitng
++	 regions that are only reachable by abnormal edges.  We simply
++	 prevent visiting given BB twice.  */
+       if (found)
+         predict_edge_def (e, pred, taken);
+-      else
+-	predict_paths_for_bb (e->src, e->src, pred, taken);
++      else if (bitmap_set_bit (visited, e->src->index))
++	predict_paths_for_bb (e->src, e->src, pred, taken, visited);
+     }
+   for (son = first_dom_son (CDI_POST_DOMINATORS, cur);
+        son;
+        son = next_dom_son (CDI_POST_DOMINATORS, son))
+-    predict_paths_for_bb (son, bb, pred, taken);
++    predict_paths_for_bb (son, bb, pred, taken, visited);
+ }
+ 
+ /* Sets branch probabilities according to PREDiction and
+@@ -1843,7 +1848,9 @@
+ predict_paths_leading_to (basic_block bb, enum br_predictor pred,
+ 			  enum prediction taken)
+ {
+-  predict_paths_for_bb (bb, bb, pred, taken);
++  bitmap visited = BITMAP_ALLOC (NULL);
++  predict_paths_for_bb (bb, bb, pred, taken, visited);
++  BITMAP_FREE (visited);
+ }
+ 
+ /* Like predict_paths_leading_to but take edge instead of basic block.  */
+@@ -1866,7 +1873,11 @@
+ 	break;
+       }
+   if (!has_nonloop_edge)
+-    predict_paths_for_bb (bb, bb, pred, taken);
++    {
++      bitmap visited = BITMAP_ALLOC (NULL);
++      predict_paths_for_bb (bb, bb, pred, taken, visited);
++      BITMAP_FREE (visited);
++    }
+   else
+     predict_edge_def (e, pred, taken);
+ }
+Index: gcc/ada/ChangeLog
+===================================================================
+--- a/src/gcc/ada/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/ada/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,12 @@
++2012-05-26  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* gcc-interface/decl.c (variant_desc): Rename 'record' to 'new_type'.
++	(build_variant_list): Adjust to above renaming.
++	(gnat_to_gnu_entity) <E_Record_Subtype>: Likewise.  Give a unique name
++	to the type of the variant containers.
++	(create_variant_part_from): Likewise.  Give a unique name to the type
++	of the variant part.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: gcc/ada/gcc-interface/decl.c
+===================================================================
+--- a/src/gcc/ada/gcc-interface/decl.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/ada/gcc-interface/decl.c	(.../branches/gcc-4_6-branch)
+@@ -120,8 +120,8 @@
+   /* The value of the qualifier.  */
+   tree qual;
+ 
+-  /* The record associated with this variant.  */
+-  tree record;
++  /* The type of the variant after transformation.  */
++  tree new_type;
+ } variant_desc;
+ 
+ DEF_VEC_O(variant_desc);
+@@ -3157,11 +3157,16 @@
+ 		      {
+ 			tree old_variant = v->type;
+ 			tree new_variant = make_node (RECORD_TYPE);
++			tree suffix
++			  = concat_name (DECL_NAME (gnu_variant_part),
++					 IDENTIFIER_POINTER
++					 (DECL_NAME (v->field)));
+ 			TYPE_NAME (new_variant)
+-			  = DECL_NAME (TYPE_NAME (old_variant));
++			  = concat_name (TYPE_NAME (gnu_type),
++					 IDENTIFIER_POINTER (suffix));
+ 			copy_and_substitute_in_size (new_variant, old_variant,
+ 						     gnu_subst_list);
+-			v->record = new_variant;
++			v->new_type = new_variant;
+ 		      }
+ 		}
+ 	      else
+@@ -3265,7 +3270,7 @@
+ 			    if (selected_variant)
+ 			      gnu_cont_type = gnu_type;
+ 			    else
+-			      gnu_cont_type = v->record;
++			      gnu_cont_type = v->new_type;
+ 			  }
+ 			else
+ 			  /* The front-end may pass us "ghost" components if
+@@ -7704,7 +7709,7 @@
+ 	  v->type = variant_type;
+ 	  v->field = gnu_field;
+ 	  v->qual = qual;
+-	  v->record = NULL_TREE;
++	  v->new_type = NULL_TREE;
+ 
+ 	  /* Recurse on the variant subpart of the variant, if any.  */
+ 	  variant_subpart = get_variant_part (variant_type);
+@@ -8457,7 +8462,9 @@
+ 
+   /* First create the type of the variant part from that of the old one.  */
+   new_union_type = make_node (QUAL_UNION_TYPE);
+-  TYPE_NAME (new_union_type) = DECL_NAME (TYPE_NAME (old_union_type));
++  TYPE_NAME (new_union_type)
++    = concat_name (TYPE_NAME (record_type),
++		   IDENTIFIER_POINTER (DECL_NAME (old_variant_part)));
+ 
+   /* If the position of the variant part is constant, subtract it from the
+      size of the type of the parent to get the new size.  This manual CSE
+@@ -8491,7 +8498,7 @@
+ 	continue;
+ 
+       /* Retrieve the list of fields already added to the new variant.  */
+-      new_variant = v->record;
++      new_variant = v->new_type;
+       field_list = TYPE_FIELDS (new_variant);
+ 
+       /* If the old variant had a variant subpart, we need to create a new
+Index: gcc/sel-sched-ir.h
+===================================================================
+--- a/src/gcc/sel-sched-ir.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/sel-sched-ir.h	(.../branches/gcc-4_6-branch)
+@@ -1119,7 +1119,8 @@
+   /* If bb is empty, and we're skipping to loop exits, then
+      consider bb as a possible gate to the inner loop now.  */
+   while (sel_bb_empty_or_nop_p (bb)
+-	 && in_current_region_p (bb))
++	 && in_current_region_p (bb)
++	 && EDGE_COUNT (bb->succs) > 0)
+     {
+       bb = single_succ (bb);
+ 
+Index: gcc/fortran/trans-array.c
+===================================================================
+--- a/src/gcc/fortran/trans-array.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/trans-array.c	(.../branches/gcc-4_6-branch)
+@@ -2056,6 +2056,11 @@
+   gfc_se se;
+   int n;
+ 
++  /* Don't evaluate the arguments for realloc_lhs_loop_for_fcn_call; otherwise,
++     arguments could get evaluated multiple times.  */
++  if (ss->is_alloc_lhs)
++    return;
++
+   /* TODO: This can generate bad code if there are ordering dependencies,
+      e.g., a callee allocated function and an unknown size constructor.  */
+   gcc_assert (ss != NULL);
+@@ -7548,7 +7553,7 @@
+   scalar = 1;
+   for (; arg; arg = arg->next)
+     {
+-      if (!arg->expr)
++      if (!arg->expr || arg->expr->expr_type == EXPR_NULL)
+ 	continue;
+ 
+       newss = gfc_walk_subexpr (head, arg->expr);
+Index: gcc/fortran/decl.c
+===================================================================
+--- a/src/gcc/fortran/decl.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/decl.c	(.../branches/gcc-4_6-branch)
+@@ -3623,8 +3623,9 @@
+ 	}
+     }
+ 
+-  /* Module variables implicitly have the SAVE attribute.  */
+-  if (gfc_current_state () == COMP_MODULE && !current_attr.save)
++  /* Since Fortran 2008 module variables implicitly have the SAVE attribute.  */
++  if (gfc_current_state () == COMP_MODULE && !current_attr.save
++      && (gfc_option.allow_std & GFC_STD_F2008) != 0)
+     current_attr.save = SAVE_IMPLICIT;
+ 
+   colon_seen = 1;
+Index: gcc/fortran/array.c
+===================================================================
+--- a/src/gcc/fortran/array.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/array.c	(.../branches/gcc-4_6-branch)
+@@ -91,9 +91,7 @@
+   else if (!star)
+     m = gfc_match_expr (&ar->start[i]);
+ 
+-  if (m == MATCH_NO && gfc_match_char ('*') == MATCH_YES)
+-    return MATCH_NO;
+-  else if (m == MATCH_NO)
++  if (m == MATCH_NO)
+     gfc_error ("Expected array subscript at %C");
+   if (m != MATCH_YES)
+     return MATCH_ERROR;
+@@ -224,7 +222,7 @@
+ 
+   for (ar->codimen = 0; ar->codimen + ar->dimen < GFC_MAX_DIMENSIONS; ar->codimen++)
+     {
+-      m = match_subscript (ar, init, ar->codimen == (corank - 1));
++      m = match_subscript (ar, init, true);
+       if (m == MATCH_ERROR)
+ 	return MATCH_ERROR;
+ 
+@@ -249,6 +247,13 @@
+ 	    gfc_error ("Invalid form of coarray reference at %C");
+ 	  return MATCH_ERROR;
+ 	}
++      else if (ar->dimen_type[ar->codimen + ar->dimen] == DIMEN_STAR)
++	{
++	  gfc_error ("Unexpected '*' for codimension %d of %d at %C",
++		     ar->codimen + 1, corank);
++	  return MATCH_ERROR;
++	}
++
+       if (ar->codimen >= corank)
+ 	{
+ 	  gfc_error ("Invalid codimension %d at %C, only %d codimensions exist",
+Index: gcc/fortran/ChangeLog
+===================================================================
+--- a/src/gcc/fortran/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,87 @@
++2012-11-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
++
++	PR fortran/55314
++	Backport from trunk
++	* resolve.c (resolve_allocate_deallocate):  Compare all
++	subscripts when deciding if to reject a (de)allocate
++	statement.
++
++2012-09-13  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/54225
++	PR fortran/53306
++	* array.c (match_subscript, gfc_match_array_ref): Fix
++	diagnostic of coarray's '*'.
++
++2012-09-13  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/54556
++	* resolve.c (gfc_impure_variable): Don't check gfc_pure such
++	that the function also works for gfc_implicit_pure procedures.
++
++2012-09-12  Mikael Morin  <mikael@gcc.gnu.org>
++
++	PR fortran/54208
++	* simplify.c (simplify_bound_dim): Resolve array spec before
++	proceeding with simplification.
++
++2012-07-14  Mikael Morin  <mikael@gcc.gnu.org>
++
++	Backport from trunk:
++	2012-01-09  Mikael Morin  <mikael@gcc.gnu.org>
++
++	PR fortran/51758
++	* trans-array.c (gfc_walk_elemental_function_args):
++	Skip over NULL() actual arguments.
++
++2012-06-14  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53597
++	* decl.c (match_attr_spec): Only mark module variables
++	as SAVE_IMPLICIT for Fortran 2008 and later.
++
++2012-06-05  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/50619
++	* resolve.c (build_default_init_expr): Don't initialize
++	ASSOCIATE names.
++
++2012-06-01  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53521
++	* trans.c (gfc_deallocate_scalar_with_status): Properly
++	handle the case size == 0.
++
++2012-05-23  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53389
++	* trans-array.c (gfc_add_loop_ss_code): Don't evaluate
++	expression, if ss->is_alloc_lhs is set.
++
++2012-05-02  Tobias Burnus  <burnus@net-b.de>
++
++	Backport from mainline
++	2012-04-12  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52864
++	* expr.c (gfc_check_vardef_context): Fix assignment check for
++	pointer components.
++
++2012-03-10  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52469
++	* trans-types.c (gfc_get_function_type): Handle backend_decl
++	of a procedure pointer.
++
++2012-03-06  Tobias Burnus  <burnus@net-b.de>
++
++	Backport from mainline
++	2012-03-02  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52452
++	* resolve.c (resolve_intrinsic): Don't search for a
++	function if we know that it is a subroutine.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: gcc/fortran/expr.c
+===================================================================
+--- a/src/gcc/fortran/expr.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/expr.c	(.../branches/gcc-4_6-branch)
+@@ -4474,7 +4474,11 @@
+       if (ptr_component && ref->type == REF_COMPONENT)
+ 	check_intentin = false;
+       if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer)
+-	ptr_component = true;
++	{
++	  ptr_component = true;
++	  if (!pointer)
++	    check_intentin = false;
++	}
+     }
+   if (check_intentin && sym->attr.intent == INTENT_IN)
+     {
+Index: gcc/fortran/trans.c
+===================================================================
+--- a/src/gcc/fortran/trans.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/trans.c	(.../branches/gcc-4_6-branch)
+@@ -1005,15 +1005,12 @@
+   if (!res && size != 0)
+     _gfortran_os_error ("Allocation would exceed memory limit");
+ 
+-  if (size == 0)
+-    return NULL;
+-
+   return res;
+ }  */
+ tree
+ gfc_call_realloc (stmtblock_t * block, tree mem, tree size)
+ {
+-  tree msg, res, nonzero, zero, null_result, tmp;
++  tree msg, res, nonzero, null_result, tmp;
+   tree type = TREE_TYPE (mem);
+ 
+   size = gfc_evaluate_now (size, block);
+@@ -1044,15 +1041,6 @@
+ 			 build_empty_stmt (input_location));
+   gfc_add_expr_to_block (block, tmp);
+ 
+-  /* if (size == 0) then the result is NULL.  */
+-  tmp = fold_build2_loc (input_location, MODIFY_EXPR, type, res,
+-			 build_int_cst (type, 0));
+-  zero = fold_build1_loc (input_location, TRUTH_NOT_EXPR, boolean_type_node,
+-			  nonzero);
+-  tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node, zero, tmp,
+-			 build_empty_stmt (input_location));
+-  gfc_add_expr_to_block (block, tmp);
+-
+   return res;
+ }
+ 
+Index: gcc/fortran/trans-types.c
+===================================================================
+--- a/src/gcc/fortran/trans-types.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/trans-types.c	(.../branches/gcc-4_6-branch)
+@@ -2519,7 +2519,11 @@
+ 	      || sym->attr.flavor == FL_PROGRAM);
+ 
+   if (sym->backend_decl)
+-    return TREE_TYPE (sym->backend_decl);
++    {
++      if (sym->attr.proc_pointer)
++	return TREE_TYPE (TREE_TYPE (sym->backend_decl));
++      return TREE_TYPE (sym->backend_decl);
++    }
+ 
+   alternate_return = 0;
+   typelist = NULL_TREE;
+Index: gcc/fortran/resolve.c
+===================================================================
+--- a/src/gcc/fortran/resolve.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/resolve.c	(.../branches/gcc-4_6-branch)
+@@ -1452,7 +1452,7 @@
+ 
+   if (sym->intmod_sym_id)
+     isym = gfc_intrinsic_function_by_id ((gfc_isym_id) sym->intmod_sym_id);
+-  else
++  else if (!sym->attr.subroutine)
+     isym = gfc_find_function (sym->name);
+ 
+   if (isym)
+@@ -7087,11 +7087,18 @@
+ 
+ 		      if (pr->next && qr->next)
+ 			{
++			  int i;
+ 			  gfc_array_ref *par = &(pr->u.ar);
+ 			  gfc_array_ref *qar = &(qr->u.ar);
+-			  if (gfc_dep_compare_expr (par->start[0],
+-						    qar->start[0]) != 0)
+-			      break;
++
++			  for (i=0; i<par->dimen; i++)
++			    {
++			      if ((par->start[i] != NULL
++				   || qar->start[i] != NULL)
++				  && gfc_dep_compare_expr (par->start[i],
++							   qar->start[i]) != 0)
++				goto break_label;
++			    }
+ 			}
+ 		    }
+ 		  else
+@@ -7103,6 +7110,8 @@
+ 		  pr = pr->next;
+ 		  qr = qr->next;
+ 		}
++	    break_label:
++	      ;
+ 	    }
+ 	}
+     }
+@@ -9700,7 +9709,8 @@
+       || sym->attr.data
+       || sym->module
+       || sym->attr.cray_pointee
+-      || sym->attr.cray_pointer)
++      || sym->attr.cray_pointer
++      || sym->assoc)
+     return NULL;
+ 
+   /* Now we'll try to build an initializer expression.  */
+@@ -12908,10 +12918,9 @@
+     }
+ 
+   proc = sym->ns->proc_name;
+-  if (sym->attr.dummy && gfc_pure (proc)
+-	&& ((proc->attr.subroutine && sym->attr.intent == INTENT_IN)
+-		||
+-	     proc->attr.function))
++  if (sym->attr.dummy
++      && ((proc->attr.subroutine && sym->attr.intent == INTENT_IN)
++	  || proc->attr.function))
+     return 1;
+ 
+   /* TODO: Sort out what can be storage associated, if anything, and include
+Index: gcc/fortran/simplify.c
+===================================================================
+--- a/src/gcc/fortran/simplify.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/fortran/simplify.c	(.../branches/gcc-4_6-branch)
+@@ -3296,6 +3296,9 @@
+   gcc_assert (array->expr_type == EXPR_VARIABLE);
+   gcc_assert (as);
+ 
++  if (gfc_resolve_array_spec (as, 0) == FAILURE)
++    return NULL;
++
+   /* The last dimension of an assumed-size array is special.  */
+   if ((!coarray && d == as->rank && as->type == AS_ASSUMED_SIZE && !upper)
+       || (coarray && d == as->rank + as->corank))
+Index: gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/configure.ac	(.../branches/gcc-4_6-branch)
+@@ -4169,7 +4169,9 @@
+     AC_CACHE_CHECK(linker support for omitting dot symbols,
+     gcc_cv_ld_no_dot_syms,
+     [gcc_cv_ld_no_dot_syms=no
+-    if test $in_tree_ld = yes ; then
++    if test x"$ld_is_gold" = xyes; then
++      gcc_cv_ld_no_dot_syms=yes
++    elif test $in_tree_ld = yes ; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
+         gcc_cv_ld_no_dot_syms=yes
+       fi
+@@ -4206,7 +4208,9 @@
+     AC_CACHE_CHECK(linker large toc support,
+     gcc_cv_ld_large_toc,
+     [gcc_cv_ld_large_toc=no
+-    if test $in_tree_ld = yes ; then
++    if test x"$ld_is_gold" = xyes; then
++      gcc_cv_ld_large_toc=yes
++    elif test $in_tree_ld = yes ; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
+         gcc_cv_ld_large_toc=yes
+       fi
+Index: gcc/stor-layout.c
+===================================================================
+--- a/src/gcc/stor-layout.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/stor-layout.c	(.../branches/gcc-4_6-branch)
+@@ -660,12 +660,13 @@
+ 	  /* See if we can use an ordinary integer mode for a bit-field.
+ 	     Conditions are: a fixed size that is correct for another mode,
+ 	     occupying a complete byte or bytes on proper boundary,
+-	     and not volatile or not -fstrict-volatile-bitfields.  */
++	     and not -fstrict-volatile-bitfields.  If the latter is set,
++	     we unfortunately can't check TREE_THIS_VOLATILE, as a cast
++	     may make a volatile object later.  */
+ 	  if (TYPE_SIZE (type) != 0
+ 	      && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
+ 	      && GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT
+-	      && !(TREE_THIS_VOLATILE (decl)
+-		   && flag_strict_volatile_bitfields > 0))
++	      && flag_strict_volatile_bitfields <= 0)
+ 	    {
+ 	      enum machine_mode xmode
+ 		= mode_for_size_tree (DECL_SIZE (decl), MODE_INT, 1);
+@@ -1926,9 +1927,17 @@
+ 	TYPE_SIZE (type) = int_const_binop (MULT_EXPR, TYPE_SIZE (innertype),
+ 					    bitsize_int (nunits), 0);
+ 
+-	/* Always naturally align vectors.  This prevents ABI changes
+-	   depending on whether or not native vector modes are supported.  */
+-	TYPE_ALIGN (type) = tree_low_cst (TYPE_SIZE (type), 0);
++	/* For vector types, we do not default to the mode's alignment.
++	   Instead, query a target hook, defaulting to natural alignment.
++	   This prevents ABI changes depending on whether or not native
++	   vector modes are supported.  */
++	TYPE_ALIGN (type) = targetm.vector_alignment (type);
++
++	/* However, if the underlying mode requires a bigger alignment than
++	   what the target hook provides, we cannot use the mode.  For now,
++	   simply reject that case.  */
++	gcc_assert (TYPE_ALIGN (type)
++		    >= GET_MODE_ALIGNMENT (TYPE_MODE (type)));
+         break;
+       }
+ 
+Index: gcc/tree-vect-loop.c
+===================================================================
+--- a/src/gcc/tree-vect-loop.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/tree-vect-loop.c	(.../branches/gcc-4_6-branch)
+@@ -2104,7 +2104,8 @@
+           if (stmt_info
+               && !STMT_VINFO_RELEVANT_P (stmt_info)
+               && (!STMT_VINFO_LIVE_P (stmt_info)
+-                  || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def))
++                  || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info)))
++	      && !STMT_VINFO_IN_PATTERN_P (stmt_info))
+             continue;
+ 
+           if (STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt)))
+@@ -2251,11 +2252,19 @@
+ 	{
+ 	  gimple stmt = gsi_stmt (si);
+ 	  stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
++
++	  if (STMT_VINFO_IN_PATTERN_P (stmt_info))
++	    {
++	      stmt = STMT_VINFO_RELATED_STMT (stmt_info);
++	      stmt_info = vinfo_for_stmt (stmt);
++	    }
++
+ 	  /* Skip stmts that are not vectorized inside the loop.  */
+ 	  if (!STMT_VINFO_RELEVANT_P (stmt_info)
+ 	      && (!STMT_VINFO_LIVE_P (stmt_info)
+-		  || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def))
++		  || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info))))
+ 	    continue;
++
+ 	  vec_inside_cost += STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info) * factor;
+ 	  /* FIXME: for stmts in the inner-loop in outer-loop vectorization,
+ 	     some of the "outside" costs are generated inside the outer-loop.  */
+Index: gcc/tree-vect-data-refs.c
+===================================================================
+--- a/src/gcc/tree-vect-data-refs.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/tree-vect-data-refs.c	(.../branches/gcc-4_6-branch)
+@@ -1019,7 +1019,7 @@
+       int misal = DR_MISALIGNMENT (dr);
+       tree vectype = STMT_VINFO_VECTYPE (stmt_info);
+       misal += negative ? -npeel * dr_size : npeel * dr_size;
+-      misal &= GET_MODE_SIZE (TYPE_MODE (vectype)) - 1;
++      misal &= (TYPE_ALIGN (vectype) / BITS_PER_UNIT) - 1;
+       SET_DR_MISALIGNMENT (dr, misal);
+       return;
+     }
+Index: gcc/c-typeck.c
+===================================================================
+--- a/src/gcc/c-typeck.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/c-typeck.c	(.../branches/gcc-4_6-branch)
+@@ -3527,7 +3527,13 @@
+ 		    "wrong type argument to unary exclamation mark");
+ 	  return error_mark_node;
+ 	}
+-      arg = c_objc_common_truthvalue_conversion (location, arg);
++      if (int_operands)
++	{
++	  arg = c_objc_common_truthvalue_conversion (location, xarg);
++	  arg = remove_c_maybe_const_expr (arg);
++	}
++      else
++	arg = c_objc_common_truthvalue_conversion (location, arg);
+       ret = invert_truthvalue_loc (location, arg);
+       /* If the TRUTH_NOT_EXPR has been folded, reset the location.  */
+       if (EXPR_P (ret) && EXPR_HAS_LOCATION (ret))
+@@ -4315,6 +4321,11 @@
+     ret = fold_build3_loc (colon_loc, COND_EXPR, result_type, ifexp, op1, op2);
+   else
+     {
++      if (int_operands)
++	{
++	  op1 = remove_c_maybe_const_expr (op1);
++	  op2 = remove_c_maybe_const_expr (op2);
++	}
+       ret = build3 (COND_EXPR, result_type, ifexp, op1, op2);
+       if (int_operands)
+ 	ret = note_integer_operands (ret);
+@@ -4750,8 +4761,11 @@
+   ret = build_c_cast (loc, type, expr);
+   if (type_expr)
+     {
++      bool inner_expr_const = true;
++      ret = c_fully_fold (ret, require_constant_value, &inner_expr_const);
+       ret = build2 (C_MAYBE_CONST_EXPR, TREE_TYPE (ret), type_expr, ret);
+-      C_MAYBE_CONST_EXPR_NON_CONST (ret) = !type_expr_const;
++      C_MAYBE_CONST_EXPR_NON_CONST (ret) = !(type_expr_const
++					     && inner_expr_const);
+       SET_EXPR_LOCATION (ret, loc);
+     }
+ 
+@@ -9628,8 +9642,20 @@
+ 	     but that does not mean the operands should be
+ 	     converted to ints!  */
+ 	  result_type = integer_type_node;
+-	  op0 = c_common_truthvalue_conversion (location, op0);
+-	  op1 = c_common_truthvalue_conversion (location, op1);
++	  if (op0_int_operands)
++	    {
++	      op0 = c_objc_common_truthvalue_conversion (location, orig_op0);
++	      op0 = remove_c_maybe_const_expr (op0);
++	    }
++	  else
++	    op0 = c_objc_common_truthvalue_conversion (location, op0);
++	  if (op1_int_operands)
++	    {
++	      op1 = c_objc_common_truthvalue_conversion (location, orig_op1);
++	      op1 = remove_c_maybe_const_expr (op1);
++	    }
++	  else
++	    op1 = c_objc_common_truthvalue_conversion (location, op1);
+ 	  converted = 1;
+ 	  boolean_op = true;
+ 	}
+@@ -10287,13 +10313,18 @@
+ 
+   int_const = (TREE_CODE (expr) == INTEGER_CST && !TREE_OVERFLOW (expr));
+   int_operands = EXPR_INT_CONST_OPERANDS (expr);
+-  if (int_operands)
+-    expr = remove_c_maybe_const_expr (expr);
++  if (int_operands && TREE_CODE (expr) != INTEGER_CST)
++    {
++      expr = remove_c_maybe_const_expr (expr);
++      expr = build2 (NE_EXPR, integer_type_node, expr,
++		     convert (TREE_TYPE (expr), integer_zero_node));
++      expr = note_integer_operands (expr);
++    }
++  else
++    /* ??? Should we also give an error for vectors rather than leaving
++       those to give errors later?  */
++    expr = c_common_truthvalue_conversion (location, expr);
+ 
+-  /* ??? Should we also give an error for vectors rather than leaving
+-     those to give errors later?  */
+-  expr = c_common_truthvalue_conversion (location, expr);
+-
+   if (TREE_CODE (expr) == INTEGER_CST && int_operands && !int_const)
+     {
+       if (TREE_OVERFLOW (expr))
+Index: gcc/cselib.c
+===================================================================
+--- a/src/gcc/cselib.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/cselib.c	(.../branches/gcc-4_6-branch)
+@@ -1237,8 +1237,18 @@
+   unsigned int regno = UINT_MAX;
+   struct elt_loc_list *p_in = p;
+ 
+-  for (; p; p = p -> next)
++  for (; p; p = p->next)
+     {
++      /* Return these right away to avoid returning stack pointer based
++	 expressions for frame pointer and vice versa, which is something
++	 that would confuse DSE.  See the comment in cselib_expand_value_rtx_1
++	 for more details.  */
++      if (REG_P (p->loc)
++	  && (REGNO (p->loc) == STACK_POINTER_REGNUM
++	      || REGNO (p->loc) == FRAME_POINTER_REGNUM
++	      || REGNO (p->loc) == HARD_FRAME_POINTER_REGNUM
++	      || REGNO (p->loc) == cfa_base_preserved_regno))
++	return p->loc;
+       /* Avoid infinite recursion trying to expand a reg into a
+ 	 the same reg.  */
+       if ((REG_P (p->loc))
+Index: gcc/tree-sra.c
+===================================================================
+--- a/src/gcc/tree-sra.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/tree-sra.c	(.../branches/gcc-4_6-branch)
+@@ -910,7 +910,8 @@
+ disqualify_base_of_expr (tree t, const char *reason)
+ {
+   t = get_base_address (t);
+-  if (sra_mode == SRA_MODE_EARLY_IPA
++  if (t
++      && sra_mode == SRA_MODE_EARLY_IPA
+       && TREE_CODE (t) == MEM_REF)
+     t = get_ssa_base_param (TREE_OPERAND (t, 0));
+ 
+@@ -2937,7 +2938,13 @@
+     }
+   else
+     {
+-      if (access_has_children_p (lacc) && access_has_children_p (racc))
++      if (access_has_children_p (lacc)
++	  && access_has_children_p (racc)
++	  /* When an access represents an unscalarizable region, it usually
++	     represents accesses with variable offset and thus must not be used
++	     to generate new memory accesses.  */
++	  && !lacc->grp_unscalarizable_region
++	  && !racc->grp_unscalarizable_region)
+ 	{
+ 	  gimple_stmt_iterator orig_gsi = *gsi;
+ 	  enum unscalarized_data_handling refreshed;
+Index: gcc/lto/lto.c
+===================================================================
+--- a/src/gcc/lto/lto.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/lto/lto.c	(.../branches/gcc-4_6-branch)
+@@ -893,7 +893,8 @@
+ 
+   for (node = cgraph_nodes; node; node = node->next)
+     {
+-      if (!partition_cgraph_node_p (node))
++      if (!partition_cgraph_node_p (node)
++	  || node->aux)
+ 	continue;
+ 
+       file_data = node->local.lto_file_data;
+@@ -923,13 +924,13 @@
+ 	  npartitions++;
+ 	}
+ 
+-      if (!node->aux)
+-        add_cgraph_node_to_partition (partition, node);
++      add_cgraph_node_to_partition (partition, node);
+     }
+ 
+   for (vnode = varpool_nodes; vnode; vnode = vnode->next)
+     {
+-      if (!partition_varpool_node_p (vnode))
++      if (!partition_varpool_node_p (vnode)
++	  || vnode->aux)
+ 	continue;
+       file_data = vnode->lto_file_data;
+       slot = pointer_map_contains (pmap, file_data);
+@@ -943,8 +944,7 @@
+ 	  npartitions++;
+ 	}
+ 
+-      if (!vnode->aux)
+-        add_varpool_node_to_partition (partition, vnode);
++      add_varpool_node_to_partition (partition, vnode);
+     }
+   for (node = cgraph_nodes; node; node = node->next)
+     node->aux = NULL;
+@@ -1050,8 +1050,9 @@
+ 
+   for (i = 0; i < n_nodes; i++)
+     {
+-      if (!order[i]->aux)
+-        add_cgraph_node_to_partition (partition, order[i]);
++      if (order[i]->aux)
++	continue;
++      add_cgraph_node_to_partition (partition, order[i]);
+       total_size -= order[i]->global.size;
+ 
+       /* Once we added a new node to the partition, we also want to add
+@@ -1231,6 +1232,8 @@
+ 	    }
+ 	  i = best_i;
+  	  /* When we are finished, avoid creating empty partition.  */
++	  while (i < n_nodes - 1 && order[i + 1]->aux)
++	    i++;
+ 	  if (i == n_nodes - 1)
+ 	    break;
+ 	  partition = new_partition ("");
+Index: gcc/lto/ChangeLog
+===================================================================
+--- a/src/gcc/lto/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/lto/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,12 @@
++2012-04-23  Peter Bergner  <bergner@vnet.ibm.com>
++
++	Backport from mainline
++	2011-06-11  Jan Hubicka  <jh@suse.cz>
++
++	PR lto/48246
++	* lto.c (lto_1_to_1_map): Don't create empty partitions.
++	(lto_balanced_map): Likewise.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: gcc/ipa-prop.c
+===================================================================
+--- a/src/gcc/ipa-prop.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/ipa-prop.c	(.../branches/gcc-4_6-branch)
+@@ -704,12 +704,11 @@
+       || is_global_var (base))
+     return;
+ 
+-  if (detect_type_change (op, base, call, jfunc, offset))
++  binfo = TYPE_BINFO (TREE_TYPE (base));
++  if (!binfo
++      || detect_type_change (op, base, call, jfunc, offset))
+     return;
+ 
+-  binfo = TYPE_BINFO (TREE_TYPE (base));
+-  if (!binfo)
+-    return;
+   binfo = get_binfo_at_offset (binfo, offset, TREE_TYPE (op));
+   if (binfo)
+     {
+Index: gcc/varasm.c
+===================================================================
+--- a/src/gcc/varasm.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/varasm.c	(.../branches/gcc-4_6-branch)
+@@ -1,7 +1,7 @@
+ /* Output variables, constants and external declarations, for GNU compiler.
+    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+    1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+-   2010, 2011  Free Software Foundation, Inc.
++   2010, 2011, 2012  Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -30,6 +30,7 @@
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
++#include "pointer-set.h"
+ #include "tm.h"
+ #include "rtl.h"
+ #include "tree.h"
+@@ -2097,6 +2098,19 @@
+    it all the way to final.  See PR 17982 for further discussion.  */
+ static GTY(()) tree pending_assemble_externals;
+ 
++/* FIXME: Trunk is at GCC 4.8 now and the above problem still hasn't been
++   addressed properly.  This caused PR 52640 due to O(external_decls**2)
++   lookups in the pending_assemble_externals TREE_LIST in assemble_external.
++   Paper over with this pointer set, which we use to see if we have already
++   added a decl to pending_assemble_externals without first traversing
++   the entire pending_assemble_externals list.  See assemble_external().  */
++static struct pointer_set_t *pending_assemble_externals_set;
++
++/* Some targets delay some output to final using TARGET_ASM_FILE_END.
++   As a result, assemble_external can be called after the list of externals
++   is processed and the pointer set destroyed.  */
++static bool pending_assemble_externals_processed;
++
+ #ifdef ASM_OUTPUT_EXTERNAL
+ /* True if DECL is a function decl for which no out-of-line copy exists.
+    It is assumed that DECL's assembler name has been set.  */
+@@ -2146,6 +2160,8 @@
+     assemble_external_real (TREE_VALUE (list));
+ 
+   pending_assemble_externals = 0;
++  pending_assemble_externals_processed = true;
++  pointer_set_destroy (pending_assemble_externals_set);
+ #endif
+ }
+ 
+@@ -2186,7 +2202,13 @@
+     weak_decls = tree_cons (NULL, decl, weak_decls);
+ 
+ #ifdef ASM_OUTPUT_EXTERNAL
+-  if (value_member (decl, pending_assemble_externals) == NULL_TREE)
++  if (pending_assemble_externals_processed)
++    {
++      assemble_external_real (decl);
++      return;
++    }
++
++  if (! pointer_set_insert (pending_assemble_externals_set, decl))
+     pending_assemble_externals = tree_cons (NULL, decl,
+ 					    pending_assemble_externals);
+ #endif
+@@ -3922,6 +3944,13 @@
+ 	   tem = TREE_OPERAND (tem, 0))
+ 	;
+ 
++      if (TREE_CODE (tem) == MEM_REF
++	  && TREE_CODE (TREE_OPERAND (tem, 0)) == ADDR_EXPR)
++	{
++	  reloc = compute_reloc_for_constant (TREE_OPERAND (tem, 0));
++	  break;
++	}
++
+       if (TREE_PUBLIC (tem))
+ 	reloc |= 2;
+       else
+@@ -3990,6 +4019,9 @@
+ 
+       if (CONSTANT_CLASS_P (tem) || TREE_CODE (tem) == CONSTRUCTOR)
+ 	output_constant_def (tem, 0);
++
++      if (TREE_CODE (tem) == MEM_REF)
++	output_addressed_constants (TREE_OPERAND (tem, 0));
+       break;
+ 
+     case PLUS_EXPR:
+@@ -6019,6 +6051,10 @@
+ 
+   if (readonly_data_section == NULL)
+     readonly_data_section = text_section;
++
++#ifdef ASM_OUTPUT_EXTERNAL
++  pending_assemble_externals_set = pointer_set_create ();
++#endif
+ }
+ 
+ enum tls_model
+Index: gcc/tree-vect-stmts.c
+===================================================================
+--- a/src/gcc/tree-vect-stmts.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/tree-vect-stmts.c	(.../branches/gcc-4_6-branch)
+@@ -623,6 +623,46 @@
+ }
+ 
+ 
++/* Model cost for type demotion and promotion operations.  PWR is normally
++   zero for single-step promotions and demotions.  It will be one if 
++   two-step promotion/demotion is required, and so on.  Each additional
++   step doubles the number of instructions required.  */
++
++static void
++vect_model_promotion_demotion_cost (stmt_vec_info stmt_info,
++				    enum vect_def_type *dt, int pwr)
++{
++  int i, tmp;
++  int inside_cost = 0, outside_cost = 0, single_stmt_cost;
++
++  /* The SLP costs were already calculated during SLP tree build.  */
++  if (PURE_SLP_STMT (stmt_info))
++    return;
++
++  single_stmt_cost = vect_get_stmt_cost (vec_promote_demote);
++  for (i = 0; i < pwr + 1; i++)
++    {
++      tmp = (STMT_VINFO_TYPE (stmt_info) == type_promotion_vec_info_type) ?
++	(i + 1) : i;
++      inside_cost += vect_pow2 (tmp) * single_stmt_cost;
++    }
++
++  /* FORNOW: Assuming maximum 2 args per stmts.  */
++  for (i = 0; i < 2; i++)
++    {
++      if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
++        outside_cost += vect_get_stmt_cost (vector_stmt);
++    }
++
++  if (vect_print_dump_info (REPORT_COST))
++    fprintf (vect_dump, "vect_model_promotion_demotion_cost: inside_cost = %d, "
++             "outside_cost = %d .", inside_cost, outside_cost);
++
++  /* Set the costs in STMT_INFO.  */
++  stmt_vinfo_set_inside_of_loop_cost (stmt_info, NULL, inside_cost);
++  stmt_vinfo_set_outside_of_loop_cost (stmt_info, NULL, outside_cost);
++}
++
+ /* Function vect_cost_strided_group_size
+ 
+    For strided load or store, return the group_size only if it is the first
+@@ -691,7 +731,7 @@
+     {
+       /* Uses a high and low interleave operation for each needed permute.  */
+       inside_cost = ncopies * exact_log2(group_size) * group_size
+-        * vect_get_stmt_cost (vector_stmt);
++        * vect_get_stmt_cost (vec_perm);
+ 
+       if (vect_print_dump_info (REPORT_COST))
+         fprintf (vect_dump, "vect_model_store_cost: strided group_size = %d .",
+@@ -795,7 +835,7 @@
+     {
+       /* Uses an even and odd extract operations for each needed permute.  */
+       inside_cost = ncopies * exact_log2(group_size) * group_size
+-	* vect_get_stmt_cost (vector_stmt);
++	* vect_get_stmt_cost (vec_perm);
+ 
+       if (vect_print_dump_info (REPORT_COST))
+         fprintf (vect_dump, "vect_model_load_cost: strided group_size = %d .",
+@@ -855,7 +895,7 @@
+     case dr_explicit_realign:
+       {
+         *inside_cost += ncopies * (2 * vect_get_stmt_cost (vector_load)
+-           + vect_get_stmt_cost (vector_stmt));
++				   + vect_get_stmt_cost (vec_perm));
+ 
+         /* FIXME: If the misalignment remains fixed across the iterations of
+            the containing loop, the following cost should be added to the
+@@ -863,6 +903,9 @@
+         if (targetm.vectorize.builtin_mask_for_load)
+           *inside_cost += vect_get_stmt_cost (vector_stmt);
+ 
++        if (vect_print_dump_info (REPORT_COST))
++          fprintf (vect_dump, "vect_model_load_cost: explicit realign");
++
+         break;
+       }
+     case dr_explicit_realign_optimized:
+@@ -886,7 +929,12 @@
+           }
+ 
+         *inside_cost += ncopies * (vect_get_stmt_cost (vector_load)
+-          + vect_get_stmt_cost (vector_stmt));
++				   + vect_get_stmt_cost (vec_perm));
++
++        if (vect_print_dump_info (REPORT_COST))
++          fprintf (vect_dump,
++		   "vect_model_load_cost: explicit realign optimized");
++
+         break;
+       }
+ 
+@@ -2919,7 +2967,7 @@
+       STMT_VINFO_TYPE (stmt_info) = type_demotion_vec_info_type;
+       if (vect_print_dump_info (REPORT_DETAILS))
+         fprintf (vect_dump, "=== vectorizable_demotion ===");
+-      vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
++      vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt);
+       return true;
+     }
+ 
+@@ -3217,7 +3265,7 @@
+       STMT_VINFO_TYPE (stmt_info) = type_promotion_vec_info_type;
+       if (vect_print_dump_info (REPORT_DETAILS))
+         fprintf (vect_dump, "=== vectorizable_promotion ===");
+-      vect_model_simple_cost (stmt_info, 2*ncopies, dt, NULL);
++      vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt);
+       return true;
+     }
+ 
+Index: gcc/tree-inline.c
+===================================================================
+--- a/src/gcc/tree-inline.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/tree-inline.c	(.../branches/gcc-4_6-branch)
+@@ -3809,6 +3809,12 @@
+ 	goto egress;
+ 
+       if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
++          /* For extern inline functions that get redefined we always
++	     silently ignored always_inline flag. Better behaviour would
++	     be to be able to keep both bodies and use extern inline body
++	     for inlining, but we can't do that because frontends overwrite
++	     the body.  */
++	  && !cg_edge->callee->local.redefined_extern_inline
+ 	  /* Avoid warnings during early inline pass. */
+ 	  && cgraph_global_info_ready)
+ 	{
+@@ -4947,7 +4953,7 @@
+ 	        if ((e = cgraph_edge (id->dst_node, gsi_stmt (bsi))) != NULL)
+ 		  {
+ 		    if (!e->inline_failed)
+-		      cgraph_remove_node_and_inline_clones (e->callee);
++		      cgraph_remove_node_and_inline_clones (e->callee, id->dst_node);
+ 		    else
+ 	              cgraph_remove_edge (e);
+ 		  }
+@@ -4957,8 +4963,8 @@
+ 		    {
+ 	              if ((e = cgraph_edge (node, gsi_stmt (bsi))) != NULL)
+ 			{
+-		          if (!e->inline_failed)
+-		            cgraph_remove_node_and_inline_clones (e->callee);
++		          if (!e->inline_failed && e->callee != id->src_node)
++		            cgraph_remove_node_and_inline_clones (e->callee, id->dst_node);
+ 			  else
+ 	                    cgraph_remove_edge (e);
+ 			}
+Index: gcc/combine.c
+===================================================================
+--- a/src/gcc/combine.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/combine.c	(.../branches/gcc-4_6-branch)
+@@ -1788,6 +1788,10 @@
+   if (set == 0)
+     return 0;
+ 
++  /* The simplification in expand_field_assignment may call back to
++     get_last_value, so set safe guard here.  */
++  subst_low_luid = DF_INSN_LUID (insn);
++
+   set = expand_field_assignment (set);
+   src = SET_SRC (set), dest = SET_DEST (set);
+ 
+Index: gcc/df-problems.c
+===================================================================
+--- a/src/gcc/df-problems.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/df-problems.c	(.../branches/gcc-4_6-branch)
+@@ -3956,6 +3956,19 @@
+   df_simulate_initialize_backwards (merge_bb, test_use);
+   for (insn = across_to; ; insn = next)
+     {
++      if (CALL_P (insn))
++	{
++	  if (RTL_CONST_OR_PURE_CALL_P (insn))
++	    /* Pure functions can read from memory.  Const functions can
++	       read from arguments that the ABI has forced onto the stack.
++	       Neither sort of read can be volatile.  */
++	    memrefs_in_across |= MEMREF_NORMAL;
++	  else
++	    {
++	      memrefs_in_across |= MEMREF_VOLATILE;
++	      mem_sets_in_across |= MEMREF_VOLATILE;
++	    }
++	}
+       if (NONDEBUG_INSN_P (insn))
+ 	{
+ 	  df_simulate_find_defs (insn, test_set);
+Index: gcc/config.gcc
+===================================================================
+--- a/src/gcc/config.gcc	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config.gcc	(.../branches/gcc-4_6-branch)
+@@ -817,7 +817,7 @@
+ arm*-*-linux*)			# ARM GNU/Linux with ELF
+ 	tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
+ 	case $target in
+-	arm*b-*)
++	arm*b-*-linux*)
+ 		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
+ 		;;
+ 	esac
+@@ -925,7 +925,7 @@
+ 	extra_objs="avr-devices.o"
+ 	;;
+ avr-*-*)
+-	tm_file="avr/avr.h dbxelf.h newlib-stdint.h"
++	tm_file="avr/avr.h dbxelf.h avr/avr-stdint.h"
+ 	use_gcc_stdint=wrap
+ 	extra_gcc_objs="driver-avr.o avr-devices.o"
+ 	extra_objs="avr-devices.o"
+Index: gcc/gimple.c
+===================================================================
+--- a/src/gcc/gimple.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/gimple.c	(.../branches/gcc-4_6-branch)
+@@ -2275,8 +2275,6 @@
+ bool
+ gimple_has_side_effects (const_gimple s)
+ {
+-  unsigned i;
+-
+   if (is_gimple_debug (s))
+     return false;
+ 
+@@ -2292,45 +2290,15 @@
+ 
+   if (is_gimple_call (s))
+     {
+-      unsigned nargs = gimple_call_num_args (s);
++      int flags = gimple_call_flags (s);
+ 
+-      if (!(gimple_call_flags (s) & (ECF_CONST | ECF_PURE)))
+-        return true;
+-      else if (gimple_call_flags (s) & ECF_LOOPING_CONST_OR_PURE)
+-	/* An infinite loop is considered a side effect.  */
++      /* An infinite loop is considered a side effect.  */
++      if (!(flags & (ECF_CONST | ECF_PURE))
++	  || (flags & ECF_LOOPING_CONST_OR_PURE))
+ 	return true;
+ 
+-      if (gimple_call_lhs (s)
+-          && TREE_SIDE_EFFECTS (gimple_call_lhs (s)))
+-	{
+-	  gcc_checking_assert (gimple_has_volatile_ops (s));
+-	  return true;
+-	}
+-
+-      if (TREE_SIDE_EFFECTS (gimple_call_fn (s)))
+-        return true;
+-
+-      for (i = 0; i < nargs; i++)
+-        if (TREE_SIDE_EFFECTS (gimple_call_arg (s, i)))
+-	  {
+-	    gcc_checking_assert (gimple_has_volatile_ops (s));
+-	    return true;
+-	  }
+-
+       return false;
+     }
+-  else
+-    {
+-      for (i = 0; i < gimple_num_ops (s); i++)
+-	{
+-	  tree op = gimple_op (s, i);
+-	  if (op && TREE_SIDE_EFFECTS (op))
+-	    {
+-	      gcc_checking_assert (gimple_has_volatile_ops (s));
+-	      return true;
+-	    }
+-	}
+-    }
+ 
+   return false;
+ }
+Index: gcc/gthr-posix.h
+===================================================================
+--- a/src/gcc/gthr-posix.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/gthr-posix.h	(.../branches/gcc-4_6-branch)
+@@ -239,16 +239,15 @@
+ static inline int
+ __gthread_active_p (void)
+ {
+-  static void *const __gthread_active_ptr
+-    = __extension__ (void *) &__gthrw_(
+ /* Android's C library does not provide pthread_cancel, check for
+    `pthread_create' instead.  */
+ #ifndef __BIONIC__
+-				       pthread_cancel
++  static void *const __gthread_active_ptr
++    = __extension__ (void *) &__gthrw_(pthread_cancel);
+ #else
+-				       pthread_create
++  static void *const __gthread_active_ptr
++    = __extension__ (void *) &__gthrw_(pthread_create);
+ #endif
+-				       );
+   return __gthread_active_ptr != 0;
+ }
+ 
+Index: gcc/config/alpha/linux-unwind.h
+===================================================================
+--- a/src/gcc/config/alpha/linux-unwind.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/alpha/linux-unwind.h	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for Alpha Linux.
+-   Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2009, 2011, 2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -49,7 +49,7 @@
+   else if (pc[1] == 0x201f015f)		/* lda $0,NR_rt_sigreturn */
+     {
+       struct rt_sigframe {
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       sc = &rt_->uc.uc_mcontext;
+Index: gcc/config/alpha/alpha.c
+===================================================================
+--- a/src/gcc/config/alpha/alpha.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/alpha/alpha.c	(.../branches/gcc-4_6-branch)
+@@ -2469,7 +2469,7 @@
+     {
+     case EQ:  case LE:  case LT:  case LEU:  case LTU:
+     case UNORDERED:
+-      /* We have these compares: */
++      /* We have these compares.  */
+       cmp_code = code, branch_code = NE;
+       break;
+ 
+@@ -2706,13 +2706,15 @@
+       switch (code)
+ 	{
+ 	case EQ: case LE: case LT: case LEU: case LTU:
++	case UNORDERED:
+ 	  /* We have these compares.  */
+ 	  cmp_code = code, code = NE;
+ 	  break;
+ 
+ 	case NE:
+-	  /* This must be reversed.  */
+-	  cmp_code = EQ, code = EQ;
++	case ORDERED:
++	  /* These must be reversed.  */
++	  cmp_code = reverse_condition (code), code = EQ;
+ 	  break;
+ 
+ 	case GE: case GT: case GEU: case GTU:
+@@ -2732,6 +2734,14 @@
+ 	  gcc_unreachable ();
+ 	}
+ 
++      if (cmp_mode == DImode)
++	{
++	  if (!reg_or_0_operand (op0, DImode))
++	    op0 = force_reg (DImode, op0);
++	  if (!reg_or_8bit_operand (op1, DImode))
++	    op1 = force_reg (DImode, op1);
++	}
++
+       tem = gen_reg_rtx (cmp_mode);
+       emit_insn (gen_rtx_SET (VOIDmode, tem,
+ 			      gen_rtx_fmt_ee (cmp_code, cmp_mode,
+@@ -2743,6 +2753,14 @@
+       local_fast_math = 1;
+     }
+ 
++  if (cmp_mode == DImode)
++    {
++      if (!reg_or_0_operand (op0, DImode))
++	op0 = force_reg (DImode, op0);
++      if (!reg_or_8bit_operand (op1, DImode))
++	op1 = force_reg (DImode, op1);
++    }
++
+   /* We may be able to use a conditional move directly.
+      This avoids emitting spurious compares.  */
+   if (signed_comparison_operator (cmp, VOIDmode)
+@@ -2761,11 +2779,13 @@
+   switch (code)
+     {
+     case EQ:  case LE:  case LT:  case LEU:  case LTU:
++    case UNORDERED:
+       /* We have these compares: */
+       break;
+ 
+     case NE:
+-      /* This must be reversed.  */
++    case ORDERED:
++      /* These must be reversed.  */
+       code = reverse_condition (code);
+       cmov_code = EQ;
+       break;
+@@ -9628,18 +9648,19 @@
+     }
+ }
+ 
+-/* Insert an unop between a noreturn function call and GP load.  */
++/* Insert an unop between sibcall or noreturn function call and GP load.  */
+ 
+ static void
+-alpha_pad_noreturn (void)
++alpha_pad_function_end (void)
+ {
+   rtx insn, next;
+ 
+   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
+     {
+-      if (!CALL_P (insn)
+-	  || !find_reg_note (insn, REG_NORETURN, NULL_RTX))
+-        continue;
++      if (! (CALL_P (insn)
++	     && (SIBLING_CALL_P (insn)
++		 || find_reg_note (insn, REG_NORETURN, NULL_RTX))))
++	continue;
+ 
+       next = next_active_insn (insn);
+ 
+@@ -9660,11 +9681,31 @@
+ static void
+ alpha_reorg (void)
+ {
+-  /* Workaround for a linker error that triggers when an
+-     exception handler immediatelly follows a noreturn function.
++  /* Workaround for a linker error that triggers when an exception
++     handler immediatelly follows a sibcall or a noreturn function.
+ 
++In the sibcall case:
++
+      The instruction stream from an object file:
+ 
++ 1d8:   00 00 fb 6b     jmp     (t12)
++ 1dc:   00 00 ba 27     ldah    gp,0(ra)
++ 1e0:   00 00 bd 23     lda     gp,0(gp)
++ 1e4:   00 00 7d a7     ldq     t12,0(gp)
++ 1e8:   00 40 5b 6b     jsr     ra,(t12),1ec <__funcZ+0x1ec>
++
++     was converted in the final link pass to:
++
++   12003aa88:   67 fa ff c3     br      120039428 <...>
++   12003aa8c:   00 00 fe 2f     unop
++   12003aa90:   00 00 fe 2f     unop
++   12003aa94:   48 83 7d a7     ldq     t12,-31928(gp)
++   12003aa98:   00 40 5b 6b     jsr     ra,(t12),12003aa9c <__func+0x1ec>
++
++And in the noreturn case:
++
++     The instruction stream from an object file:
++
+   54:   00 40 5b 6b     jsr     ra,(t12),58 <__func+0x58>
+   58:   00 00 ba 27     ldah    gp,0(ra)
+   5c:   00 00 bd 23     lda     gp,0(gp)
+@@ -9681,11 +9722,11 @@
+ 
+      GP load instructions were wrongly cleared by the linker relaxation
+      pass.  This workaround prevents removal of GP loads by inserting
+-     an unop instruction between a noreturn function call and
++     an unop instruction between a sibcall or noreturn function call and
+      exception handler prologue.  */
+ 
+   if (current_function_has_exception_handlers ())
+-    alpha_pad_noreturn ();
++    alpha_pad_function_end ();
+ 
+   if (alpha_tp != ALPHA_TP_PROG || flag_exceptions)
+     alpha_handle_trap_shadows ();
+Index: gcc/config/m32c/predicates.md
+===================================================================
+--- a/src/gcc/config/m32c/predicates.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/m32c/predicates.md	(.../branches/gcc-4_6-branch)
+@@ -293,3 +293,7 @@
+ (define_predicate "m32c_1mask16_operand"
+   (and (match_operand 0 "const_int_operand")
+        (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"Imw\")")))
++
++(define_predicate "m32c_const_u16_operand"
++  (and (match_operand 0 "const_int_operand")
++       (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 65535")))
+Index: gcc/config/m32c/m32c.c
+===================================================================
+--- a/src/gcc/config/m32c/m32c.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/m32c/m32c.c	(.../branches/gcc-4_6-branch)
+@@ -447,7 +447,7 @@
+     flag_ivopts = 0;
+ 
+   /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0)
++  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ 
+   /* r8c/m16c have no 16-bit indirect call, so thunks are involved.
+Index: gcc/config/m32c/muldiv.md
+===================================================================
+--- a/src/gcc/config/m32c/muldiv.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/m32c/muldiv.md	(.../branches/gcc-4_6-branch)
+@@ -108,7 +108,7 @@
+ (define_insn "umulhisi3_c"
+   [(set (match_operand:SI 0 "ra_operand" "=Rsi")
+         (mult:SI (zero_extend:SI (match_operand:HI 1 "mra_operand" "%0"))
+-                 (match_operand 2 "immediate_operand" "i")))]
++                 (match_operand 2 "m32c_const_u16_operand" "i")))]
+   ""
+   "mulu.w\t%u2,%1"
+   [(set_attr "flags" "o")]
+Index: gcc/config/spu/spu.c
+===================================================================
+--- a/src/gcc/config/spu/spu.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/spu/spu.c	(.../branches/gcc-4_6-branch)
+@@ -6794,6 +6794,7 @@
+       case scalar_to_vec:
+       case cond_branch_not_taken:
+       case vec_perm:
++      case vec_promote_demote:
+         return 1;
+ 
+       case scalar_store:
+Index: gcc/config/sparc/sparc.c
+===================================================================
+--- a/src/gcc/config/sparc/sparc.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/sparc/sparc.c	(.../branches/gcc-4_6-branch)
+@@ -3658,13 +3658,17 @@
+ {
+   x = delegitimize_mem_from_attrs (x);
+ 
+-  if (GET_CODE (x) == LO_SUM
+-      && GET_CODE (XEXP (x, 1)) == UNSPEC
+-      && XINT (XEXP (x, 1), 1) == UNSPEC_TLSLE)
+-    {
+-      x = XVECEXP (XEXP (x, 1), 0, 0);
+-      gcc_assert (GET_CODE (x) == SYMBOL_REF);
+-    }
++  if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 1)) == UNSPEC)
++    switch (XINT (XEXP (x, 1), 1))
++      {
++      case UNSPEC_MOVE_PIC:
++      case UNSPEC_TLSLE:
++	x = XVECEXP (XEXP (x, 1), 0, 0);
++	gcc_assert (GET_CODE (x) == SYMBOL_REF);
++	break;
++      default:
++	break;
++      }
+ 
+   return x;
+ }
+@@ -9452,7 +9456,10 @@
+   /* We need to have the (essentially) final form of the insn stream in order
+      to properly detect the various hazards.  Run delay slot scheduling.  */
+   if (optimize > 0 && flag_delayed_branch)
+-    dbr_schedule (get_insns ());
++    {
++      cleanup_barriers ();
++      dbr_schedule (get_insns ());
++    }
+ 
+   /* Now look for specific patterns in the insn stream.  */
+   for (insn = get_insns (); insn; insn = next)
+@@ -9634,6 +9641,7 @@
+ 						       void_list_node));
+ 	  DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL,
+ 					   NULL_TREE, void_type_node);
++	  TREE_PUBLIC (decl) = 1;
+ 	  TREE_STATIC (decl) = 1;
+ 	  make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl));
+ 	  DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
+Index: gcc/config/sparc/sol2-bi.h
+===================================================================
+--- a/src/gcc/config/sparc/sol2-bi.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/sparc/sol2-bi.h	(.../branches/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ /* Definitions of target machine for GCC, for bi-arch SPARC
+    running Solaris 2 using the system assembler and linker.
+-   Copyright (C) 2002, 2003, 2004, 2006, 2007, 2009, 2010, 2011
++   Copyright (C) 2002, 2003, 2004, 2006, 2007, 2009, 2010, 2011, 2012
+    Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+@@ -191,12 +191,12 @@
+    %{YP,*} \
+    %{R*} \
+    %{compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
+-       %{!p:%{!pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/sparcv9}}} \
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9:%R/lib/sparcv9} \
++       %{!p:%{!pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/sparcv9:%R/lib/sparcv9}}} \
+      -R %R/usr/ucblib/sparcv9} \
+    %{!compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
+-       %{!p:%{!pg:-Y P,%R/usr/lib/sparcv9}}}}"
++     %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9:%R/lib/sparcv9} \
++       %{!p:%{!pg:-Y P,%R/usr/lib/sparcv9:%R/lib/sparcv9}}}}"
+ 
+ #define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE
+ 
+Index: gcc/config/rx/rx.c
+===================================================================
+--- a/src/gcc/config/rx/rx.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/rx/rx.c	(.../branches/gcc-4_6-branch)
+@@ -2348,7 +2348,7 @@
+ rx_option_override (void)
+ {
+   /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0)
++  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ 
+   rx_override_options_after_change ();
+Index: gcc/config/i386/i386.h
+===================================================================
+--- a/src/gcc/config/i386/i386.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/i386/i386.h	(.../branches/gcc-4_6-branch)
+@@ -424,7 +424,7 @@
+ 
+ /* Feature tests against the various architecture variations.  */
+ enum ix86_arch_indices {
+-  X86_ARCH_CMOVE,		/* || TARGET_SSE */
++  X86_ARCH_CMOV,
+   X86_ARCH_CMPXCHG,
+   X86_ARCH_CMPXCHG8B,
+   X86_ARCH_XADD,
+@@ -435,12 +435,17 @@
+ 
+ extern unsigned char ix86_arch_features[X86_ARCH_LAST];
+ 
+-#define TARGET_CMOVE		ix86_arch_features[X86_ARCH_CMOVE]
++#define TARGET_CMOV		ix86_arch_features[X86_ARCH_CMOV]
+ #define TARGET_CMPXCHG		ix86_arch_features[X86_ARCH_CMPXCHG]
+ #define TARGET_CMPXCHG8B	ix86_arch_features[X86_ARCH_CMPXCHG8B]
+ #define TARGET_XADD		ix86_arch_features[X86_ARCH_XADD]
+ #define TARGET_BSWAP		ix86_arch_features[X86_ARCH_BSWAP]
+ 
++/* For sane SSE instruction set generation we need fcomi instruction.
++   It is safe to enable all CMOVE instructions.  Also, RDRAND intrinsic
++   expands to a sequence that includes conditional move. */
++#define TARGET_CMOVE		(TARGET_CMOV || TARGET_SSE || TARGET_RDRND)
++
+ #define TARGET_FISTTP		(TARGET_SSE3 && TARGET_80387)
+ 
+ extern int x86_prefetch_sse;
+@@ -1668,6 +1673,17 @@
+ 
+ #define LEGITIMATE_CONSTANT_P(X)  legitimate_constant_p (X)
+ 
++/* Try a machine-dependent way of reloading an illegitimate address
++   operand.  If we find one, push the reload and jump to WIN.  This
++   macro is used in only one place: `find_reloads_address' in reload.c.  */
++
++#define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, INDL, WIN)	\
++do {									\
++  if (ix86_legitimize_reload_address ((X), (MODE), (OPNUM),		\
++				      (int)(TYPE), (INDL)))		\
++    goto WIN;								\
++} while (0)
++
+ /* If defined, a C expression to determine the base term of address X.
+    This macro is used in only one place: `find_base_term' in alias.c.
+ 
+Index: gcc/config/i386/i386.md
+===================================================================
+--- a/src/gcc/config/i386/i386.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/i386/i386.md	(.../branches/gcc-4_6-branch)
+@@ -233,9 +233,6 @@
+ 
+   ;; For BMI support
+   UNSPEC_BEXTR
+-
+-  ;; For RDRAND support
+-  UNSPEC_RDRAND
+ ])
+ 
+ (define_c_enum "unspecv" [
+@@ -270,6 +267,9 @@
+   UNSPECV_WRFSBASE
+   UNSPECV_WRGSBASE
+   UNSPECV_SPLIT_STACK_RETURN
++
++  ;; For RDRAND support
++  UNSPECV_RDRAND
+ ])
+ 
+ ;; Constants to represent pcomtrue/pcomfalse variants
+@@ -16349,7 +16349,8 @@
+ (define_insn "*x86_mov<mode>cc_0_m1_neg"
+   [(set (match_operand:SWI48 0 "register_operand" "=r")
+ 	(neg:SWI48 (match_operator 1 "ix86_carry_flag_operator"
+-		    [(reg FLAGS_REG) (const_int 0)])))]
++		    [(reg FLAGS_REG) (const_int 0)])))
++   (clobber (reg:CC FLAGS_REG))]
+   ""
+   "sbb{<imodesuffix>}\t%0, %0"
+   [(set_attr "type" "alu")
+@@ -18357,9 +18358,9 @@
+ 
+ (define_insn "rdrand<mode>_1"
+   [(set (match_operand:SWI248 0 "register_operand" "=r")
+-	(unspec:SWI248 [(const_int 0)] UNSPEC_RDRAND))
++	(unspec_volatile:SWI248 [(const_int 0)] UNSPECV_RDRAND))
+    (set (reg:CCC FLAGS_REG)
+-	(unspec:CCC [(const_int 0)] UNSPEC_RDRAND))]
++	(unspec_volatile:CCC [(const_int 0)] UNSPECV_RDRAND))]
+   "TARGET_RDRND"
+   "rdrand\t%0"
+   [(set_attr "type" "other")
+Index: gcc/config/i386/sse.md
+===================================================================
+--- a/src/gcc/config/i386/sse.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/i386/sse.md	(.../branches/gcc-4_6-branch)
+@@ -392,18 +392,7 @@
+   DONE;
+ })
+ 
+-(define_expand "avx_movu<ssemodesuffix><avxmodesuffix>"
+-  [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "")
+-	(unspec:AVXMODEF2P
+-	  [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "")]
+-	  UNSPEC_MOVU))]
+-  "AVX_VEC_FLOAT_MODE_P (<MODE>mode)"
+-{
+-  if (MEM_P (operands[0]) && MEM_P (operands[1]))
+-    operands[1] = force_reg (<MODE>mode, operands[1]);
+-})
+-
+-(define_insn "*avx_movu<ssemodesuffix><avxmodesuffix>"
++(define_insn "avx_movu<ssemodesuffix><avxmodesuffix>"
+   [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "=x,m")
+ 	(unspec:AVXMODEF2P
+ 	  [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "xm,x")]
+@@ -429,18 +418,7 @@
+    (set_attr "prefix" "maybe_vex")
+    (set_attr "mode" "TI")])
+ 
+-(define_expand "<sse>_movu<ssemodesuffix>"
+-  [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "")
+-	(unspec:SSEMODEF2P
+-	  [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")]
+-	  UNSPEC_MOVU))]
+-  "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+-{
+-  if (MEM_P (operands[0]) && MEM_P (operands[1]))
+-    operands[1] = force_reg (<MODE>mode, operands[1]);
+-})
+-
+-(define_insn "*<sse>_movu<ssemodesuffix>"
++(define_insn "<sse>_movu<ssemodesuffix>"
+   [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "=x,m")
+ 	(unspec:SSEMODEF2P
+ 	  [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm,x")]
+@@ -452,18 +430,7 @@
+    (set_attr "movu" "1")
+    (set_attr "mode" "<MODE>")])
+ 
+-(define_expand "avx_movdqu<avxmodesuffix>"
+-  [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "")
+-	(unspec:AVXMODEQI
+-	  [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "")]
+-	  UNSPEC_MOVU))]
+-  "TARGET_AVX"
+-{
+-  if (MEM_P (operands[0]) && MEM_P (operands[1]))
+-    operands[1] = force_reg (<MODE>mode, operands[1]);
+-})
+-
+-(define_insn "*avx_movdqu<avxmodesuffix>"
++(define_insn "avx_movdqu<avxmodesuffix>"
+   [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "=x,m")
+ 	(unspec:AVXMODEQI
+ 	  [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "xm,x")]
+@@ -475,17 +442,7 @@
+    (set_attr "prefix" "vex")
+    (set_attr "mode" "<avxvecmode>")])
+ 
+-(define_expand "sse2_movdqu"
+-  [(set (match_operand:V16QI 0 "nonimmediate_operand" "")
+-	(unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "")]
+-		      UNSPEC_MOVU))]
+-  "TARGET_SSE2"
+-{
+-  if (MEM_P (operands[0]) && MEM_P (operands[1]))
+-    operands[1] = force_reg (V16QImode, operands[1]);
+-})
+-
+-(define_insn "*sse2_movdqu"
++(define_insn "sse2_movdqu"
+   [(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m")
+ 	(unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "xm,x")]
+ 		      UNSPEC_MOVU))]
+@@ -1324,15 +1281,15 @@
+ 		(parallel [(const_int 0)]))
+ 	      (vec_select:DF (match_dup 1) (parallel [(const_int 1)])))
+ 	    (plusminus:DF
+-	      (vec_select:DF (match_dup 1) (parallel [(const_int 2)]))
+-	      (vec_select:DF (match_dup 1) (parallel [(const_int 3)]))))
+-	  (vec_concat:V2DF
+-	    (plusminus:DF
+ 	      (vec_select:DF
+ 		(match_operand:V4DF 2 "nonimmediate_operand" "xm")
+ 		(parallel [(const_int 0)]))
+-	      (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))
++	      (vec_select:DF (match_dup 2) (parallel [(const_int 1)]))))
++	  (vec_concat:V2DF
+ 	    (plusminus:DF
++	      (vec_select:DF (match_dup 1) (parallel [(const_int 2)]))
++	      (vec_select:DF (match_dup 1) (parallel [(const_int 3)])))
++	    (plusminus:DF
+ 	      (vec_select:DF (match_dup 2) (parallel [(const_int 2)]))
+ 	      (vec_select:DF (match_dup 2) (parallel [(const_int 3)]))))))]
+   "TARGET_AVX"
+@@ -5058,7 +5015,7 @@
+ 	  (vec_select:DF (match_dup 0) (parallel [(const_int 1)]))))]
+   "TARGET_SSE2 && reload_completed"
+   [(set (match_dup 0) (match_dup 1))]
+-  "operands[0] = adjust_address (operands[0], DFmode, 8);")
++  "operands[0] = adjust_address (operands[0], DFmode, 0);")
+ 
+ ;; Not sure these two are ever used, but it doesn't hurt to have
+ ;; them. -aoliva
+@@ -12095,7 +12052,7 @@
+ 	  (unspec:V8SF [(match_operand:V8HI 1 "register_operand" "x")]
+ 		       UNSPEC_VCVTPH2PS)
+ 	  (parallel [(const_int 0) (const_int 1)
+-		     (const_int 1) (const_int 2)])))]
++		     (const_int 2) (const_int 3)])))]
+   "TARGET_F16C"
+   "vcvtph2ps\t{%1, %0|%0, %1}"
+   [(set_attr "type" "ssecvt")
+Index: gcc/config/i386/linux-unwind.h
+===================================================================
+--- a/src/gcc/config/i386/linux-unwind.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/i386/linux-unwind.h	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,6 @@
+ /* DWARF2 EH unwinding support for AMD x86-64 and x86.
+-   Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2006, 2009, 2010, 2012 Free Software Foundation,
++   Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -133,9 +134,9 @@
+     {
+       struct rt_sigframe {
+ 	int sig;
+-	struct siginfo *pinfo;
++	siginfo_t *pinfo;
+ 	void *puc;
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+Index: gcc/config/i386/i386-protos.h
+===================================================================
+--- a/src/gcc/config/i386/i386-protos.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/i386/i386-protos.h	(.../branches/gcc-4_6-branch)
+@@ -59,7 +59,8 @@
+ extern bool constant_address_p (rtx);
+ extern bool legitimate_pic_operand_p (rtx);
+ extern bool legitimate_pic_address_disp_p (rtx);
+-
++extern bool ix86_legitimize_reload_address (rtx, enum machine_mode,
++					    int, int, int);
+ extern void print_reg (rtx, int, FILE*);
+ extern void ix86_print_operand (FILE *, rtx, int);
+ 
+Index: gcc/config/i386/driver-i386.c
+===================================================================
+--- a/src/gcc/config/i386/driver-i386.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/i386/driver-i386.c	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ /* Subroutines for the gcc driver.
+-   Copyright (C) 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
++   Copyright (C) 2006-2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -397,6 +397,8 @@
+   unsigned int has_pclmul = 0, has_abm = 0, has_lwp = 0;
+   unsigned int has_fma = 0, has_fma4 = 0, has_xop = 0;
+   unsigned int has_bmi = 0, has_tbm = 0;
++  unsigned int has_rdrnd = 0, has_f16c = 0, has_fsgsbase = 0;
++  unsigned int has_osxsave = 0;
+ 
+   bool arch;
+ 
+@@ -438,12 +440,15 @@
+   has_sse4_1 = ecx & bit_SSE4_1;
+   has_sse4_2 = ecx & bit_SSE4_2;
+   has_avx = ecx & bit_AVX;
++  has_osxsave = ecx & bit_OSXSAVE;
+   has_cmpxchg16b = ecx & bit_CMPXCHG16B;
+   has_movbe = ecx & bit_MOVBE;
+   has_popcnt = ecx & bit_POPCNT;
+   has_aes = ecx & bit_AES;
+   has_pclmul = ecx & bit_PCLMUL;
+   has_fma = ecx & bit_FMA;
++  has_f16c = ecx & bit_F16C;
++  has_rdrnd = ecx & bit_RDRND;
+ 
+   has_cmpxchg8b = edx & bit_CMPXCHG8B;
+   has_cmov = edx & bit_CMOV;
+@@ -451,6 +456,33 @@
+   has_sse = edx & bit_SSE;
+   has_sse2 = edx & bit_SSE2;
+ 
++  if (max_level >= 7)
++    {
++      __cpuid_count (7, 0, eax, ebx, ecx, edx);
++
++      has_fsgsbase = ebx & bit_FSGSBASE;
++    }
++
++  /* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv.  */
++#define XCR_XFEATURE_ENABLED_MASK	0x0
++#define XSTATE_FP			0x1
++#define XSTATE_SSE			0x2
++#define XSTATE_YMM			0x4
++  if (has_osxsave)
++    asm (".byte 0x0f; .byte 0x01; .byte 0xd0"
++	 : "=a" (eax), "=d" (edx)
++	 : "c" (XCR_XFEATURE_ENABLED_MASK));
++
++  /* Check if SSE and YMM states are supported.  */
++  if (!has_osxsave
++      || (eax & (XSTATE_SSE | XSTATE_YMM)) != (XSTATE_SSE | XSTATE_YMM))
++    {
++      has_avx = 0;
++      has_fma = 0;
++      has_fma4 = 0;
++      has_xop = 0;
++    }
++
+   /* Check cpuid level of extended features.  */
+   __cpuid (0x80000000, ext_level, ebx, ecx, edx);
+ 
+@@ -711,10 +743,13 @@
+       const char *avx = has_avx ? " -mavx" : " -mno-avx";
+       const char *sse4_2 = has_sse4_2 ? " -msse4.2" : " -mno-sse4.2";
+       const char *sse4_1 = has_sse4_1 ? " -msse4.1" : " -mno-sse4.1";
++      const char *rdrnd = has_rdrnd ? " -mrdrnd" : " -mno-rdrnd";
++      const char *f16c = has_f16c ? " -mf16c" : " -mno-f16c";
++      const char *fsgsbase = has_fsgsbase ? " -mfsgsbase" : " -mno-fsgsbase";
+ 
+       options = concat (options, cx16, sahf, movbe, ase, pclmul,
+ 			popcnt, abm, lwp, fma, fma4, xop, bmi, tbm,
+-			avx, sse4_2, sse4_1, NULL);
++			avx, sse4_2, sse4_1, rdrnd, f16c, fsgsbase, NULL);
+     }
+ 
+ done:
+Index: gcc/config/i386/i386.c
+===================================================================
+--- a/src/gcc/config/i386/i386.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/i386/i386.c	(.../branches/gcc-4_6-branch)
+@@ -46,6 +46,7 @@
+ #include "target.h"
+ #include "target-def.h"
+ #include "langhooks.h"
++#include "reload.h"
+ #include "cgraph.h"
+ #include "gimple.h"
+ #include "dwarf2.h"
+@@ -2094,7 +2095,7 @@
+ /* Feature tests against the various architecture variations, used to create
+    ix86_arch_features based on the processor mask.  */
+ static unsigned int initial_ix86_arch_features[X86_ARCH_LAST] = {
+-  /* X86_ARCH_CMOVE: Conditional move was added for pentiumpro.  */
++  /* X86_ARCH_CMOV: Conditional move was added for pentiumpro.  */
+   ~(m_386 | m_486 | m_PENT | m_K6),
+ 
+   /* X86_ARCH_CMPXCHG: Compare and exchange was added for 80486.  */
+@@ -3811,7 +3812,7 @@
+ 	   -mtune (rather than -march) points us to a processor that has them.
+ 	   However, the VIA C3 gives a SIGILL, so we only do that for i686 and
+ 	   higher processors.  */
+-	if (TARGET_CMOVE
++	if (TARGET_CMOV
+ 	    && (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE)))
+ 	  x86_prefetch_sse = true;
+ 	break;
+@@ -4181,12 +4182,6 @@
+       target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
+     }
+ 
+-  /* For sane SSE instruction set generation we need fcomi instruction.
+-     It is safe to enable all CMOVE instructions.  Also, RDRAND intrinsic
+-     expands to a sequence that includes conditional move. */
+-  if (TARGET_SSE || TARGET_RDRND)
+-    TARGET_CMOVE = 1;
+-
+   /* Figure out what ASM_GENERATE_INTERNAL_LABEL builds as a prefix.  */
+   {
+     char *p;
+@@ -12168,6 +12163,64 @@
+   return false;
+ }
+ 
++/* Our implementation of LEGITIMIZE_RELOAD_ADDRESS.  Returns a value to
++   replace the input X, or the original X if no replacement is called for.
++   The output parameter *WIN is 1 if the calling macro should goto WIN,
++   0 if it should not.  */
++
++bool
++ix86_legitimize_reload_address (rtx x,
++				enum machine_mode mode ATTRIBUTE_UNUSED,
++				int opnum, int type,
++				int ind_levels ATTRIBUTE_UNUSED)
++{
++  /* Reload can generate:
++
++     (plus:DI (plus:DI (unspec:DI [(const_int 0 [0])] UNSPEC_TP)
++		       (reg:DI 97))
++	      (reg:DI 2 cx))
++
++     This RTX is rejected from ix86_legitimate_address_p due to
++     non-strictness of base register 97.  Following this rejection, 
++     reload pushes all three components into separate registers,
++     creating invalid memory address RTX.
++
++     Following code reloads only the invalid part of the
++     memory address RTX.  */
++
++  if (GET_CODE (x) == PLUS
++      && REG_P (XEXP (x, 1))
++      && GET_CODE (XEXP (x, 0)) == PLUS
++      && REG_P (XEXP (XEXP (x, 0), 1)))
++    {
++      rtx base, index;
++      bool something_reloaded = false;
++
++      base = XEXP (XEXP (x, 0), 1);      
++      if (!REG_OK_FOR_BASE_STRICT_P (base))
++	{
++	  push_reload (base, NULL_RTX, &XEXP (XEXP (x, 0), 1), NULL,
++		       BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
++		       opnum, (enum reload_type)type);
++	  something_reloaded = true;
++	}
++
++      index = XEXP (x, 1);
++      if (!REG_OK_FOR_INDEX_STRICT_P (index))
++	{
++	  push_reload (index, NULL_RTX, &XEXP (x, 1), NULL,
++		       INDEX_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
++		       opnum, (enum reload_type)type);
++	  something_reloaded = true;
++	}
++
++      gcc_assert (something_reloaded);
++      return true;
++    }
++
++  return false;
++}
++
+ /* Recognizes RTL expressions that are valid memory addresses for an
+    instruction.  The MODE argument is the machine mode for the MEM
+    expression that wants to use this address.
+@@ -27177,8 +27230,8 @@
+       arg_adjust = 0;
+       if (optimize
+ 	  || target == 0
+-	  || GET_MODE (target) != tmode
+-	  || !insn_p->operand[0].predicate (target, tmode))
++	  || !register_operand (target, tmode)
++	  || GET_MODE (target) != tmode)
+ 	target = gen_reg_rtx (tmode);
+     }
+ 
+@@ -31377,9 +31430,9 @@
+ 	  tmp = gen_reg_rtx (GET_MODE_INNER (mode));
+ 	  ix86_expand_vector_extract (true, tmp, target, 1 - elt);
+ 	  if (elt == 0)
++	    tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
++	  else
+ 	    tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
+-	  else
+-	    tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
+ 	  emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
+ 	  return;
+ 	}
+@@ -31393,9 +31446,9 @@
+       tmp = gen_reg_rtx (GET_MODE_INNER (mode));
+       ix86_expand_vector_extract (false, tmp, target, 1 - elt);
+       if (elt == 0)
++	tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
++      else
+ 	tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
+-      else
+-	tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
+       emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
+       return;
+ 
+@@ -32823,7 +32876,8 @@
+         return ix86_cost->cond_not_taken_branch_cost;
+ 
+       case vec_perm:
+-        return 1;
++      case vec_promote_demote:
++        return ix86_cost->vec_stmt_cost;
+ 
+       default:
+         gcc_unreachable ();
+Index: gcc/config/sol2.h
+===================================================================
+--- a/src/gcc/config/sol2.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/sol2.h	(.../branches/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ /* Operating system specific defines to be used when targeting GCC for any
+    Solaris 2 system.
+-   Copyright 2002, 2003, 2004, 2007, 2008, 2009, 2010, 2011
++   Copyright 2002, 2003, 2004, 2007, 2008, 2009, 2010, 2011, 2012
+    Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+@@ -163,12 +163,12 @@
+    %{YP,*} \
+    %{R*} \
+    %{compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
+-             %{!p:%{!pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib:%R/usr/lib}}} \
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib:%R/lib} \
++             %{!p:%{!pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib:%R/usr/lib:%R/lib}}} \
+              -R %R/usr/ucblib} \
+    %{!compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
+-             %{!p:%{!pg:-Y P,%R/usr/ccs/lib:%R/usr/lib}}}}"
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib:%R/lib} \
++             %{!p:%{!pg:-Y P,%R/usr/ccs/lib:%R/usr/lib:%R/lib}}}}"
+ 
+ #undef LINK_ARCH32_SPEC
+ #define LINK_ARCH32_SPEC LINK_ARCH32_SPEC_BASE
+Index: gcc/config/sh/linux-unwind.h
+===================================================================
+--- a/src/gcc/config/sh/linux-unwind.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/sh/linux-unwind.h	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,6 @@
+ /* DWARF2 EH unwinding support for SH Linux.
+-   Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2006, 2007, 2009, 2012 Free Software Foundation,
++   Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -80,9 +81,9 @@
+ 	   && (*(unsigned long *) (pc+11)  == 0x6ff0fff0))
+     {
+       struct rt_sigframe {
+-	struct siginfo *pinfo;
++	siginfo_t *pinfo;
+ 	void *puc;
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+@@ -179,7 +180,7 @@
+ 		&& (*(unsigned short *) (pc+14)  == 0x00ad))))
+     {
+       struct rt_sigframe {
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+Index: gcc/config/sh/sh.c
+===================================================================
+--- a/src/gcc/config/sh/sh.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/sh/sh.c	(.../branches/gcc-4_6-branch)
+@@ -763,11 +763,6 @@
+   SUBTARGET_OVERRIDE_OPTIONS;
+   if (optimize > 1 && !optimize_size)
+     target_flags |= MASK_SAVE_ALL_TARGET_REGS;
+-  if (flag_finite_math_only == 2)
+-    flag_finite_math_only
+-      = !flag_signaling_nans && TARGET_SH2E && ! TARGET_IEEE;
+-  if (TARGET_SH2E && !flag_finite_math_only)
+-    target_flags |= MASK_IEEE;
+   sh_cpu = PROCESSOR_SH1;
+   assembler_dialect = 0;
+   if (TARGET_SH2)
+@@ -911,8 +906,6 @@
+     if (! VALID_REGISTER_P (ADDREGNAMES_REGNO (regno)))
+       sh_additional_register_names[regno][0] = '\0';
+ 
+-  flag_omit_frame_pointer = (PREFERRED_DEBUGGING_TYPE == DWARF2_DEBUG);
+-
+   if ((flag_pic && ! TARGET_PREFERGOT)
+       || (TARGET_SHMEDIA && !TARGET_PT_FIXED))
+     flag_no_function_cse = 1;
+@@ -944,22 +937,17 @@
+ 	flag_schedule_insns = 0;
+     }
+ 
+-    if ((target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) == 0)
+-       target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
+-
+   /* Unwind info is not correct around the CFG unless either a frame 
+      pointer is present or M_A_O_A is set.  Fixing this requires rewriting 
+      unwind info generation to be aware of the CFG and propagating states 
+      around edges.  */
+   if ((flag_unwind_tables || flag_asynchronous_unwind_tables
+        || flag_exceptions || flag_non_call_exceptions)   
+-      && flag_omit_frame_pointer
+-      && !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS))
++      && flag_omit_frame_pointer && !TARGET_ACCUMULATE_OUTGOING_ARGS)
+     {
+-      if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS)
+ 	warning (0, "unwind tables currently require either a frame pointer "
+ 		 "or -maccumulate-outgoing-args for correctness");
+-      target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
++	TARGET_ACCUMULATE_OUTGOING_ARGS = 1;
+     }
+ 
+   /* Unwinding with -freorder-blocks-and-partition does not work on this
+@@ -1014,11 +1002,16 @@
+ 	align_functions = min_align;
+     }
+ 
++  /* If the -mieee option was not explicitly set by the user, turn it on
++     unless -ffinite-math-only was specified.  See also PR 33135.  */
++  if (! global_options_set.x_TARGET_IEEE)
++    TARGET_IEEE = ! flag_finite_math_only;
++
+   if (sh_fixed_range_str)
+     sh_fix_range (sh_fixed_range_str);
+ 
+   /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0)
++  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ }
+ 
+Index: gcc/config/sh/sh.opt
+===================================================================
+--- a/src/gcc/config/sh/sh.opt	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/sh/sh.opt	(.../branches/gcc-4_6-branch)
+@@ -202,7 +202,7 @@
+ Generate FPU-less SHcompact code
+ 
+ maccumulate-outgoing-args
+-Target Report Mask(ACCUMULATE_OUTGOING_ARGS)
++Target Report Var(TARGET_ACCUMULATE_OUTGOING_ARGS) Init(1)
+ Reserve space for outgoing arguments in the function prologue
+ 
+ madjust-unroll
+@@ -270,8 +270,8 @@
+ Follow Renesas (formerly Hitachi) / SuperH calling conventions
+ 
+ mieee
+-Target Report Mask(IEEE)
+-Increase the IEEE compliance for floating-point code
++Target Var(TARGET_IEEE)
++Increase the IEEE compliance for floating-point comparisons
+ 
+ mindexed-addressing
+ Target Report Mask(ALLOW_INDEXED_ADDRESS) Condition(SUPPORT_ANY_SH5_32MEDIA)
+Index: gcc/config/avr/avr-stdint.h
+===================================================================
+--- a/src/gcc/config/avr/avr-stdint.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/avr/avr-stdint.h	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,66 @@
++/* Definitions for <stdint.h> types on systems using newlib.
++   Copyright (C) 2012 Free Software Foundation, Inc.
++
++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/>.  */
++
++/*
++   The intention of this file is to supply definitions that work with
++   avr-gcc's -mint8 that sets int to an 8-bit type.
++
++   This file is intended to yield the same results as newlib-stdint.h,
++   but there are some differences to newlib-stdint.h:
++
++   - AVR is an 8-bit architecture that cannot access 16-bit values
++     atomically, this SIG_ATOMIC_TYPE is "char".
++
++   - For the same reason, [u]int_fast8_t is defined as 8-bit type.
++
++*/
++   
++#define SIG_ATOMIC_TYPE "char"
++
++#define INT8_TYPE "signed char"
++#define INT16_TYPE (INT_TYPE_SIZE == 16 ? "short int" : "long int")
++#define INT32_TYPE (INT_TYPE_SIZE == 16 ? "long int" : "long long int")
++#define INT64_TYPE (INT_TYPE_SIZE == 16 ? "long long int" : 0)
++#define UINT8_TYPE "unsigned char"
++#define UINT16_TYPE (INT_TYPE_SIZE == 16 ? "short unsigned int" : "long unsigned int")
++#define UINT32_TYPE (INT_TYPE_SIZE == 16 ? "long unsigned int" : "long long unsigned int")
++#define UINT64_TYPE (INT_TYPE_SIZE == 16 ? "long long unsigned int" : 0)
++
++#define INT_LEAST8_TYPE INT8_TYPE
++#define INT_LEAST16_TYPE INT16_TYPE
++#define INT_LEAST32_TYPE INT32_TYPE
++#define INT_LEAST64_TYPE INT64_TYPE
++#define UINT_LEAST8_TYPE UINT8_TYPE
++#define UINT_LEAST16_TYPE UINT16_TYPE
++#define UINT_LEAST32_TYPE UINT32_TYPE
++#define UINT_LEAST64_TYPE UINT64_TYPE
++
++#define INT_FAST8_TYPE INT8_TYPE
++#define INT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "int" : INT16_TYPE)
++#define INT_FAST32_TYPE INT32_TYPE
++#define INT_FAST64_TYPE INT64_TYPE
++#define UINT_FAST8_TYPE UINT8_TYPE
++#define UINT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "unsigned int" : UINT16_TYPE)
++#define UINT_FAST32_TYPE UINT32_TYPE
++#define UINT_FAST64_TYPE UINT64_TYPE
++
++#define INTPTR_TYPE PTRDIFF_TYPE
++#ifndef UINTPTR_TYPE
++#define UINTPTR_TYPE SIZE_TYPE
++#endif
+Index: gcc/config/avr/libgcc.S
+===================================================================
+--- a/src/gcc/config/avr/libgcc.S	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/avr/libgcc.S	(.../branches/gcc-4_6-branch)
+@@ -582,16 +582,7 @@
+ 	push r17
+ 	push r28
+ 	push r29
+-#if defined (__AVR_HAVE_8BIT_SP__)
+-;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
+-;;        so this lines are dead code.  To make it work, devices without
+-;;        SP_H must get their own multilib(s), see PR51345.
+ 	in	r28,__SP_L__
+-	sub	r28,r26
+-	clr	r29
+-	out	__SP_L__,r28
+-#else
+-	in	r28,__SP_L__
+ 	in	r29,__SP_H__
+ 	sub	r28,r26
+ 	sbc	r29,r27
+@@ -600,7 +591,6 @@
+ 	out	__SP_H__,r29
+ 	out	__SREG__,__tmp_reg__
+ 	out	__SP_L__,r28
+-#endif
+ #if defined (__AVR_HAVE_EIJMP_EICALL__)
+ 	eijmp
+ #else
+@@ -635,15 +625,6 @@
+ 	ldd	r16,Y+4
+ 	ldd	r17,Y+3
+ 	ldd	r26,Y+2
+-#if defined (__AVR_HAVE_8BIT_SP__)
+-;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
+-;;        so this lines are dead code.  To make it work, devices without
+-;;        SP_H must get their own multilib(s).
+-	ldd	r29,Y+1
+-	add	r28,r30
+-	out	__SP_L__,r28
+-	mov	r28, r26
+-#else
+ 	ldd	r27,Y+1
+ 	add	r28,r30
+ 	adc	r29,__zero_reg__
+@@ -654,7 +635,6 @@
+ 	out	__SP_L__,r28
+ 	mov_l	r28, r26
+ 	mov_h	r29, r27
+-#endif
+ 	ret
+ .endfunc
+ #endif /* defined (L_epilogue) */
+Index: gcc/config/avr/avr.md
+===================================================================
+--- a/src/gcc/config/avr/avr.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/avr/avr.md	(.../branches/gcc-4_6-branch)
+@@ -299,7 +299,7 @@
+   [(set (match_operand:HI 0 "stack_register_operand" "=q")
+         (unspec_volatile:HI [(match_operand:HI 1 "register_operand"  "r")] 
+ 			    UNSPECV_WRITE_SP_IRQ_OFF))]
+-  "!AVR_HAVE_8BIT_SP"
++  ""
+   "out __SP_H__, %B1
+ 	out __SP_L__, %A1"
+   [(set_attr "length" "2")
+@@ -309,7 +309,7 @@
+   [(set (match_operand:HI 0 "stack_register_operand" "=q")
+         (unspec_volatile:HI [(match_operand:HI 1 "register_operand"  "r")] 
+ 			    UNSPECV_WRITE_SP_IRQ_ON))]
+-  "!AVR_HAVE_8BIT_SP"
++  ""
+   "cli
+         out __SP_H__, %B1
+ 	sei
+Index: gcc/config/avr/avr-devices.c
+===================================================================
+--- a/src/gcc/config/avr/avr-devices.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/avr/avr-devices.c	(.../branches/gcc-4_6-branch)
+@@ -211,7 +211,7 @@
+   { "atmega128rfa1",        ARCH_AVR51, "__AVR_ATmega128RFA1__",    0, 0x0200, "m128rfa1" },
+   { "at90can128",           ARCH_AVR51, "__AVR_AT90CAN128__",       0, 0x0100, "can128" },
+   { "at90usb1286",          ARCH_AVR51, "__AVR_AT90USB1286__",      0, 0x0100, "usb1286" },
+-  { "at90usb1287",          ARCH_AVR51, "__AVR_AT90USB1287__",      0, 0x0100, "usb1286" },
++  { "at90usb1287",          ARCH_AVR51, "__AVR_AT90USB1287__",      0, 0x0100, "usb1287" },
+     /* 3-Byte PC.  */
+   { "avr6",                 ARCH_AVR6, NULL,                        0, 0x0200, "m2561" },
+   { "atmega2560",           ARCH_AVR6, "__AVR_ATmega2560__",        0, 0x0200, "m2560" },
+Index: gcc/config/avr/avr.c
+===================================================================
+--- a/src/gcc/config/avr/avr.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/avr/avr.c	(.../branches/gcc-4_6-branch)
+@@ -94,6 +94,7 @@
+ static unsigned int avr_case_values_threshold (void);
+ static bool avr_frame_pointer_required_p (void);
+ static bool avr_can_eliminate (const int, const int);
++static bool avr_allocate_stack_slots_for_args (void);
+ static bool avr_class_likely_spilled_p (reg_class_t c);
+ static rtx avr_function_arg (CUMULATIVE_ARGS *, enum machine_mode,
+ 			     const_tree, bool);
+@@ -218,6 +219,9 @@
+ #undef TARGET_CAN_ELIMINATE
+ #define TARGET_CAN_ELIMINATE avr_can_eliminate
+ 
++#undef TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS
++#define TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS avr_allocate_stack_slots_for_args
++
+ #undef TARGET_CLASS_LIKELY_SPILLED_P
+ #define TARGET_CLASS_LIKELY_SPILLED_P avr_class_likely_spilled_p
+ 
+@@ -446,6 +450,16 @@
+   return count;
+ }
+ 
++
++/* Implement `TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS' */
++
++static bool
++avr_allocate_stack_slots_for_args (void)
++{
++  return !cfun->machine->is_naked;
++}
++
++
+ /* Return true if register FROM can be eliminated via register TO.  */
+ 
+ bool
+@@ -1879,12 +1893,9 @@
+ 	    }
+ 	  else if (test_hard_reg_class (STACK_REG, src))
+ 	    {
+-              *l = 2;
+-              return AVR_HAVE_8BIT_SP
+-                ? (AS2 (in,%A0,__SP_L__) CR_TAB
+-                   AS1 (clr,%B0))
+-                : (AS2 (in,%A0,__SP_L__) CR_TAB
+-                   AS2 (in,%B0,__SP_H__));
++	      *l = 2;	
++	      return (AS2 (in,%A0,__SP_L__) CR_TAB
++		      AS2 (in,%B0,__SP_H__));
+ 	    }
+ 
+ 	  if (AVR_HAVE_MOVW)
+@@ -5177,10 +5188,9 @@
+ 
+   default_file_start ();
+ 
+-  fputs ("__SREG__ = 0x3f\n", asm_out_file);
+-  if (!AVR_HAVE_8BIT_SP)
+-    fputs ("__SP_H__ = 0x3e\n", asm_out_file);
+-  fputs ("__SP_L__ = 0x3d\n", asm_out_file);
++  fputs ("__SREG__ = 0x3f\n"
++	 "__SP_H__ = 0x3e\n"
++	 "__SP_L__ = 0x3d\n", asm_out_file);
+   
+   fputs ("__tmp_reg__ = 0\n" 
+          "__zero_reg__ = 1\n", asm_out_file);
+Index: gcc/config/xtensa/linux-unwind.h
+===================================================================
+--- a/src/gcc/config/xtensa/linux-unwind.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/xtensa/linux-unwind.h	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for Xtensa.
+-   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2008, 2009, 2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -62,7 +62,7 @@
+   struct sigcontext *sc;
+ 
+   struct rt_sigframe {
+-    struct siginfo info;
++    siginfo_t info;
+     struct ucontext uc;
+   } *rt_;
+ 
+Index: gcc/config/host-linux.c
+===================================================================
+--- a/src/gcc/config/host-linux.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/host-linux.c	(.../branches/gcc-4_6-branch)
+@@ -84,6 +84,8 @@
+ # define TRY_EMPTY_VM_SPACE	0x60000000
+ #elif defined(__mc68000__)
+ # define TRY_EMPTY_VM_SPACE	0x40000000
++#elif defined(__ARM_EABI__)
++# define TRY_EMPTY_VM_SPACE     0x60000000
+ #else
+ # define TRY_EMPTY_VM_SPACE	0
+ #endif
+Index: gcc/config/mn10300/mn10300.c
+===================================================================
+--- a/src/gcc/config/mn10300/mn10300.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/mn10300/mn10300.c	(.../branches/gcc-4_6-branch)
+@@ -2505,12 +2505,15 @@
+    may access it using GOTOFF instead of GOT.  */
+ 
+ static void
+-mn10300_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
++mn10300_encode_section_info (tree decl, rtx rtl, int first)
+ {
+   rtx symbol;
+ 
++  default_encode_section_info (decl, rtl, first);
++
+   if (! MEM_P (rtl))
+     return;
++
+   symbol = XEXP (rtl, 0);
+   if (GET_CODE (symbol) != SYMBOL_REF)
+     return;
+Index: gcc/config/ia64/linux-unwind.h
+===================================================================
+--- a/src/gcc/config/ia64/linux-unwind.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/ia64/linux-unwind.h	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for IA64 Linux.
+-   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
+ 
+    This file is part of GCC.
+ 
+@@ -47,7 +47,7 @@
+       struct sigframe {
+ 	char scratch[16];
+ 	unsigned long sig_number;
+-	struct siginfo *info;
++	siginfo_t *info;
+ 	struct sigcontext *sc;
+       } *frame_ = (struct sigframe *)context->psp;
+       struct sigcontext *sc = frame_->sc;
+@@ -137,7 +137,7 @@
+       struct sigframe {
+ 	char scratch[16];
+ 	unsigned long sig_number;
+-	struct siginfo *info;
++	siginfo_t *info;
+ 	struct sigcontext *sc;
+       } *frame = (struct sigframe *)context->psp;
+       struct sigcontext *sc = frame->sc;
+Index: gcc/config/rs6000/vector.md
+===================================================================
+--- a/src/gcc/config/rs6000/vector.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/rs6000/vector.md	(.../branches/gcc-4_6-branch)
+@@ -448,6 +448,94 @@
+   "VECTOR_UNIT_ALTIVEC_P (<MODE>mode)"
+   "")
+ 
++(define_insn_and_split "*vector_uneq<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++	(uneq:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++		    (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++	(gt:VEC_F (match_dup 1)
++		  (match_dup 2)))
++   (set (match_dup 4)
++	(gt:VEC_F (match_dup 2)
++		  (match_dup 1)))
++   (set (match_dup 0)
++	(not:VEC_F (ior:VEC_F (match_dup 3)
++			      (match_dup 4))))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_ltgt<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++	(ltgt:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++		    (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++	(gt:VEC_F (match_dup 1)
++		  (match_dup 2)))
++   (set (match_dup 4)
++	(gt:VEC_F (match_dup 2)
++		  (match_dup 1)))
++   (set (match_dup 0)
++	(ior:VEC_F (match_dup 3)
++		   (match_dup 4)))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_ordered<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++	(ordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++		       (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++	(ge:VEC_F (match_dup 1)
++		  (match_dup 2)))
++   (set (match_dup 4)
++	(ge:VEC_F (match_dup 2)
++		  (match_dup 1)))
++   (set (match_dup 0)
++	(ior:VEC_F (match_dup 3)
++		   (match_dup 4)))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_unordered<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++	(unordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++			 (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++	(ge:VEC_F (match_dup 1)
++		  (match_dup 2)))
++   (set (match_dup 4)
++	(ge:VEC_F (match_dup 2)
++		  (match_dup 1)))
++   (set (match_dup 0)
++	(not:VEC_F (ior:VEC_F (match_dup 3)
++			      (match_dup 4))))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
+ ;; Note the arguments for __builtin_altivec_vsel are op2, op1, mask
+ ;; which is in the reverse order that we want
+ (define_expand "vector_select_<mode>"
+Index: gcc/config/rs6000/rs6000.c
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/rs6000/rs6000.c	(.../branches/gcc-4_6-branch)
+@@ -3695,12 +3695,23 @@
+       case vec_to_scalar:
+       case scalar_to_vec:
+       case cond_branch_not_taken:
+-      case vec_perm:
+         return 1;
+ 
+       case cond_branch_taken:
+         return 3;
+ 
++      case vec_perm:
++	if (TARGET_VSX)
++	  return 4;
++	else
++	  return 1;
++
++      case vec_promote_demote:
++	if (TARGET_VSX)
++	  return 5;
++	else
++	  return 1;
++
+       case unaligned_load:
+         if (TARGET_VSX && TARGET_ALLOW_MOVMISALIGN)
+           {
+@@ -15811,7 +15822,6 @@
+ print_operand (FILE *file, rtx x, int code)
+ {
+   int i;
+-  HOST_WIDE_INT val;
+   unsigned HOST_WIDE_INT uval;
+ 
+   switch (code)
+@@ -16252,34 +16262,17 @@
+ 
+     case 'W':
+       /* MB value for a PowerPC64 rldic operand.  */
+-      val = (GET_CODE (x) == CONST_INT
+-	     ? INTVAL (x) : CONST_DOUBLE_HIGH (x));
++      i = clz_hwi (GET_CODE (x) == CONST_INT
++		   ? INTVAL (x) : CONST_DOUBLE_HIGH (x));
+ 
+-      if (val < 0)
+-	i = -1;
+-      else
+-	for (i = 0; i < HOST_BITS_PER_WIDE_INT; i++)
+-	  if ((val <<= 1) < 0)
+-	    break;
+-
+ #if HOST_BITS_PER_WIDE_INT == 32
+-      if (GET_CODE (x) == CONST_INT && i >= 0)
++      if (GET_CODE (x) == CONST_INT && i > 0)
+ 	i += 32;  /* zero-extend high-part was all 0's */
+       else if (GET_CODE (x) == CONST_DOUBLE && i == 32)
+-	{
+-	  val = CONST_DOUBLE_LOW (x);
+-
+-	  gcc_assert (val);
+-	  if (val < 0)
+-	    --i;
+-	  else
+-	    for ( ; i < 64; i++)
+-	      if ((val <<= 1) < 0)
+-		break;
+-	}
++	i = clz_hwi (CONST_DOUBLE_LOW (x)) + 32;
+ #endif
+ 
+-      fprintf (file, "%d", i + 1);
++      fprintf (file, "%d", i);
+       return;
+ 
+     case 'x':
+@@ -17229,6 +17222,10 @@
+     case EQ:
+     case GT:
+     case GTU:
++    case ORDERED:
++    case UNORDERED:
++    case UNEQ:
++    case LTGT:
+       mask = gen_reg_rtx (mode);
+       emit_insn (gen_rtx_SET (VOIDmode,
+ 			      mask,
+Index: gcc/config/rs6000/vsx.md
+===================================================================
+--- a/src/gcc/config/rs6000/vsx.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/rs6000/vsx.md	(.../branches/gcc-4_6-branch)
+@@ -1006,9 +1006,9 @@
+   "VECTOR_MEM_VSX_P (<MODE>mode)"
+ {
+   if (INTVAL (operands[3]) == 0)
+-    return \"xxpermdi %x0,%x1,%x2,1\";
++    return \"xxpermdi %x0,%x2,%x1,1\";
+   else if (INTVAL (operands[3]) == 1)
+-    return \"xxpermdi %x0,%x2,%x1,0\";
++    return \"xxpermdi %x0,%x1,%x2,0\";
+   else
+     gcc_unreachable ();
+ }
+Index: gcc/config/rs6000/rs6000.h
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/rs6000/rs6000.h	(.../branches/gcc-4_6-branch)
+@@ -469,10 +469,11 @@
+ /* ISA 2.01 allowed FCFID to be done in 32-bit, previously it was 64-bit only.
+    Enable 32-bit fcfid's on any of the switches for newer ISA machines or
+    XILINX.  */
+-#define TARGET_FCFID	(TARGET_POWERPC64 \
+-			 || TARGET_POPCNTB	/* ISA 2.02 */ \
+-			 || TARGET_CMPB		/* ISA 2.05 */ \
+-			 || TARGET_POPCNTD	/* ISA 2.06 */ \
++#define TARGET_FCFID	(TARGET_POWERPC64				\
++			 || TARGET_PPC_GPOPT	/* 970/power4 */	\
++			 || TARGET_POPCNTB	/* ISA 2.02 */		\
++			 || TARGET_CMPB		/* ISA 2.05 */		\
++			 || TARGET_POPCNTD	/* ISA 2.06 */		\
+ 			 || TARGET_XILINX_FPU)
+ 
+ #define TARGET_FCTIDZ	TARGET_FCFID
+Index: gcc/config/rs6000/altivec.md
+===================================================================
+--- a/src/gcc/config/rs6000/altivec.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/rs6000/altivec.md	(.../branches/gcc-4_6-branch)
+@@ -2394,8 +2394,8 @@
+ 
+ (define_insn "altivec_stvlx"
+   [(parallel
+-    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
+-	  (match_operand:V4SI 1 "register_operand" "v"))
++    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
++	  (match_operand:V16QI 1 "register_operand" "v"))
+      (unspec [(const_int 0)] UNSPEC_STVLX)])]
+   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
+   "stvlx %1,%y0"
+@@ -2403,8 +2403,8 @@
+ 
+ (define_insn "altivec_stvlxl"
+   [(parallel
+-    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
+-	  (match_operand:V4SI 1 "register_operand" "v"))
++    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
++	  (match_operand:V16QI 1 "register_operand" "v"))
+      (unspec [(const_int 0)] UNSPEC_STVLXL)])]
+   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
+   "stvlxl %1,%y0"
+@@ -2412,8 +2412,8 @@
+ 
+ (define_insn "altivec_stvrx"
+   [(parallel
+-    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
+-	  (match_operand:V4SI 1 "register_operand" "v"))
++    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
++	  (match_operand:V16QI 1 "register_operand" "v"))
+      (unspec [(const_int 0)] UNSPEC_STVRX)])]
+   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
+   "stvrx %1,%y0"
+@@ -2421,8 +2421,8 @@
+ 
+ (define_insn "altivec_stvrxl"
+   [(parallel
+-    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
+-	  (match_operand:V4SI 1 "register_operand" "v"))
++    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
++	  (match_operand:V16QI 1 "register_operand" "v"))
+      (unspec [(const_int 0)] UNSPEC_STVRXL)])]
+   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
+   "stvrxl %1,%y0"
+Index: gcc/config/rs6000/rs6000.md
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/rs6000/rs6000.md	(.../branches/gcc-4_6-branch)
+@@ -2524,8 +2524,19 @@
+   if (GET_CODE (addr1) == PLUS)
+     {
+       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
+-      addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
++      if (TARGET_AVOID_XFORM)
++	{
++	  emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
++	  addr2 = op2;
++	}
++      else
++	addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
+     }
++  else if (TARGET_AVOID_XFORM)
++    {
++      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
++      addr2 = op2;
++    }
+   else
+     {
+       emit_move_insn (op2, GEN_INT (4));
+@@ -2574,8 +2585,19 @@
+   if (GET_CODE (addr1) == PLUS)
+     {
+       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
+-      addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
++      if (TARGET_AVOID_XFORM)
++	{
++	  emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
++	  addr2 = op2;
++	}
++      else
++	addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
+     }
++  else if (TARGET_AVOID_XFORM)
++    {
++      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
++      addr2 = op2;
++    }
+   else
+     {
+       emit_move_insn (op2, GEN_INT (4));
+@@ -2655,8 +2677,19 @@
+   if (GET_CODE (addr1) == PLUS)
+     {
+       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
+-      addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
++      if (TARGET_AVOID_XFORM)
++	{
++	  emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
++	  addr2 = op2;
++	}
++      else
++	addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
+     }
++  else if (TARGET_AVOID_XFORM)
++    {
++      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
++      addr2 = op2;
++    }
+   else
+     {
+       emit_move_insn (op2, GEN_INT (4));
+@@ -2700,8 +2733,19 @@
+   if (GET_CODE (addr1) == PLUS)
+     {
+       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
+-      addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
++      if (TARGET_AVOID_XFORM)
++	{
++	  emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
++	  addr2 = op2;
++	}
++      else
++	addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
+     }
++  else if (TARGET_AVOID_XFORM)
++    {
++      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
++      addr2 = op2;
++    }
+   else
+     {
+       emit_move_insn (op2, GEN_INT (4));
+
+Property changes on: gcc/config/rs6000/rs6000.md
+___________________________________________________________________
+Added: svn:mergeinfo
+   Merged /trunk/gcc/config/rs6000/rs6000.md:r187119
+Index: gcc/config/arm/arm.c
+===================================================================
+--- a/src/gcc/config/arm/arm.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/arm/arm.c	(.../branches/gcc-4_6-branch)
+@@ -243,6 +243,7 @@
+ static bool fa726te_sched_adjust_cost (rtx, rtx, rtx, int *);
+ static enum machine_mode arm_preferred_simd_mode (enum machine_mode);
+ static bool arm_class_likely_spilled_p (reg_class_t);
++static HOST_WIDE_INT arm_vector_alignment (const_tree type);
+ static bool arm_vector_alignment_reachable (const_tree type, bool is_packed);
+ static bool arm_builtin_support_vector_misalignment (enum machine_mode mode,
+ 						     const_tree type,
+@@ -579,6 +580,9 @@
+ #undef TARGET_CLASS_LIKELY_SPILLED_P
+ #define TARGET_CLASS_LIKELY_SPILLED_P arm_class_likely_spilled_p
+ 
++#undef TARGET_VECTOR_ALIGNMENT
++#define TARGET_VECTOR_ALIGNMENT arm_vector_alignment
++
+ #undef TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
+ #define TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE \
+   arm_vector_alignment_reachable
+@@ -2005,7 +2009,8 @@
+ 			   global_options_set.x_param_values);
+ 
+   /* ARM EABI defaults to strict volatile bitfields.  */
+-  if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0)
++  if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0
++      && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ 
+   /* Enable sw prefetching at -O3 for CPUS that have prefetch, and we have deemed
+@@ -4692,6 +4697,18 @@
+   return gen_rtx_REG (mode, pcum->nregs);
+ }
+ 
++/* The AAPCS sets the maximum alignment of a vector to 64 bits.  */
++static HOST_WIDE_INT
++arm_vector_alignment (const_tree type)
++{
++  HOST_WIDE_INT align = tree_low_cst (TYPE_SIZE (type), 0);
++
++  if (TARGET_AAPCS_BASED)
++    align = MIN (align, 64);
++
++  return align;
++}
++
+ static unsigned int
+ arm_function_arg_boundary (enum machine_mode mode, const_tree type)
+ {
+@@ -20427,7 +20444,7 @@
+   unsigned long l_mask = live_regs_mask & (for_prologue ? 0x40ff : 0xff);
+   /* Then count how many other high registers will need to be pushed.  */
+   unsigned long high_regs_pushed = bit_count (live_regs_mask & 0x0f00);
+-  int n_free, reg_base;
++  int n_free, reg_base, size;
+ 
+   if (!for_prologue && frame_pointer_needed)
+     amount = offsets->locals_base - offsets->saved_regs;
+@@ -20466,7 +20483,8 @@
+   n_free = 0;
+   if (!for_prologue)
+     {
+-      reg_base = arm_size_return_regs () / UNITS_PER_WORD;
++      size = arm_size_return_regs ();
++      reg_base = ARM_NUM_INTS (size);
+       live_regs_mask >>= reg_base;
+     }
+ 
+@@ -20520,8 +20538,7 @@
+   if (extra_pop > 0)
+     {
+       unsigned long extra_mask = (1 << extra_pop) - 1;
+-      live_regs_mask |= extra_mask << ((size + UNITS_PER_WORD - 1) 
+-				       / UNITS_PER_WORD);
++      live_regs_mask |= extra_mask << ARM_NUM_INTS (size);
+     }
+ 
+   /* The prolog may have pushed some high registers to use as
+@@ -23422,8 +23439,11 @@
+ 	}
+     }
+ 
++  /* Note: label is before barrier so that in cmp failure case we still get
++     a barrier to stop subsequent loads floating upwards past the ldrex
++     PR target/48126.  */
++  arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
+   arm_process_output_memory_barrier (emit, NULL);
+-  arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
+ }
+ 
+ static rtx
+Index: gcc/config/arm/arm.h
+===================================================================
+--- a/src/gcc/config/arm/arm.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/arm/arm.h	(.../branches/gcc-4_6-branch)
+@@ -294,7 +294,8 @@
+ #define TARGET_HAVE_DMB		(arm_arch7)
+ 
+ /* Nonzero if this chip implements a memory barrier via CP15.  */
+-#define TARGET_HAVE_DMB_MCR	(arm_arch6k && ! TARGET_HAVE_DMB)
++#define TARGET_HAVE_DMB_MCR	(arm_arch6 && ! TARGET_HAVE_DMB \
++				 && ! TARGET_THUMB1)
+ 
+ /* Nonzero if this chip implements a memory barrier instruction.  */
+ #define TARGET_HAVE_MEMORY_BARRIER (TARGET_HAVE_DMB || TARGET_HAVE_DMB_MCR)
+Index: gcc/config/pa/predicates.md
+===================================================================
+--- a/src/gcc/config/pa/predicates.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/pa/predicates.md	(.../branches/gcc-4_6-branch)
+@@ -421,9 +421,9 @@
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "cint_ior_operand")))
+ 
+-;; True iff OP is a CONST_INT of the forms 0...0xxxx or
+-;; 0...01...1xxxx. Such values can be the left hand side x in (x <<
+-;; r), using the zvdepi instruction.
++;; True iff OP is a CONST_INT of the forms 0...0xxxx, 0...01...1xxxx,
++;; or 1...1xxxx. Such values can be the left hand side x in (x << r),
++;; using the zvdepi instruction.
+ 
+ (define_predicate "lhs_lshift_cint_operand"
+   (match_code "const_int")
+Index: gcc/config/pa/linux-unwind.h
+===================================================================
+--- a/src/gcc/config/pa/linux-unwind.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/pa/linux-unwind.h	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for PA Linux.
+-   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -63,7 +63,7 @@
+   int i;
+   struct sigcontext *sc;
+   struct rt_sigframe {
+-    struct siginfo info;
++    siginfo_t info;
+     struct ucontext uc;
+   } *frame;
+ 
+Index: gcc/config/pa/pa.md
+===================================================================
+--- a/src/gcc/config/pa/pa.md	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/pa/pa.md	(.../branches/gcc-4_6-branch)
+@@ -2879,15 +2879,17 @@
+   [(set_attr "type" "store")
+    (set_attr "length" "4")])
+ 
+-(define_insn ""
+-  [(set (match_operand:HI 0 "register_operand" "=r")
+-	(plus:HI (match_operand:HI 1 "register_operand" "r")
+-		 (match_operand 2 "const_int_operand" "J")))]
++(define_insn "addhi3"
++  [(set (match_operand:HI 0 "register_operand" "=r,r")
++	(plus:HI (match_operand:HI 1 "register_operand" "%r,r")
++		 (match_operand:HI 2 "arith_operand" "r,J")))]
+   ""
+-  "ldo %2(%1),%0"
+-  [(set_attr "type" "binary")
++  "@
++   {addl|add,l} %1,%2,%0
++   ldo %2(%1),%0"
++  [(set_attr "type" "binary,binary")
+    (set_attr "pa_combine_type" "addmove")
+-   (set_attr "length" "4")])
++   (set_attr "length" "4,4")])
+ 
+ (define_expand "movqi"
+   [(set (match_operand:QI 0 "general_operand" "")
+@@ -6348,7 +6350,7 @@
+   ""
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  unsigned HOST_WIDE_INT x = UINTVAL (operands[1]);
+   operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1));
+   operands[1] = GEN_INT ((x & 0xf) - 0x10);
+   return \"{zvdepi %1,%2,%0|depwi,z %1,%%sar,%2,%0}\";
+@@ -6366,7 +6368,7 @@
+   "exact_log2 (INTVAL (operands[1]) + 1) > 0"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  HOST_WIDE_INT x = INTVAL (operands[1]);
+   operands[2] = GEN_INT (exact_log2 (x + 1));
+   return \"{vdepi -1,%2,%0|depwi -1,%%sar,%2,%0}\";
+ }"
+@@ -6383,7 +6385,7 @@
+   "INTVAL (operands[1]) == -2"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  HOST_WIDE_INT x = INTVAL (operands[1]);
+   operands[2] = GEN_INT (exact_log2 ((~x) + 1));
+   return \"{vdepi 0,%2,%0|depwi 0,%%sar,%2,%0}\";
+ }"
+@@ -6447,7 +6449,7 @@
+   "TARGET_64BIT"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  unsigned HOST_WIDE_INT x = UINTVAL (operands[1]);
+   operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1));
+   operands[1] = GEN_INT ((x & 0x1f) - 0x20);
+   return \"depdi,z %1,%%sar,%2,%0\";
+@@ -6465,7 +6467,7 @@
+   "TARGET_64BIT && exact_log2 (INTVAL (operands[1]) + 1) > 0"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  HOST_WIDE_INT x = INTVAL (operands[1]);
+   operands[2] = GEN_INT (exact_log2 (x + 1));
+   return \"depdi -1,%%sar,%2,%0\";
+ }"
+@@ -6482,7 +6484,7 @@
+   "TARGET_64BIT && INTVAL (operands[1]) == -2"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  HOST_WIDE_INT x = INTVAL (operands[1]);
+   operands[2] = GEN_INT (exact_log2 ((~x) + 1));
+   return \"depdi 0,%%sar,%2,%0\";
+ }"
+@@ -6671,6 +6673,20 @@
+ 
+ ;; Unconditional and other jump instructions.
+ 
++;; Trivial return used when no epilogue is needed.
++(define_insn "return"
++  [(return)
++   (use (reg:SI 2))]
++  "pa_can_use_return_insn ()"
++  "*
++{
++  if (TARGET_PA_20)
++    return \"bve%* (%%r2)\";
++  return \"bv%* %%r0(%%r2)\";
++}"
++  [(set_attr "type" "branch")
++   (set_attr "length" "4")])
++
+ ;; This is used for most returns.
+ (define_insn "return_internal"
+   [(return)
+@@ -6719,11 +6735,8 @@
+   rtx x;
+ 
+   /* Try to use the trivial return first.  Else use the full epilogue.  */
+-  if (reload_completed
+-      && !frame_pointer_needed
+-      && !df_regs_ever_live_p (2)
+-      && (compute_frame_size (get_frame_size (), 0) ? 0 : 1))
+-    x = gen_return_internal ();
++  if (pa_can_use_return_insn ())
++    x = gen_return ();
+   else
+     {
+       hppa_expand_epilogue ();
+Index: gcc/config/pa/pa-protos.h
+===================================================================
+--- a/src/gcc/config/pa/pa-protos.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/pa/pa-protos.h	(.../branches/gcc-4_6-branch)
+@@ -136,6 +136,7 @@
+ extern int cint_ok_for_move (HOST_WIDE_INT);
+ extern void hppa_expand_prologue (void);
+ extern void hppa_expand_epilogue (void);
++extern bool pa_can_use_return_insn (void);
+ extern int ior_mask_p (unsigned HOST_WIDE_INT);
+ extern void compute_zdepdi_operands (unsigned HOST_WIDE_INT,
+ 				     unsigned *);
+Index: gcc/config/pa/pa.c
+===================================================================
+--- a/src/gcc/config/pa/pa.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/pa/pa.c	(.../branches/gcc-4_6-branch)
+@@ -185,6 +185,7 @@
+ static void pa_conditional_register_usage (void);
+ static enum machine_mode pa_c_mode_for_suffix (char);
+ static section *pa_function_section (tree, enum node_frequency, bool, bool);
++static unsigned int pa_section_type_flags (tree, const char *, int);
+ 
+ /* The following extra sections are only used for SOM.  */
+ static GTY(()) section *som_readonly_data_section;
+@@ -400,6 +401,9 @@
+ #undef TARGET_ASM_FUNCTION_SECTION
+ #define TARGET_ASM_FUNCTION_SECTION pa_function_section
+ 
++#undef TARGET_SECTION_TYPE_FLAGS
++#define TARGET_SECTION_TYPE_FLAGS pa_section_type_flags
++
+ struct gcc_target targetm = TARGET_INITIALIZER;
+ 
+ /* Parse the -mfixed-range= option string.  */
+@@ -4442,6 +4446,24 @@
+     }
+ }
+ 
++bool
++pa_can_use_return_insn (void)
++{
++  if (!reload_completed)
++    return false;
++
++  if (frame_pointer_needed)
++    return false;
++
++  if (df_regs_ever_live_p (2))
++    return false;
++
++  if (crtl->profile)
++    return false;
++
++  return compute_frame_size (get_frame_size (), 0) == 0;
++}
++
+ rtx
+ hppa_pic_save_rtx (void)
+ {
+@@ -4586,7 +4608,7 @@
+   rtx saved_rp;
+   rtx ins;
+ 
+-  /* Instruction stream at the normal return address for the export stub:
++  /* The instruction stream at the return address of a PA1.X export stub is:
+ 
+ 	0x4bc23fd1 | stub+8:   ldw -18(sr0,sp),rp
+ 	0x004010a1 | stub+12:  ldsid (sr0,rp),r1
+@@ -4594,11 +4616,17 @@
+ 	0xe0400002 | stub+20:  be,n 0(sr0,rp)
+ 
+      0xe0400002 must be specified as -532676606 so that it won't be
+-     rejected as an invalid immediate operand on 64-bit hosts.  */
++     rejected as an invalid immediate operand on 64-bit hosts.
+ 
+-  HOST_WIDE_INT insns[4] = {0x4bc23fd1, 0x004010a1, 0x00011820, -532676606};
+-  int i;
++     The instruction stream at the return address of a PA2.0 export stub is:
+ 
++	0x4bc23fd1 | stub+8:   ldw -18(sr0,sp),rp
++	0xe840d002 | stub+12:  bve,n (rp)
++  */
++
++  HOST_WIDE_INT insns[4];
++  int i, len;
++
+   if (count != 0)
+     return NULL_RTX;
+ 
+@@ -4620,11 +4648,26 @@
+   ins = copy_to_reg (gen_rtx_AND (Pmode, rp, MASK_RETURN_ADDR));
+   label = gen_label_rtx ();
+ 
++  if (TARGET_PA_20)
++    {
++      insns[0] = 0x4bc23fd1;
++      insns[1] = -398405630;
++      len = 2;
++    }
++  else
++    {
++      insns[0] = 0x4bc23fd1;
++      insns[1] = 0x004010a1;
++      insns[2] = 0x00011820;
++      insns[3] = -532676606;
++      len = 4;
++    }
++
+   /* Check the instruction stream at the normal return address for the
+      export stub.  If it is an export stub, than our return address is
+      really in -24[frameaddr].  */
+ 
+-  for (i = 0; i < 3; i++)
++  for (i = 0; i < len; i++)
+     {
+       rtx op0 = gen_rtx_MEM (SImode, plus_constant (ins, i * 4)); 
+       rtx op1 = GEN_INT (insns[i]);
+@@ -7501,7 +7544,7 @@
+     return 24;
+   else
+     {
+-      if (!TARGET_LONG_CALLS && distance < 240000)
++      if (!TARGET_LONG_CALLS && distance < MAX_PCREL17F_OFFSET)
+ 	return 8;
+ 
+       if (TARGET_LONG_ABS_CALL && !flag_pic)
+@@ -7714,7 +7757,7 @@
+   /* pc-relative branch.  */
+   if (!TARGET_LONG_CALLS
+       && ((TARGET_PA_20 && !sibcall && distance < 7600000)
+-	  || distance < 240000))
++	  || distance < MAX_PCREL17F_OFFSET))
+     length += 8;
+ 
+   /* 64-bit plabel sequence.  */
+@@ -8073,7 +8116,7 @@
+   if (TARGET_FAST_INDIRECT_CALLS
+       || (!TARGET_PORTABLE_RUNTIME
+ 	  && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000)
+-	      || distance < 240000)))
++	      || distance < MAX_PCREL17F_OFFSET)))
+     return 8;
+ 
+   if (flag_pic)
+@@ -10392,4 +10435,23 @@
+   return default_function_section (decl, freq, startup, exit);
+ }
+ 
++/* Implement TARGET_SECTION_TYPE_FLAGS.  */
++
++static unsigned int
++pa_section_type_flags (tree decl, const char *name, int reloc)
++{
++  unsigned int flags;
++
++  flags = default_section_type_flags (decl, name, reloc);
++
++  /* Function labels are placed in the constant pool.  This can
++     cause a section conflict if decls are put in ".data.rel.ro"
++     or ".data.rel.ro.local" using the __attribute__ construct.  */
++  if (strcmp (name, ".data.rel.ro") == 0
++      || strcmp (name, ".data.rel.ro.local") == 0)
++    flags |= SECTION_WRITE | SECTION_RELRO;
++
++  return flags;
++}
++
+ #include "gt-pa.h"
+Index: gcc/config/pa/pa.h
+===================================================================
+--- a/src/gcc/config/pa/pa.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/pa/pa.h	(.../branches/gcc-4_6-branch)
+@@ -1563,3 +1563,12 @@
+ #undef TARGET_HAVE_TLS
+ #define TARGET_HAVE_TLS true
+ #endif
++
++/* The maximum offset in bytes for a PA 1.X pc-relative call to the
++   head of the preceding stub table.  The selected offsets have been
++   chosen so that approximately one call stub is allocated for every
++   86.7 instructions.  A long branch stub is two instructions when
++   not generating PIC code.  For HP-UX and ELF targets, PIC stubs are
++   seven and four instructions, respectively.  */  
++#define MAX_PCREL17F_OFFSET \
++  (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000)
+Index: gcc/config/mips/linux-unwind.h
+===================================================================
+--- a/src/gcc/config/mips/linux-unwind.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/mips/linux-unwind.h	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,6 @@
+ /* DWARF2 EH unwinding support for MIPS Linux.
+-   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2012 Free Software
++   Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -75,7 +76,7 @@
+       struct rt_sigframe {
+ 	u_int32_t ass[4];  /* Argument save space for o32.  */
+ 	u_int32_t trampoline[2];
+-	struct siginfo info;
++	siginfo_t info;
+ 	_sig_ucontext_t uc;
+       } *rt_ = context->cfa;
+       sc = &rt_->uc.uc_mcontext;
+Index: gcc/config/mips/mips.c
+===================================================================
+--- a/src/gcc/config/mips/mips.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/mips/mips.c	(.../branches/gcc-4_6-branch)
+@@ -15083,7 +15083,10 @@
+     }
+ 
+   if (optimize > 0 && flag_delayed_branch)
+-    dbr_schedule (get_insns ());
++    {
++      cleanup_barriers ();
++      dbr_schedule (get_insns ());
++    }
+   mips_reorg_process_insns ();
+   if (!TARGET_MIPS16
+       && TARGET_EXPLICIT_RELOCS
+Index: gcc/config/h8300/h8300.c
+===================================================================
+--- a/src/gcc/config/h8300/h8300.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/h8300/h8300.c	(.../branches/gcc-4_6-branch)
+@@ -416,7 +416,7 @@
+     }
+ 
+   /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0)
++  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ }
+ 
+Index: gcc/config/bfin/linux-unwind.h
+===================================================================
+--- a/src/gcc/config/bfin/linux-unwind.h	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/config/bfin/linux-unwind.h	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for Blackfin.
+-   Copyright (C) 2007, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -48,10 +48,10 @@
+     {
+       struct rt_sigframe {
+ 	int sig;
+-	struct siginfo *pinfo;
++	siginfo_t *pinfo;
+ 	void *puc;
+ 	char retcode[8];
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+ 
+Index: gcc/convert.c
+===================================================================
+--- a/src/gcc/convert.c	(.../tags/gcc_4_6_3_release)
++++ b/src/gcc/convert.c	(.../branches/gcc-4_6-branch)
+@@ -44,11 +44,6 @@
+   if (TREE_TYPE (expr) == type)
+     return expr;
+ 
+-  /* Propagate overflow to the NULL pointer.  */
+-  if (integer_zerop (expr))
+-    return force_fit_type_double (type, double_int_zero, 0,
+-				  TREE_OVERFLOW (expr));
+-
+   switch (TREE_CODE (TREE_TYPE (expr)))
+     {
+     case POINTER_TYPE:
+Index: libgo/Makefile.in
+===================================================================
+--- a/src/libgo/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libgo/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -46,12 +46,10 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = .
+-DIST_COMMON = README $(am__configure_deps) $(srcdir)/../config.guess \
+-	$(srcdir)/../config.sub $(srcdir)/../depcomp \
+-	$(srcdir)/../install-sh $(srcdir)/../ltmain.sh \
+-	$(srcdir)/../missing $(srcdir)/../mkinstalldirs \
+-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/config.h.in $(top_srcdir)/configure
++DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(top_srcdir)/configure $(am__configure_deps) \
++	$(srcdir)/config.h.in $(srcdir)/../mkinstalldirs \
++	$(srcdir)/../depcomp
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -162,52 +160,6 @@
+ libgo_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ 	$(am__DEPENDENCIES_1)
+-am__libgo_la_SOURCES_DIST = runtime/go-append.c runtime/go-assert.c \
+-	runtime/go-assert-interface.c \
+-	runtime/go-byte-array-to-string.c runtime/go-breakpoint.c \
+-	runtime/go-caller.c runtime/go-can-convert-interface.c \
+-	runtime/go-cgo.c runtime/go-chan-cap.c runtime/go-chan-len.c \
+-	runtime/go-check-interface.c runtime/go-close.c \
+-	runtime/go-closed.c runtime/go-construct-map.c \
+-	runtime/go-convert-interface.c runtime/go-copy.c \
+-	runtime/go-defer.c runtime/go-deferred-recover.c \
+-	runtime/go-eface-compare.c runtime/go-eface-val-compare.c \
+-	runtime/go-getgoroot.c runtime/go-go.c runtime/go-gomaxprocs.c \
+-	runtime/go-int-array-to-string.c runtime/go-int-to-string.c \
+-	runtime/go-interface-compare.c \
+-	runtime/go-interface-eface-compare.c \
+-	runtime/go-interface-val-compare.c runtime/go-lock-os-thread.c \
+-	runtime/go-map-delete.c runtime/go-map-index.c \
+-	runtime/go-map-len.c runtime/go-map-range.c \
+-	runtime/go-nanotime.c runtime/go-new-channel.c \
+-	runtime/go-new-map.c runtime/go-new.c runtime/go-note.c \
+-	runtime/go-panic.c runtime/go-panic-defer.c runtime/go-print.c \
+-	runtime/go-rec-big.c runtime/go-rec-nb-big.c \
+-	runtime/go-rec-nb-small.c runtime/go-rec-small.c \
+-	runtime/go-recover.c runtime/go-reflect.c \
+-	runtime/go-reflect-call.c runtime/go-reflect-chan.c \
+-	runtime/go-reflect-map.c runtime/go-rune.c \
+-	runtime/go-runtime-error.c runtime/go-sched.c \
+-	runtime/go-select.c runtime/go-semacquire.c \
+-	runtime/go-send-big.c runtime/go-send-nb-big.c \
+-	runtime/go-send-nb-small.c runtime/go-send-small.c \
+-	runtime/go-signal.c runtime/go-strcmp.c \
+-	runtime/go-string-to-byte-array.c \
+-	runtime/go-string-to-int-array.c runtime/go-strplus.c \
+-	runtime/go-strslice.c runtime/go-trampoline.c \
+-	runtime/go-type-eface.c runtime/go-type-error.c \
+-	runtime/go-type-identity.c runtime/go-type-interface.c \
+-	runtime/go-type-string.c runtime/go-typedesc-equal.c \
+-	runtime/go-typestring.c runtime/go-unreflect.c \
+-	runtime/go-unsafe-new.c runtime/go-unsafe-newarray.c \
+-	runtime/go-unsafe-pointer.c runtime/go-unwind.c \
+-	runtime/mcache.c runtime/mcentral.c \
+-	runtime/mem_posix_memalign.c runtime/mem.c runtime/mfinal.c \
+-	runtime/mfixalloc.c runtime/mgc0.c runtime/mheap.c \
+-	runtime/mheapmap32.c runtime/mheapmap64.c runtime/msize.c \
+-	runtime/proc.c runtime/thread.c \
+-	runtime/rtems-task-variable-add.c chan.c iface.c malloc.c \
+-	map.c mprof.c reflect.c sigqueue.c string.c
+ @HAVE_SYS_MMAN_H_FALSE@am__objects_1 = mem_posix_memalign.lo
+ @HAVE_SYS_MMAN_H_TRUE@am__objects_1 = mem.lo
+ @LIBGO_IS_RTEMS_TRUE@am__objects_2 = rtems-task-variable-add.lo
+@@ -256,7 +208,6 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgobegin_a_SOURCES) $(libgo_la_SOURCES)
+-DIST_SOURCES = $(libgobegin_a_SOURCES) $(am__libgo_la_SOURCES_DIST)
+ MULTISRCTOP = 
+ MULTIBUILDTOP = 
+ MULTIDIRS = 
+@@ -284,47 +235,10 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir dist dist-all distcheck
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = testsuite
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+-  { test ! -d "$(distdir)" \
+-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+-         && rm -fr "$(distdir)"; }; }
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-distuninstallcheck_listfiles = find . -type f -print
+-distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ AR = @AR@
+@@ -3416,182 +3330,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	$(am__remove_distdir)
+-	test -d "$(distdir)" || mkdir "$(distdir)"
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	-test -n "$(am__skip_mode_fix)" \
+-	|| find "$(distdir)" -type d ! -perm -755 \
+-		-exec chmod u+rwx,go+rx {} \; -o \
+-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+-	|| chmod -R a+r "$(distdir)"
+-dist-gzip: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-dist-bzip2: distdir
+-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+-	$(am__remove_distdir)
+-
+-dist-lzma: distdir
+-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+-	$(am__remove_distdir)
+-
+-dist-xz: distdir
+-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+-	$(am__remove_distdir)
+-
+-dist-tarZ: distdir
+-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+-	$(am__remove_distdir)
+-
+-dist-shar: distdir
+-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+-	$(am__remove_distdir)
+-
+-dist-zip: distdir
+-	-rm -f $(distdir).zip
+-	zip -rq $(distdir).zip $(distdir)
+-	$(am__remove_distdir)
+-
+-dist dist-all: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-# This target untars the dist file and tries a VPATH configuration.  Then
+-# it guarantees that the distribution is self-contained by making another
+-# tarfile.
+-distcheck: dist
+-	case '$(DIST_ARCHIVES)' in \
+-	*.tar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+-	*.tar.bz2*) \
+-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+-	*.tar.lzma*) \
+-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+-	*.tar.xz*) \
+-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+-	*.tar.Z*) \
+-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+-	*.shar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+-	*.zip*) \
+-	  unzip $(distdir).zip ;;\
+-	esac
+-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+-	mkdir $(distdir)/_build
+-	mkdir $(distdir)/_inst
+-	chmod a-w $(distdir)
+-	test -d $(distdir)/_build || exit 0; \
+-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+-	  && am__cwd=`pwd` \
+-	  && $(am__cd) $(distdir)/_build \
+-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+-	    $(DISTCHECK_CONFIGURE_FLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+-	  && $(MAKE) $(AM_MAKEFLAGS) check \
+-	  && $(MAKE) $(AM_MAKEFLAGS) install \
+-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+-	        distuninstallcheck \
+-	  && chmod -R a-w "$$dc_install_base" \
+-	  && ({ \
+-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+-	  && rm -rf "$$dc_destdir" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+-	  && rm -rf $(DIST_ARCHIVES) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+-	  && cd "$$am__cwd" \
+-	  || exit 1
+-	$(am__remove_distdir)
+-	@(echo "$(distdir) archives ready for distribution: "; \
+-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+-distuninstallcheck:
+-	@$(am__cd) '$(distuninstallcheck_dir)' \
+-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+-	   || { echo "ERROR: files left after uninstall:" ; \
+-	        if test -n "$(DESTDIR)"; then \
+-	          echo "  (check DESTDIR support)"; \
+-	        fi ; \
+-	        $(distuninstallcheck_listfiles) ; \
+-	        exit 1; } >&2
+-distcleancheck: distclean
+-	@if test '$(srcdir)' = . ; then \
+-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+-	  exit 1 ; \
+-	fi
+-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+-	  || { echo "ERROR: files left in build directory after distclean:" ; \
+-	       $(distcleancheck_listfiles) ; \
+-	       exit 1; } >&2
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) all-multi $(DATA) \
+@@ -3743,18 +3481,16 @@
+ 	all all-am all-multi am--refresh check check-am clean \
+ 	clean-generic clean-libtool clean-local clean-multi \
+ 	clean-toolexeclibLIBRARIES clean-toolexeclibLTLIBRARIES ctags \
+-	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzma \
+-	dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+-	distclean-compile distclean-generic distclean-hdr \
+-	distclean-libtool distclean-multi distclean-tags \
+-	distcleancheck distdir distuninstallcheck dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-multi install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	install-toolexeclibLIBRARIES install-toolexeclibLTLIBRARIES \
+-	install-toolexeclibgoDATA install-toolexeclibgoarchiveDATA \
++	ctags-recursive distclean distclean-compile distclean-generic \
++	distclean-hdr distclean-libtool distclean-multi distclean-tags \
++	dvi dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-dvi install-dvi-am \
++	install-exec install-exec-am install-html install-html-am \
++	install-info install-info-am install-man install-multi \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip install-toolexeclibLIBRARIES \
++	install-toolexeclibLTLIBRARIES install-toolexeclibgoDATA \
++	install-toolexeclibgoarchiveDATA \
+ 	install-toolexeclibgocompressDATA \
+ 	install-toolexeclibgocontainerDATA \
+ 	install-toolexeclibgocryptoDATA \
+Index: libgo/testsuite/Makefile.in
+===================================================================
+--- a/src/libgo/testsuite/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libgo/testsuite/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = testsuite
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -54,10 +54,8 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ DEJATOOL = $(PACKAGE)
+ RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ AR = @AR@
+@@ -298,37 +296,6 @@
+ 	-l='$(DEJATOOL)'; for tool in $$l; do \
+ 	  rm -f $$tool.sum $$tool.log; \
+ 	done
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ 	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
+ check: check-am
+@@ -430,8 +397,8 @@
+ 
+ .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
+ 	clean-libtool distclean distclean-DEJAGNU distclean-generic \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-libtool dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libgo/configure.ac
+===================================================================
+--- a/src/libgo/configure.ac	(.../tags/gcc_4_6_3_release)
++++ b/src/libgo/configure.ac	(.../branches/gcc-4_6-branch)
+@@ -19,7 +19,7 @@
+ AC_CANONICAL_SYSTEM
+ target_alias=${target_alias-$host_alias}
+ 
+-AM_INIT_AUTOMAKE([1.9.3 no-define foreign -Wall])
++AM_INIT_AUTOMAKE([1.9.3 no-define foreign no-dist -Wall])
+ AH_TEMPLATE(PACKAGE, [Name of package])
+ AH_TEMPLATE(VERSION, [Version number of package])
+ 
+Index: libstdc++-v3/configure
+===================================================================
+--- a/src/libstdc++-v3/configure	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/configure	(.../branches/gcc-4_6-branch)
+@@ -19477,7 +19477,85 @@
+ 
+ 
+ 
++# For copy-assignable gthreads types
+ 
++
++
++  ac_ext=cpp
++ac_cpp='$CXXCPP $CPPFLAGS'
++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
++
++  ac_save_CXXFLAGS="$CXXFLAGS"
++  CXXFLAGS="$CXXFLAGS -std=c++0x -I${toplevel_srcdir}/gcc"
++
++  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
++  case $target_thread_file in
++    posix)
++      CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
++  esac
++
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gthreads types are copy-assignable in C++11 mode" >&5
++$as_echo_n "checking whether gthreads types are copy-assignable in C++11 mode... " >&6; }
++
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++#include "gthr.h"
++int
++main ()
++{
++
++      #ifdef __GTHREAD_MUTEX_INIT
++      __gthread_mutex_t m1;
++      __gthread_mutex_t m2 = __GTHREAD_MUTEX_INIT;
++      m1 = m2;
++      #endif
++      #ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
++      __gthread_recursive_mutex_t r1;
++      __gthread_recursive_mutex_t r2 = __GTHREAD_RECURSIVE_MUTEX_INIT;
++      r1 = r2;
++      #endif
++      #ifdef __GTHREAD_HAS_COND
++      #ifdef __GTHREAD_COND_INIT
++      __gthread_cond_t c1;
++      __gthread_cond_t c2 = __GTHREAD_COND_INIT;
++      c1 = c2;
++      #endif
++      #endif
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_cxx_try_compile "$LINENO"; then :
++  ac_gthread_cxx11_copy_assign=1
++else
++  ac_gthread_cxx11_copy_assign=0
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++  if test $ac_gthread_cxx11_copy_assign = 1 ; then res_gthr_copy_assign=yes ;
++  else res_gthr_copy_assign=no ; fi
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res_gthr_copy_assign" >&5
++$as_echo "$res_gthr_copy_assign" >&6; }
++
++  if test x"$res_gthr_copy_assign" = x"no"; then
++
++$as_echo "#define _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11 1" >>confdefs.h
++
++  fi
++
++  CXXFLAGS="$ac_save_CXXFLAGS"
++  ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++
++
+   ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+ if test "x$ac_cv_header_locale_h" = x""yes; then :
+ 
+Index: libstdc++-v3/src/condition_variable.cc
+===================================================================
+--- a/src/libstdc++-v3/src/condition_variable.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/src/condition_variable.cc	(.../branches/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ // condition_variable -*- C++ -*-
+ 
+-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
++// Copyright (C) 2008, 2009, 2010, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -34,7 +34,12 @@
+   {
+ #ifdef __GTHREAD_COND_INIT
+     __native_type __tmp = __GTHREAD_COND_INIT;
++#if defined __GXX_EXPERIMENTAL_CXX0X__ \
++  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
++    __builtin_memcpy(&_M_cond, &__tmp, sizeof(_M_cond));
++#else
+     _M_cond = __tmp;
++#endif
+ #else
+     int __e = __gthread_cond_init(&_M_cond, 0);
+ 
+Index: libstdc++-v3/configure.ac
+===================================================================
+--- a/src/libstdc++-v3/configure.ac	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/configure.ac	(.../branches/gcc-4_6-branch)
+@@ -164,6 +164,9 @@
+ # For gthread support
+ GLIBCXX_CHECK_GTHREADS
+ 
++# For copy-assignable gthreads types
++GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN
++
+ AC_LC_MESSAGES
+ 
+ # Check for available headers.
+Index: libstdc++-v3/include/debug/safe_iterator.h
+===================================================================
+--- a/src/libstdc++-v3/include/debug/safe_iterator.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/include/debug/safe_iterator.h	(.../branches/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ // Safe iterator implementation  -*- C++ -*-
+ 
+-// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011
++// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011, 2012
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+@@ -142,7 +142,25 @@
+ 			      ._M_iterator(__x, "other"));
+       }
+ 
++#ifdef __GXX_EXPERIMENTAL_CXX0X__
+       /**
++       * @brief Move construction.
++       * @post __x is singular and unattached
++       */
++      _Safe_iterator(_Safe_iterator&& __x) : _M_current()
++      {
++	_GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
++			      || __x._M_current == _Iterator(),
++			      _M_message(__msg_init_copy_singular)
++			      ._M_iterator(*this, "this")
++			      ._M_iterator(__x, "other"));
++	std::swap(_M_current, __x._M_current);
++	this->_M_attach(__x._M_sequence);
++	__x._M_detach();
++      }
++#endif
++
++      /**
+        *  @brief Converting constructor from a mutable iterator to a
+        *  constant iterator.
+       */
+@@ -181,7 +199,28 @@
+ 	return *this;
+       }
+ 
++#ifdef __GXX_EXPERIMENTAL_CXX0X__
+       /**
++       * @brief Move assignment.
++       * @post __x is singular and unattached
++       */
++      _Safe_iterator&
++      operator=(_Safe_iterator&& __x)
++      {
++	_GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
++			      || __x._M_current == _Iterator(),
++			      _M_message(__msg_copy_singular)
++			      ._M_iterator(*this, "this")
++			      ._M_iterator(__x, "other"));
++	_M_current = __x._M_current;
++	_M_attach(__x._M_sequence);
++	__x._M_detach();
++	__x._M_current = _Iterator();
++	return *this;
++      }
++#endif
++
++      /**
+        *  @brief Iterator dereference.
+        *  @pre iterator is dereferenceable
+        */
+@@ -415,7 +454,9 @@
+       /// Is this iterator equal to the sequence's before_begin() iterator if
+       /// any?
+       bool _M_is_before_begin() const
+-      { return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence()); }
++      {
++	return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence());
++      }
+     };
+ 
+   template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+Index: libstdc++-v3/include/std/condition_variable
+===================================================================
+--- a/src/libstdc++-v3/include/std/condition_variable	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/include/std/condition_variable	(.../branches/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ // <condition_variable> -*- C++ -*-
+ 
+-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
++// Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -171,6 +171,26 @@
+     condition_variable			_M_cond;
+     mutex				_M_mutex;
+ 
++    // scoped unlock - unlocks in ctor, re-locks in dtor
++    template<typename _Lock>
++      struct _Unlock
++      {
++	explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
++
++	~_Unlock() noexcept(false)
++	{
++	  if (uncaught_exception())
++	    __try { _M_lock.lock(); } __catch(...) { }
++	  else
++	    _M_lock.lock();
++	}
++
++	_Unlock(const _Unlock&) = delete;
++	_Unlock& operator=(const _Unlock&) = delete;
++
++	_Lock& _M_lock;
++      };
++
+   public:
+     typedef condition_variable::native_handle_type	native_handle_type;
+ 
+@@ -198,21 +218,8 @@
+       void
+       wait(_Lock& __lock)
+       {
+-	// scoped unlock - unlocks in ctor, re-locks in dtor
+-	struct _Unlock {
+-	  explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
+-	  ~_Unlock() noexcept(false)
+-	  {
+-	    if (uncaught_exception())
+-	      __try { _M_lock.lock(); } __catch(...) { }
+-	    else
+-	      _M_lock.lock();
+-	  }
+-	  _Lock& _M_lock;
+-	};
+-
+ 	unique_lock<mutex> __my_lock(_M_mutex);
+-	_Unlock __unlock(__lock);
++	_Unlock<_Lock> __unlock(__lock);
+ 	// _M_mutex must be unlocked before re-locking __lock so move
+ 	// ownership of _M_mutex lock to an object with shorter lifetime.
+ 	unique_lock<mutex> __my_lock2(std::move(__my_lock));
+@@ -233,11 +240,12 @@
+       wait_until(_Lock& __lock,
+ 		 const chrono::time_point<_Clock, _Duration>& __atime)
+       {
+-        unique_lock<mutex> __my_lock(_M_mutex);
+-        __lock.unlock();
+-        cv_status __status = _M_cond.wait_until(__my_lock, __atime);
+-        __lock.lock();
+-        return __status;
++	unique_lock<mutex> __my_lock(_M_mutex);
++	_Unlock<_Lock> __unlock(__lock);
++	// _M_mutex must be unlocked before re-locking __lock so move
++	// ownership of _M_mutex lock to an object with shorter lifetime.
++	unique_lock<mutex> __my_lock2(std::move(__my_lock));
++	return _M_cond.wait_until(__my_lock2, __atime);
+       }
+ 
+     template<typename _Lock, typename _Clock,
+Index: libstdc++-v3/include/std/mutex
+===================================================================
+--- a/src/libstdc++-v3/include/std/mutex	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/include/std/mutex	(.../branches/gcc-4_6-branch)
+@@ -130,7 +130,7 @@
+   public:
+     // matches a gthr-win32.h recursive mutex
+     template<typename _Rm>
+-      static typename enable_if<sizeof(&_Rm::sema), void>::type
++      static typename enable_if<(bool)sizeof(&_Rm::sema), void>::type
+       _S_destroy(_Rm* __mx)
+       {
+         __gthread_mutex_t __tmp;
+@@ -139,7 +139,7 @@
+ 
+     // matches a recursive mutex with a member 'actual'
+     template<typename _Rm>
+-      static typename enable_if<sizeof(&_Rm::actual), void>::type
++      static typename enable_if<(bool)sizeof(&_Rm::actual), void>::type
+       _S_destroy(_Rm* __mx)
+       { __gthread_mutex_destroy(&__mx->actual); }
+ 
+Index: libstdc++-v3/include/ext/concurrence.h
+===================================================================
+--- a/src/libstdc++-v3/include/ext/concurrence.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/include/ext/concurrence.h	(.../branches/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ // Support for concurrent programing -*- C++ -*-
+ 
+-// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
++// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+@@ -140,6 +140,18 @@
+   }
+ #endif
+  
++  template<typename _Tp>
++    static inline void
++    __copy_gthr_type(_Tp& __to, const _Tp& __from)
++    {
++#if defined __GXX_EXPERIMENTAL_CXX0X__ \
++  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
++      __builtin_memcpy(&__to, &__from, sizeof(__to));
++#else
++      __to = __from;
++#endif
++    }
++
+   class __mutex 
+   {
+   private:
+@@ -156,7 +168,7 @@
+ 	{
+ #if defined __GTHREAD_MUTEX_INIT
+ 	  __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+-	  _M_mutex = __tmp;
++	  __copy_gthr_type(_M_mutex, __tmp);
+ #else
+ 	  __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex); 
+ #endif
+@@ -214,7 +226,7 @@
+ 	{
+ #if defined __GTHREAD_RECURSIVE_MUTEX_INIT
+ 	  __gthread_recursive_mutex_t __tmp = __GTHREAD_RECURSIVE_MUTEX_INIT;
+-	  _M_mutex = __tmp;
++	  __copy_gthr_type(_M_mutex, __tmp);
+ #else
+ 	  __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex); 
+ #endif
+@@ -270,7 +282,7 @@
+ 
+     // matches a gthr-win32.h recursive mutex
+     template<typename _Rm>
+-      static typename __enable_if<sizeof(&_Rm::sema), void>::__type
++      static typename __enable_if<(bool)sizeof(&_Rm::sema), void>::__type
+       _S_destroy(_Rm* __mx)
+       {
+         __gthread_mutex_t __tmp;
+@@ -279,7 +291,7 @@
+ 
+     // matches a recursive mutex with a member 'actual'
+     template<typename _Rm>
+-      static typename __enable_if<sizeof(&_Rm::actual), void>::__type
++      static typename __enable_if<(bool)sizeof(&_Rm::actual), void>::__type
+       _S_destroy(_Rm* __mx)
+       { __gthread_mutex_destroy(&__mx->actual); }
+ 
+@@ -332,7 +344,7 @@
+ 	{
+ #if defined __GTHREAD_COND_INIT
+ 	  __gthread_cond_t __tmp = __GTHREAD_COND_INIT;
+-	  _M_cond = __tmp;
++	  __copy_gthr_type(_M_cond, __tmp);
+ #else
+ 	  __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
+ #endif
+Index: libstdc++-v3/include/ext/rope
+===================================================================
+--- a/src/libstdc++-v3/include/ext/rope	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/include/ext/rope	(.../branches/gcc-4_6-branch)
+@@ -1,7 +1,7 @@
+ // SGI's rope class -*- C++ -*-
+ 
+-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+-// Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
++// 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -445,6 +445,17 @@
+     identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
+     { return rope<_CharT, _Alloc>(); }
+ 
++  static inline void
++  __copy_gthr_mutex(__gthread_mutex_t& __to, const __gthread_mutex_t& __from)
++  {
++#if defined __GXX_EXPERIMENTAL_CXX0X__ \
++  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
++    __builtin_memcpy(&__to, &__from, sizeof(__to));
++#else
++    __to = __from;
++#endif
++  }
++
+   // Class _Refcount_Base provides a type, _RC_t, a data member,
+   // _M_ref_count, and member functions _M_incr and _M_decr, which perform
+   // atomic preincrement/predecrement.  The constructor initializes
+@@ -464,7 +475,7 @@
+     {
+ #ifdef __GTHREAD_MUTEX_INIT
+       __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+-      _M_ref_count_lock = __tmp;
++      __copy_gthr_mutex(_M_ref_count_lock, __tmp);
+ #elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
+       __GTHREAD_MUTEX_INIT_FUNCTION (&_M_ref_count_lock);
+ #else
+@@ -605,7 +616,7 @@
+     {
+       // Do not copy a POSIX/gthr mutex once in use.  However, bits are bits.
+       __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+-      _M_c_string_lock = __tmp;
++      __copy_gthr_mutex(_M_c_string_lock, __tmp);
+     }
+ #else
+     { __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
+Index: libstdc++-v3/include/profile/iterator_tracker.h
+===================================================================
+--- a/src/libstdc++-v3/include/profile/iterator_tracker.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/include/profile/iterator_tracker.h	(.../branches/gcc-4_6-branch)
+@@ -93,7 +93,7 @@
+ 	return *this;
+       }
+ 
+-      __iterator_tracker&
++      __iterator_tracker
+       operator++(int)
+       {
+ 	_M_ds->_M_profile_iterate();
+@@ -110,7 +110,7 @@
+ 	return *this;
+       }
+ 
+-      __iterator_tracker&
++      __iterator_tracker
+       operator--(int)
+       {
+ 	_M_ds->_M_profile_iterate(1);
+Index: libstdc++-v3/include/bits/stl_algo.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_algo.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/include/bits/stl_algo.h	(.../branches/gcc-4_6-branch)
+@@ -1811,7 +1811,8 @@
+ 	  for (; __first != __last; ++__first)
+ 	    if (__pred(*__first))
+ 	      {
+-		*__result1 = _GLIBCXX_MOVE(*__first);
++		if (__result1 != __first)
++		  *__result1 = _GLIBCXX_MOVE(*__first);
+ 		++__result1;
+ 	      }
+ 	    else
+Index: libstdc++-v3/ChangeLog
+===================================================================
+--- a/src/libstdc++-v3/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,84 @@
++2012-11-08  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	* include/profile/iterator_tracker.h (operator++): Fix returning
++	dangling reference.
++	(operator--): Likewise.
++
++2012-11-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	* testsuite/*: Fix copying permission statements.
++
++2012-09-27  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR libstdc++/54228
++	Backport from mainline
++	2011-12-15  Benjamin Kosnik  <bkoz@redhat.com>
++
++	* testsuite/22_locale/num_put/put/char/9780-2.cc: Add test for "C"
++	locale, add sanity checks in case of grouping.
++
++2012-07-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/53270
++	* acinclude.m4 (GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN): Define.
++	* configure.ac (GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN): Use it.
++	* config.h.in: Regenerate.
++	* configure: Likewise.
++	* include/ext/concurrence.h (__copy_gthr_type): Define.
++	(__mutex::__mutex, __recursive_mutex::__recursive_mutex,
++	__cond::__cond): Use it.
++	* include/ext/rope (__copy_gthr_mutex): Define.
++	(_Refcount_Base::_Refcount_Base, _Rope_RopeRep::_Rope_RopeRep): Use
++	it.
++	* src/condition_variable.cc (condition_variable::condition_variable):
++	Use memcpy instead of assignment.
++
++2012-07-07  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/53578
++	* include/ext/concurrence.h (__recursive_mutex::_S_destroy): Fix
++	narrowing conversion.
++	* include/std/mutex (__recursive_mutex_base::_S_destroy): Likewise.
++
++2012-07-05  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/53830
++	* include/std/condition_variable (condition_variable_any::wait):
++	Move _Unlock type to class scope.
++	(condition_variable_any::wait_until): Reuse it.
++	* testsuite/30_threads/condition_variable_any/53830.cc: New.
++
++2012-06-20  J�ĥrg Sonnenberger <joerg@britannica.bec.de>
++	    Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/53678
++	* config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U.
++	* testsuite/22_locale/ctype_base/53678.cc: New.
++
++2012-04-12   Jeffrey Yasskin  <jyasskin@google.com>
++
++	PR libstdc++/52822
++	* include/bits/stl_algo.h (__stable_partition_adaptive): Avoid
++	move-assigning an object to itself by explicitly testing for
++	identity.
++	* testsuite/25_algorithms/stable_partition/pr52822.cc: Test
++	vectors, which have a destructive self-move-assignment.
++	* testsuite/25_algorithms/stable_partition/moveable.cc (test02):
++	Test with rvalstruct, which explicitly checks
++	self-move-assignment.
++
++2012-04-09  Terry Guo  <terry.guo@arm.com>
++
++	* testsuite/Makefile.am (TEST_GCC_EXEC_PREFIX): New.
++	* testsuite/Makefile.in: Regenerated.
++
++2012-03-08  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/52433
++	* include/debug/safe_iterator.h (_Safe_iterator): Add move
++	constructor and move assignment operator.
++	* testsuite/23_containers/vector/debug/52433.cc: New.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,43 @@
++// { dg-options "-std=gnu++0x" }
++
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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.
++
++// This library 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 this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++// 25.2.12 [lib.alg.partitions] Partitions.
++
++#include <algorithm>
++#include <vector>
++#include <testsuite_hooks.h>
++
++bool true_vector_pred(const std::vector<int>&) { return true; }
++
++void
++test01()
++{
++  std::vector<std::vector<int> > v(1);
++  v[0].push_back(7);
++  VERIFY( v[0].size() == 1 );
++  std::stable_partition(v.begin(), v.end(), &true_vector_pred);
++  VERIFY( v[0].size() == 1 );
++}
++
++int
++main()
++{
++  test01();
++  return 0;
++}
+Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc	(.../branches/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ // { dg-options "-std=gnu++0x" }
+ 
+-// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
++// Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+@@ -39,6 +39,11 @@
+ const int B[] = {2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 17};
+ const int N = sizeof(A) / sizeof(int);
+ 
++// Check that starting with a true predicate works too. (PR52822)
++const int A2[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
++const int B2[] = {2, 4, 6, 8, 10, 12, 14, 16, 3, 5, 7, 9, 11, 13, 15, 17};
++const int N2 = sizeof(A2) / sizeof(int);
++
+ struct Pred
+ {
+   bool
+@@ -46,7 +51,7 @@
+   { return (x.val % 2) == 0; }
+ };
+ 
+-// 25.2.12 stable_partition()
++// 25.2.12 stable_partition(), starting with a false predicate.
+ void
+ test01()
+ {
+@@ -60,9 +65,24 @@
+   VERIFY( std::equal(s1, s1 + N, B) );
+ }
+ 
++// 25.2.12 stable_partition(), starting with a true predicate.
++void
++test02()
++{
++  bool test __attribute__((unused)) = true;
++
++  rvalstruct s1[N2];
++  std::copy(A2, A2 + N2, s1);
++  Container con(s1, s1 + N2);
++
++  std::stable_partition(con.begin(), con.end(), Pred());
++  VERIFY( std::equal(s1, s1 + N2, B2) );
++}
++
+ int
+ main()
+ {
+   test01();
++  test02();
+   return 0;
+ }
+Index: libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/move/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/move/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/move/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/1.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/2.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/3.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/4.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/34595.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/34595.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/fill/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/fill/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/fill/4.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/partition/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/partition/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/partition/1.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/heap/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/heap/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/heap/1.cc	(.../branches/gcc-4_6-branch)
+@@ -8,7 +8,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/24_iterators/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/24_iterators/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/24_iterators/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/Makefile.in
+===================================================================
+--- a/src/libstdc++-v3/testsuite/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -502,6 +502,7 @@
+ 	@echo 'set target_triplet $(target_triplet)' >>site.tmp
+ 	@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
+ 	@echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp
++	@echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp
+ 	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
+ 	@test ! -f site.exp || \
+ 	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
+Index: libstdc++-v3/testsuite/28_regex/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/28_regex/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/28_regex/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,68 @@
++// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } }
++// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } }
++// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
++// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
++// { dg-require-cstdint "" }
++// { dg-require-gthreads "" }
++// { dg-require-sched-yield "" }
++// { dg-require-nanosleep "" }
++
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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.
++
++// This library 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 this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++// PR libstdc++/53830
++// Test for deadlock in condition_variable_any::wait_for
++
++#include <thread>
++#include <mutex>
++#include <condition_variable>
++#include <chrono>
++#include <atomic>
++
++std::mutex mutex;
++std::condition_variable_any cv;
++
++std::atomic<int> barrier(0);
++
++// waits for data from another thread
++void wait_for_data()
++{
++  std::unique_lock<std::mutex> lock(mutex);
++  barrier = 1;
++  cv.wait_for(lock, std::chrono::milliseconds(100), []{ return false; });
++  // read data
++}
++
++// passes data to waiting thread
++void provide_data()
++{
++  while (barrier == 0)
++    std::this_thread::yield();
++  std::unique_lock<std::mutex> lock(mutex);
++  // pass data
++  std::this_thread::sleep_for(std::chrono::seconds(1));
++  cv.notify_one();
++}
++
++int main()
++{
++  std::thread thread1(wait_for_data);
++  provide_data();
++  thread1.join();
++  return 0;
++}
++
+Index: libstdc++-v3/testsuite/ext/vstring/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/ext/vstring/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc	(.../branches/gcc-4_6-branch)
+@@ -1,7 +1,7 @@
+ // { dg-require-namedlocale "de_DE" }
+ // { dg-require-namedlocale "es_ES" }
+ 
+-// Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
++// Copyright (C) 2004-2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -22,23 +22,60 @@
+ #include <locale>
+ #include <testsuite_hooks.h>
+ 
+-int main()
++// Make sure that formatted output uses the locale in the output stream.
++using namespace std;
++locale l1 = locale("de_DE");
++const num_put<char>& np = use_facet<num_put<char> >(l1);
++const numpunct<char>& npunct = use_facet<numpunct<char> >(l1);
++
++void test01()
+ {
+-  using namespace std;
++  bool test __attribute__((unused)) = true;
+ 
++  locale l2 = locale("C");
++  const numpunct<char>& npunct2 = use_facet<numpunct<char> >(l2);
++  char c = npunct2.thousands_sep();
++  string s = npunct2.grouping();
++
++  ostringstream oss;
++  oss.imbue(l2);
++
++  long l = 1234567890;
++  np.put(oss.rdbuf(), oss, ' ', l);
++  string res = oss.str();
++
++  VERIFY( res == "1234567890" );
++}
++
++void test02()
++{
+   bool test __attribute__((unused)) = true;
+-  locale l1 = locale("de_DE");
++
+   locale l2 = locale("es_ES");
+-  
+-  const num_put<char>& np = use_facet<num_put<char> >(l1);  
++  const numpunct<char>& npunct3 = use_facet<numpunct<char> >(l2);
++  char c = npunct3.thousands_sep();
++  string s = npunct3.grouping();
++
+   ostringstream oss;
+   oss.imbue(l2);
+ 
+   long l = 1234567890;
+-  np.put(oss.rdbuf(), oss, ' ', l); // 1234567890
++  np.put(oss.rdbuf(), oss, ' ', l);
+   string res = oss.str();
+-  
+-  VERIFY( res == "1234567890" );
+ 
++  if (!s.empty())
++    VERIFY( res == "1.234.567.890" );
++  else
++    VERIFY( res == "1234567890" );
++}
++
++int main()
++{
++  // Sanity check.
++  char c = npunct.thousands_sep();
++  string s = npunct.grouping();
++
++  test01();
++  test02();
+   return 0;
+ }
+Index: libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,28 @@
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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.
++
++// This library 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 this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++// { dg-do compile }
++
++// 22.2.1 The ctype category
++
++#include <locale>
++
++// libstdc++/53678
++void test01()
++{
++  bool NetBSD __attribute__((unused)) = true;
++}
+Index: libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/Makefile.am
+===================================================================
+--- a/src/libstdc++-v3/testsuite/Makefile.am	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/Makefile.am	(.../branches/gcc-4_6-branch)
+@@ -59,6 +59,7 @@
+ 	@echo 'set target_triplet $(target_triplet)' >>site.tmp
+ 	@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
+ 	@echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp
++	@echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp
+ 	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
+ 	@test ! -f site.exp || \
+ 	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
+Index: libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multimap/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/multimap/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/set/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/set/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/set/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc	(.../branches/gcc-4_6-branch)
+@@ -0,0 +1,43 @@
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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.
++//
++// This library 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 this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++//
++// { dg-require-debug-mode "" }
++// { dg-options "-std=gnu++0x" }
++// { dg-do compile }
++
++// PR libstdc++/52433
++
++#include <vector>
++
++struct X
++{
++    std::vector<int>::iterator i;
++
++    X() = default;
++    X(const X&) = default;
++    X(X&&) = default;
++    X& operator=(const X&) = default;
++    X& operator=(X&&) = default;
++};
++
++X test01()
++{
++    X x;
++    x = X();
++    return x;
++}
++
+Index: libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/deque/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multiset/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/multiset/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/1.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/2.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/2.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/2.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/3.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/3.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/3.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/42352.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/42352.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/1.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/2.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/2.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/1.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/1.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/1.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/3.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/3.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/2.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/2.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/2.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/4.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/4.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/3.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/3.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/3.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/5.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/5.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/5.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/4.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/4.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/4.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/5.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/5.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/5.h	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/capacity/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/capacity/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/capacity/1.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/capacity/1.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/capacity/1.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/capacity/1.h	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/map/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/map/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/map/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc	(.../branches/gcc-4_6-branch)
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/array/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/array/range_access.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/array/range_access.cc	(.../branches/gcc-4_6-branch)
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc	(.../branches/gcc-4_6-branch)
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/config.h.in
+===================================================================
+--- a/src/libstdc++-v3/config.h.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/config.h.in	(.../branches/gcc-4_6-branch)
+@@ -692,6 +692,9 @@
+ /* Define if a fully dynamic basic_string is wanted. */
+ #undef _GLIBCXX_FULLY_DYNAMIC_STRING
+ 
++/* Define if gthreads types cannot be copy-assigned in C++11. */
++#undef _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
++
+ /* Define if gthreads library is available. */
+ #undef _GLIBCXX_HAS_GTHREADS
+ 
+Index: libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
+===================================================================
+--- a/src/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h	(.../branches/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ // Locale support -*- C++ -*-
+ 
+-// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
++// Copyright (C) 2000, 2009, 2011, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -31,8 +31,6 @@
+ //   anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
+ // See www.netbsd.org for details of access.
+   
+-#include <sys/param.h>
+-
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+@@ -47,7 +45,7 @@
+     // on the mask type. Because of this, we don't use an enum.
+     typedef unsigned char      	mask;
+ 
+-#if __NetBSD_Version__ < 599004100
++#ifndef _CTYPE_U
+     static const mask upper    	= _U;
+     static const mask lower 	= _L;
+     static const mask alpha 	= _U | _L;
+Index: libstdc++-v3/acinclude.m4
+===================================================================
+--- a/src/libstdc++-v3/acinclude.m4	(.../tags/gcc_4_6_3_release)
++++ b/src/libstdc++-v3/acinclude.m4	(.../branches/gcc-4_6-branch)
+@@ -3213,6 +3213,58 @@
+   ])
+ ])
+ 
++dnl
++dnl Check whether gthreads types can be copy-assigned in C++11 mode.
++dnl
++AC_DEFUN([GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN], [
++
++  AC_LANG_SAVE
++  AC_LANG_CPLUSPLUS
++  ac_save_CXXFLAGS="$CXXFLAGS"
++  CXXFLAGS="$CXXFLAGS -std=c++0x -I${toplevel_srcdir}/gcc"
++
++  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
++  case $target_thread_file in
++    posix)
++      CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
++  esac
++
++  AC_MSG_CHECKING([whether gthreads types are copy-assignable in C++11 mode])
++
++  AC_TRY_COMPILE([#include "gthr.h"],
++    [
++      #ifdef __GTHREAD_MUTEX_INIT
++      __gthread_mutex_t m1;
++      __gthread_mutex_t m2 = __GTHREAD_MUTEX_INIT;
++      m1 = m2;
++      #endif
++      #ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
++      __gthread_recursive_mutex_t r1;
++      __gthread_recursive_mutex_t r2 = __GTHREAD_RECURSIVE_MUTEX_INIT;
++      r1 = r2;
++      #endif
++      #ifdef __GTHREAD_HAS_COND
++      #ifdef __GTHREAD_COND_INIT
++      __gthread_cond_t c1;
++      __gthread_cond_t c2 = __GTHREAD_COND_INIT;
++      c1 = c2;
++      #endif
++      #endif
++    ], [ac_gthread_cxx11_copy_assign=1], [ac_gthread_cxx11_copy_assign=0])
++
++  if test $ac_gthread_cxx11_copy_assign = 1 ; then res_gthr_copy_assign=yes ;
++  else res_gthr_copy_assign=no ; fi
++  AC_MSG_RESULT([$res_gthr_copy_assign])
++
++  if test x"$res_gthr_copy_assign" = x"no"; then
++    AC_DEFINE(_GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11, 1,
++	      [Define if gthreads types cannot be copy-assigned in C++11.])
++  fi
++
++  CXXFLAGS="$ac_save_CXXFLAGS"
++  AC_LANG_RESTORE
++])
++
+ # Macros from the top-level gcc directory.
+ m4_include([../config/gc++filt.m4])
+ m4_include([../config/tls.m4])
+Index: libgfortran/runtime/environ.c
+===================================================================
+--- a/src/libgfortran/runtime/environ.c	(.../tags/gcc_4_6_3_release)
++++ b/src/libgfortran/runtime/environ.c	(.../branches/gcc-4_6-branch)
+@@ -453,21 +453,35 @@
+ {
+   int low, high, mid;
+ 
+-  low = -1;
+-  high = n_elist;
+-  while (high - low > 1)
++  if (n_elist == 0)
+     {
++      *ip = 0;
++      return 0;
++    }
++
++  low = 0;
++  high = n_elist - 1;
++
++  do 
++    {
+       mid = (low + high) / 2;
+-      if (unit <= elist[mid].unit)
+-	high = mid;
++      if (unit == elist[mid].unit)
++	{
++	  *ip = mid;
++	  return 1;
++	}
++      else if (unit > elist[mid].unit)
++	low = mid + 1;
+       else
+-	low = mid;
+-    }
+-  *ip = high;
+-  if (elist[high].unit == unit)
+-    return 1;
++	high = mid - 1;
++    } while (low <= high);
++
++  if (unit > elist[mid].unit)
++    *ip = mid + 1;
+   else
+-    return 0;
++    *ip = mid;
++
++  return 0;
+ }
+ 
+ /* This matches a keyword.  If it is found, return the token supplied,
+@@ -582,13 +596,13 @@
+     }
+   if (search_unit (unit, &i))
+     {
+-      elist[unit].conv = endian;
++      elist[i].conv = endian;
+     }
+   else
+     {
+-      for (j=n_elist; j>=i; j--)
++      for (j=n_elist-1; j>=i; j--)
+ 	elist[j+1] = elist[j];
+-    
++
+       n_elist += 1;
+       elist[i].unit = unit;
+       elist[i].conv = endian;
+Index: libgfortran/intrinsics/eoshift2.c
+===================================================================
+--- a/src/libgfortran/intrinsics/eoshift2.c	(.../tags/gcc_4_6_3_release)
++++ b/src/libgfortran/intrinsics/eoshift2.c	(.../branches/gcc-4_6-branch)
+@@ -77,6 +77,12 @@
+ 
+       ret->offset = 0;
+       ret->dtype = array->dtype;
++
++      if (arraysize > 0)
++	ret->data = internal_malloc_size (size * arraysize);
++      else
++	ret->data = internal_malloc_size (1);
++
+       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
+         {
+ 	  index_type ub, str;
+@@ -90,12 +96,6 @@
+ 	      * GFC_DESCRIPTOR_STRIDE(ret,i-1);
+ 
+ 	  GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
+-
+-	  if (arraysize > 0)
+-	    ret->data = internal_malloc_size (size * arraysize);
+-	  else
+-	    ret->data = internal_malloc_size (1);
+-
+         }
+     }
+   else if (unlikely (compile_options.bounds_check))
+Index: libgfortran/ChangeLog
+===================================================================
+--- a/src/libgfortran/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/libgfortran/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,17 @@
++2012-10-21  Thomas K�ĥnig  <tkoenig@gcc.gnu.org>
++
++	PR libfortran/54736
++	Backport from trunk
++	* runtime/environ.c (search_unit):  Correct logic
++	for binary search.
++	(mark_single):  Fix index errors.
++
++2012-05-12  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53310
++	* intrinsics/eoshift2.c (eoshift2): Do not leak
++	memory by allocating it in the loop.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: boehm-gc/configure.ac
+===================================================================
+--- a/src/boehm-gc/configure.ac	(.../tags/gcc_4_6_3_release)
++++ b/src/boehm-gc/configure.ac	(.../branches/gcc-4_6-branch)
+@@ -392,6 +392,7 @@
+ oldLIBS="$LIBS"
+ LIBS="$LIBS $THREADLIBS"
+ AC_CHECK_FUNCS([pthread_getattr_np])
++AC_CHECK_FUNCS([pthread_get_stackaddr_np])
+ LIBS="$oldLIBS"
+ 
+ # Configuration of machine-dependent code
+Index: boehm-gc/include/gc_config.h.in
+===================================================================
+--- a/src/boehm-gc/include/gc_config.h.in	(.../tags/gcc_4_6_3_release)
++++ b/src/boehm-gc/include/gc_config.h.in	(.../branches/gcc-4_6-branch)
+@@ -87,6 +87,9 @@
+ /* Define to 1 if you have the `pthread_getattr_np' function. */
+ #undef HAVE_PTHREAD_GETATTR_NP
+ 
++/* Define to 1 if you have the `pthread_get_stackaddr_np_np' function. */
++#undef HAVE_PTHREAD_GET_STACKADDR_NP
++
+ /* Define to 1 if you have the <stdint.h> header file. */
+ #undef HAVE_STDINT_H
+ 
+Index: boehm-gc/include/private/gcconfig.h
+===================================================================
+--- a/src/boehm-gc/include/private/gcconfig.h	(.../tags/gcc_4_6_3_release)
++++ b/src/boehm-gc/include/private/gcconfig.h	(.../branches/gcc-4_6-branch)
+@@ -1331,7 +1331,11 @@
+ 	 These aren't used when dyld support is enabled (it is by default) */
+ #     define DATASTART ((ptr_t) get_etext())
+ #     define DATAEND	((ptr_t) get_end())
+-#     define STACKBOTTOM ((ptr_t) 0xc0000000)
++#     ifdef HAVE_PTHREAD_GET_STACKADDR_NP
++#       define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
++#     else
++#       define STACKBOTTOM ((ptr_t) 0xc0000000)
++#     endif
+ #     define USE_MMAP
+ #     define USE_MMAP_ANON
+ #     define USE_ASM_PUSH_REGS
+@@ -2011,7 +2015,11 @@
+ 	 These aren't used when dyld support is enabled (it is by default) */
+ #     define DATASTART ((ptr_t) get_etext())
+ #     define DATAEND	((ptr_t) get_end())
+-#     define STACKBOTTOM ((ptr_t) 0x7fff5fc00000)
++#     ifdef HAVE_PTHREAD_GET_STACKADDR_NP
++#       define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
++#     else
++#       define STACKBOTTOM ((ptr_t) 0x7fff5fc00000)
++#     endif
+ #     define USE_MMAP
+ #     define USE_MMAP_ANON
+ #     ifdef GC_DARWIN_THREADS
+Index: boehm-gc/ChangeLog
+===================================================================
+--- a/src/boehm-gc/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/boehm-gc/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,17 @@
++2012-03-02  Jack Howarth  <howarth@bromo.med.uc.edu>
++
++	Backport from mainline
++	2012-02-23  Patrick Marlier  <patrick.marlier@gmail.com>
++		    Jack Howarth  <howarth@bromo.med.uc.edu>
++
++	PR boehm-gc/52179
++	* include/gc_config.h.in: Undefine HAVE_PTHREAD_GET_STACKADDR_NP.
++	* include/private/gcconfig.h (DARWIN): Define STACKBOTTOM with
++	pthread_get_stackaddr_np when available.
++	* configure.ac (THREADS): Check availability of
++	pthread_get_stackaddr_np.
++	* configure: Regenerate.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: boehm-gc/configure
+===================================================================
+--- a/src/boehm-gc/configure	(.../tags/gcc_4_6_3_release)
++++ b/src/boehm-gc/configure	(.../branches/gcc-4_6-branch)
+@@ -15246,6 +15246,17 @@
+ fi
+ done
+ 
++for ac_func in pthread_get_stackaddr_np
++do :
++  ac_fn_c_check_func "$LINENO" "pthread_get_stackaddr_np" "ac_cv_func_pthread_get_stackaddr_np"
++if test "x$ac_cv_func_pthread_get_stackaddr_np" = x""yes; then :
++  cat >>confdefs.h <<_ACEOF
++#define HAVE_PTHREAD_GET_STACKADDR_NP 1
++_ACEOF
++
++fi
++done
++
+ LIBS="$oldLIBS"
+ 
+ # Configuration of machine-dependent code
+Index: libffi/Makefile.in
+===================================================================
+--- a/src/libffi/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libffi/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -61,13 +61,10 @@
+ @PA_LINUX_TRUE@am__append_24 = src/pa/linux.S src/pa/ffi.c
+ @PA_HPUX_TRUE@am__append_25 = src/pa/hpux32.S src/pa/ffi.c
+ subdir = .
+-DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \
+-	$(srcdir)/../config.guess $(srcdir)/../config.sub \
+-	$(srcdir)/../depcomp $(srcdir)/../install-sh \
+-	$(srcdir)/../ltmain.sh $(srcdir)/../missing \
+-	$(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \
+-	$(srcdir)/Makefile.in $(srcdir)/fficonfig.h.in \
+-	$(top_srcdir)/configure ChangeLog
++DIST_COMMON = README ChangeLog $(srcdir)/Makefile.in \
++	$(srcdir)/Makefile.am $(top_srcdir)/configure \
++	$(am__configure_deps) $(srcdir)/fficonfig.h.in \
++	$(srcdir)/../mkinstalldirs $(srcdir)/../depcomp
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -201,7 +198,6 @@
+ SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \
+ 	$(libffi_convenience_la_SOURCES) \
+ 	$(nodist_libffi_convenience_la_SOURCES)
+-DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
+ MULTISRCTOP = 
+ MULTIBUILDTOP = 
+ MULTIDIRS = 
+@@ -218,47 +214,10 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir dist dist-all distcheck
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+-  { test ! -d "$(distdir)" \
+-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+-         && rm -fr "$(distdir)"; }; }
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-distuninstallcheck_listfiles = find . -type f -print
+-distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
+@@ -1184,182 +1143,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	$(am__remove_distdir)
+-	test -d "$(distdir)" || mkdir "$(distdir)"
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	-test -n "$(am__skip_mode_fix)" \
+-	|| find "$(distdir)" -type d ! -perm -755 \
+-		-exec chmod u+rwx,go+rx {} \; -o \
+-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+-	|| chmod -R a+r "$(distdir)"
+-dist-gzip: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-dist-bzip2: distdir
+-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+-	$(am__remove_distdir)
+-
+-dist-lzma: distdir
+-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+-	$(am__remove_distdir)
+-
+-dist-xz: distdir
+-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+-	$(am__remove_distdir)
+-
+-dist-tarZ: distdir
+-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+-	$(am__remove_distdir)
+-
+-dist-shar: distdir
+-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+-	$(am__remove_distdir)
+-
+-dist-zip: distdir
+-	-rm -f $(distdir).zip
+-	zip -rq $(distdir).zip $(distdir)
+-	$(am__remove_distdir)
+-
+-dist dist-all: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-# This target untars the dist file and tries a VPATH configuration.  Then
+-# it guarantees that the distribution is self-contained by making another
+-# tarfile.
+-distcheck: dist
+-	case '$(DIST_ARCHIVES)' in \
+-	*.tar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+-	*.tar.bz2*) \
+-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+-	*.tar.lzma*) \
+-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+-	*.tar.xz*) \
+-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+-	*.tar.Z*) \
+-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+-	*.shar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+-	*.zip*) \
+-	  unzip $(distdir).zip ;;\
+-	esac
+-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+-	mkdir $(distdir)/_build
+-	mkdir $(distdir)/_inst
+-	chmod a-w $(distdir)
+-	test -d $(distdir)/_build || exit 0; \
+-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+-	  && am__cwd=`pwd` \
+-	  && $(am__cd) $(distdir)/_build \
+-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+-	    $(DISTCHECK_CONFIGURE_FLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+-	  && $(MAKE) $(AM_MAKEFLAGS) check \
+-	  && $(MAKE) $(AM_MAKEFLAGS) install \
+-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+-	        distuninstallcheck \
+-	  && chmod -R a-w "$$dc_install_base" \
+-	  && ({ \
+-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+-	  && rm -rf "$$dc_destdir" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+-	  && rm -rf $(DIST_ARCHIVES) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+-	  && cd "$$am__cwd" \
+-	  || exit 1
+-	$(am__remove_distdir)
+-	@(echo "$(distdir) archives ready for distribution: "; \
+-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+-distuninstallcheck:
+-	@$(am__cd) '$(distuninstallcheck_dir)' \
+-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+-	   || { echo "ERROR: files left after uninstall:" ; \
+-	        if test -n "$(DESTDIR)"; then \
+-	          echo "  (check DESTDIR support)"; \
+-	        fi ; \
+-	        $(distuninstallcheck_listfiles) ; \
+-	        exit 1; } >&2
+-distcleancheck: distclean
+-	@if test '$(srcdir)' = . ; then \
+-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+-	  exit 1 ; \
+-	fi
+-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+-	  || { echo "ERROR: files left in build directory after distclean:" ; \
+-	       $(distcleancheck_listfiles) ; \
+-	       exit 1; } >&2
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile $(LTLIBRARIES) all-multi fficonfig.h
+@@ -1510,18 +1293,15 @@
+ 	all all-am all-multi am--refresh check check-am clean \
+ 	clean-generic clean-libtool clean-multi \
+ 	clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES ctags \
+-	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzma \
+-	dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+-	distclean-compile distclean-generic distclean-hdr \
+-	distclean-libtool distclean-multi distclean-tags \
+-	distcleancheck distdir distuninstallcheck dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-multi install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+-	installdirs installdirs-am maintainer-clean \
++	ctags-recursive distclean distclean-compile distclean-generic \
++	distclean-hdr distclean-libtool distclean-multi distclean-tags \
++	dvi dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-dvi install-dvi-am \
++	install-exec install-exec-am install-html install-html-am \
++	install-info install-info-am install-man install-multi \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip install-toolexeclibLTLIBRARIES installcheck \
++	installcheck-am installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic maintainer-clean-multi mostlyclean \
+ 	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ 	mostlyclean-multi pdf pdf-am ps ps-am tags tags-recursive \
+Index: libffi/include/Makefile.in
+===================================================================
+--- a/src/libffi/include/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libffi/include/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = include
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ 	$(srcdir)/ffi.h.in $(toollibffi_HEADERS)
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+@@ -54,7 +54,6 @@
+ CONFIG_CLEAN_FILES = ffi.h ffitarget.h
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -80,7 +79,6 @@
+ HEADERS = $(toollibffi_HEADERS)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
+@@ -329,37 +327,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(HEADERS)
+@@ -463,17 +430,16 @@
+ 
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool ctags distclean distclean-generic \
+-	distclean-libtool distclean-tags distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip \
+-	install-toollibffiHEADERS installcheck installcheck-am \
+-	installdirs maintainer-clean maintainer-clean-generic \
+-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+-	ps ps-am tags uninstall uninstall-am \
+-	uninstall-toollibffiHEADERS
++	distclean-libtool distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-data install-data-am \
++	install-dvi install-dvi-am install-exec install-exec-am \
++	install-html install-html-am install-info install-info-am \
++	install-man install-pdf install-pdf-am install-ps \
++	install-ps-am install-strip install-toollibffiHEADERS \
++	installcheck installcheck-am installdirs maintainer-clean \
++	maintainer-clean-generic mostlyclean mostlyclean-generic \
++	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
++	uninstall-am uninstall-toollibffiHEADERS
+ 
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+Index: libffi/src/powerpc/aix.S
+===================================================================
+--- a/src/libffi/src/powerpc/aix.S	(.../tags/gcc_4_6_3_release)
++++ b/src/libffi/src/powerpc/aix.S	(.../branches/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ /* -----------------------------------------------------------------------
+-   aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc.
++   aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
+    based on darwin.S by John Hornkvist
+ 
+    PowerPC Assembly glue.
+@@ -79,6 +79,8 @@
+ 	.set f20,20
+ 	.set f21,21
+ 
++	.extern .ffi_prep_args
++
+ #define LIBFFI_ASM
+ #include <fficonfig.h>
+ #include <ffi.h>
+@@ -125,6 +127,7 @@
+ 	/* Call ffi_prep_args.  */
+ 	mr	r4, r1
+ 	bl	.ffi_prep_args
++	nop
+ 
+ 	/* Now do the call.  */
+ 	ld	r0, 0(r29)
+@@ -226,6 +229,7 @@
+ 	/* Call ffi_prep_args.  */
+ 	mr	r4, r1
+ 	bl	.ffi_prep_args
++	nop
+ 
+ 	/* Now do the call.  */
+ 	lwz	r0, 0(r29)
+Index: libffi/src/powerpc/aix_closure.S
+===================================================================
+--- a/src/libffi/src/powerpc/aix_closure.S	(.../tags/gcc_4_6_3_release)
++++ b/src/libffi/src/powerpc/aix_closure.S	(.../branches/gcc-4_6-branch)
+@@ -79,6 +79,8 @@
+ 	.set f20,20
+ 	.set f21,21
+ 
++	.extern .ffi_closure_helper_DARWIN
++
+ #define LIBFFI_ASM
+ #define JUMPTARGET(name) name
+ #define L(x) x
+@@ -165,6 +167,7 @@
+ 
+ 	/* look up the proper starting point in table  */
+ 	/* by using return type as offset */
++	lhz	r3, 10(r3)	/* load type from return type */
+ 	ld	r4, LC..60(2)	/* get address of jump table */
+ 	sldi	r3, r3, 4	/* now multiply return type by 16 */
+ 	ld	r0, 240+16(r1)	/* load return address */
+@@ -337,8 +340,9 @@
+ 
+ 	/* look up the proper starting point in table  */
+ 	/* by using return type as offset */
++	lhz	r3, 6(r3)	/* load type from return type */
+ 	lwz	r4, LC..60(2)	/* get address of jump table */
+-	slwi	r3, r3, 4	/* now multiply return type by 4 */
++	slwi	r3, r3, 4	/* now multiply return type by 16 */
+ 	lwz	r0, 176+8(r1)	/* load return address */
+ 	add	r3, r3, r4	/* add contents of table to table address */
+ 	mtctr	r3
+Index: libffi/ChangeLog
+===================================================================
+--- a/src/libffi/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/libffi/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,26 @@
++2012-09-20  Jakub Jelinek  <jakub@redhat.com>
++
++	PR other/43620
++	* configure.ac (AM_INIT_AUTOMAKE): Add no-dist.
++	* Makefile.in: Regenerated.
++	* include/Makefile.in: Regenerated.
++	* man/Makefile.in: Regenerated.
++	* testsuite/Makefile.in: Regenerated.
++
++2012-03-22  David Edelsohn  <dje.gcc@gmail.com>
++
++	Backport from mainline:
++	2012-03-09  David Edelsohn  <dje.gcc@gmail.com>
++
++	* src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
++	change to return value of ffi_closure_helper_DARWIN and load type
++	from return type.
++
++	From Tom Honermann <tom.honermann@oracle.com>:
++	* src/powerpc/aix.S: Declare .ffi_prep_args.  Insert nops after
++	branch instructions.
++	* src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: libffi/testsuite/Makefile.in
+===================================================================
+--- a/src/libffi/testsuite/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libffi/testsuite/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = testsuite
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -52,10 +52,8 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ DEJATOOL = $(PACKAGE)
+ RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
+@@ -278,37 +276,6 @@
+ 	-l='$(DEJATOOL)'; for tool in $$l; do \
+ 	  rm -f $$tool.sum $$tool.log; \
+ 	done
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ 	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
+ check: check-am
+@@ -410,8 +377,8 @@
+ 
+ .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
+ 	clean-libtool distclean distclean-DEJAGNU distclean-generic \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-libtool dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libffi/configure.ac
+===================================================================
+--- a/src/libffi/configure.ac	(.../tags/gcc_4_6_3_release)
++++ b/src/libffi/configure.ac	(.../branches/gcc-4_6-branch)
+@@ -12,7 +12,7 @@
+ 
+ . ${srcdir}/configure.host
+ 
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([no-dist])
+ 
+ # The same as in boehm-gc and libstdc++. Have to borrow it from there.
+ # We must force CC to /not/ be precious variables; otherwise
+Index: libffi/man/Makefile.in
+===================================================================
+--- a/src/libffi/man/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libffi/man/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = man
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -52,7 +52,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -78,7 +77,6 @@
+ am__installdirs = "$(DESTDIR)$(man3dir)"
+ NROFF = nroff
+ MANS = $(man_MANS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
+@@ -292,50 +290,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@list='$(MANS)'; if test -n "$$list"; then \
+-	  list=`for p in $$list; do \
+-	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+-	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+-	  if test -n "$$list" && \
+-	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+-	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+-	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+-	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+-	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+-	    exit 1; \
+-	  else :; fi; \
+-	else :; fi
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(MANS)
+@@ -439,16 +393,16 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-man3 \
+-	install-pdf install-pdf-am install-ps install-ps-am \
+-	install-strip installcheck installcheck-am installdirs \
+-	maintainer-clean maintainer-clean-generic mostlyclean \
+-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+-	uninstall uninstall-am uninstall-man uninstall-man3
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-man3 install-pdf \
++	install-pdf-am install-ps install-ps-am install-strip \
++	installcheck installcheck-am installdirs maintainer-clean \
++	maintainer-clean-generic mostlyclean mostlyclean-generic \
++	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
++	uninstall-man uninstall-man3
+ 
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+Index: libjava/configure.ac
+===================================================================
+--- a/src/libjava/configure.ac	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/configure.ac	(.../branches/gcc-4_6-branch)
+@@ -886,14 +886,9 @@
+         SYSTEMSPEC="-lunicows $SYSTEMSPEC"
+       fi
+     ;;
+-    *-*-darwin9*)
++    *-*-darwin[[912]]*)
+       SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
+     ;;
+-    *-*-darwin[[12]]*)
+-      # Something is incompatible with pie, would be nice to fix it and
+-      # remove -no_pie.  PR49461
+-      SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
+-    ;;
+     *)
+       SYSTEMSPEC=
+     ;;
+Index: libjava/classpath/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,25 +35,15 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = .
+-DIST_COMMON = README $(am__configure_deps) $(srcdir)/../../compile \
+-	$(srcdir)/../../config.guess $(srcdir)/../../config.sub \
+-	$(srcdir)/../../install-sh $(srcdir)/../../ltmain.sh \
+-	$(srcdir)/../../missing $(srcdir)/../../mkinstalldirs \
+-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(top_srcdir)/configure \
++DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
++	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(top_srcdir)/configure $(am__configure_deps) \
++	$(srcdir)/../../mkinstalldirs \
+ 	$(top_srcdir)/gnu/classpath/Configuration.java.in \
+ 	$(top_srcdir)/gnu/java/security/Configuration.java.in \
+ 	$(top_srcdir)/resource/META-INF/services/java.util.prefs.PreferencesFactory.in \
+ 	$(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in \
+-	$(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in \
+-	../../ABOUT-NLS ../../COPYING ../../COPYING.LIB \
+-	../../ChangeLog ../../README ../../compile ../../config.guess \
+-	../../config.rpath ../../config.sub ../../depcomp \
+-	../../install-sh ../../ltmain.sh ../../missing \
+-	../../mkinstalldirs ../../ylwrap AUTHORS COPYING ChangeLog \
+-	INSTALL NEWS TODO compile config.guess config.rpath config.sub \
+-	depcomp install-sh ltcf-c.sh ltcf-cxx.sh ltcf-gcj.sh ltconfig \
+-	ltmain.sh missing mkinstalldirs
++	$(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -92,7 +82,6 @@
+ 	resource/META-INF/services/javax.sound.sampled.spi.MixerProvider
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ MULTISRCTOP = 
+ MULTIBUILDTOP = 
+ MULTIDIRS = 
+@@ -109,46 +98,9 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir dist dist-all distcheck
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+-  { test ! -d "$(distdir)" \
+-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+-         && rm -fr "$(distdir)"; }; }
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-distuninstallcheck_listfiles = find . -type f -print
+-distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -582,185 +534,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	$(am__remove_distdir)
+-	test -d "$(distdir)" || mkdir "$(distdir)"
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-hook
+-	-test -n "$(am__skip_mode_fix)" \
+-	|| find "$(distdir)" -type d ! -perm -755 \
+-		-exec chmod u+rwx,go+rx {} \; -o \
+-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+-	|| chmod -R a+r "$(distdir)"
+-dist-gzip: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-dist-bzip2: distdir
+-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+-	$(am__remove_distdir)
+-
+-dist-lzma: distdir
+-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+-	$(am__remove_distdir)
+-
+-dist-xz: distdir
+-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+-	$(am__remove_distdir)
+-
+-dist-tarZ: distdir
+-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+-	$(am__remove_distdir)
+-
+-dist-shar: distdir
+-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+-	$(am__remove_distdir)
+-
+-dist-zip: distdir
+-	-rm -f $(distdir).zip
+-	zip -rq $(distdir).zip $(distdir)
+-	$(am__remove_distdir)
+-
+-dist dist-all: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-# This target untars the dist file and tries a VPATH configuration.  Then
+-# it guarantees that the distribution is self-contained by making another
+-# tarfile.
+-distcheck: dist
+-	case '$(DIST_ARCHIVES)' in \
+-	*.tar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+-	*.tar.bz2*) \
+-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+-	*.tar.lzma*) \
+-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+-	*.tar.xz*) \
+-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+-	*.tar.Z*) \
+-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+-	*.shar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+-	*.zip*) \
+-	  unzip $(distdir).zip ;;\
+-	esac
+-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+-	mkdir $(distdir)/_build
+-	mkdir $(distdir)/_inst
+-	chmod a-w $(distdir)
+-	test -d $(distdir)/_build || exit 0; \
+-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+-	  && am__cwd=`pwd` \
+-	  && $(am__cd) $(distdir)/_build \
+-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+-	    $(DISTCHECK_CONFIGURE_FLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+-	  && $(MAKE) $(AM_MAKEFLAGS) check \
+-	  && $(MAKE) $(AM_MAKEFLAGS) install \
+-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+-	        distuninstallcheck \
+-	  && chmod -R a-w "$$dc_install_base" \
+-	  && ({ \
+-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+-	  && rm -rf "$$dc_destdir" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+-	  && rm -rf $(DIST_ARCHIVES) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+-	  && cd "$$am__cwd" \
+-	  || exit 1
+-	$(am__remove_distdir)
+-	@(echo "$(distdir) archives ready for distribution: "; \
+-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+-distuninstallcheck:
+-	@$(am__cd) '$(distuninstallcheck_dir)' \
+-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+-	   || { echo "ERROR: files left after uninstall:" ; \
+-	        if test -n "$(DESTDIR)"; then \
+-	          echo "  (check DESTDIR support)"; \
+-	        fi ; \
+-	        $(distuninstallcheck_listfiles) ; \
+-	        exit 1; } >&2
+-distcleancheck: distclean
+-	@if test '$(srcdir)' = . ; then \
+-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+-	  exit 1 ; \
+-	fi
+-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+-	  || { echo "ERROR: files left in build directory after distclean:" ; \
+-	       $(distcleancheck_listfiles) ; \
+-	       exit 1; } >&2
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile all-multi
+@@ -869,20 +642,17 @@
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ 	all all-am all-multi am--refresh check check-am clean \
+ 	clean-generic clean-libtool clean-multi ctags ctags-recursive \
+-	dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzma \
+-	dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+-	distclean-generic distclean-libtool distclean-multi \
+-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-multi \
+-	install-pdf install-pdf-am install-ps install-ps-am \
+-	install-strip installcheck installcheck-am installdirs \
+-	installdirs-am maintainer-clean maintainer-clean-generic \
+-	maintainer-clean-multi mostlyclean mostlyclean-generic \
+-	mostlyclean-libtool mostlyclean-multi pdf pdf-am ps ps-am tags \
+-	tags-recursive uninstall uninstall-am
++	distclean distclean-generic distclean-libtool distclean-multi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
++	install-dvi-am install-exec install-exec-am install-html \
++	install-html-am install-info install-info-am install-man \
++	install-multi install-pdf install-pdf-am install-ps \
++	install-ps-am install-strip installcheck installcheck-am \
++	installdirs installdirs-am maintainer-clean \
++	maintainer-clean-generic maintainer-clean-multi mostlyclean \
++	mostlyclean-generic mostlyclean-libtool mostlyclean-multi pdf \
++	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+ 
+ 
+ native: lib
+Index: libjava/classpath/scripts/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/scripts/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/scripts/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,8 +35,8 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = scripts
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/check_jni_methods.sh.in $(srcdir)/classpath.spec.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(srcdir)/classpath.spec.in $(srcdir)/check_jni_methods.sh.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -69,8 +69,6 @@
+ CONFIG_CLEAN_FILES = classpath.spec check_jni_methods.sh
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -331,37 +329,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -460,13 +427,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/resource/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/resource/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/resource/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = resource
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -69,7 +69,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -93,7 +92,6 @@
+   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+ am__installdirs = "$(DESTDIR)$(loggingdir)" "$(DESTDIR)$(securitydir)"
+ DATA = $(logging_DATA) $(security_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -393,37 +391,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(DATA)
+@@ -525,17 +492,17 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-loggingDATA install-man \
+-	install-pdf install-pdf-am install-ps install-ps-am \
+-	install-securityDATA install-strip installcheck \
+-	installcheck-am installdirs maintainer-clean \
+-	maintainer-clean-generic mostlyclean mostlyclean-generic \
+-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+-	uninstall-loggingDATA uninstall-securityDATA
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-loggingDATA install-man install-pdf \
++	install-pdf-am install-ps install-ps-am install-securityDATA \
++	install-strip installcheck installcheck-am installdirs \
++	maintainer-clean maintainer-clean-generic mostlyclean \
++	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++	uninstall uninstall-am uninstall-loggingDATA \
++	uninstall-securityDATA
+ 
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+Index: libjava/classpath/tools/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/tools/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/tools/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -44,13 +44,13 @@
+ @CREATE_WRAPPERS_TRUE@@INSTALL_BINARIES_FALSE@	$(am__EXEEXT_2)
+ @CREATE_GJDOC_TRUE@@CREATE_WRAPPERS_FALSE@am__append_2 = gjdoc
+ subdir = tools
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/gappletviewer.in $(srcdir)/gjar.in \
+-	$(srcdir)/gjarsigner.in $(srcdir)/gjavah.in $(srcdir)/gjdoc.in \
+-	$(srcdir)/gkeytool.in $(srcdir)/gnative2ascii.in \
+-	$(srcdir)/gorbd.in $(srcdir)/grmic.in $(srcdir)/grmid.in \
+-	$(srcdir)/grmiregistry.in $(srcdir)/gserialver.in \
+-	$(srcdir)/gtnameserv.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(srcdir)/gappletviewer.in $(srcdir)/gjarsigner.in \
++	$(srcdir)/gkeytool.in $(srcdir)/gjar.in \
++	$(srcdir)/gnative2ascii.in $(srcdir)/gserialver.in \
++	$(srcdir)/grmiregistry.in $(srcdir)/gtnameserv.in \
++	$(srcdir)/gorbd.in $(srcdir)/grmid.in $(srcdir)/grmic.in \
++	$(srcdir)/gjavah.in $(srcdir)/gjdoc.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -96,7 +96,6 @@
+ @CREATE_WRAPPERS_TRUE@	$(am__EXEEXT_1)
+ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
+ PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+-am__gappletviewer_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gappletviewer_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gappletviewer-toolwrapper.$(OBJEXT)
+ gappletviewer_OBJECTS = $(am_gappletviewer_OBJECTS)
+@@ -104,14 +103,12 @@
+ gappletviewer_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gappletviewer_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gjar_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gjar_OBJECTS = gjar-toolwrapper.$(OBJEXT)
+ gjar_OBJECTS = $(am_gjar_OBJECTS)
+ gjar_LDADD = $(LDADD)
+ gjar_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gjar_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__gjarsigner_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gjarsigner_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gjarsigner-toolwrapper.$(OBJEXT)
+ gjarsigner_OBJECTS = $(am_gjarsigner_OBJECTS)
+@@ -119,7 +116,6 @@
+ gjarsigner_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gjarsigner_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gjavah_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gjavah_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gjavah-toolwrapper.$(OBJEXT)
+ gjavah_OBJECTS = $(am_gjavah_OBJECTS)
+@@ -127,14 +123,12 @@
+ gjavah_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gjavah_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__gjdoc_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gjdoc_OBJECTS = gjdoc-toolwrapper.$(OBJEXT)
+ gjdoc_OBJECTS = $(am_gjdoc_OBJECTS)
+ gjdoc_LDADD = $(LDADD)
+ gjdoc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gjdoc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__gkeytool_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gkeytool_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gkeytool-toolwrapper.$(OBJEXT)
+ gkeytool_OBJECTS = $(am_gkeytool_OBJECTS)
+@@ -142,7 +136,6 @@
+ gkeytool_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gkeytool_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__gnative2ascii_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gnative2ascii_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gnative2ascii-toolwrapper.$(OBJEXT)
+ gnative2ascii_OBJECTS = $(am_gnative2ascii_OBJECTS)
+@@ -150,28 +143,24 @@
+ gnative2ascii_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gnative2ascii_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gorbd_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gorbd_OBJECTS = gorbd-toolwrapper.$(OBJEXT)
+ gorbd_OBJECTS = $(am_gorbd_OBJECTS)
+ gorbd_LDADD = $(LDADD)
+ gorbd_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gorbd_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__grmic_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_grmic_OBJECTS = grmic-toolwrapper.$(OBJEXT)
+ grmic_OBJECTS = $(am_grmic_OBJECTS)
+ grmic_LDADD = $(LDADD)
+ grmic_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(grmic_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__grmid_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_grmid_OBJECTS = grmid-toolwrapper.$(OBJEXT)
+ grmid_OBJECTS = $(am_grmid_OBJECTS)
+ grmid_LDADD = $(LDADD)
+ grmid_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(grmid_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__grmiregistry_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_grmiregistry_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	grmiregistry-toolwrapper.$(OBJEXT)
+ grmiregistry_OBJECTS = $(am_grmiregistry_OBJECTS)
+@@ -179,7 +168,6 @@
+ grmiregistry_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(grmiregistry_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gserialver_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gserialver_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gserialver-toolwrapper.$(OBJEXT)
+ gserialver_OBJECTS = $(am_gserialver_OBJECTS)
+@@ -187,7 +175,6 @@
+ gserialver_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gserialver_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gtnameserv_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gtnameserv_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gtnameserv-toolwrapper.$(OBJEXT)
+ gtnameserv_OBJECTS = $(am_gtnameserv_OBJECTS)
+@@ -235,17 +222,9 @@
+ 	$(gkeytool_SOURCES) $(gnative2ascii_SOURCES) $(gorbd_SOURCES) \
+ 	$(grmic_SOURCES) $(grmid_SOURCES) $(grmiregistry_SOURCES) \
+ 	$(gserialver_SOURCES) $(gtnameserv_SOURCES)
+-DIST_SOURCES = $(am__gappletviewer_SOURCES_DIST) \
+-	$(am__gjar_SOURCES_DIST) $(am__gjarsigner_SOURCES_DIST) \
+-	$(am__gjavah_SOURCES_DIST) $(am__gjdoc_SOURCES_DIST) \
+-	$(am__gkeytool_SOURCES_DIST) $(am__gnative2ascii_SOURCES_DIST) \
+-	$(am__gorbd_SOURCES_DIST) $(am__grmic_SOURCES_DIST) \
+-	$(am__grmid_SOURCES_DIST) $(am__grmiregistry_SOURCES_DIST) \
+-	$(am__gserialver_SOURCES_DIST) $(am__gtnameserv_SOURCES_DIST)
+ DATA = $(noinst_DATA)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -1199,40 +1178,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-hook
+ check-am: all-am
+ check: $(BUILT_SOURCES)
+ 	$(MAKE) $(AM_MAKEFLAGS) check-am
+@@ -1343,9 +1288,9 @@
+ 
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ 	clean-generic clean-libtool clean-local clean-noinstPROGRAMS \
+-	ctags dist-hook distclean distclean-compile distclean-generic \
+-	distclean-libtool distclean-tags distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-binPROGRAMS \
++	ctags distclean distclean-compile distclean-generic \
++	distclean-libtool distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-binPROGRAMS \
+ 	install-binSCRIPTS install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+Index: libjava/classpath/configure.ac
+===================================================================
+--- a/src/libjava/classpath/configure.ac	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/configure.ac	(.../branches/gcc-4_6-branch)
+@@ -75,7 +75,7 @@
+ AC_SUBST(CLASSPATH_CONVENIENCE)
+ 
+ AC_PREREQ(2.64)
+-AM_INIT_AUTOMAKE([1.9.0 gnu std-options tar-ustar -Wno-portability])
++AM_INIT_AUTOMAKE([1.9.0 gnu std-options tar-ustar no-dist -Wno-portability])
+ AC_CONFIG_HEADERS([include/config.h])
+ AC_PREFIX_DEFAULT(/usr/local/classpath)
+ 
+Index: libjava/classpath/doc/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/doc/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/doc/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = doc
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in texinfo.tex
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,7 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ INFO_DEPS = cp-tools.info
+ am__TEXINFO_TEX_DIR = $(srcdir)/../../gcc/doc/include
+ DVIS = cp-tools.dvi
+@@ -116,37 +115,10 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -756,81 +728,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@list='$(MANS)'; if test -n "$$list"; then \
+-	  list=`for p in $$list; do \
+-	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+-	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+-	  if test -n "$$list" && \
+-	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+-	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+-	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+-	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+-	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+-	    exit 1; \
+-	  else :; fi; \
+-	else :; fi
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-info
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile $(INFO_DEPS) $(MANS) all-local
+@@ -1020,18 +917,18 @@
+ 	all all-am all-local check check-am clean clean-aminfo \
+ 	clean-generic clean-libtool ctags ctags-recursive dist-info \
+ 	distclean distclean-generic distclean-libtool distclean-tags \
+-	distdir dvi dvi-am html html-am info info-am install \
+-	install-am install-data install-data-am install-dvi \
+-	install-dvi-am install-exec install-exec-am install-html \
+-	install-html-am install-info install-info-am install-man \
+-	install-man1 install-pdf install-pdf-am install-ps \
+-	install-ps-am install-strip installcheck installcheck-am \
+-	installdirs installdirs-am maintainer-clean \
+-	maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
+-	mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool pdf \
+-	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+-	uninstall-dvi-am uninstall-html-am uninstall-info-am \
+-	uninstall-man uninstall-man1 uninstall-pdf-am uninstall-ps-am
++	dvi dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-dvi install-dvi-am \
++	install-exec install-exec-am install-html install-html-am \
++	install-info install-info-am install-man install-man1 \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip installcheck installcheck-am installdirs \
++	installdirs-am maintainer-clean maintainer-clean-aminfo \
++	maintainer-clean-generic mostlyclean mostlyclean-aminfo \
++	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++	tags tags-recursive uninstall uninstall-am uninstall-dvi-am \
++	uninstall-html-am uninstall-info-am uninstall-man \
++	uninstall-man1 uninstall-pdf-am uninstall-ps-am
+ 
+ 
+ .texinfo.dvi:
+Index: libjava/classpath/doc/api/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/doc/api/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/doc/api/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = doc/api
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -69,9 +69,7 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ DATA = $(noinst_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -330,37 +328,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(DATA)
+@@ -459,16 +426,16 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	clean-local distclean distclean-generic distclean-libtool \
+-	distdir dvi dvi-am html html-am info info-am install \
+-	install-am install-data install-data-am install-data-local \
+-	install-dvi install-dvi-am install-exec install-exec-am \
+-	install-html install-html-am install-info install-info-am \
+-	install-man install-pdf install-pdf-am install-ps \
+-	install-ps-am install-strip installcheck installcheck-am \
+-	installdirs maintainer-clean maintainer-clean-generic \
+-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+-	ps ps-am uninstall uninstall-am uninstall-local
++	clean-local distclean distclean-generic distclean-libtool dvi \
++	dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-data-local install-dvi \
++	install-dvi-am install-exec install-exec-am install-html \
++	install-html-am install-info install-info-am install-man \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip installcheck installcheck-am installdirs \
++	maintainer-clean maintainer-clean-generic mostlyclean \
++	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++	uninstall uninstall-am uninstall-local
+ 
+ 
+ @CREATE_API_DOCS_TRUE@install-data-local:
+Index: libjava/classpath/external/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/external/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,7 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ 	html-recursive info-recursive install-data-recursive \
+ 	install-dvi-recursive install-exec-recursive \
+@@ -79,37 +78,10 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -496,65 +468,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile
+@@ -657,13 +570,13 @@
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ 	all all-am check check-am clean clean-generic clean-libtool \
+ 	ctags ctags-recursive distclean distclean-generic \
+-	distclean-libtool distclean-tags distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip installcheck \
+-	installcheck-am installdirs installdirs-am maintainer-clean \
++	distclean-libtool distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-data install-data-am \
++	install-dvi install-dvi-am install-exec install-exec-am \
++	install-html install-html-am install-info install-info-am \
++	install-man install-pdf install-pdf-am install-ps \
++	install-ps-am install-strip installcheck installcheck-am \
++	installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ 	uninstall uninstall-am
+Index: libjava/classpath/external/jsr166/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/jsr166/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/external/jsr166/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external/jsr166
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,8 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -398,37 +396,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -527,13 +494,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/external/sax/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/sax/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/external/sax/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external/sax
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,8 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -366,37 +364,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -495,13 +462,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/external/w3c_dom/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/w3c_dom/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/external/w3c_dom/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external/w3c_dom
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,8 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -473,37 +471,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -602,13 +569,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/external/relaxngDatatype/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/relaxngDatatype/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/external/relaxngDatatype/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external/relaxngDatatype
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,8 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -338,37 +336,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -467,13 +434,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/include/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/include/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/include/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = include
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ 	$(srcdir)/config.h.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+@@ -69,8 +69,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -500,37 +498,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ @CREATE_JNI_HEADERS_FALSE@all-local:
+@@ -632,8 +599,8 @@
+ 
+ .PHONY: all all-am all-local check check-am clean clean-generic \
+ 	clean-libtool distclean distclean-generic distclean-hdr \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-libtool dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/jni/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,7 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ 	html-recursive info-recursive install-data-recursive \
+ 	install-dvi-recursive install-exec-recursive \
+@@ -79,36 +78,9 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -510,65 +482,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile all-local
+@@ -671,16 +584,16 @@
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ 	all all-am all-local check check-am clean clean-generic \
+ 	clean-libtool ctags ctags-recursive distclean \
+-	distclean-generic distclean-libtool distclean-tags distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs installdirs-am \
+-	maintainer-clean maintainer-clean-generic mostlyclean \
+-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+-	tags tags-recursive uninstall uninstall-am
++	distclean-generic distclean-libtool distclean-tags dvi dvi-am \
++	html html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs installdirs-am maintainer-clean \
++	maintainer-clean-generic mostlyclean mostlyclean-generic \
++	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
++	uninstall uninstall-am
+ 
+ 
+ all-local:
+Index: libjava/classpath/native/jni/classpath/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/classpath/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/classpath/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/classpath
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -86,10 +86,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libclasspath_la_SOURCES)
+-DIST_SOURCES = $(libclasspath_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -445,37 +443,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -581,8 +548,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/jni/gstreamer-peer/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/gstreamer-peer/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/gstreamer-peer/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/gstreamer-peer
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -114,10 +114,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgstreamerpeer_la_SOURCES)
+-DIST_SOURCES = $(libgstreamerpeer_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -514,37 +512,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -653,8 +620,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/midi-dssi/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/midi-dssi/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/midi-dssi/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/midi-dssi
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -114,10 +114,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgjsmdssi_la_SOURCES)
+-DIST_SOURCES = $(libgjsmdssi_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -496,37 +494,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -635,8 +602,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/gconf-peer/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/gconf-peer/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/gconf-peer/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/gconf-peer
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -112,10 +112,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgconfpeer_la_SOURCES)
+-DIST_SOURCES = $(libgconfpeer_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -489,37 +487,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -628,8 +595,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-io/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-io/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/java-io/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-io
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -111,10 +111,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavaio_la_SOURCES)
+-DIST_SOURCES = $(libjavaio_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -494,37 +492,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -633,8 +600,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/native-lib/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/native-lib/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/native-lib/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/native-lib
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -86,10 +86,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libclasspathnative_la_SOURCES)
+-DIST_SOURCES = $(libclasspathnative_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -448,37 +446,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -584,8 +551,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/jni/java-util/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-util/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/java-util/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-util
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -108,10 +108,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavautil_la_SOURCES)
+-DIST_SOURCES = $(libjavautil_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -483,37 +481,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -622,8 +589,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-lang/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-lang/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/java-lang/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-lang
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -123,12 +123,8 @@
+ SOURCES = $(libjavalang_la_SOURCES) \
+ 	$(libjavalangmanagement_la_SOURCES) \
+ 	$(libjavalangreflect_la_SOURCES)
+-DIST_SOURCES = $(libjavalang_la_SOURCES) \
+-	$(libjavalangmanagement_la_SOURCES) \
+-	$(libjavalangreflect_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -521,37 +517,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -660,8 +625,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/midi-alsa/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/midi-alsa/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/midi-alsa/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/midi-alsa
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -114,10 +114,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgjsmalsa_la_SOURCES)
+-DIST_SOURCES = $(libgjsmalsa_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -496,37 +494,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -635,8 +602,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-nio/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-nio/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/java-nio/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-nio
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -119,10 +119,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavanio_la_SOURCES)
+-DIST_SOURCES = $(libjavanio_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -519,37 +517,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -658,8 +625,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-net/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-net/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/java-net/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-net
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -96,10 +96,6 @@
+ 	$(top_builddir)/native/jni/classpath/jcl.lo \
+ 	$(top_builddir)/native/jni/native-lib/libclasspathnative.la \
+ 	$(am__DEPENDENCIES_1)
+-am__libjavanet_la_SOURCES_DIST = javanet.c javanet.h \
+-	java_net_VMInetAddress.c java_net_VMNetworkInterface.c \
+-	java_net_VMURLConnection.c gnu_java_net_VMPlainSocketImpl.c \
+-	gnu_java_net_local_LocalSocketImpl.c local.c local.h
+ @ENABLE_LOCAL_SOCKETS_FALSE@am__objects_1 = gnu_java_net_local_LocalSocketImpl.lo
+ @ENABLE_LOCAL_SOCKETS_TRUE@am__objects_1 = gnu_java_net_local_LocalSocketImpl.lo \
+ @ENABLE_LOCAL_SOCKETS_TRUE@	local.lo
+@@ -121,10 +117,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavanet_la_SOURCES)
+-DIST_SOURCES = $(am__libjavanet_la_SOURCES_DIST)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -518,37 +512,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -657,8 +620,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-math/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-math/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/java-math/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-math
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -112,10 +112,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavamath_la_SOURCES)
+-DIST_SOURCES = $(libjavamath_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -487,37 +485,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -626,8 +593,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/xmlj/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/xmlj/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/xmlj/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/xmlj
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -110,10 +110,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libxmlj_la_SOURCES)
+-DIST_SOURCES = $(libxmlj_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -511,37 +509,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -650,8 +617,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/qt-peer/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/qt-peer/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/qt-peer/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -39,7 +39,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/qt-peer
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -116,10 +116,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libqtpeer_la_SOURCES) $(nodist_libqtpeer_la_SOURCES)
+-DIST_SOURCES = $(libqtpeer_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -577,37 +575,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: $(BUILT_SOURCES)
+ 	$(MAKE) $(AM_MAKEFLAGS) check-am
+@@ -717,8 +684,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/jni/gtk-peer/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/gtk-peer/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jni/gtk-peer/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/gtk-peer
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -150,10 +150,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgtkpeer_la_SOURCES)
+-DIST_SOURCES = $(libgtkpeer_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -620,37 +618,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -759,8 +726,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,7 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ 	html-recursive info-recursive install-data-recursive \
+ 	install-dvi-recursive install-exec-recursive \
+@@ -79,36 +78,9 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -498,65 +470,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile
+@@ -659,13 +572,13 @@
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ 	all all-am check check-am clean clean-generic clean-libtool \
+ 	ctags ctags-recursive distclean distclean-generic \
+-	distclean-libtool distclean-tags distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip installcheck \
+-	installcheck-am installdirs installdirs-am maintainer-clean \
++	distclean-libtool distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-data install-data-am \
++	install-dvi install-dvi-am install-exec install-exec-am \
++	install-html install-html-am install-info install-info-am \
++	install-man install-pdf install-pdf-am install-ps \
++	install-ps-am install-strip installcheck installcheck-am \
++	installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ 	uninstall uninstall-am
+Index: libjava/classpath/native/jawt/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jawt/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/jawt/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jawt
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -112,10 +112,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjawt_la_SOURCES)
+-DIST_SOURCES = $(libjawt_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -492,37 +490,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -631,8 +598,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/fdlibm/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/fdlibm/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/fdlibm/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/fdlibm
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -95,10 +95,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libfdlibm_la_SOURCES)
+-DIST_SOURCES = $(libfdlibm_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -553,37 +551,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -689,8 +656,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/plugin/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/plugin/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/native/plugin/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/plugin
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -112,10 +112,8 @@
+ 	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgcjwebplugin_la_SOURCES)
+-DIST_SOURCES = $(libgcjwebplugin_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -497,37 +495,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -636,8 +603,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/lib/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/lib/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/lib/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,9 +36,9 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = lib
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/copy-vmresources.sh.in $(srcdir)/gen-classlist.sh.in \
+-	$(srcdir)/mkcollections.pl.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(srcdir)/mkcollections.pl.in $(srcdir)/gen-classlist.sh.in \
++	$(srcdir)/copy-vmresources.sh.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -72,9 +72,7 @@
+ 	copy-vmresources.sh
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ DATA = $(noinst_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -356,40 +354,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-hook
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(DATA)
+@@ -492,17 +456,16 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	clean-local dist-hook distclean distclean-generic \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am \
+-	install-data-local install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip installcheck \
+-	installcheck-am installdirs maintainer-clean \
+-	maintainer-clean-generic mostlyclean mostlyclean-generic \
+-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+-	uninstall-local
++	clean-local distclean distclean-generic distclean-libtool dvi \
++	dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-data-local install-dvi \
++	install-dvi-am install-exec install-exec-am install-html \
++	install-html-am install-info install-info-am install-man \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip installcheck installcheck-am installdirs \
++	maintainer-clean maintainer-clean-generic mostlyclean \
++	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++	uninstall uninstall-am uninstall-local
+ 
+ 
+ sinclude $(JAVA_DEPEND)
+Index: libjava/classpath/ChangeLog.gcj
+===================================================================
+--- a/src/libjava/classpath/ChangeLog.gcj	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/ChangeLog.gcj	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,42 @@
++2012-09-20  Jakub Jelinek  <jakub@redhat.com>
++
++	PR other/43620
++	* configure.ac (AM_INIT_AUTOMAKE): Add no-dist.
++	* Makefile.in: Regenerated.
++	* doc/Makefile.in: Regeneated.
++	* doc/api/Makefile.in: Regeneated.
++	* examples/Makefile.in: Regeneated.
++	* external/Makefile.in: Regeneated.
++	* external/jsr166/Makefile.in: Regeneated.
++	* external/relaxngDatatype/Makefile.in: Regeneated.
++	* external/sax/Makefile.in: Regeneated.
++	* external/w3c_dom/Makefile.in: Regeneated.
++	* include/Makefile.in: Regeneated.
++	* lib/Makefile.in: Regeneated.
++	* native/Makefile.in: Regeneated.
++	* native/fdlibm/Makefile.in: Regeneated.
++	* native/jawt/Makefile.in: Regeneated.
++	* native/jni/Makefile.in: Regeneated.
++	* native/jni/classpath/Makefile.in: Regeneated.
++	* native/jni/gconf-peer/Makefile.in: Regeneated.
++	* native/jni/gstreamer-peer/Makefile.in: Regeneated.
++	* native/jni/gtk-peer/Makefile.in: Regeneated.
++	* native/jni/java-io/Makefile.in: Regeneated.
++	* native/jni/java-lang/Makefile.in: Regeneated.
++	* native/jni/java-math/Makefile.in: Regeneated.
++	* native/jni/java-net/Makefile.in: Regeneated.
++	* native/jni/java-nio/Makefile.in: Regeneated.
++	* native/jni/java-util/Makefile.in: Regeneated.
++	* native/jni/midi-alsa/Makefile.in: Regeneated.
++	* native/jni/midi-dssi/Makefile.in: Regeneated.
++	* native/jni/native-lib/Makefile.in: Regeneated.
++	* native/jni/qt-peer/Makefile.in: Regeneated.
++	* native/jni/xmlj/Makefile.in: Regeneated.
++	* native/plugin/Makefile.in: Regeneated.
++	* resource/Makefile.in: Regeneated.
++	* scripts/Makefile.in: Regeneated.
++	* tools/Makefile.in: Regeneated.
++
+ 2011-11-29  Andreas Tobler  <andreast@fgznet.ch>
+ 
+ 	* config.rpath (ld_shlibs): Fix detection of FreeBSD-10 and up.
+Index: libjava/classpath/examples/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/examples/Makefile.in	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/classpath/examples/Makefile.in	(.../branches/gcc-4_6-branch)
+@@ -36,8 +36,8 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = examples
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/Makefile.java2d.in $(srcdir)/Makefile.jawt.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(srcdir)/Makefile.jawt.in $(srcdir)/Makefile.java2d.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -70,7 +70,6 @@
+ CONFIG_CLEAN_FILES = Makefile.jawt Makefile.java2d
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -94,7 +93,6 @@
+   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+ am__installdirs = "$(DESTDIR)$(exampledir)"
+ DATA = $(example_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -419,40 +417,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-hook
+ check-am: all-am
+ check: $(BUILT_SOURCES)
+ 	$(MAKE) $(AM_MAKEFLAGS) check-am
+@@ -557,17 +521,17 @@
+ .MAKE: all check install install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	clean-local dist-hook distclean distclean-generic \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am \
+-	install-data-local install-dvi install-dvi-am \
+-	install-exampleDATA install-exec install-exec-am install-html \
+-	install-html-am install-info install-info-am install-man \
+-	install-pdf install-pdf-am install-ps install-ps-am \
+-	install-strip installcheck installcheck-am installdirs \
+-	maintainer-clean maintainer-clean-generic mostlyclean \
+-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+-	uninstall uninstall-am uninstall-exampleDATA uninstall-local
++	clean-local distclean distclean-generic distclean-libtool dvi \
++	dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-data-local install-dvi \
++	install-dvi-am install-exampleDATA install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
++	maintainer-clean-generic mostlyclean mostlyclean-generic \
++	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
++	uninstall-exampleDATA uninstall-local
+ 
+ 
+ # Make sure all sources and icons are also installed so users can use them.
+Index: libjava/ChangeLog
+===================================================================
+--- a/src/libjava/ChangeLog	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/ChangeLog	(.../branches/gcc-4_6-branch)
+@@ -1,3 +1,13 @@
++2012-03-02  Jack Howarth  <howarth@bromo.med.uc.edu>
++
++	Backport from mainline
++	2012-02-23  Patrick Marlier  <patrick.marlier@gmail.com>
++       	    Jack Howarth  <howarth@bromo.med.uc.edu>
++
++	PR target/49461
++	* configure.ac (SYSTEMSPEC): No longer pass -no_pie for darwin11.
++	* configure: Regenerate.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+Index: libjava/configure
+===================================================================
+--- a/src/libjava/configure	(.../tags/gcc_4_6_3_release)
++++ b/src/libjava/configure	(.../branches/gcc-4_6-branch)
+@@ -19775,14 +19775,9 @@
+         SYSTEMSPEC="-lunicows $SYSTEMSPEC"
+       fi
+     ;;
+-    *-*-darwin9*)
++    *-*-darwin[912]*)
+       SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
+     ;;
+-    *-*-darwin[12]*)
+-      # Something is incompatible with pie, would be nice to fix it and
+-      # remove -no_pie.  PR49461
+-      SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
+-    ;;
+     *)
+       SYSTEMSPEC=
+     ;;
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-disable-static.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-disable-static.diff
@@ -0,0 +1,26 @@
+# DP: Disable building the static libjava.
+
+---
+ Makefile.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -53956,7 +53956,7 @@
+ 	rm -f no-such-file || : ; \
+ 	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+-	  --target=${target_alias} $${srcdiroption}  \
++	  --target=${target_alias} --disable-static $${srcdiroption}  \
+ 	  || exit 1
+ @endif target-libjava
+ 
+@@ -54870,7 +54870,7 @@
+ 	rm -f no-such-file || : ; \
+ 	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+-	  --target=${target_alias} $${srcdiroption}  \
++	  --target=${target_alias} --disable-static $${srcdiroption}  \
+ 	  || exit 1
+ @endif target-boehm-gc
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-multiarch.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-multiarch.diff
@@ -0,0 +1,72 @@
+# DP: Install libjava libraries to multiarch location
+
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -1593,6 +1593,10 @@
+       .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
+       *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
+     esac
++    multiarch=`$CC -print-multiarch`
++    if test -n "$multiarch"; then
++        toolexeclibdir=$toolexecmainlibdir/$multiarch
++    fi
+     ;;
+ esac
+ AC_SUBST(toolexecdir)
+@@ -1618,6 +1622,10 @@
+    dbexecdir='$(libdir)/'$multi_os_directory/$gcjsubdir
+    ;;
+ esac
++multiarch=`$CC -print-multiarch`
++if test -n "$multiarch"; then
++    dbexecdir='$(libdir)/'$multiarch/$gcjsubdir
++fi
+ AC_SUBST(dbexecdir)
+ AC_SUBST(gcjsubdir)
+ 
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -371,7 +371,7 @@
+ 	-DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \
+ 	-DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \
+ 	-DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \
+-	-DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \
++	-DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/$(MULTIARCH_DIR)/gcj-4.6/$(db_name)\"" \
+ 	-DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\""
+ 
+ AM_GCJFLAGS = \
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -1018,7 +1018,7 @@
+ 	-DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \
+ 	-DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \
+ 	-DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \
+-	-DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \
++	-DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/$(MULTIARCH_DIR)/gcj-4.6/$(db_name)\"" \
+ 	-DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\""
+ 
+ AM_GCJFLAGS = \
+--- a/src/libjava/classpath/m4/acinclude.m4
++++ b/src/libjava/classpath/m4/acinclude.m4
+@@ -252,6 +252,10 @@
+     .) toolexeclibdir=${libdir} ;; # Avoid trailing /.
+     *) toolexeclibdir=${libdir}/${multi_os_directory} ;;
+   esac
++  multiarch=`$CC -print-multiarch`
++  if test -n "$multiarch"; then
++    toolexeclibdir=${libdir}/${multiarch}
++  fi
+   AC_SUBST(toolexeclibdir)
+ ])
+ 
+--- a/src/libjava/classpath/configure.ac
++++ b/src/libjava/classpath/configure.ac
+@@ -16,6 +16,8 @@
+ 
+ AC_CANONICAL_TARGET
+ 
++dnl dummy change to run autoconf
++
+ dnl GCJ LOCAL
+ AC_ARG_ENABLE(java-maintainer-mode,
+ 	AS_HELP_STRING([--enable-java-maintainer-mode],
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-ice-apport.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-ice-apport.diff
@@ -0,0 +1,22 @@
+# DP: Report an ICE to apport (if apport is available
+# DP: and the environment variable GCC_NOAPPORT is not set)
+
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -6106,6 +6106,16 @@
+ 	      fnotice (stderr, "Preprocessed source stored into %s file,"
+ 			       " please attach this to your bugreport.\n",
+ 		       temp_filenames[attempt * 2]);
++	      if (!getenv ("GCC_NOAPPORT")
++		  && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK))
++		{
++		  char *cmd = XNEWVEC (char, 50 + strlen (temp_filenames[attempt * 2])
++				             + strlen (new_argv[0]));
++		  sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s",
++			   new_argv[0], temp_filenames[attempt * 2]);
++		  system (cmd);
++		  free (cmd);
++		}
+ 	      /* Make sure it is not deleted.  */
+ 	      free (temp_filenames[attempt * 2]);
+ 	      temp_filenames[attempt * 2] = NULL;
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-rpath.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-rpath.diff
@@ -0,0 +1,29 @@
+# DP: - Link ecjx with -rpath $(dbexecdir)
+
+---
+ libjava/Makefile.am |    2 +-
+ libjava/Makefile.in |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -888,7 +888,7 @@ else !ENABLE_SHARED
+ ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) -fbootclasspath=$(BOOTCLASSPATH)
+ endif !ENABLE_SHARED
+ 
+-ecjx_LDADD = -L$(here)/.libs $(extra_ldflags)
++ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) -rpath $(dbexecdir)
+ ecjx_DEPENDENCIES = libgcj.la libgcj.spec
+ if USE_LIBGCJ_BC
+ ecjx_DEPENDENCIES += libgcj_bc.la
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -8360,7 +8360,7 @@ ECJX_BASE_FLAGS = -findirect-dispatch \
+ @NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR)
+ @NATIVE_FALSE@ecjx_LDADD = 
+ @NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) \
+-@NATIVE_TRUE@	$(am__append_21)
++@NATIVE_TRUE@	$(am__append_21) -rpath $(dbexecdir)
+ @NATIVE_FALSE@ecjx_DEPENDENCIES = 
+ @NATIVE_TRUE@ecjx_DEPENDENCIES = libgcj.la libgcj.spec \
+ @NATIVE_TRUE@	$(am__append_20)
--- gcc-4.6-4.6.3.orig/debian/patches/arm-no-va_list-warn.diff
+++ gcc-4.6-4.6.3/debian/patches/arm-no-va_list-warn.diff
@@ -0,0 +1,31 @@
+# DP: Don't warn anymore that 4.4 has changed the `va_list' mangling.
+
+gcc/
+
+2012-09-21  Matthias Klose  <doko@ubuntu.com>
+
+	* config/arm/arm.c (arm_mangle_type): Don't warn anymore that 
+	4.4 has changed the `va_list' mangling.
+
+Index: gcc/config/arm/arm.c
+===================================================================
+--- a/src/gcc/config/arm/arm.c	(revision 191609)
++++ b/src/gcc/config/arm/arm.c	(revision 191610)
+@@ -25072,16 +25072,7 @@
+      has to be managled as if it is in the "std" namespace.  */
+   if (TARGET_AAPCS_BASED
+       && lang_hooks.types_compatible_p (CONST_CAST_TREE (type), va_list_type))
+-    {
+-      static bool warned;
+-      if (!warned && warn_psabi && !in_system_header)
+-	{
+-	  warned = true;
+-	  inform (input_location,
+-		  "the mangling of %<va_list%> has changed in GCC 4.4");
+-	}
+-      return "St9__va_list";
+-    }
++    return "St9__va_list";
+ 
+   /* Half-precision float.  */
+   if (TREE_CODE (type) == REAL_TYPE && TYPE_PRECISION (type) == 16)
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-default-ssp.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-default-ssp.diff
@@ -0,0 +1,192 @@
+# DP: Turn on -fstack-protector by default for C, C++, ObjC, ObjC++.
+# DP: Build libgcc using -fno-stack-protector.
+
+---
+ gcc/Makefile.in        |    2 ++
+ gcc/cp/lang-specs.h    |    6 +++---
+ gcc/doc/invoke.texi    |    4 ++++
+ gcc/gcc.c              |   18 ++++++++++++++----
+ gcc/objc/lang-specs.h  |   10 +++++-----
+ gcc/objcp/lang-specs.h |    8 ++++----
+ 6 files changed, 32 insertions(+), 16 deletions(-)
+
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -603,6 +603,14 @@
+ #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
+ #endif
+ 
++#ifndef SSP_DEFAULT_SPEC
++#ifdef TARGET_LIBC_PROVIDES_SSP
++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}"
++#else
++#define SSP_DEFAULT_SPEC ""
++#endif
++#endif
++
+ #ifndef LINK_SSP_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector:}"
+@@ -699,6 +707,7 @@
+ static const char *cc1plus_spec = CC1PLUS_SPEC;
+ static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
+ static const char *link_ssp_spec = LINK_SSP_SPEC;
++static const char *ssp_default_spec = SSP_DEFAULT_SPEC;
+ static const char *asm_spec = ASM_SPEC;
+ static const char *asm_final_spec = ASM_FINAL_SPEC;
+ static const char *link_spec = LINK_SPEC;
+@@ -756,7 +765,7 @@
+ static const char *cpp_options =
+ "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+  %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\
+- %{undef} %{save-temps*:-fpch-preprocess}";
++ %{undef} %{save-temps*:-fpch-preprocess} %(ssp_default)";
+ 
+ /* This contains cpp options which are not passed when the preprocessor
+    output will be used by another program.  */
+@@ -931,9 +940,9 @@
+       %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
+ 	  %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
+ 	    cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
+-	  %(cc1_options)}\
++	  %(cc1_options) %(ssp_default)}\
+       %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
+-	  cc1 %(cpp_unique_options) %(cc1_options)}}}\
++	  cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\
+       %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1},
+   {"-",
+    "%{!E:%e-E or -x required when input is from standard input}\
+@@ -956,7 +965,7 @@
+                     %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
+   {".i", "@cpp-output", 0, 0, 0},
+   {"@cpp-output",
+-   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
++   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {".s", "@assembler", 0, 0, 0},
+   {"@assembler",
+    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
+@@ -1179,6 +1188,7 @@
+   INIT_STATIC_SPEC ("cc1plus",			&cc1plus_spec),
+   INIT_STATIC_SPEC ("link_gcc_c_sequence",	&link_gcc_c_sequence_spec),
+   INIT_STATIC_SPEC ("link_ssp",			&link_ssp_spec),
++  INIT_STATIC_SPEC ("ssp_default",		&ssp_default_spec),
+   INIT_STATIC_SPEC ("endfile",			&endfile_spec),
+   INIT_STATIC_SPEC ("link",			&link_spec),
+   INIT_STATIC_SPEC ("lib",			&lib_spec),
+--- a/src/gcc/cp/lang-specs.h
++++ b/src/gcc/cp/lang-specs.h
+@@ -47,7 +47,7 @@
+ 		%(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+ 	%{!fsyntax-only:%{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\
+         %W{o*:--output-pch=%*}}%V}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+@@ -58,11 +58,11 @@
+ 		%(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+        %{!fsyntax-only:%(invoke_as)}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {".ii", "@c++-cpp-output", 0, 0, 0},
+   {"@c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1plus -fpreprocessed %i %(cc1_options) %2\
++    cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/src/gcc/params.def
++++ b/src/gcc/params.def
+@@ -664,7 +664,7 @@
+ DEFPARAM (PARAM_SSP_BUFFER_SIZE,
+ 	  "ssp-buffer-size",
+ 	  "The lower bound for a buffer to be considered for stack smashing protection",
+-	  8, 1, 0)
++	  4, 1, 0)
+ 
+ /* When we thread through a block we have to make copies of the
+    statements within the block.  Clearly for large blocks the code
+--- a/src/gcc/objc/lang-specs.h
++++ b/src/gcc/objc/lang-specs.h
+@@ -30,9 +30,9 @@
+ 	%{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+ 	%{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+-	    cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\
++	    cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\
+ 	%{!save-temps*:%{!no-integrated-cpp:\
+-	    cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\
++	    cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}}\
+         %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objective-c-header",
+      "%{E|M|MM:cc1obj -E %{traditional|traditional-cpp:-traditional-cpp}\
+@@ -41,18 +41,18 @@
+ 	%{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+ 	%{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+-	    cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++	    cc1obj -fpreprocessed %b.mi %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                         -o %g.s %{!o*:--output-pch=%i.gch}\
+                         %W{o*:--output-pch=%*}%V}\
+ 	%{!save-temps*:%{!no-integrated-cpp:\
+-	    cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++	    cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                         -o %g.s %{!o*:--output-pch=%i.gch}\
+                         %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0},
+   {".mi", "@objective-c-cpp-output", 0, 0, 0},
+   {"@objective-c-cpp-output",
+-     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ 			     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objc-cpp-output",
+       "%nobjc-cpp-output is deprecated; please use objective-c-cpp-output instead\n\
+-       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ 			     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/src/gcc/objcp/lang-specs.h
++++ b/src/gcc/objcp/lang-specs.h
+@@ -36,7 +36,7 @@
+ 		%(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+         -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {"@objective-c++",
+@@ -46,16 +46,16 @@
+ 		%(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+        %{!fsyntax-only:%(invoke_as)}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {".mii", "@objective-c++-cpp-output", 0, 0, 0},
+   {"@objective-c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
++    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objc++-cpp-output",
+    "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output instead\n\
+     %{!M:%{!MM:%{!E:\
+-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
++    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -8193,6 +8193,10 @@
+ when a function is entered and then checked when the function exits.
+ If a guard check fails, an error message is printed and the program exits.
+ 
++NOTE: In Ubuntu 6.10 and later versions this option is enabled by default
++for C, C++, ObjC, ObjC++, if none of @option{-fno-stack-protector},
++@option{-nostdlib}, nor @option{-ffreestanding} are found.
++
+ @item -fstack-protector-all
+ @opindex fstack-protector-all
+ Like @option{-fstack-protector} except that all functions are protected.
--- gcc-4.6-4.6.3.orig/debian/patches/cross-include-trunk.diff
+++ gcc-4.6-4.6.3/debian/patches/cross-include-trunk.diff
@@ -0,0 +1,18 @@
+# DP: Set cross include path to .../include, not .../sys-include
+# DP: This should be a fix for famous limits.h issue
+
+---
+ gcc/configure.ac |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -764,7 +764,7 @@ AC_ARG_WITH(sysroot,
+ ], [
+  TARGET_SYSTEM_ROOT=
+  TARGET_SYSTEM_ROOT_DEFINE=
+- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
++ CROSS_SYSTEM_HEADER_DIR='/usr/$(target_noncanonical)/include'
+ ])
+ AC_SUBST(TARGET_SYSTEM_ROOT)
+ AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
--- gcc-4.6-4.6.3.orig/debian/patches/libffi-kfreebsd.diff
+++ gcc-4.6-4.6.3/debian/patches/libffi-kfreebsd.diff
@@ -0,0 +1,13 @@
+# DP: libffi:  Define FFI_MMAP_EXEC_WRIT on kfreebsd-*.
+
+--- a/src/libffi/configure.ac
++++ b/src/libffi/configure.ac
+@@ -313,7 +313,7 @@
+ fi
+ 
+ case "$target" in
+-     *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
++     *-apple-darwin10* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
+        AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
+                  [Cannot use malloc on this target, so, we revert to
+                    alternative means])
--- gcc-4.6-4.6.3.orig/debian/patches/libgomp-omp_h-multilib.diff
+++ gcc-4.6-4.6.3/debian/patches/libgomp-omp_h-multilib.diff
@@ -0,0 +1,19 @@
+# DP: Fix up omp.h for multilibs.
+
+2008-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
+
+--- a/src/libgomp/omp.h.in
++++ b/src/libgomp/omp.h.in
+@@ -39,8 +39,8 @@
+ 
+ typedef struct
+ {
+-  unsigned char _x[@OMP_NEST_LOCK_SIZE@] 
+-    __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
++  unsigned char _x[8 + sizeof (void *)] 
++    __attribute__((__aligned__(sizeof (void *))));
+ } omp_nest_lock_t;
+ #endif
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/arm-multilib-defaults.diff
+++ gcc-4.6-4.6.3/debian/patches/arm-multilib-defaults.diff
@@ -0,0 +1,103 @@
+# DP: Set MULTILIB_DEFAULTS for ARM multilib builds
+
+--- a/src/gcc/config.gcc
++++ a/src/gcc/config.gcc
+@@ -3013,10 +3013,18 @@
+ 		esac
+ 
+ 		case "$with_float" in
+-		"" \
+-		| soft | hard | softfp)
++		"")
+ 			# OK
+ 			;;
++		soft)
++			tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=0"
++			;;
++		softfp)
++			tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=1"
++			;;
++		hard)
++			tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=2"
++			;;
+ 		*)
+ 			echo "Unknown floating point type used in --with-float=$with_float" 1>&2
+ 			exit 1
+@@ -3060,6 +3068,9 @@
+ 		"" \
+ 		| arm | thumb )
+ 			#OK
++			if test "$with_mode" = thumb; then
++				tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1"
++			fi
+ 			;;
+ 		*)
+ 			echo "Unknown mode used in --with-mode=$with_mode"
+--- a/src/gcc/config/arm/linux-eabi.h
++++ b/src/gcc/config/arm/linux-eabi.h
+@@ -35,7 +35,21 @@
+    target hardware.  If you override this to use the hard-float ABI then
+    change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well.  */
+ #undef  TARGET_DEFAULT_FLOAT_ABI
++#ifdef TARGET_CONFIGURED_FLOAT_ABI
++#if TARGET_CONFIGURED_FLOAT_ABI == 2
++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard"
++#elif TARGET_CONFIGURED_FLOAT_ABI == 1
++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp"
++#else
+ #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft"
++#endif
++#else
++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft"
++#endif
+ 
+ /* We default to the "aapcs-linux" ABI so that enums are int-sized by
+    default.  */
+@@ -71,13 +85,43 @@
+ #undef  GLIBC_DYNAMIC_LINKER
+ #define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
+ #define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
++#ifdef TARGET_CONFIGURED_FLOAT_ABI
++#if TARGET_CONFIGURED_FLOAT_ABI == 2
++#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
++#else
+ #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
++#endif
++#else
++#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
++#endif
+ 
+ #define GLIBC_DYNAMIC_LINKER \
+    "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
+     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
+     %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
+ 
++/* Set the multilib defaults according the configuration, needed to
++   let gcc -print-multi-dir do the right thing.  */
++
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian"
++#else
++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian"
++#endif
++
++#ifndef TARGET_CONFIGURED_THUMB_MODE
++#define MULTILIB_DEFAULT_MODE "marm"
++#elif TARGET_CONFIGURED_THUMB_MODE == 1
++#define MULTILIB_DEFAULT_MODE "mthumb"
++#else
++#define MULTILIB_DEFAULT_MODE "marm"
++#endif
++
++#undef  MULTILIB_DEFAULTS
++#define MULTILIB_DEFAULTS \
++	{ MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \
++	  MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" }
++
+ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
+    use the GNU/Linux version, not the generic BPABI version.  */
+ #undef  LINK_SPEC
--- gcc-4.6-4.6.3.orig/debian/patches/libstdc++-no-testsuite.diff
+++ gcc-4.6-4.6.3/debian/patches/libstdc++-no-testsuite.diff
@@ -0,0 +1,13 @@
+## DP: Don't run the libstdc++ testsuite on arm and ia64 (timeouts on the buildds)
+# DP: Don't run the libstdc++ testsuite on hppa and mipsel (timeouts on the buildds)
+
+--- a/src/libstdc++-v3/testsuite/Makefile.in~	2010-02-23 02:43:51.522335339 +0100
++++ b/src/libstdc++-v3/testsuite/Makefile.in	2010-02-23 08:34:41.691086441 +0100
+@@ -560,6 +560,7 @@
+ 
+ # Run the testsuite in normal mode.
+ check-DEJAGNU $(check_DEJAGNU_normal_targets): check-DEJAGNU%: site.exp
++	case "$(target)" in arm*|hppa*|mips*) exit 0;; esac; \
+ 	AR="$(AR)"; export AR; \
+ 	RANLIB="$(RANLIB)"; export RANLIB; \
+ 	if [ -z "$*$(filter-out --target_board=%, $(RUNTESTFLAGS))" ] \
--- gcc-4.6-4.6.3.orig/debian/patches/mudflap-varargs.diff
+++ gcc-4.6-4.6.3/debian/patches/mudflap-varargs.diff
@@ -0,0 +1,19 @@
+# DP: Add mudflap support for varargs
+
+From: Michael Matz <matz@suse.de>
+Subject: Fix pass49-frag (mudflap support for varargs)
+
+	* builtins.c (build_va_arg_indirect_ref): Use
+	build_simple_mem_ref_loc.
+
+--- a/src/gcc/builtins.c
++++ b/src/gcc/builtins.c
+@@ -4772,7 +4772,7 @@
+ tree
+ build_va_arg_indirect_ref (tree addr)
+ {
+-  addr = build_fold_indirect_ref_loc (EXPR_LOCATION (addr), addr);
++  addr = build_simple_mem_ref_loc (EXPR_LOCATION (addr), addr);
+ 
+   if (flag_mudflap) /* Don't instrument va_arg INDIRECT_REF.  */
+     mf_mark (addr);
--- gcc-4.6-4.6.3.orig/debian/patches/mips-triarch.diff
+++ gcc-4.6-4.6.3/debian/patches/mips-triarch.diff
@@ -0,0 +1,44 @@
+# DP: Build a tri-arch compiler on mips-linux-gnu.
+# DP: http://gcc.gnu.org/ml/gcc-patches/2009-03/msg01047.html
+
+2009-06-13  Matthias Klose <doko@debian.org>
+	    Arthur Loiret  <aloiret@debian.org>
+
+	* config.gcc (mips*-*-linux*): If 'enabled_targets' is 'all', build
+	a tri-arch compiler defaulting to 32-bit (ABI o32). In this case:
+	(tm_file): Add mips/linux64.h.
+	(tmake_file): Add mips/t-linux64.
+	(tm_defines): Add MIPS_ABI_DEFAULT=ABI_32.
+	* config/mips/linux64.h (DRIVER_SELF_SPECS): Use MULTILIB_ABI_DEFAULT
+	instead of hardcoded mabi=n32.
+	* config/mips/t-linux64 (MULTILIB_DIRNAMES): Set to 'n32 . 64' if
+	tm_defines contains MIPS_ABI_DEFAULT ABI_32, to follow the glibc
+	convention.
+	* doc/install.texi: Add mips-linux to the list of targets supporting
+	--enable-targets=all. Document the effect on mips.
+
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -1902,6 +1902,11 @@
+ mips*-*-linux*)				# Linux MIPS, either endian.
+         tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/linux.h"
+ 	tmake_file="${tmake_file} mips/t-libgcc-mips16"
++	if test x$enable_targets = xall; then
++		tm_file="${tm_file} mips/linux64.h"
++		tmake_file="${tmake_file} mips/t-linux64"
++		tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
++	fi
+ 	case ${target} in
+         mipsisa32r2*)
+ 		tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33"
+--- a/src/gcc/config/mips/linux64.h
++++ b/src/gcc/config/mips/linux64.h
+@@ -26,7 +26,7 @@
+   BASE_DRIVER_SELF_SPECS, \
+   LINUX_DRIVER_SELF_SPECS \
+   " %{!EB:%{!EL:%(endian_spec)}}" \
+-  " %{!mabi=*: -mabi=n32}"
++  " %{!mabi=*: -" MULTILIB_ABI_DEFAULT "}"
+ 
+ #undef LIB_SPEC
+ #define LIB_SPEC "\
--- gcc-4.6-4.6.3.orig/debian/patches/gccgo-version.diff
+++ gcc-4.6-4.6.3/debian/patches/gccgo-version.diff
@@ -0,0 +1,61 @@
+# DP: Omit the subminor number from the go libdir
+
+--- a/src/gcc/go/Make-lang.in
++++ b/src/gcc/go/Make-lang.in
+@@ -223,13 +223,15 @@
+ go/go-backend.o: go/go-backend.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+ 	$(TM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(TARGET_H)
+ 
++short_version := $(shell echo $(version) | sed -r 's/([0-9]+\.[0-9]+).*/\1/')
++
+ go/go-lang.o: go/go-lang.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(OPTS_H) \
+ 		$(TREE_H) $(GIMPLE_H) $(GGC_H) $(TOPLEV_H) debug.h options.h \
+ 		$(FLAGS_H) convert.h $(DIAGNOSTIC_H) langhooks.h \
+ 		$(LANGHOOKS_DEF_H) $(EXCEPT_H) $(TARGET_H) $(GO_C_H) \
+ 		gt-go-go-lang.h gtype-go.h
+ 	$(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
+-	  -DDEFAULT_TARGET_VERSION=\"$(version)\" \
++	  -DDEFAULT_TARGET_VERSION=\"$(short_version)\" \
+ 	  -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \
+ 	  -c $< $(OUTPUT_OPTION)
+ 
+--- a/src/libgo/Makefile.in
++++ b/src/libgo/Makefile.in
+@@ -469,7 +469,7 @@
+ SUFFIXES = .c .go .gox .o .obj .lo .a
+ @LIBGO_IS_RTEMS_TRUE@subdirs = testsuite
+ SUBDIRS = ${subdirs}
+-gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
++short_version := $(shell sed -r 's/([0-9]+\.[0-9]+)\..*/\1/' $(top_srcdir)/../gcc/BASE-VER)
+ MAINT_CHARSET = latin1
+ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+ PWD_COMMAND = $${PWDCMD-pwd}
+@@ -539,7 +539,7 @@
+ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
+ toolexeclib_LTLIBRARIES = libgo.la
+ toolexeclib_LIBRARIES = libgobegin.a
+-toolexeclibgodir = $(toolexeclibdir)/go/$(gcc_version)/$(target_alias)
++toolexeclibgodir = $(toolexeclibdir)/go/$(short_version)
+ toolexeclibgo_DATA = \
+ 	asn1.gox \
+ 	big.gox \
+--- a/src/libgo/Makefile.am
++++ b/src/libgo/Makefile.am
+@@ -15,7 +15,7 @@
+ 
+ SUBDIRS = ${subdirs}
+ 
+-gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
++short_version := $(shell sed -r 's/([0-9]+\.[0-9]+)\..*/\1/' $(top_srcdir)/../gcc/BASE-VER)
+ 
+ MAINT_CHARSET = latin1
+ 
+@@ -97,7 +97,7 @@
+ toolexeclib_LTLIBRARIES = libgo.la
+ toolexeclib_LIBRARIES = libgobegin.a
+ 
+-toolexeclibgodir = $(toolexeclibdir)/go/$(gcc_version)/$(target_alias)
++toolexeclibgodir = $(toolexeclibdir)/go/$(short_version)
+ 
+ toolexeclibgo_DATA = \
+ 	asn1.gox \
--- gcc-4.6-4.6.3.orig/debian/patches/pr45078.diff
+++ gcc-4.6-4.6.3/debian/patches/pr45078.diff
@@ -0,0 +1,41 @@
+# DP: Proposed patch for PR plugin/45078
+
+2011-06-24  Matthias Klose  <doko@ubuntu.com>
+
+	PR plugin/45078
+	* Makefile.in (PLUGIN_HEADERS): Add config/arm/arm-cores.def.
+	(install-plugin): Install c-family headers into a c-family subdir.
+	* config.gcc: Add vxworks-dummy.h to tm_file for arm, mips, sh and
+	sparc targets.
+
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -4502,6 +4502,7 @@
+   $(EXCEPT_H) tree-ssa-sccvn.h real.h output.h $(IPA_UTILS_H) \
+   $(C_PRAGMA_H)  $(CPPLIB_H)  $(FUNCTION_H) \
+   cppdefault.h flags.h $(MD5_H) params.def params.h prefix.h tree-inline.h \
++  config/arm/arm-cores.def \
+   $(IPA_PROP_H) $(RTL_H) $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) version.h
+ 
+ # generate the 'build fragment' b-header-vars
+@@ -4526,7 +4527,7 @@
+ 	  else continue; \
+ 	  fi; \
+ 	  case $$path in \
+-	  "$(srcdir)"/config/* | "$(srcdir)"/*.def ) \
++	  "$(srcdir)"/config/* | "$(srcdir)"/c-family/* | "$(srcdir)"/*.def ) \
+ 	    base=`echo "$$path" | sed -e "s|$$srcdirstrip/||"`;; \
+ 	  *) base=`basename $$path` ;; \
+ 	  esac; \
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -468,6 +468,9 @@
+ 	fi
+ 	tm_file="vxworks-dummy.h ${tm_file}"
+ 	;;
++arm*-*-*|mips*-*-*|sh*-*-*|sparc*-*-*)
++	tm_file="vxworks-dummy.h ${tm_file}"
++	;;
+ esac
+ 
+ # On a.out targets, we need to use collect2.
--- gcc-4.6-4.6.3.orig/debian/patches/mudflap-nocheck.diff
+++ gcc-4.6-4.6.3/debian/patches/mudflap-nocheck.diff
@@ -0,0 +1,17 @@
+# DP: Disable running the libmudflap testsuite. Getting killed on alpha.
+
+---
+ libmudflap/testsuite/Makefile.in |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+--- a/src/libmudflap/testsuite/Makefile.in
++++ b/src/libmudflap/testsuite/Makefile.in
+@@ -246,6 +246,8 @@ CTAGS:
+ 
+ 
+ check-DEJAGNU: site.exp
++	@echo target $@ disabled for Debian build.
++check-DEJAGNU-disabled: site.exp
+ 	srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
+ 	EXPECT=$(EXPECT); export EXPECT; \
+ 	runtest=$(RUNTEST); \
--- gcc-4.6-4.6.3.orig/debian/patches/armhf-triplet.diff
+++ gcc-4.6-4.6.3/debian/patches/armhf-triplet.diff
@@ -0,0 +1,104 @@
+# DP: add support for arm-linux-*eabi* triplets; useful for armhf
+
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -926,7 +926,7 @@
+     # on Darwin -single_module speeds up loading of the dynamic libraries.
+     extra_ldflags_libjava=-Wl,-single_module
+     ;;
+-arm*linux*eabi)
++arm*-*-linux-*eabi*)
+     # Some of the ARM unwinder code is actually in libstdc++.  We
+     # could in principle replicate it in libgcj, but it's better to
+     # have a dependency on libstdc++.
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -826,7 +826,7 @@
+ 	esac
+ 	tmake_file="${tmake_file} t-linux arm/t-arm"
+ 	case ${target} in
+-	arm*-*-linux-*eabi)
++	arm*-*-linux-*eabi*)
+ 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
+ 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
+ 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
+@@ -854,7 +854,7 @@
+ 	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
+ 	tmake_file="arm/t-arm arm/t-arm-elf"
+ 	case ${target} in
+-	arm*-*-uclinux*eabi)
++	arm*-*-uclinux*eabi*)
+ 	    tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
+ 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
+ 	    tmake_file="$tmake_file arm/t-bpabi"
+--- a/src/gcc/testsuite/lib/target-supports.exp
++++ b/src/gcc/testsuite/lib/target-supports.exp
+@@ -3265,7 +3265,7 @@
+ 	     || [istarget i?86-*-*]
+ 	     || [istarget x86_64-*-*]
+ 	     || [istarget alpha*-*-*] 
+-	     || [istarget arm*-*-linux-gnueabi] 
++	     || [istarget arm*-*-linux-*eabi*] 
+ 	     || [istarget bfin*-*linux*]
+ 	     || [istarget hppa*-*linux*]
+ 	     || [istarget s390*-*-*] 
+@@ -3296,7 +3296,7 @@
+ 	     || [istarget i?86-*-*]
+ 	     || [istarget x86_64-*-*]
+ 	     || [istarget alpha*-*-*] 
+-	     || [istarget arm*-*-linux-gnueabi] 
++	     || [istarget arm*-*-linux-*eabi*] 
+ 	     || [istarget hppa*-*linux*]
+ 	     || [istarget s390*-*-*] 
+ 	     || [istarget powerpc*-*-*]
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1841,7 +1841,7 @@
+   LIBRARY_VERSION := $(LIB_VERSION)
+ endif
+ 
+-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),)
++ifeq ($(strip $(filter-out arm%-linux,$(arch)-$(osys)) $(if $(findstring eabi,$(word 4,$(targ))),,$(word 4,$(targ)))),)
+   LIBGNAT_TARGET_PAIRS = \
+   a-intnam.ads<a-intnam-linux.ads \
+   s-inmaop.adb<s-inmaop-posix.adb \
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -680,7 +680,7 @@
+     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
+     libgloss_dir=arm
+     ;;
+-  arm*-*-linux-gnueabi)
++  arm*-*-linux-*eabi*)
+     noconfigdirs="$noconfigdirs target-qthreads"
+     case ${with_newlib} in
+       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
+--- a/src/libstdc++-v3/configure.host
++++ b/src/libstdc++-v3/configure.host
+@@ -322,7 +322,7 @@
+         fi
+     esac
+     case "${host}" in
+-      arm*-*-linux-*eabi)
++      arm*-*-linux-*eabi*)
+ 	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
+ 	;;
+     esac
+--- a/src/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
++++ b/src/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
+@@ -1,5 +1,5 @@
+ // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
+-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
++// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } }
+ 
+ // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
+ //
+--- a/src/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
++++ b/src/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
+@@ -1,5 +1,5 @@
+ // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
+-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
++// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } }
+ 
+ // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
+ //
--- gcc-4.6-4.6.3.orig/debian/patches/svn-class-updates.diff
+++ gcc-4.6-4.6.3/debian/patches/svn-class-updates.diff
@@ -0,0 +1,27 @@
+# DP: updated class files from the 4.6 branch upto yyyymmdd.
+
+dir=gcc-4_6-branch
+dir=/scratch/packages/gcc/svn/gcc-4_6-branch
+tag=gcc_4_6_0_release
+branch=gcc-4_6-branch
+
+tmplist=files$$
+
+svn diff --summarize \
+        svn://gcc.gnu.org/svn/gcc/tags/$tag \
+        svn://gcc.gnu.org/svn/gcc/branches/$branch \
+    | grep '\.class$' > $tmplist
+
+sed -n '/^[AM].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \
+    > neworchanged.list
+sed -n '/^[D].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \
+    > removed.list
+sed -n '/^[^ADM].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \
+    > unknown.list
+
+echo "new or changed: $(wc -l neworchanged.list | cut '-d ' -f1), removed $(wc -l removed.list | cut '-d ' -f1): , unknown: $(wc -l unknown.list | cut '-d ' -f1)"
+tar -c -J -f java-class-files.tar.xz -C $dir -T neworchanged.list
+uuencode java-class-files.tar.xz java-class-files.tar.xz > java-class-files.tar.xz.uue
+
+rm -f $tmplist neworchanged.list removed.list unknown.list
+
--- gcc-4.6-4.6.3.orig/debian/patches/arm-multilib-soft.diff
+++ gcc-4.6-4.6.3/debian/patches/arm-multilib-soft.diff
@@ -0,0 +1,27 @@
+# DP: ARM hard/soft float multilib support
+
+Index: b/src/gcc/config/arm/t-linux-eabi
+===================================================================
+--- a/src/gcc/config/arm/t-linux-eabi	2011-01-03 20:52:22.000000000 +0000
++++ b/src/gcc/config/arm/t-linux-eabi	2011-08-21 21:08:47.583351817 +0000
+@@ -24,6 +24,20 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifeq ($(with_float),hard)
++MULTILIB_OPTIONS	= mfloat-abi=soft/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp
++MULTILIB_OSDIRNAMES	= arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++else
++MULTILIB_OPTIONS	= mfloat-abi=soft/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp
++MULTILIB_OSDIRNAMES	= ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
--- gcc-4.6-4.6.3.orig/debian/patches/libstdc++-test-installed.diff
+++ gcc-4.6-4.6.3/debian/patches/libstdc++-test-installed.diff
@@ -0,0 +1,76 @@
+# DP: Add support to run the libstdc++-v3 testsuite using the
+# DP: installed shared libraries.
+
+--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp
++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp
+@@ -38,6 +38,12 @@
+ # the last thing before testing begins.  This can be defined in, e.g.,
+ # ~/.dejagnurc or $DEJAGNU.
+ 
++set test_installed 0
++if [info exists env(TEST_INSTALLED)] {
++    verbose -log "test installed libstdc++-v3"
++    set test_installed 1
++}
++
+ proc load_gcc_lib { filename } {
+     global srcdir
+     load_file $srcdir/../../gcc/testsuite/lib/$filename
+@@ -94,6 +100,7 @@
+     global tool_timeout
+     global DEFAULT_CXXFLAGS
+     global STATIC_LIBCXXFLAGS
++    global test_installed
+ 
+     # We set LC_ALL and LANG to C so that we get the same error
+     # messages as expected.
+@@ -109,6 +116,9 @@
+ 
+     set blddir [lookfor_file [get_multilibs] libstdc++-v3]
+     set flags_file "${blddir}/scripts/testsuite_flags"
++    if {$test_installed} {
++      set flags_file "${blddir}/scripts/testsuite_flags.installed"
++    }
+     set shlib_ext [get_shlib_extension]
+     v3track flags_file 2
+ 
+@@ -140,7 +150,11 @@
+ 
+     # Locate libgcc.a so we don't need to account for different values of
+     # SHLIB_EXT on different platforms
+-    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
++    if {$test_installed} {
++	set gccdir ""
++    } else {
++	set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
++    }
+     if {$gccdir != ""} {
+         set gccdir [file dirname $gccdir]
+ 	append ld_library_path_tmp ":${gccdir}"
+@@ -149,7 +163,11 @@
+ 
+     # Locate libgomp. This is only required for parallel mode.
+     set v3-libgomp 0
+-    set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext]
++    if {$test_installed} {
++	set libgompdir ""
++    } else {
++	set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext]
++    }
+     if {$libgompdir != ""} {
+ 	set v3-libgomp 1
+         set libgompdir [file dirname $libgompdir]
+@@ -160,7 +178,12 @@
+ 
+     # Locate libstdc++ shared library. (ie libstdc++.so.)
+     set v3-sharedlib 0
+-    set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext]
++    if {$test_installed} {
++	set sharedlibdir ""
++	set v3-sharedlib 1
++    } else {
++	set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext]
++    }
+     if {$sharedlibdir != ""} {
+ 	if { [string match "*-*-linux*" $target_triplet] && [isnative] } {
+ 	    set v3-sharedlib 1
--- gcc-4.6-4.6.3.orig/debian/patches/hurd-fixes.diff
+++ gcc-4.6-4.6.3/debian/patches/hurd-fixes.diff
@@ -0,0 +1,11 @@
+--- a/src/libgcc/generic-morestack.c.orig	2011-12-19 21:14:52.000000000 +0100
++++ b/src/libgcc/generic-morestack.c	2011-12-19 21:15:35.000000000 +0100
+@@ -507,7 +507,7 @@
+   sigemptyset (&__morestack_initial_sp.mask);
+ 
+   sigfillset (&__morestack_fullmask);
+-#ifdef __GLIBC__
++#if defined(__GLIBC__) && defined(__SIGRTMIN)
+   /* In glibc, the first two real time signals are used by the NPTL
+      threading library.  By taking them out of the set of signals, we
+      avoiding copying the signal mask in pthread_sigmask.  More
--- gcc-4.6-4.6.3.orig/debian/patches/aotcompile.diff
+++ gcc-4.6-4.6.3/debian/patches/aotcompile.diff
@@ -0,0 +1,51 @@
+--- ./build/aot/aotcompile.py.orig	2010-04-08 13:38:27.621086079 +0000
++++ ./build/aot/aotcompile.py	2010-04-08 14:22:55.102335973 +0000
+@@ -31,12 +31,25 @@
+          "dbtool": "/usr/lib/gcc-snapshot/bin/gcj-dbtool"}
+ 
+ MAKEFLAGS = []
+-GCJFLAGS = ["-fPIC", "-findirect-dispatch", "-fjni"]
++GCJFLAGS = ["-O2 -fPIC", "-findirect-dispatch", "-fjni"]
+ LDFLAGS = ["-Wl,-Bsymbolic"]
+ 
+ MAX_CLASSES_PER_JAR = 1024
+ MAX_BYTES_PER_JAR = 1048576
+ 
++try:
++    for line in file('/proc/meminfo'):
++        if line.startswith('MemTotal:'):
++            memtotal = int(line.split()[1])
++        if memtotal < 270000:
++            MAX_CLASSES_PER_JAR = 512
++            MAX_BYTES_PER_JAR = 524288
++        if memtotal < 140000:
++            MAX_CLASSES_PER_JAR = 256
++            MAX_BYTES_PER_JAR = 262144
++except:
++    pass
++
+ MAKEFILE = "Makefile"
+ 
+ MAKEFILE_HEADER = '''\
+@@ -49,7 +62,7 @@
+ 	$(GCJ) -c $(GCJFLAGS) $< -o $@
+ 
+ TARGETS = \\
+-%(targets)s
++javac ecj1
+ 
+ all: $(TARGETS)'''
+ 
+@@ -63,6 +76,12 @@
+ %(dso)s: $(%(base)s_OBJECTS)
+ 	$(GCJ) -shared $(GCJFLAGS) $(LDFLAGS) $^ -o $@
+ 
++javac: $(%(base)s_OBJECTS) resources.o
++	$(GCJ) $(GCJFLAGS) $(RPATH) -Wl,-O1 --main=org.eclipse.jdt.internal.compiler.batch.Main $^ -o $@
++
++ecj1: $(%(base)s_OBJECTS) resources.o
++	$(GCJ) $(GCJFLAGS) $(RPATH) -Wl,-O1 --main=org.eclipse.jdt.internal.compiler.batch.GCCMain $^ -o $@
++
+ %(db)s: $(%(base)s_SOURCES)
+ 	$(DBTOOL) -n $@ 64
+ 	for jar in $^; do \\
--- gcc-4.6-4.6.3.orig/debian/patches/mudflapth-link.diff
+++ gcc-4.6-4.6.3/debian/patches/mudflapth-link.diff
@@ -0,0 +1,24 @@
+# DP: Link libmudflapth.so with -lpthread
+
+--- a/src/libmudflap/Makefile.am
++++ b/src/libmudflap/Makefile.am
+@@ -44,7 +44,7 @@
+ 	mf-hooks2.c \
+ 	mf-hooks3.c
+ libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH
+-libmudflapth_la_LIBADD =
++libmudflapth_la_LIBADD = -lpthread
+ libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
+ libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ 
+--- a/src/libmudflap/Makefile.in
++++ b/src/libmudflap/Makefile.in
+@@ -288,7 +288,7 @@
+ 	mf-hooks3.c
+ 
+ libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH
+-libmudflapth_la_LIBADD = 
++libmudflapth_la_LIBADD = -lpthread
+ libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
+ libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-linaro-revert-106905.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-linaro-revert-106905.diff
@@ -0,0 +1,290 @@
+--- a/src/gcc/config/arm/arm.c	2012-08-07 18:13:10 +0000
++++ b/src/gcc/config/arm/arm.c	2012-07-01 01:50:29 +0000
+@@ -258,7 +258,6 @@
+ 					unsigned HOST_WIDE_INT);
+ static enum machine_mode arm_preferred_simd_mode (enum machine_mode);
+ static bool arm_class_likely_spilled_p (reg_class_t);
+-static HOST_WIDE_INT arm_vector_alignment (const_tree type);
+ static bool arm_vector_alignment_reachable (const_tree type, bool is_packed);
+ static bool arm_builtin_support_vector_misalignment (enum machine_mode mode,
+ 						     const_tree type,
+@@ -613,9 +612,6 @@
+ #undef TARGET_CLASS_LIKELY_SPILLED_P
+ #define TARGET_CLASS_LIKELY_SPILLED_P arm_class_likely_spilled_p
+ 
+-#undef TARGET_VECTOR_ALIGNMENT
+-#define TARGET_VECTOR_ALIGNMENT arm_vector_alignment
+-
+ #undef TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
+ #define TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE \
+   arm_vector_alignment_reachable
+@@ -24815,18 +24811,6 @@
+     }
+ }
+ 
+-/* The AAPCS sets the maximum alignment of a vector to 64 bits.  */
+-static HOST_WIDE_INT
+-arm_vector_alignment (const_tree type)
+-{
+-  HOST_WIDE_INT align = tree_low_cst (TYPE_SIZE (type), 0);
+-
+-  if (TARGET_AAPCS_BASED)
+-    align = MIN (align, 64);
+-
+-  return align;
+-}
+-
+ static unsigned int
+ arm_autovectorize_vector_sizes (void)
+ {
+--- a/src/gcc/stor-layout.c	2012-08-07 18:13:10 +0000
++++ b/src/gcc/stor-layout.c	2012-04-02 11:35:45 +0000
+@@ -1955,17 +1955,9 @@
+ 	TYPE_SIZE (type) = int_const_binop (MULT_EXPR, TYPE_SIZE (innertype),
+ 					    bitsize_int (nunits), 0);
+ 
+-	/* For vector types, we do not default to the mode's alignment.
+-	   Instead, query a target hook, defaulting to natural alignment.
+-	   This prevents ABI changes depending on whether or not native
+-	   vector modes are supported.  */
+-	TYPE_ALIGN (type) = targetm.vector_alignment (type);
+-
+-	/* However, if the underlying mode requires a bigger alignment than
+-	   what the target hook provides, we cannot use the mode.  For now,
+-	   simply reject that case.  */
+-	gcc_assert (TYPE_ALIGN (type)
+-		    >= GET_MODE_ALIGNMENT (TYPE_MODE (type)));
++	/* Always naturally align vectors.  This prevents ABI changes
++	   depending on whether or not native vector modes are supported.  */
++	TYPE_ALIGN (type) = tree_low_cst (TYPE_SIZE (type), 0);
+         break;
+       }
+ 
+--- a/src/gcc/target.def	2012-08-07 18:13:10 +0000
++++ b/src/gcc/target.def	2011-07-01 09:19:21 +0000
+@@ -1618,16 +1618,6 @@
+  bool, (enum machine_mode mode),
+  hook_bool_mode_false)
+ 
+-DEFHOOK
+-(vector_alignment,
+- "This hook can be used to define the alignment for a vector of type\n\
+-@var{type}, in order to comply with a platform ABI.  The default is to\n\
+-require natural alignment for vector types.  The alignment returned by\n\
+-this hook must be a power-of-two multiple of the default alignment of\n\
+-the vector element type.",
+- HOST_WIDE_INT, (const_tree type),
+- default_vector_alignment)
+-
+ /* True if we should try to use a scalar mode to represent an array,
+    overriding the usual MAX_FIXED_MODE limit.  */
+ DEFHOOK
+--- a/src/gcc/targhooks.c	2012-08-07 18:13:10 +0000
++++ b/src/gcc/targhooks.c	2012-04-02 11:35:45 +0000
+@@ -979,13 +979,6 @@
+    return id;
+ }
+ 
+-/* Default to natural alignment for vector types.  */
+-HOST_WIDE_INT
+-default_vector_alignment (const_tree type)
+-{
+-  return tree_low_cst (TYPE_SIZE (type), 0);
+-}
+-
+ bool
+ default_builtin_vector_alignment_reachable (const_tree type, bool is_packed)
+ {
+--- a/src/gcc/targhooks.h	2012-08-07 18:13:10 +0000
++++ b/src/gcc/targhooks.h	2011-05-03 15:17:25 +0000
+@@ -85,8 +85,6 @@
+ 
+ extern tree default_builtin_reciprocal (unsigned int, bool, bool);
+ 
+-extern HOST_WIDE_INT default_vector_alignment (const_tree);
+-
+ extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
+ extern bool
+ default_builtin_support_vector_misalignment (enum machine_mode mode,
+--- a/src/gcc/testsuite/gcc.dg/align-2.c	2012-08-07 18:13:10 +0000
++++ b/src/gcc/testsuite/gcc.dg/align-2.c	2004-10-19 18:21:41 +0000
+@@ -1,5 +1,5 @@
+ /* PR 17962 */
+-/* { dg-do compile { target vect_natural_alignment } } */
++/* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ typedef float v4 __attribute__((vector_size(sizeof(float)*4)));
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-25.c	2012-08-07 18:13:10 +0000
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-25.c	2011-09-19 07:44:24 +0000
+@@ -56,5 +56,5 @@
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || { ! vect_natural_alignment } } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c	2012-08-09 14:38:28 +0000
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c	2011-09-19 07:44:24 +0000
+@@ -48,6 +48,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_element_align } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c	2012-08-09 14:38:28 +0000
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c	2011-09-19 07:44:24 +0000
+@@ -49,6 +49,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_element_align } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vect_element_align } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c	2012-08-09 14:38:28 +0000
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c	2010-11-22 13:59:45 +0000
+@@ -4,7 +4,9 @@
+ #include "tree-vect.h"
+ 
+ #define N 128
+-#define RES 21640 
++#define RES 21888 
++
++/* unaligned store.  */
+ 
+ int ib[N+10];
+ int ia[N+10];
+@@ -16,11 +18,11 @@
+   int i, suma = 0, sumb = 0, sumc = 0;
+ 
+   /* ib and ic have same misalignment, we peel to align them.  */
+-  for (i = 0; i <= N; i++)
++  for (i = 1; i <= N; i++)
+     {
+       suma += ia[i];
+-      sumb += ib[i+5];
+-      sumc += ic[i+1];
++      sumb += ib[i+6];
++      sumc += ic[i+2];
+     }
+ 
+   /* check results:  */
+@@ -47,7 +49,7 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c	2012-08-09 14:38:28 +0000
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c	2011-09-19 07:44:24 +0000
+@@ -16,13 +16,13 @@
+   /* Don't peel keeping one load and the store aligned.  */
+   for (i = 0; i <= N; i++)
+     {
+-      ia[i] = ib[i] + ib[i+5];
++      ia[i] = ib[i] + ib[i+6];
+     }
+ 
+   /* check results:  */
+   for (i = 1; i <= N; i++)
+     {
+-      if (ia[i] != ib[i] + ib[i+5])
++      if (ia[i] != ib[i] + ib[i+6])
+         abort ();
+     }
+ 
+@@ -44,7 +44,7 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/lib/target-supports.exp	2012-08-07 18:13:10 +0000
++++ b/src/gcc/testsuite/lib/target-supports.exp	2012-03-02 13:53:14 +0000
+@@ -3117,26 +3117,6 @@
+     return $et_natural_alignment_64_saved
+ }
+ 
+-# Return 1 if all vector types are naturally aligned (aligned to their
+-# type-size), 0 otherwise.
+-#
+-# This won't change for different subtargets so cache the result.
+-
+-proc check_effective_target_vect_natural_alignment { } {
+-    global et_vect_natural_alignment
+-
+-    if [info exists et_vect_natural_alignment_saved] {
+-        verbose "check_effective_target_vect_natural_alignment: using cached result" 2
+-    } else {
+-        set et_vect_natural_alignment_saved 1
+-        if { [check_effective_target_arm_eabi] } {
+-            set et_vect_natural_alignment_saved 0
+-        }
+-    }
+-    verbose "check_effective_target_vect_natural_alignment: returning $et_vect_natural_alignment_saved" 2
+-    return $et_vect_natural_alignment_saved
+-}
+-
+ # Return 1 if vector alignment (for types of size 32 bit or less) is reachable, 0 otherwise.
+ #
+ # This won't change for different subtargets so cache the result.
+--- a/src/gcc/tree-vect-data-refs.c	2012-08-07 18:13:10 +0000
++++ b/src/gcc/tree-vect-data-refs.c	2012-06-26 09:29:30 +0000
+@@ -1041,7 +1041,7 @@
+       int misal = DR_MISALIGNMENT (dr);
+       tree vectype = STMT_VINFO_VECTYPE (stmt_info);
+       misal += negative ? -npeel * dr_size : npeel * dr_size;
+-      misal &= (TYPE_ALIGN (vectype) / BITS_PER_UNIT) - 1;
++      misal &= GET_MODE_SIZE (TYPE_MODE (vectype)) - 1;
+       SET_DR_MISALIGNMENT (dr, misal);
+       return;
+     }
+--- a/src/gcc/tree-vect-loop-manip.c	2012-08-07 18:13:10 +0000
++++ b/src/gcc/tree-vect-loop-manip.c	2011-07-04 11:13:51 +0000
+@@ -1972,7 +1972,7 @@
+    If the misalignment of DR is known at compile time:
+      addr_mis = int mis = DR_MISALIGNMENT (dr);
+    Else, compute address misalignment in bytes:
+-     addr_mis = addr & (vectype_align - 1)
++     addr_mis = addr & (vectype_size - 1)
+ 
+    prolog_niters = min (LOOP_NITERS, ((VF - addr_mis/elem_size)&(VF-1))/step)
+ 
+@@ -2029,10 +2029,9 @@
+       tree ptr_type = TREE_TYPE (start_addr);
+       tree size = TYPE_SIZE (ptr_type);
+       tree type = lang_hooks.types.type_for_size (tree_low_cst (size, 1), 1);
+-      tree vectype_align_minus_1 = build_int_cst (type, vectype_align - 1);
+-      HOST_WIDE_INT elem_size =
+-		int_cst_value (TYPE_SIZE_UNIT (TREE_TYPE (vectype)));
+-      tree elem_size_log = build_int_cst (type, exact_log2 (elem_size));
++      tree vectype_size_minus_1 = build_int_cst (type, vectype_align - 1);
++      tree elem_size_log =
++        build_int_cst (type, exact_log2 (vectype_align/nelements));
+       tree nelements_minus_1 = build_int_cst (type, nelements - 1);
+       tree nelements_tree = build_int_cst (type, nelements);
+       tree byte_misalign;
+@@ -2041,10 +2040,10 @@
+       new_bb = gsi_insert_seq_on_edge_immediate (pe, new_stmts);
+       gcc_assert (!new_bb);
+ 
+-      /* Create:  byte_misalign = addr & (vectype_align - 1)  */
++      /* Create:  byte_misalign = addr & (vectype_size - 1)  */
+       byte_misalign =
+         fold_build2 (BIT_AND_EXPR, type, fold_convert (type, start_addr), 
+-                     vectype_align_minus_1);
++                     vectype_size_minus_1);
+ 
+       /* Create:  elem_misalign = byte_misalign / element_size  */
+       elem_misalign =
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-as-needed.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-as-needed.diff
@@ -0,0 +1,49 @@
+# DP: On linux targets pass --as-needed by default to the linker.
+
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -836,7 +836,7 @@
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+ # undef  LINK_EH_SPEC
+-# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
++# define LINK_EH_SPEC "--no-add-needed --as-needed %{!static:--eh-frame-hdr} "
+ #endif
+ 
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
+--- a/src/gcc/config/gnu-user.h
++++ b/src/gcc/config/gnu-user.h
+@@ -82,9 +82,9 @@
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed --as-needed %{!static:--eh-frame-hdr} "
+ #else
+-#define LINK_EH_SPEC "--no-add-needed "
++#define LINK_EH_SPEC "--no-add-needed --as-needed "
+ #endif
+ 
+ #undef LINK_GCC_C_SEQUENCE_SPEC
+--- a/src/gcc/config/alpha/elf.h
++++ b/src/gcc/config/alpha/elf.h
+@@ -438,7 +438,7 @@
+    I imagine that other systems will catch up.  In the meantime, it
+    doesn't harm to make sure that the data exists to be used later.  */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed --as-needed %{!static:--eh-frame-hdr} "
+ #endif
+ 
+ /* A C statement (sans semicolon) to output to the stdio stream STREAM
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -82,7 +82,7 @@
+    Signalize that because we have fde-glibc, we don't need all C shared libs
+    linked against -lgcc_s.  */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC "--no-add-needed "
++#define LINK_EH_SPEC "--no-add-needed --as-needed "
+ 
+ #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-d-lang.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-d-lang.diff
@@ -0,0 +1,304 @@
+# DP: Add D options and specs for the gcc driver.
+
+--- /dev/null
++++ b/src/gcc/d/lang-specs.h
+@@ -0,0 +1,53 @@
++/* GDC -- D front-end for GCC
++   Copyright (C) 2004 David Friedman
++
++   This program 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 2 of the License, or
++   (at your option) any later version.
++
++   This program 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 this program; if not, write to the Free Software
++   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++*/
++
++#ifndef D_D_SPEC
++#define D_D_SPEC 0
++#endif
++
++/* %{!M} probably doesn't make sense because we would need
++   to do that -- -MD and -MMD doesn't sound like a plan for D.... */
++
++/* %(d_options) ? */
++
++#if D_DRIVER_ONLY
++{".html", "@d", 0, 1, 0 },
++{".HTML", "@d", 0, 1, 0 },
++{".htm", "@d", 0, 1, 0 },
++{".HTM", "@d", 0, 1, 0 },
++{".xhtml", "@d", 0, 1, 0 },
++{".XHTML", "@d", 0, 1, 0 },
++{".d", "@d", 0, 1, 0 },
++{".D", "@d", 0, 1, 0 },
++{".dd", "@d", 0, 1, 0 },
++{".DD", "@d", 0, 1, 0 },
++{".di", "@d", 0, 1, 0 },
++{".DI", "@d", 0, 1, 0 },
++{"@d",
++     "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %N %{nostdinc*} %{+e*} %{I*} %{J*}\
++      %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", D_D_SPEC, 1, 0 },
++#else
++{".d", "@d", 0, 1, 0 },
++{".D", "@d", 0, 1, 0 },
++{".di", "@d", 0, 1, 0 },
++{".DI", "@d", 0, 1, 0 },
++{"@d",
++     "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %N %{nostdinc*} %{+e*} %{I*} %{J*}\
++      %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", D_D_SPEC, 1, 0 },
++#endif
++
+--- /dev/null
++++ b/src/gcc/d/lang.opt
+@@ -0,0 +1,215 @@
++; GDC -- D front-end for GCC
++; Copyright (C) 2004 David Friedman
++;
++; This program 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 2 of the License, or
++; (at your option) any later version.
++;
++; This program 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 this program; if not, write to the Free Software
++; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++
++; This is used in GCC 3.4+
++; %% TODO cleanup in ASCII collating order.
++
++Language
++D
++
++I
++D Joined Separate
++-I <dir>	Add <dir> to the end of the main include path.
++
++J
++D Joined Separate
++-J <dir>	Add <dir> to the end of the string import path.
++
++fdeprecated
++D
++Allow use of deprecated features
++
++fassert
++D
++Generate runtime code for assert()'s
++
++frelease
++D
++Compile release version
++
++; For D: defaults to on
++fbounds-check
++D
++Generate code to check bounds before indexing arrays
++
++funittest
++D
++Compile in unittest code
++
++fversion=
++D Joined RejectNegative
++-fversion=<level|ident> Compile in version code >= <level> or identified by <ident>
++
++fdebug=
++D Joined RejectNegative
++-fdebug,-fdebug=<level>,-fdebug=<ident> Compile in debug code, code <= level, or code identified by ident
++
++fdebug
++D
++Compile in debug code
++
++fdebug-c
++D
++With -g, generate C debug information for debugger compatibility
++
++fdeps=
++D Joined RejectNegative
++-fdeps=<filename> Write module dependencies to filename
++
++fd-verbose
++D
++Print information about D language processing to stdout
++
++fd-vtls
++D
++List all variables going into thread local storage
++
++fd-version=1
++D RejectNegative
++Compile as D language version 1
++
++femit-templates=
++D Joined RejectNegative
++-femit-templates=[normal|private|all|none|auto]	Control template emission
++
++femit-templates
++D
++-femit-templates Emit templates code and data even if the linker cannot merge multiple copies
++
++nostdinc
++D
++Do not search standard system include directories
++
++fonly=
++D Joined RejectNegative
++Process all modules specified on the command line, but only generate code for the module specified by the argument.
++
++fignore-unknown-pragmas
++D
++Ignore unsupported pragmas
++
++fproperty
++D
++Enforce property syntax
++
++fintfc
++Generate D interface files
++
++fintfc-dir=
++D Joined RejectNegative
++-fintfc-dir=<dir> Write D interface files to directory <dir>
++
++fintfc-file=
++D Joined RejectNegative
++-fintfc-file=<filename> Write D interface file to <filename>
++
++fdoc
++D
++Generate documentation
++
++fdoc-dir=
++D Joined RejectNegative
++-fdoc-dir=<docdir> Write documentation file to docdir directory
++
++fdoc-file=
++D Joined RejectNegative
++-fdoc-file=<filename> Write documentation file to filename
++
++fdoc-inc=
++D Joined RejectNegative
++-fdoc-inc=<filename> Include a Ddoc macro file
++
++fmultilib-dir=
++D Joined RejectNegative
++-fmultilib-dir=<dir> Select header multilib subdirectory
++
++Wsign-compare
++D
++Warn about signed-unsigned comparisons
++
++fdump-source
++D RejectNegative
++Dump decoded UTF-8 text and source from HTML
++
++fasm
++D
++Recognize the \"asm\" keyword
++
++fbuiltin
++D
++Recognize built-in functions
++
++funsigned-char
++D
++Make \"char\" unsigned by default (silently ignored in D)
++
++fsigned-char
++D
++Make \"char\" signed by default (silently ignored in D)
++
++imultilib
++D Joined Separate
++-imultilib <dir> Set <dir> to be the multilib include subdirectory
++
++iprefix
++D Joined Separate
++-iprefix <path>	Specify <path> as a prefix for next two options
++
++isysroot
++D Joined Separate
++-isysroot <dir>	Set <dir> to be the system root directory
++
++isystem
++D Joined Separate
++-isystem <dir>	Add <dir> to the start of the system include path
++
++Wall
++D
++Enable most warning messages
++
++Werror
++D
++Error out the compiler on warnings
++
++fXf=
++D Joined RejectNegative
++-fXf=<filename> Write JSON file to <filename>
++
++
++; Everything below this line is used in 4.6+
++
++debuglib=
++Driver Joined
++Debug library to use instead of phobos
++
++defaultlib=
++Driver Joined
++Default library to use instead of phobos
++
++fod=
++Driver Joined
++-fod=<directory> Specify the object output directory.
++
++fop
++Driver
++Specify that the source file's parent directories should be appended to the object output directory.
++
++nophoboslib
++Driver
++
++static_libphobos
++Driver
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -373,6 +373,7 @@
+ 	assembler has done its job.
+  %D	Dump out a -L option for each directory in startfile_prefixes.
+ 	If multilib_dir is set, extra entries are generated with it affixed.
++ %N	Output the currently selected multilib directory name.
+  %l     process LINK_SPEC as a spec.
+  %L     process LIB_SPEC as a spec.
+  %G     process LIBGCC_SPEC as a spec.
+@@ -5095,6 +5096,17 @@
+ 	      return value;
+ 	    break;
+ 
++          case 'N':
++	    if (multilib_dir)
++	      {
++		arg_going = 1;
++		obstack_grow (&obstack, "-fmultilib-dir=",
++			      strlen ("-fmultilib-dir="));
++		obstack_grow (&obstack, multilib_dir,
++			      strlen (multilib_dir));
++	      }
++	    break;
++
+ 	    /* Here we define characters other than letters and digits.  */
+ 
+ 	  case '{':
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-gengtype-fix2.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-gengtype-fix2.diff
@@ -0,0 +1,16 @@
+# DP: Write gengtype output to a temporary file before using it
+
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -3780,9 +3780,10 @@
+ 	 gtyp-input.list
+ # First, parse all files and save a state file.
+ 	$(RUN_GEN) build/gengtype$(build_exeext) $(GENGTYPE_FLAGS) \
+-                    -S $(srcdir) -I gtyp-input.list -w gtype.state
++                    -S $(srcdir) -I gtyp-input.list -w tmp-gtype.state
+ # Second, read the state file and generate all files.  This ensure that
+ # gtype.state is correctly read:
++	$(SHELL) $(srcdir)/../move-if-change tmp-gtype.state gtype.state
+ 	$(RUN_GEN) build/gengtype$(build_exeext) $(GENGTYPE_FLAGS) \
+                     -r gtype.state
+ 	$(STAMP) s-gtype
--- gcc-4.6-4.6.3.orig/debian/patches/rename-info-files.diff
+++ gcc-4.6-4.6.3/debian/patches/rename-info-files.diff
@@ -0,0 +1,546 @@
+# DP: Allow transformations on info file names. Reference the
+# DP: transformed info file names in the texinfo files.
+
+
+2004-02-17  Matthias Klose  <doko@debian.org>
+
+gcc/ChangeLog:
+	* Makefile.in: Allow transformations on info file names.
+	Define MAKEINFODEFS, macros to pass transformated info file
+	names to makeinfo.
+	* doc/cpp.texi: Use macros defined in MAKEINFODEFS for references.
+	* doc/cppinternals.texi: Likewise.
+	* doc/extend.texi: Likewise.
+	* doc/gcc.texi: Likewise.
+	* doc/gccint.texi: Likewise.
+	* doc/invoke.texi: Likewise.
+	* doc/libgcc.texi: Likewise.
+	* doc/makefile.texi: Likewise.
+	* doc/passes.texi: Likewise.
+	* doc/sourcebuild.texi: Likewise.
+	* doc/standards.texi: Likewise.
+	* doc/trouble.texi: Likewise.
+
+gcc/fortran/ChangeLog:
+	* Make-lang.in: Allow transformations on info file names.
+	Pass macros of transformated info file defined in MAKEINFODEFS
+	names to makeinfo.
+	* gfortran.texi: Use macros defined in MAKEINFODEFS for references.
+
+gcc/java/ChangeLog:
+	* Make-lang.in: Allow transformations on info file names.
+	Pass macros of transformated info file defined in MAKEINFODEFS
+
+--- a/src/gcc/fortran/gfortran.texi
++++ b/src/gcc/fortran/gfortran.texi
+@@ -101,7 +101,7 @@
+ @ifinfo
+ @dircategory Software development
+ @direntry
+-* gfortran: (gfortran).                  The GNU Fortran Compiler.
++* @value{fngfortran}: (@value{fngfortran}).                  The GNU Fortran Compiler.
+ @end direntry
+ This file documents the use and the internals of
+ the GNU Fortran compiler, (@command{gfortran}).
+--- a/src/gcc/fortran/Make-lang.in
++++ b/src/gcc/fortran/Make-lang.in
+@@ -116,7 +116,8 @@
+ 	cd $(srcdir)/fortran; etags -o TAGS.sub *.c *.h; \
+ 	etags --include TAGS.sub --include ../TAGS.sub
+ 
+-fortran.info: doc/gfortran.info doc/gfc-internals.info
++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)')
++fortran.info: doc/$(INFO_FORTRAN_NAME).info
+ fortran.dvi: doc/gfortran.dvi doc/gfc-internals.dvi
+ 
+ F95_HTMLFILES = $(build_htmldir)/gfortran
+@@ -185,10 +186,10 @@
+   $(srcdir)/doc/include/gcc-common.texi \
+   gcc-vers.texi
+ 
+-doc/gfortran.info: $(GFORTRAN_TEXI)
++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI)
+ 	if [ x$(BUILD_INFO) = xinfo ]; then \
+ 	  rm -f doc/gfortran.info-*; \
+-	  $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \
++	  $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \
+ 	    -o $@ $<; \
+ 	else true; fi
+ 
+@@ -256,7 +257,7 @@
+ 
+ fortran.install-plugin:
+ 
+-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info
++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info
+ 
+ fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext)
+ 
+@@ -274,7 +275,7 @@
+ 	rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \
+ 	rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \
+ 	rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \
+-	rm -rf $(DESTDIR)$(infodir)/gfortran.info*
++	rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info*
+ 
+ #
+ # Clean hooks:
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -4184,8 +4184,27 @@
+ 
+ doc: $(BUILD_INFO) $(GENERATED_MANPAGES)
+ 
+-INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \
+-            doc/gccinstall.info doc/cppinternals.info
++INFO_CPP_NAME = $(shell echo cpp|sed '$(program_transform_name)')
++INFO_GCC_NAME = $(shell echo gcc|sed '$(program_transform_name)')
++INFO_GXX_NAME = $(shell echo g++|sed '$(program_transform_name)')
++INFO_GCCINT_NAME = $(shell echo gccint|sed '$(program_transform_name)')
++INFO_GCCINSTALL_NAME = $(shell echo gccinstall|sed '$(program_transform_name)')
++INFO_CPPINT_NAME = $(shell echo cppinternals|sed '$(program_transform_name)')
++
++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)')
++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)')
++
++INFOFILES = doc/$(INFO_CPP_NAME).info doc/$(INFO_GCC_NAME).info \
++            doc/$(INFO_GCCINT_NAME).info \
++            doc/$(INFO_GCCINSTALL_NAME).info doc/$(INFO_CPPINT_NAME).info
++
++MAKEINFODEFS = -D 'fncpp $(INFO_CPP_NAME)' -D 'fngcc $(INFO_GCC_NAME)' \
++               -D 'fngxx $(INFO_GXX_NAME)' \
++               -D 'fngccint $(INFO_GCCINT_NAME)' \
++               -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \
++               -D 'fncppint $(INFO_CPPINT_NAME)' \
++               -D 'fngfortran $(INFO_FORTRAN_NAME)' \
++               -D 'fngcj $(INFO_GCJ_NAME)'
+ 
+ info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo
+ 
+@@ -4239,21 +4258,41 @@
+ # patterns.  To use them, put each of the specific targets with its
+ # specific dependencies but no build commands.
+ 
+-doc/cpp.info: $(TEXI_CPP_FILES)
+-doc/gcc.info: $(TEXI_GCC_FILES)
+-doc/gccint.info: $(TEXI_GCCINT_FILES)
+-doc/cppinternals.info: $(TEXI_CPPINT_FILES)
+-
++# Generic entry to handle info files, which are not renamed (currently Ada)
+ doc/%.info: %.texi
+ 	if [ x$(BUILD_INFO) = xinfo ]; then \
+ 		$(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \
+ 			-I $(gcc_docdir)/include -o $@ $<; \
+ 	fi
+ 
++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES)
++	if [ x$(BUILD_INFO) = xinfo ]; then \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
++			-I $(gcc_docdir)/include -o $@ $<; \
++	fi
++
++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES)
++	if [ x$(BUILD_INFO) = xinfo ]; then \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
++			-I $(gcc_docdir)/include -o $@ $<; \
++	fi
++
++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES)
++	if [ x$(BUILD_INFO) = xinfo ]; then \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
++			-I $(gcc_docdir)/include -o $@ $<; \
++	fi
++
++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES)
++	if [ x$(BUILD_INFO) = xinfo ]; then \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
++			-I $(gcc_docdir)/include -o $@ $<; \
++	fi
++
+ # Duplicate entry to handle renaming of gccinstall.info
+-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES)
++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES)
+ 	if [ x$(BUILD_INFO) = xinfo ]; then \
+-		$(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
+ 			-I $(gcc_docdir)/include -o $@ $<; \
+ 	fi
+ 
+@@ -4607,11 +4646,11 @@
+ # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
+ # to do the install.
+ install-info:: doc installdirs \
+-	$(DESTDIR)$(infodir)/cpp.info \
+-	$(DESTDIR)$(infodir)/gcc.info \
+-	$(DESTDIR)$(infodir)/cppinternals.info \
+-	$(DESTDIR)$(infodir)/gccinstall.info \
+-	$(DESTDIR)$(infodir)/gccint.info \
++	$(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info \
++	$(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info \
++	$(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info \
++	$(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info \
++	$(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info \
+ 	lang.install-info
+ 
+ $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs
+@@ -4803,8 +4842,11 @@
+ 	-rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext)
+ 	-rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext)
+ 	-rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext)
+-	-rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info*
+-	-rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info*
+ #
+ # These targets are for the dejagnu testsuites. The file site.exp
+ # contains global variables that all the testsuites will use.
+--- a/src/gcc/java/gcj.texi
++++ b/src/gcc/java/gcj.texi
+@@ -55,25 +55,25 @@
+ @format
+ @dircategory Software development
+ @direntry
+-* Gcj: (gcj).               Ahead-of-time compiler for the Java language
++* @value{fngcj}: (@value{fngcj}).               Ahead-of-time compiler for the Java language
+ @end direntry
+ 
+ @dircategory Individual utilities
+ @direntry
+-* jcf-dump: (gcj)Invoking jcf-dump.
++* jcf-dump: (@value{fngcj}) Invoking jcf-dump.
+                             Print information about Java class files
+-* gij: (gcj)Invoking gij.   GNU interpreter for Java bytecode
+-* gcj-dbtool: (gcj)Invoking gcj-dbtool.
++* gij: (@value{fngcj}) Invoking gij.   GNU interpreter for Java bytecode
++* gcj-dbtool: (@value{fngcj}) Invoking gcj-dbtool.
+                             Tool for manipulating class file databases.
+-* jv-convert: (gcj)Invoking jv-convert.
++* jv-convert: (@value{fngcj}) Invoking jv-convert.
+                             Convert file from one encoding to another
+-* grmic: (gcj)Invoking grmic.
++* grmic: (@value{fngcj}) Invoking grmic.
+                             Generate stubs for Remote Method Invocation.
+-* gc-analyze: (gcj)Invoking gc-analyze.
++* gc-analyze: (@value{fngcj}) Invoking gc-analyze.
+                             Analyze Garbage Collector (GC) memory dumps.
+-* aot-compile: (gcj)Invoking aot-compile.
++* aot-compile: (@value{fngcj})Invoking aot-compile.
+                             Compile bytecode to native and generate databases.
+-* rebuild-gcj-db: (gcj)Invoking rebuild-gcj-db.
++* rebuild-gcj-db: (@value{fngcj})Invoking rebuild-gcj-db.
+                             Merge the per-solib databases made by aot-compile
+                             into one system-wide database.
+ @end direntry
+@@ -159,7 +159,7 @@
+ 
+ As @command{gcj} is just another front end to @command{gcc}, it supports many
+ of the same options as gcc.  @xref{Option Summary, , Option Summary,
+-gcc, Using the GNU Compiler Collection (GCC)}.  This manual only documents the
++@value{fngcc}, Using the GNU Compiler Collection (GCC)}.  This manual only documents the
+ options specific to @command{gcj}.
+ 
+ @c man end
+--- a/src/gcc/java/Make-lang.in
++++ b/src/gcc/java/Make-lang.in
+@@ -127,11 +127,23 @@
+ 	etags --include TAGS.sub --include ../TAGS.sub
+ 
+ 
+-java.info: doc/gcj.info
++TEXI_GCJ_FILES = java/gcj.texi \
++		 $(gcc_docdir)/include/gpl.texi $(gcc_docdir)/include/funding.texi \
++		 $(gcc_docdir)/include/fdl.texi $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)')
+ 
+-java.srcinfo: doc/gcj.info
++java.info: doc/$(INFO_GCJ_NAME).info
++
++java.srcinfo: doc/$(INFO_GCJ_NAME).info
+ 	-cp -p $^ $(srcdir)/doc
+ 
++doc/$(INFO_GCJ_NAME).info: $(TEXI_GCJ_FILES)
++	if test "x$(BUILD_INFO)" = xinfo; then \
++	  rm -f $(@)*; \
++	  $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) \
++	    -I$(gcc_docdir)/include -I$(srcdir)/f -o$@ $<; \
++	fi
++
+ java.dvi: doc/gcj.dvi
+ 
+ JAVA_PDFFILES = doc/gcj.pdf
+@@ -195,7 +207,7 @@
+ 	-rm -rf $(DESTDIR)$(man1dir)/aot-compile$(man1ext)
+ 	-rm -rf $(DESTDIR)$(man1dir)/rebuild-gcj-db$(man1ext)
+ 
+-java.install-info: $(DESTDIR)$(infodir)/gcj.info
++java.install-info: $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info
+ 
+ java.install-pdf: $(JAVA_PDFFILES)
+ 	@$(NORMAL_INSTALL)
+--- a/src/gcc/ada/gnat-style.texi
++++ b/src/gcc/ada/gnat-style.texi
+@@ -31,7 +31,7 @@
+ 
+ @dircategory Software development
+ @direntry
+-* gnat-style: (gnat-style).      GNAT Coding Style
++* gnat-style: (gnat-style-4.6).      GNAT Coding Style
+ @end direntry
+ 
+ @macro syntax{element}
+--- a/src/gcc/ada/gnat_rm.texi
++++ b/src/gcc/ada/gnat_rm.texi
+@@ -38,7 +38,7 @@
+ 
+ @dircategory GNU Ada tools
+ @direntry
+-* GNAT Reference Manual: (gnat_rm).  Reference Manual for GNU Ada tools.
++* GNAT Reference Manual: (gnat_rm-4.6).  Reference Manual for GNU Ada tools.
+ @end direntry
+ 
+ @titlepage
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -9061,7 +9061,7 @@
+ @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or special
+ needs for some languages.
+-(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler
++(@xref{Interface,,Interfacing to GCC Output,@value{fngccint},GNU Compiler
+ Collection (GCC) Internals},
+ for more discussion of @file{libgcc.a}.)
+ In most cases, you need @file{libgcc.a} even when you want to avoid
+@@ -9069,7 +9069,7 @@
+ or @option{-nodefaultlibs} you should usually specify @option{-lgcc} as well.
+ This ensures that you have no unresolved references to internal GCC
+ library subroutines.  (For example, @samp{__main}, used to ensure C++
+-constructors will be called; @pxref{Collect2,,@code{collect2}, gccint,
++constructors will be called; @pxref{Collect2,,@code{collect2}, @value{fngccint},
+ GNU Compiler Collection (GCC) Internals}.)
+ 
+ @item -pie
+@@ -18314,7 +18314,7 @@
+ @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}).  These
+ take precedence over places specified using environment variables, which
+ in turn take precedence over those specified by the configuration of GCC@.
+-@xref{Driver,, Controlling the Compilation Driver @file{gcc}, gccint,
++@xref{Driver,, Controlling the Compilation Driver @file{gcc}, @value{fngccint},
+ GNU Compiler Collection (GCC) Internals}.
+ 
+ @table @env
+@@ -18469,7 +18469,7 @@
+ 
+ A precompiled header file will be searched for when @code{#include} is
+ seen in the compilation.  As it searches for the included file
+-(@pxref{Search Path,,Search Path,cpp,The C Preprocessor}) the
++(@pxref{Search Path,,Search Path,@value{fncpp},The C Preprocessor}) the
+ compiler looks for a precompiled header in each directory just before it
+ looks for the include file in that directory.  The name searched for is
+ the name specified in the @code{#include} with @samp{.gch} appended.  If
+--- a/src/gcc/doc/extend.texi
++++ b/src/gcc/doc/extend.texi
+@@ -13684,7 +13684,7 @@
+ test for the GNU compiler the same way as for C programs: check for a
+ predefined macro @code{__GNUC__}.  You can also use @code{__GNUG__} to
+ test specifically for GNU C++ (@pxref{Common Predefined Macros,,
+-Predefined Macros,cpp,The GNU C Preprocessor}).
++Predefined Macros,@value{fncpp},The GNU C Preprocessor}).
+ 
+ @menu
+ * C++ Volatiles::       What constitutes an access to a volatile object.
+--- a/src/gcc/doc/standards.texi
++++ b/src/gcc/doc/standards.texi
+@@ -287,8 +287,8 @@
+ GNAT Reference Manual}, for information on standard
+ conformance and compatibility of the Ada compiler.
+ 
+-@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details
++@xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details
+ of standards supported by GNU Fortran.
+ 
+-@xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj},
++@xref{Compatibility,,Compatibility with the Java Platform, @value{fngcj}, GNU gcj},
+ for details of compatibility between @command{gcj} and the Java Platform.
+--- a/src/gcc/doc/libgcc.texi
++++ b/src/gcc/doc/libgcc.texi
+@@ -25,7 +25,7 @@
+ GCC will also generate calls to C library routines, such as
+ @code{memcpy} and @code{memset}, in some cases.  The set of routines
+ that GCC may possibly use is documented in @ref{Other
+-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}.
++Builtins,,,@value{fngcc}, Using the GNU Compiler Collection (GCC)}.
+ 
+ These routines take arguments and return values of a specific machine
+ mode, not a specific C type.  @xref{Machine Modes}, for an explanation
+--- a/src/gcc/doc/gccint.texi
++++ b/src/gcc/doc/gccint.texi
+@@ -51,7 +51,7 @@
+ @ifnottex
+ @dircategory Software development
+ @direntry
+-* gccint: (gccint).            Internals of the GNU Compiler Collection.
++* @value{fngccint}: (@value{fngccint}).            Internals of the GNU Compiler Collection.
+ @end direntry
+ This file documents the internals of the GNU compilers.
+ @sp 1
+@@ -83,7 +83,7 @@
+ @value{VERSION_PACKAGE}
+ @end ifset
+ version @value{version-GCC}.  The use of the GNU compilers is documented in a
+-separate manual.  @xref{Top,, Introduction, gcc, Using the GNU
++separate manual.  @xref{Top,, Introduction, @value{fngcc}, Using the GNU
+ Compiler Collection (GCC)}.
+ 
+ This manual is mainly a reference manual rather than a tutorial.  It
+--- a/src/gcc/doc/cpp.texi
++++ b/src/gcc/doc/cpp.texi
+@@ -53,7 +53,7 @@
+ @ifinfo
+ @dircategory Software development
+ @direntry
+-* Cpp: (cpp).                  The GNU C preprocessor.
++* @value{fncpp}: (@value{fncpp}).                  The GNU C preprocessor.
+ @end direntry
+ @end ifinfo
+ 
+--- a/src/gcc/doc/passes.texi
++++ b/src/gcc/doc/passes.texi
+@@ -201,7 +201,7 @@
+ @item Mudflap declaration registration
+ 
+ If mudflap (@pxref{Optimize Options,,-fmudflap -fmudflapth
+--fmudflapir,gcc,Using the GNU Compiler Collection (GCC)}) is
++-fmudflapir,@value{fngcc},Using the GNU Compiler Collection (GCC)}) is
+ enabled, we generate code to register some variable declarations with
+ the mudflap runtime.  Specifically, the runtime tracks the lifetimes of
+ those variable declarations that have their addresses taken, or whose
+--- a/src/gcc/doc/gcc.texi
++++ b/src/gcc/doc/gcc.texi
+@@ -65,8 +65,8 @@
+ @ifnottex
+ @dircategory Software development
+ @direntry
+-* gcc: (gcc).                  The GNU Compiler Collection.
+-* g++: (gcc).                  The GNU C++ compiler.
++* @value{fngcc}: (@value{fngcc}).                  The GNU Compiler Collection.
++* @value{fngxx}: (@value{fngcc}).                  The GNU C++ compiler.
+ @end direntry
+ This file documents the use of the GNU compilers.
+ @sp 1
+@@ -126,7 +126,7 @@
+ The internals of the GNU compilers, including how to port them to new
+ targets and some information about how to write front ends for new
+ languages, are documented in a separate manual.  @xref{Top,,
+-Introduction, gccint, GNU Compiler Collection (GCC) Internals}.
++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}.
+ 
+ @menu
+ * G++ and GCC::     You can compile C or C++ programs.
+--- a/src/gcc/doc/makefile.texi
++++ b/src/gcc/doc/makefile.texi
+@@ -140,7 +140,7 @@
+ Builds a compiler with profiling feedback information.  In this case,
+ the second and third stages are named @samp{profile} and @samp{feedback},
+ respectively.  For more information, see
+-@ref{Building,,Building with profile feedback,gccinstall,Installing GCC}.
++@ref{Building,,Building with profile feedback,@value{fngccinstall},Installing GCC}.
+ 
+ @item restrap
+ Restart a bootstrap, so that everything that was not built with
+--- a/src/gcc/doc/install.texi
++++ b/src/gcc/doc/install.texi
+@@ -98,7 +98,7 @@
+ @end ifinfo
+ @dircategory Software development
+ @direntry
+-* gccinstall: (gccinstall).    Installing the GNU Compiler Collection.
++* @value{fngccinstall}: (@value{fngccinstall}).    Installing the GNU Compiler Collection.
+ @end direntry
+ 
+ @c Part 3 Titlepage and Copyright
+--- a/src/gcc/doc/cppinternals.texi
++++ b/src/gcc/doc/cppinternals.texi
+@@ -7,7 +7,7 @@
+ @ifinfo
+ @dircategory Software development
+ @direntry
+-* Cpplib: (cppinternals).      Cpplib internals.
++* @value{fncppint}: (@value{fncppint}).      Cpplib internals.
+ @end direntry
+ @end ifinfo
+ 
+--- a/src/libgomp/libgomp.texi
++++ b/src/libgomp/libgomp.texi
+@@ -31,7 +31,7 @@
+ @ifinfo
+ @dircategory GNU Libraries
+ @direntry
+-* libgomp: (libgomp).                    GNU OpenMP runtime library
++* @value{fnlibgomp}: (@value{fnlibgomp}).                    GNU OpenMP runtime library
+ @end direntry
+ 
+ This manual documents the GNU implementation of the OpenMP API for 
+--- a/src/libgomp/Makefile.in
++++ b/src/libgomp/Makefile.in
+@@ -343,7 +343,8 @@
+ 
+ # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO])
+ @BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info
+-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info
++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)')
++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info
+ MAINTAINERCLEANFILES = $(srcdir)/libgomp.info
+ all: config.h
+ 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+@@ -1089,15 +1090,16 @@
+ env.o: libgomp_f.h
+ 
+ all-local: $(STAMP_GENINSRC)
+-
+-stamp-geninsrc: libgomp.info
+-	cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info
++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info
++	cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info
+ 	@touch $@
+ 
+-libgomp.info: $(STAMP_BUILD_INFO)
++libgomp.info: $(INFO_LIBGOMP_NAME).info
++	[ "$(INFO_LIBGOMP_NAME).info" = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info
++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO)
+ 
+ stamp-build-info: libgomp.texi
+-	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi
++	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi
+ 	@touch $@
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+--- a/src/libgomp/Makefile.am
++++ b/src/libgomp/Makefile.am
+@@ -111,16 +111,19 @@
+ 
+ all-local: $(STAMP_GENINSRC)
+ 
+-stamp-geninsrc: libgomp.info
+-	cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info
++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)')
++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info
++	cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info
+ 	@touch $@
+ 
+-libgomp.info: $(STAMP_BUILD_INFO)
++libgomp.info: $(INFO_LIBGOMP_NAME).info
++	cp $(INFO_LIBGOMP_NAME).info libgomp.info
++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO)
+ 
+ stamp-build-info: libgomp.texi
+-	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi
++	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi
+ 	@touch $@
+ 
+ 
+-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info
++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info
+ MAINTAINERCLEANFILES = $(srcdir)/libgomp.info
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-no-add-needed.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-no-add-needed.diff
@@ -0,0 +1,56 @@
+# DP: On linux targets pass --no-add-needed to the linker.
+
+2010-02-08  Roland McGrath  <roland@redhat.com>
+
+	* config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
+	linker.
+	* config/linux.h (LINK_EH_SPEC): Likewise.
+	* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -836,7 +836,7 @@
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+ # undef  LINK_EH_SPEC
+-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+ 
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
+--- a/src/gcc/config/gnu-user.h
++++ b/src/gcc/config/gnu-user.h
+@@ -82,7 +82,9 @@
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
++#else
++#define LINK_EH_SPEC "--no-add-needed "
+ #endif
+ 
+ #undef LINK_GCC_C_SEQUENCE_SPEC
+--- a/src/gcc/config/alpha/elf.h
++++ b/src/gcc/config/alpha/elf.h
+@@ -438,7 +438,7 @@
+    I imagine that other systems will catch up.  In the meantime, it
+    doesn't harm to make sure that the data exists to be used later.  */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+ 
+ /* A C statement (sans semicolon) to output to the stdio stream STREAM
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -82,7 +82,7 @@
+    Signalize that because we have fde-glibc, we don't need all C shared libs
+    linked against -lgcc_s.  */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+ 
+ #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-multiarch-doc.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-multiarch-doc.diff
@@ -0,0 +1,109 @@
+# DP: Document multiarch changes
+
+--- a/src/gcc/doc/install.texi	(Revision 193696)
++++ b/src/gcc/doc/install.texi	(Arbeitskopie)
+@@ -1005,6 +1005,14 @@
+ workable alternative.  This requires gas and gdb, as the normal SVR4
+ tools can not generate or interpret stabs.
+ 
++@item --enable-multiarch
++Specify whether to enable or disable multiarch support.  The default is
++to check for glibc start files in a multiarch location, and enable it
++if the files are found.  The auto detection is enabled for native builds,
++and for cross builds configured with @option{--with-sysroot}.
++More documentation about multiarch can be found at
++@uref{http://wiki.debian.org/Multiarch}.
++
+ @item --disable-multilib
+ Specify that multiple target
+ libraries to support different target variants, calling
+--- a/src/gcc/doc/fragments.texi	(Revision 193696)
++++ b/src/gcc/doc/fragments.texi	(Arbeitskopie)
+@@ -115,6 +115,12 @@
+ default value will be @code{MULTILIB_OPTIONS}, with all slashes treated
+ as spaces.
+ 
++@code{MULTILIB_DIRNAMES} describes the multilib directories using GCC
++conventions and is applied to directories that are part of the GCC
++installation.  When multilib-enabled, the compiler will add a
++subdirectory of the form @var{prefix}/@var{multilib} before each
++directory in the search path for libraries and crt files.
++
+ For example, if @code{MULTILIB_OPTIONS} is set to @samp{m68000/m68020
+ msoft-float}, then the default value of @code{MULTILIB_DIRNAMES} is
+ @samp{m68000 m68020 msoft-float}.  You may specify a different value if
+@@ -157,6 +163,60 @@
+ you must set this to the directory containing the headers.  This value
+ should match the value of the @code{SYSTEM_INCLUDE_DIR} macro.
+ 
++@findex MULTILIB_OSDIRNAMES
++@item MULTILIB_OSDIRNAMES
++If @code{MULTILIB_OPTIONS} is used, this variable specifies 
++a list of subdirectory names, that are used to modify the search
++path depending on the chosen multilib.  Unlike @code{MULTILIB_DIRNAMES},
++@code{MULTILIB_OSDIRNAMES} describes the multilib directories using
++operating systems conventions, and is applied to the directories such as
++@code{lib} or those in the @env{LIBRARY_PATH} environment variable.
++The format is either the same as of
++@code{MULTILIB_DIRNAMES}, or a set of mappings.  When it is the same
++as @code{MULTILIB_DIRNAMES}, it describes the multilib directories
++using operating system conventions, rather than GCC conventions.  When it is a set
++of mappings of the form @var{gccdir}=@var{osdir}, the left side gives
++the GCC convention and the right gives the equivalent OS defined
++location.  If the @var{osdir} part begins with a @samp{!},
++GCC will not search in the non-multilib directory and use
++exclusively the multilib directory.  Otherwise, the compiler will
++examine the search path for libraries and crt files twice; the first
++time it will add @var{multilib} to each directory in the search path,
++the second it will not.
++
++For configurations that support both multilib and multiarch,
++@code{MULTILIB_OSDIRNAMES} also encodes the multiarch name, thus
++subsuming @code{MULTIARCH_DIRNAME}.  The multiarch name is appended to
++each directory name, separated by a colon (e.g.
++@samp{../lib32:i386-linux-gnu}).
++
++Each multiarch subdirectory will be searched before the corresponding OS
++multilib directory, for example @samp{/lib/i386-linux-gnu} before
++@samp{/lib/../lib32}.  The multiarch name will also be used to modify the
++system header search path, as explained for @code{MULTIARCH_DIRNAME}.
++
++@findex MULTIARCH_DIRNAME
++@item MULTIARCH_DIRNAME
++This variable specifies the multiarch name for configurations that are
++multiarch-enabled but not multilibbed configurations.
++
++The multiarch name is used to augment the search path for libraries, crt
++files and system header files with additional locations.  The compiler
++will add a multiarch subdirectory of the form
++@var{prefix}/@var{multiarch} before each directory in the library and
++crt search path.  It will also add two directories
++@code{LOCAL_INCLUDE_DIR}/@var{multiarch} and
++@code{NATIVE_SYSTEM_HEADER_DIR}/@var{multiarch}) to the system header
++search path, respectively before @code{LOCAL_INCLUDE_DIR} and
++@code{NATIVE_SYSTEM_HEADER_DIR}.
++
++@code{MULTIARCH_DIRNAME} is not used for configurations that support
++both multilib and multiarch.  In that case, multiarch names are encoded
++in @code{MULTILIB_OSDIRNAMES} instead.
++
++More documentation about multiarch can be found at
++@uref{http://wiki.debian.org/Multiarch}.
++
+ @findex SPECS
+ @item SPECS
+ Unfortunately, setting @code{MULTILIB_EXTRA_OPTS} is not enough, since
+--- a/src/gcc/doc/invoke.texi	(Revision 193696)
++++ b/src/gcc/doc/invoke.texi	(Arbeitskopie)
+@@ -5787,6 +5787,11 @@
+ @file{../lib32}, or if OS libraries are present in @file{lib/@var{subdir}}
+ subdirectories it prints e.g.@: @file{amd64}, @file{sparcv9} or @file{ev6}.
+ 
++@item -print-multiarch
++@opindex print-multiarch
++Print the path to OS libraries for the selected multiarch,
++relative to some @file{lib} subdirectory.
++
+ @item -print-prog-name=@var{program}
+ @opindex print-prog-name
+ Like @option{-print-file-name}, but searches for a program such as @samp{cpp}.
--- gcc-4.6-4.6.3.orig/debian/patches/arm-dynamic-linker.diff
+++ gcc-4.6-4.6.3/debian/patches/arm-dynamic-linker.diff
@@ -0,0 +1,56 @@
+# DP: For ARM hard float, set the dynamic linker to
+# DP: /lib/ld-linux-armhf.so.3.
+
+2012-05-01  Richard Earnshaw  <rearnsha@arm.com>
+
+	* arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_DEFAULT): Avoid ifdef
+	comparing enumeration values.  Update comments.
+
+2012-04-26  Michael Hope  <michael.hope@linaro.org>
+	    Richard Earnshaw  <rearnsha@arm.com>
+
+	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
+	(GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
+	(GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
+	(GLIBC_DYNAMIC_LINKER):	Redefine to use the hard float path.
+
+--- a/src/gcc/config/arm/linux-eabi.h
++++ b/src/gcc/config/arm/linux-eabi.h
+@@ -32,7 +32,8 @@
+   while (false)
+ 
+ /* We default to a soft-float ABI so that binaries can run on all
+-   target hardware.  */
++   target hardware.  If you override this to use the hard-float ABI then
++   change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well.  */
+ #undef  TARGET_DEFAULT_FLOAT_ABI
+ #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
+ 
+@@ -59,11 +60,24 @@
+ #undef  SUBTARGET_EXTRA_LINK_SPEC
+ #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
+ 
+-/* Use ld-linux.so.3 so that it will be possible to run "classic"
+-   GNU/Linux binaries on an EABI system.  */
++/* GNU/Linux on ARM currently supports three dynamic linkers:
++   - ld-linux.so.2 - for the legacy ABI
++   - ld-linux.so.3 - for the EABI-derived soft-float ABI
++   - ld-linux-armhf.so.3 - for the EABI-derived hard-float ABI.
++   All the dynamic linkers live in /lib.
++   We default to soft-float, but this can be overridden by changing both
++   GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
++
+ #undef  GLIBC_DYNAMIC_LINKER
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
++#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
+ 
++#define GLIBC_DYNAMIC_LINKER \
++   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
++    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
++    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
++
+ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
+    use the GNU/Linux version, not the generic BPABI version.  */
+ #undef  LINK_SPEC
--- gcc-4.6-4.6.3.orig/debian/patches/ada-symbolic-tracebacks.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-symbolic-tracebacks.diff
@@ -0,0 +1,340 @@
+# DP: - Enable support for symbolic tracebacks in exceptions (delete the dummy
+# DP:   convert_addresses from adaint.c, and provide a real one separately.)
+
+Ported J�ĵrgen Pfeifer's patch to enable symbolic tracebacks on Debian
+GNU/Linux.
+
+The binary distribution of GNAT 3.15p comes with an old version of
+binutils that includes a library, libaddr2line.a.  This library does
+not exist in recent versions of binutils.  The patch works around this
+by calling /usr/bin/addr2line (still part of binutils) and parsing the
+output.  See debian/convert_addresses.c for the gory details.
+
+I have modified convert_addresses.c to not use a shell script anymore;
+Debian controls the version of binutils which is installed.  Also, I
+use execve instead of execle.
+
+-- 
+Ludovic Brenta.
+
+# ' make emacs highlighting happy
+
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -247,8 +247,8 @@
+ # Both . and srcdir are used, in that order,
+ # so that tm.h and config.h will be found in the compilation
+ # subdirectory rather than in the source directory.
+-INCLUDES = -I- -I. -I.. -I$(srcdir)/ada -I$(srcdir) -I$(srcdir)/config \
+-	-I$(srcdir)/../include
++INCLUDES = -iquote . -iquote .. -iquote $(srcdir)/ada -iquote$(srcdir) \
++	-iquote $(srcdir)/config -iquote $(srcdir)/../include
+ 
+ ADA_INCLUDES = -I- -I. -I$(srcdir)/ada
+ 
+@@ -2243,7 +2243,7 @@
+   a-nucoar.o a-nurear.o i-forbla.o i-forlap.o s-gearop.o
+ 
+ GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
+-  $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o
++  $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o convert_addresses.o
+ 
+ # Default run time files
+ 
+@@ -2366,7 +2366,6 @@
+ 	for file in $(RTSDIR)/*.ali; do \
+ 	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+ 	done
+-	-$(INSTALL_DATA) $(RTSDIR)/g-trasym$(objext) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
+ 	-cd $(RTSDIR); for file in *$(arext);do \
+ 	    $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+ 	    $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \
+@@ -2508,7 +2507,7 @@
+ 	        $(GNATRTL_OBJS)
+ 	$(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext)
+ 	$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \
+-	   $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS))
++	   $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o)
+ 	$(RANLIB_FOR_TARGET) $(RTSDIR)/libgnat$(arext)
+ 	$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnarl$(arext) \
+ 	   $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS))
+@@ -2538,6 +2537,7 @@
+ 		$(TARGET_LIBGCC2_CFLAGS) \
+ 		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+ 		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
++		g-trasym.o convert_addresses.o \
+ 		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+ 		$(MISCLIB) -lm
+ 	cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
+@@ -2800,6 +2800,7 @@
+ sysdep.o  : sysdep.c
+ raise-gcc.o : raise-gcc.c raise.h
+ raise.o   : raise.c raise.h
++convert_addresses.o : convert_addresses.c
+ vx_stack_info.o : vx_stack_info.c
+ 
+ cio.o     : cio.c
+Index: b/src/gcc/ada/adaint.c
+===================================================================
+--- a/src/gcc/ada/adaint.c
++++ b/src/gcc/ada/adaint.c
+@@ -3421,37 +3421,6 @@
+ }
+ #endif
+ 
+-#if defined (IS_CROSS)  \
+-  || (! ((defined (sparc) || defined (i386)) && defined (sun) \
+-      && defined (__SVR4)) \
+-      && ! (defined (linux) && (defined (i386) || defined (__x86_64__))) \
+-      && ! (defined (linux) && defined (__ia64__)) \
+-      && ! (defined (linux) && defined (powerpc)) \
+-      && ! defined (__FreeBSD__) \
+-      && ! defined (__Lynx__) \
+-      && ! defined (__hpux__) \
+-      && ! defined (__APPLE__) \
+-      && ! defined (_AIX) \
+-      && ! (defined (__alpha__)  && defined (__osf__)) \
+-      && ! defined (VMS) \
+-      && ! defined (__MINGW32__) \
+-      && ! (defined (__mips) && defined (__sgi)))
+-
+-/* Dummy function to satisfy g-trasym.o. See the preprocessor conditional
+-   just above for a list of native platforms that provide a non-dummy
+-   version of this procedure in libaddr2line.a.  */
+-
+-void
+-convert_addresses (const char *file_name ATTRIBUTE_UNUSED,
+-		   void *addrs ATTRIBUTE_UNUSED,
+-		   int n_addr ATTRIBUTE_UNUSED,
+-		   void *buf ATTRIBUTE_UNUSED,
+-		   int *len ATTRIBUTE_UNUSED)
+-{
+-  *len = 0;
+-}
+-#endif
+-
+ #if defined (_WIN32)
+ int __gnat_argument_needs_quote = 1;
+ #else
+Index: b/src/gcc/ada/convert_addresses.c
+===================================================================
+--- /dev/null
++++ b/src/gcc/ada/convert_addresses.c
+@@ -0,0 +1,154 @@
++/*
++  Copyright (C) 1999 by Juergen Pfeifer <juergen.pfeifer@gmx.net>
++  Ada for Linux Team (ALT)
++
++  Permission is hereby granted, free of charge, to any person obtaining a
++  copy of this software and associated documentation files (the
++  "Software"), to deal in the Software without restriction, including
++  without limitation the rights to use, copy, modify, merge, publish,
++  distribute, distribute with modifications, sublicense, and/or sell
++  copies of the Software, and to permit persons to whom the Software is
++  furnished to do so, subject to the following conditions:
++
++  The above copyright notice and this permission notice shall be included
++  in all copies or substantial portions of the Software.
++
++  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++  IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
++  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
++  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
++  THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++  Except as contained in this notice, the name(s) of the above copyright
++  holders shall not be used in advertising or otherwise to promote the
++  sale, use or other dealings in this Software without prior written
++  authorization.
++*/
++#include <sys/types.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <string.h>
++#include <signal.h>
++
++#define STDIN_FILENO  0
++#define STDOUT_FILENO 1
++#define MAX_LINE      1024
++
++#define CLOSE1  close(fd1[0]); close(fd1[1])
++#define CLOSE2  close(fd2[0]); close(fd2[1])
++#define RESTSIG sigaction(SIGPIPE,&oact,NULL)
++
++void convert_addresses
++(const char *file_name,
++  void* addrs[],
++  int   n_addr,
++  char* buf,
++  int*  len)
++{
++  int max_len = *len;
++  pid_t pid = getpid();
++  pid_t child;
++
++  struct sigaction act, oact;
++
++  int fd1[2], fd2[2];
++
++  *buf = 0; *len = 0;
++  act.sa_handler = SIG_IGN;
++  sigemptyset(&act.sa_mask);
++  act.sa_flags = 0;
++  if (sigaction(SIGPIPE,&act,&oact) < 0)
++    return;
++
++  if (pipe(fd1) >= 0) {
++    if (pipe(fd2)>=0) {
++      if ((child = fork()) < 0) {
++      CLOSE1; CLOSE2; RESTSIG;
++      return;
++      }
++      else {
++      if (0==child) {
++        close(fd1[1]);
++        close(fd2[0]);
++        if (fd1[0] != STDIN_FILENO) {
++          if (dup2(fd1[0],STDIN_FILENO) != STDIN_FILENO) {
++            CLOSE1; CLOSE2;
++          }
++          close(fd1[0]);
++        }
++        if (fd2[1] != STDOUT_FILENO) {
++          if (dup2(fd2[1],STDOUT_FILENO) != STDOUT_FILENO) {
++            CLOSE1; CLOSE2;
++          }
++          close(fd2[1]);
++        }
++        {
++          /* As pointed out by Florian Weimer to me, it is a
++             security threat to call the script with a user defined
++             environment and using the path. That would be Trojans
++             pleasure.  Therefore we use the absolute path to
++             addr2line and an empty environment. That should be
++             safe.
++          */
++          char *const argv[] = { "addr2line",
++                                 "-e",
++                                 file_name,
++                                 "--demangle=gnat",
++                                 "--functions",
++                                 "--basenames",
++                                 NULL };
++          char *const envp[] = { NULL };
++          if (execve("/usr/bin/addr2line", argv, envp) < 0) {
++            CLOSE1; CLOSE2;
++          }
++        }
++      }
++      else {
++        int i, n;
++        char hex[16];
++        char line[MAX_LINE + 1];
++        char *p;
++        char *s = buf;
++
++        /* Parent context */
++        close(fd1[0]);
++        close(fd2[1]);
++
++        for(i=0; i < n_addr; i++) {
++          snprintf(hex,sizeof(hex),"%p\n",addrs[i]);
++          write(fd1[1],hex,strlen(hex));
++          n = read(fd2[0],line,MAX_LINE);
++          if (n<=0)
++            break;
++          line[n]=0;
++          /* We have approx. 16 additional chars for "%p in " clause.
++             We use this info to prevent a buffer overrun.
++          */
++          if (n + 16 + (*len) > max_len)
++            break;
++          p = strchr(line,'\n');
++          if (p) {
++            if (*(p+1)) {
++              *p = 0;
++              *len += snprintf(s, (max_len - (*len)), "%p in %s at %s",addrs[i], line, p+1);
++            }
++            else {
++              *len += snprintf(s, (max_len - (*len)), "%p at %s",addrs[i], line);
++            }
++            s = buf + (*len);
++          }
++        }
++        close(fd1[1]);
++        close(fd2[0]);
++      }
++      }
++    }
++    else {
++      CLOSE1;
++    }
++  }
++  RESTSIG;
++}
+Index: b/src/gcc/ada/g-trasym.adb
+===================================================================
+--- a/src/gcc/ada/g-trasym.adb
++++ b/src/gcc/ada/g-trasym.adb
+@@ -32,16 +32,16 @@
+ ------------------------------------------------------------------------------
+ 
+ --  Run-time symbolic traceback support
++--  This file has been modified by Juergen Pfeifer (31-Dec-1999) for
++--  the purpose to support the Ada for Linux Team implementation of
++--  convert_addresses. This implementation has the advantage to run
++--  on the binutils as they are deployed on Linux.
+ 
+ with System.Soft_Links;
+ with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback;
+ 
+ package body GNAT.Traceback.Symbolic is
+ 
+-   pragma Linker_Options ("-laddr2line");
+-   pragma Linker_Options ("-lbfd");
+-   pragma Linker_Options ("-liberty");
+-
+    package TSL renames System.Soft_Links;
+ 
+    --  To perform the raw addresses to symbolic form translation we rely on a
+@@ -80,10 +80,6 @@
+       --  FILENAME. LEN points to an integer which contains the size of the
+       --  BUF buffer at input and the result length at output.
+       --
+-      --  This procedure is provided by libaddr2line on targets that support
+-      --  it. A dummy version is in adaint.c for other targets so that build
+-      --  of shared libraries doesn't generate unresolved symbols.
+-      --
+       --  Note that this procedure is *not* thread-safe.
+ 
+       type Argv_Array is array (0 .. 0) of System.Address;
+@@ -94,8 +90,9 @@
+         (c_exename : System.Address) return System.Address;
+       pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path");
+ 
+-      Res : String (1 .. 256 * Traceback'Length);
+-      Len : Integer;
++      B_Size : constant Integer := 256 * Traceback'Length;
++      Len    : Integer := B_Size;
++      Res    : String (1 .. B_Size);
+ 
+       use type System.Address;
+ 
+Index: b/src/gcc/ada/tracebak.c
+===================================================================
+--- a/src/gcc/ada/tracebak.c
++++ b/src/gcc/ada/tracebak.c
+@@ -320,7 +320,7 @@
+ /* Starting with GCC 4.6, -fomit-frame-pointer is turned on by default for
+    32-bit x86/Linux as well and DWARF 2 unwind tables are emitted instead.
+    See the x86-64 case below for the drawbacks with this approach.  */
+-#if defined (linux) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45)
++#if (defined (linux) || defined(__GNU__) || defined(__kFreeBSD_kernel__)) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45)
+ #define USE_GCC_UNWINDER
+ #else
+ #define USE_GENERIC_UNWINDER
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-default-fortify-source.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-default-fortify-source.diff
@@ -0,0 +1,34 @@
+# DP: Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++.
+
+---
+ gcc/doc/invoke.texi          |    6 ++++++
+ gcc/c-family/c-cppbuiltin.c  |    3 +
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -5972,6 +5972,12 @@
+ Please note the warning under @option{-fgcse} about
+ invoking @option{-O2} on programs that use computed gotos.
+ 
++NOTE: In Ubuntu 8.10 and later versions, @option{-D_FORTIFY_SOURCE=2} is
++set by default, and is activated when @option{-O} is set to 2 or higher.
++This enables additional compile-time and run-time checks for several libc
++functions.  To disable, specify either @option{-U_FORTIFY_SOURCE} or
++@option{-D_FORTIFY_SOURCE=0}.
++
+ @item -O3
+ @opindex O3
+ Optimize yet more.  @option{-O3} turns on all optimizations specified
+--- a/src/gcc/c-family/c-cppbuiltin.c
++++ b/src/gcc/c-family/c-cppbuiltin.c
+@@ -731,6 +731,9 @@
+   builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
+   builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
+ 
++  /* Fortify Source enabled by default */
++  builtin_define_with_int_value ("_FORTIFY_SOURCE", 2);
++
+   /* Misc.  */
+   if (flag_gnu89_inline)
+     cpp_define (pfile, "__GNUC_GNU_INLINE__");
--- gcc-4.6-4.6.3.orig/debian/patches/arm-multilib-soft-float.diff
+++ gcc-4.6-4.6.3/debian/patches/arm-multilib-soft-float.diff
@@ -0,0 +1,26 @@
+--- a/src/gcc/config/arm/t-linux-eabi
++++ b/src/gcc/config/arm/t-linux-eabi
+@@ -24,6 +24,23 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifneq (,$(findstring MULTIARCH_DEFAULTS,$(tm_defines)))
++ifneq (,$(findstring __arm_linux_gnueabi__,$(tm_defines)))
++  MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard/mfloat-abi=soft
++  MULTILIB_DIRNAMES	= . hf soft-float
++  MULTILIB_EXCEPTIONS	=
++  MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float
++  MULTILIB_OSDIRNAMES	= ../../lib/arm-linux-gnueabi ../../lib/arm-linux-gnueabihf soft-float
++endif
++ifneq (,$(findstring __arm_linux_gnueabihf__,$(tm_defines)))
++  MULTILIB_OPTIONS	= mfloat-abi=hard/mfloat-abi=softfp/mfloat-abi=soft
++  MULTILIB_DIRNAMES	= . sf soft-float
++  MULTILIB_EXCEPTIONS	=
++  MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float
++  MULTILIB_OSDIRNAMES	= ../../lib/arm-linux-gnueabihf ../../lib/arm-linux-gnueabi soft-float
++endif
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
--- gcc-4.6-4.6.3.orig/debian/patches/gdc-driver-zlib.diff
+++ gcc-4.6-4.6.3/debian/patches/gdc-driver-zlib.diff
@@ -0,0 +1,60 @@
+# DP: Update the gdc driver to use the up-to-date system zlib
+
+--- a/src/gcc/d/d-spec.c	2011-07-24 15:48:55.820035782 +0100
++++ b/src/gcc/d/d-spec.c	2011-07-24 18:12:57.750888801 +0100
+@@ -119,7 +119,7 @@
+     /* The number of arguments being added to what's in argv, other than
+        libraries.  We use this to track the number of times we've inserted
+        -xd/-xnone.  */
+-    int added = 0;
++    int added = 1; /* -lz */
+ 
+     /* The new argument list will be contained in this.  */
+     struct cl_decoded_option *new_decoded_options;
+@@ -505,6 +505,11 @@
+     {
+         /* Handled in gcc.c  */
+         need_pthreads = 1;
++        /* Use the up-to-date system zlib with libphobos */
++        generate_option (OPT_l, "z", 1, CL_DRIVER,
++                         &new_decoded_options[j]);
++        added_libraries++;
++        j++;
+     }
+ 
+     if (saw_librt)
+--- a/src/gcc/d/phobos2/etc/c/zlib.d	2011-07-24 15:48:57.068041974 +0100
++++ b/src/gcc/d/phobos2/etc/c/zlib.d	2011-07-24 18:14:18.775290585 +0100
+@@ -35,8 +35,8 @@
+ 
+ extern (C):
+ 
+-const char[] ZLIB_VERSION = "1.2.3";
+-const ZLIB_VERNUM = 0x1230;
++const char[] ZLIB_VERSION = "1.2.3.4";
++const ZLIB_VERNUM = 0x1234;
+ 
+ /*
+      The 'zlib' compression library provides in-memory compression and
+--- a/src/gcc/d/phobos2/Makefile.am	2011-07-24 15:48:57.004041665 +0100
++++ b/src/gcc/d/phobos2/Makefile.am	2011-07-24 18:16:01.115798057 +0100
+@@ -288,7 +288,7 @@
+ std/stream.t.o: std/stream.d $(D_PREREQ_SRCS)
+ 	$(GDC) -o $@ $(ALL_DFLAGS) -fdeprecated -c $<
+ 
+-ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(MAIN_OBJS) $(ZLIB_OBJS)
++ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(MAIN_OBJS)
+ 
+ 
+ libgphobos2.a : libgdruntime.a $(ALL_PHOBOS_OBJS)
+--- a/src/gcc/d/phobos2/Makefile.in	2011-07-24 15:48:57.016041704 +0100
++++ b/src/gcc/d/phobos2/Makefile.in	2011-07-24 18:16:08.787836103 +0100
+@@ -379,7 +379,7 @@
+ 	     std/windows/charset.o std/windows/iunknown.o std/windows/registry.o \
+ 	     std/windows/syserror.o std/__fileinit.o 
+ 
+-ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(MAIN_OBJS) $(ZLIB_OBJS)
++ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(MAIN_OBJS)
+ 
+ # Work around what appears to be a GNU make bug handling MAKEFLAGS
+ # values defined in terms of make variables, as is the case for CC and
--- gcc-4.6-4.6.3.orig/debian/patches/testsuite-hardening-printf-types.diff
+++ gcc-4.6-4.6.3/debian/patches/testsuite-hardening-printf-types.diff
@@ -0,0 +1,631 @@
+#! /bin/sh -e
+
+# All lines beginning with `# DPATCH:' are a description of the patch.
+# DP: Description: adjust/standardize printf types to avoid -Wformat warnings.
+# DP: Author: Kees Cook <kees@ubuntu.com>
+# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+    dir="$3/"
+elif [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch)
+        patch $pdir -f --no-backup-if-mismatch -p1 < $0
+        #cd ${dir}gcc && autoconf
+        ;;
+    -unpatch)
+        patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
+        #rm ${dir}gcc/configure
+        ;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+
+--- a/src/gcc/testsuite/g++.dg/ext/align1.C
++++ b/src/gcc/testsuite/g++.dg/ext/align1.C
+@@ -16,6 +16,7 @@
+ int
+ main (void)
+ {
+-  printf ("%d %d\n", __alignof (a1), __alignof (f1));
++  // "%td" is not allowed by ISO C++, so use %p with a void * cast
++  printf ("%p %p\n", (void*)__alignof (a1), (void*)__alignof (f1));
+   return (__alignof (a1) < __alignof (f1));
+ }
+--- a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C
+@@ -14,7 +14,8 @@
+ {
+   void *p;
+ 
+-  printf("%d %d %d\n", sz, count, type);
++  // ISO C++ does not support format size modifier "z", so use a cast
++  printf("%u %d %d\n", (unsigned int)sz, count, type);
+ 
+   p = new char[sz * count];
+   ((new_test *)p)->type = type;
+--- a/src/gcc/testsuite/gcc.dg/matrix/matrix-2.c
++++ b/src/gcc/testsuite/gcc.dg/matrix/matrix-2.c
+@@ -42,7 +42,7 @@
+     }
+   for (i = 0; i < ARCHnodes; i++)
+     for (j = 0; j < 3; j++)
+-      printf ("%x\n",vel[i][j]);
++      printf ("%p\n",vel[i][j]);
+       /*if (i!=1 || j!=1)*/
+       /*if (i==1 && j==1)
+         continue;
+@@ -83,14 +83,14 @@
+       for (j = 0; j < 3; j++)
+ 	{
+ 	  vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
+-          printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int));
++          printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int));
+ 	}
+     }
+    for (i = 0; i < ARCHnodes; i++)
+     {
+       for (j = 0; j < 3; j++)
+         {
+-          printf ("%x\n",vel[i][j]);
++          printf ("%p\n",vel[i][j]);
+         }
+     }
+ 
+@@ -99,7 +99,7 @@
+     {
+       for (j = 0; j < 3; j++)
+ 	{
+-	  printf ("%x\n",vel[i][j]);
++	  printf ("%p\n",vel[i][j]);
+           /*for (k = 0; k < ARCHnodes1; k++)
+ 	    {
+ 	      vel[i][j][k] = d;
+--- a/src/gcc/testsuite/gcc.dg/packed-vla.c
++++ b/src/gcc/testsuite/gcc.dg/packed-vla.c
+@@ -17,8 +17,8 @@
+     int			b[4];
+   } __attribute__ ((__packed__)) foo;
+ 
+-  printf("foo %d\n", sizeof(foo));
+-  printf("bar %d\n", sizeof(bar));
++  printf("foo %d\n", (int)sizeof(foo));
++  printf("bar %d\n", (int)sizeof(bar));
+ 
+   if (sizeof (foo) != sizeof (bar))
+     abort ();
+--- a/src/gcc/testsuite/g++.dg/opt/alias2.C
++++ b/src/gcc/testsuite/g++.dg/opt/alias2.C
+@@ -30,14 +30,14 @@
+ 
+ 
+ _Deque_base::~_Deque_base() {
+-  printf ("bb %x %x\n", this, *_M_start._M_node);
++  printf ("bb %p %x\n", this, *_M_start._M_node);
+ }
+ 
+ void
+ _Deque_base::_M_initialize_map()
+ {
+   yy = 0x123;
+-  printf ("aa %x %x\n", this, yy);
++  printf ("aa %p %x\n", this, yy);
+ 
+   _M_start._M_node = &yy;
+   _M_start._M_cur = yy;
+--- a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C
+@@ -33,7 +33,7 @@
+   void Offset () const
+   {
+     printf ("VBase\n");
+-    printf ("  VBase::member %d\n", &this->VBase::member - (int *)this);
++    printf ("  VBase::member %d\n", (int)(&this->VBase::member - (int *)this));
+   }
+ };
+ 
+@@ -55,8 +55,8 @@
+   void Offset () const
+   {
+     printf ("VDerived\n");
+-    printf ("  VBase::member %d\n", &this->VBase::member - (int *)this);
+-    printf ("  VDerived::member %d\n", &this->VDerived::member - (int *)this);
++    printf ("  VBase::member %d\n", (int)(&this->VBase::member - (int *)this));
++    printf ("  VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this));
+   }
+ };
+ struct B : virtual VBase
+@@ -65,8 +65,8 @@
+   void Offset () const
+   {
+     printf ("B\n");
+-    printf ("  VBase::member %d\n", &this->VBase::member - (int *)this);
+-    printf ("  B::member %d\n", &this->B::member - (int *)this);
++    printf ("  VBase::member %d\n", (int)(&this->VBase::member - (int *)this));
++    printf ("  B::member %d\n", (int)(&this->B::member - (int *)this));
+   }
+ };
+ struct MostDerived : B, virtual VDerived
+@@ -75,10 +75,10 @@
+   void Offset () const
+   {
+     printf ("MostDerived\n");
+-    printf ("  VBase::member %d\n", &this->VBase::member - (int *)this);
+-    printf ("  B::member %d\n", &this->B::member - (int *)this);
+-    printf ("  VDerived::member %d\n", &this->VDerived::member - (int *)this);
+-    printf ("  MostDerived::member %d\n", &this->MostDerived::member - (int *)this);
++    printf ("  VBase::member %d\n", (int)(&this->VBase::member - (int *)this));
++    printf ("  B::member %d\n", (int)(&this->B::member - (int *)this));
++    printf ("  VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this));
++    printf ("  MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this));
+   }
+ };
+ 
+@@ -95,10 +95,10 @@
+     if (ctorVDerived != &dum.VDerived::member)
+       return 24;
+     
+-    printf ("  VBase::member %d\n", &dum.VBase::member - this_);
+-    printf ("  B::member %d\n", &dum.B::member - this_);
+-    printf ("  VDerived::member %d\n", &dum.VDerived::member - this_);
+-    printf ("  MostDerived::member %d\n", &dum.MostDerived::member - this_);
++    printf ("  VBase::member %d\n", (int)(&dum.VBase::member - this_));
++    printf ("  B::member %d\n", (int)(&dum.B::member - this_));
++    printf ("  VDerived::member %d\n", (int)(&dum.VDerived::member - this_));
++    printf ("  MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_));
+     dum.MostDerived::Offset ();
+     dum.B::Offset ();
+     dum.VDerived::Offset ();
+--- a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C
+@@ -15,6 +15,6 @@
+ 	
+ 	Double_alignt<20000> heap;
+ 
+-	printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt);
++	printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt);
+ 
+ }
+--- a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C
+@@ -16,7 +16,7 @@
+   }
+ 
+   catch (E *&e) {
+-    printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e);
++    printf ("address of e is %p\n", (void *)e);
+     return !((__SIZE_TYPE__)e != 5 && e->x == 5);
+   }
+   return 2;
+--- a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C
+@@ -42,19 +42,19 @@
+   void DoSomething() {
+     PUB_A = 0;
+     Foo::A = 0;
+-    printf("%x\n",pX);  
++    printf("%p\n",pX);  
+     Foo::PUB.A = 0;
+-    printf("%x\n",PUB.pX);  
++    printf("%p\n",PUB.pX);  
+     B = 0;			
+-    printf("%x\n",Foo::pY);  
++    printf("%p\n",Foo::pY);  
+     PRT_A = 0;
+     PRT.B = 0;		
+-    printf("%x\n",Foo::PRT.pY);	
++    printf("%p\n",Foo::PRT.pY);	
+     PRV_A = 0;			// { dg-error "" } 
+     Foo::C = 0;			// { dg-error "" } 
+-    printf("%x\n",pZ);  	// { dg-error "" } 
++    printf("%p\n",pZ);  	// { dg-error "" } 
+     Foo::PRV.C = 0;		// { dg-error "" } 
+-    printf("%x\n",PRV.pZ); 	// { dg-error "" } 
++    printf("%p\n",PRV.pZ); 	// { dg-error "" } 
+   }
+ };
+ 
+@@ -64,17 +64,17 @@
+ 
+   a.PUB_A = 0;
+   a.A = 0;
+-  printf("%x\n",a.pX);  
++  printf("%p\n",a.pX);  
+   a.PRT_A = 0;			// { dg-error "" } 
+   a.B = 0;			// { dg-error "" } 
+-  printf("%x\n",a.pY);  	// { dg-error "" } 
++  printf("%p\n",a.pY);  	// { dg-error "" } 
+   a.PRV_A = 0;			// { dg-error "" } 
+   a.C = 0;			// { dg-error "" } 
+-  printf("%x\n",a.pZ);  	// { dg-error "" } 
++  printf("%p\n",a.pZ);  	// { dg-error "" } 
+   a.PUB.A = 0;
+-  printf("%x\n",a.PUB.pX);  
++  printf("%p\n",a.PUB.pX);  
+   a.PRT.B = 0;			// { dg-error "" } 
+-  printf("%x\n",a.PRT.pY);  	// { dg-error "" } 
++  printf("%p\n",a.PRT.pY);  	// { dg-error "" } 
+   a.PRV.C = 0;			// { dg-error "" } 
+-  printf("%x\n",a.PRV.pZ);  	// { dg-error "" } 
++  printf("%p\n",a.PRV.pZ);  	// { dg-error "" } 
+ }
+--- a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C
+@@ -20,12 +20,12 @@
+ B::operator const A&() const {
+         static A a;
+         a.i = i;
+-        printf("convert B to A at %x\n", &a);
++        printf("convert B to A at %p\n", (void*)&a);
+         return a;
+ }
+ 
+ void f(A &a) { // { dg-error "" } in passing argument
+-        printf("A at %x is %d\n", &a, a.i);
++        printf("A at %p is %d\n", (void*)&a, a.i);
+ }
+ 
+ int main() {
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C
+@@ -17,10 +17,10 @@
+ 
+ int main() {
+   C c;
+-  printf("&c.x = %x\n", &c.x);
+-  printf("&c.B1::x = %x\n", &c.B1::x);
+-  printf("&c.B2::x = %x\n", &c.B2::x);
+-  printf("&c.A::x = %x\n", &c.A::x);
++  printf("&c.x = %p\n", (void*)&c.x);
++  printf("&c.B1::x = %p\n", (void*)&c.B1::x);
++  printf("&c.B2::x = %p\n", (void*)&c.B2::x);
++  printf("&c.A::x = %p\n", (void*)&c.A::x);
+   if (&c.x != &c.B1::x
+       || &c.x != &c.B2::x
+       || &c.x != &c.A::x)
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C
+@@ -6,7 +6,7 @@
+ class Foo {
+ public:
+    virtual void setName() {
+-     printf("Foo at %x\n", this);
++     printf("Foo at %p\n", (void*)this);
+      if (vp != (void*)this)
+        fail = 1;
+    }
+@@ -15,7 +15,7 @@
+ class Bar : public Foo {
+ public:
+   virtual void init(int argc, char **argv) {
+-    printf("Bar's Foo at %x\n", (Foo*)this);
++    printf("Bar's Foo at %p\n", (void*)(Foo*)this);
+     vp = (void*)(Foo*)this;
+     setName();
+   }
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C
+@@ -18,7 +18,7 @@
+     if (ptr2 != &(*this).slist)
+       fail = 6;
+ 
+-    if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist);
++    if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist);
+   }
+ };
+ 
+@@ -54,14 +54,14 @@
+ void Sim_Event_Manager::post_event () {
+   ptr1 = (RWSlistIterator*)&last_posted_event_position_;
+   ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist;
+-  if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_,
+-		&((RWSlistIterator*)&last_posted_event_position_)->slist);
++  if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_,
++		(void*)&((RWSlistIterator*)&last_posted_event_position_)->slist);
+   if (ptr1 != (RWSlistIterator*)&last_posted_event_position_)
+     fail = 1;
+   if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist)
+     fail = 2;
+-  if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_,
+-		&((RWSlistIterator&)last_posted_event_position_).slist);
++  if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_,
++		(void*)&((RWSlistIterator&)last_posted_event_position_).slist);
+   if (ptr1 != (RWSlistIterator*)&last_posted_event_position_)
+     fail = 3;
+   if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist)
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C
+@@ -7,26 +7,26 @@
+ 
+ class Y {
+ public:
+-  Y () { printf("Y()            this: %x\n", this); }
+-  ~Y () { printf("~Y()           this: %x\n", this); }
++  Y () { printf("Y()            this: %p\n", (void*)this); }
++  ~Y () { printf("~Y()           this: %p\n", (void*)this); }
+ };
+ 
+ class X {
+ public:
+   X () {
+     ++num_x;
+-    printf("X()            this: %x\n", this);
++    printf("X()            this: %p\n", (void*)this);
+     Y y;
+     *this = (X) y;
+   }
+ 
+-  X (const Y & yy) { printf("X(const Y&)    this: %x\n", this); ++num_x; }
++  X (const Y & yy) { printf("X(const Y&)    this: %p\n", (void*)this); ++num_x; }
+   X & operator = (const X & xx) {
+-    printf("X.op=(X&)      this: %x\n", this);
++    printf("X.op=(X&)      this: %p\n", (void*)this);
+     return *this;
+   }
+ 
+-  ~X () { printf("~X()           this: %x\n", this); --num_x; }
++  ~X () { printf("~X()           this: %p\n", (void*)this); --num_x; }
+ };
+ 
+ int main (int, char **) {
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C
+@@ -38,7 +38,7 @@
+   virtual void xx(int doit) {
+     --num;
+     if (ptr != this)
+-      printf("FAIL\n%x != %x\n", ptr, this);
++      printf("FAIL\n%p != %p\n", ptr, (void*)this);
+     printf ("C is destructed.\n");
+     B::xx (0);
+     if (doit) A::xx (1);
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C
+@@ -48,7 +48,7 @@
+   virtual void xx(int doit) {
+     --num;
+     if (ptr != this) {
+-      printf("FAIL\n%x != %x\n", ptr, this);
++      printf("FAIL\n%p != %p\n", ptr, (void*)this);
+       exit(1);
+     }
+     printf ("D is destructed.\n");
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
+@@ -38,7 +38,7 @@
+   virtual void xx(int doit) {
+     --num;
+     if (ptr != this)
+-      printf("FAIL\n%x != %x\n", ptr, this);
++      printf("FAIL\n%p != %p\n", ptr, (void*)this);
+     printf ("C is destructed.\n");
+     B::xx (0);
+     if (doit) A::xx (1);
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C
+@@ -35,20 +35,20 @@
+ foo::foo ()
+ {
+   si++;
+-  printf ("new foo @ 0x%x; now %d foos\n", this, si);
++  printf ("new foo @ %p; now %d foos\n", (void*)this, si);
+ }
+ 
+ foo::foo (const foo &other)
+ {
+   si++;
+-  printf ("another foo @ 0x%x; now %d foos\n", this, si);
++  printf ("another foo @ %p; now %d foos\n", (void*)this, si);
+   *this = other;
+ }
+ 
+ foo::~foo ()
+ {
+   si--;
+-  printf ("deleted foo @ 0x%x; now %d foos\n", this, si);
++  printf ("deleted foo @ %p; now %d foos\n", (void*)this, si);
+ }
+ 
+ int
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C
+@@ -30,7 +30,7 @@
+    virtual ~B() {}
+    void operator delete(void*,size_t s)
+   {
+-      printf("B::delete() %d\n",s);
++      printf("B::delete() %u\n",(unsigned int)s);
+    }
+    void operator delete(void*){}
+ };
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C
+@@ -13,10 +13,10 @@
+   int x;
+   foo () {
+     x = count++;
+-    printf("this %d = %x\n", x, (void *)this);
++    printf("this %d = %p\n", x, (void *)this);
+   }
+   virtual ~foo () {
+-    printf("this %d = %x\n", x, (void *)this);
++    printf("this %d = %p\n", x, (void *)this);
+     --count;
+   }
+ };
+@@ -31,7 +31,7 @@
+       {
+ 	for (int j = 0; j < 3; j++)
+ 	  {
+-	    printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]);
++	    printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]);
+ 	  }
+       }
+       // The count should be nine, if not, fail the test.
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
+@@ -42,7 +42,7 @@
+ bar jar;
+ 
+ int main() {
+-  printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b);
++  printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b);
+   B_table::B_ti_fn z = &B_table::func1;
+   int j = 1;
+   jar.call_fn_fn1(j,(void *)&z);
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C
+@@ -7,11 +7,11 @@
+ public:
+   T() {
+     i = 1;
+-    printf("T() at %x\n", this);
++    printf("T() at %p\n", (void*)this);
+   }
+   T(const T& o) {
+     i = o.i;
+-    printf("T(const T&) at %x <-- %x\n", this, &o);
++    printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o);
+   }
+   T operator +(const T& o) {
+     T r;
+@@ -21,7 +21,7 @@
+   operator int () {
+     return i;
+   }
+-  ~T() { printf("~T() at %x\n", this); }
++  ~T() { printf("~T() at %p\n", (void*)this); }
+ } s, b;
+ 
+ int foo() { return getenv("TEST") == 0; }
+--- a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C
+@@ -5,16 +5,16 @@
+ class Foo 
+ {
+ public:
+-   Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; }
+-   Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); }
+-   ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; }
++   Foo() { printf("Foo() %p\n", (void*)this); ++c; }
++   Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); }
++   ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; }
+ };
+ 
+ // Bar creates constructs a temporary Foo() as a default
+ class Bar 
+ {
+ public:
+-   Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); }
++   Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); }
+ };
+ 
+ void fakeRef(Bar *)
+--- a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C
+@@ -4,7 +4,7 @@
+ struct A
+ {
+   virtual void f () {
+-    printf ("%x\n", this);
++    printf ("%p\n", (void*)this);
+   }
+ };
+ 
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C
+@@ -13,7 +13,7 @@
+ 
+   template <class U>
+   void f(U u)
+-  { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); }
++  { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); }
+ 
+   int c[16];
+ };
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C
+@@ -13,7 +13,7 @@
+ 
+   template <class U>
+   void f(U u)
+-  { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); }
++  { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); }
+ 
+   int c[16];
+ };
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C
+@@ -6,7 +6,7 @@
+ struct S
+ {
+   template <class U>
+-  void f(U u) { printf ("%d\n", sizeof (U)); }
++  void f(U u) { printf ("%d\n", (int)sizeof (U)); }
+ 
+   int i[4];
+ };
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C
+@@ -16,7 +16,7 @@
+ template <class U>
+ void S<X>::f(U u)
+ {
+-  printf ("%d\n", sizeof (U));
++  printf ("%d\n", (int)sizeof (U));
+ }
+ 
+ 
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C
+@@ -10,9 +10,9 @@
+ 
+ template <class T>
+ void frob<T>::print () {
+-  printf ("this = %08x\n", this);
+-  printf (" ptr = %08x\n", ptr);
+-  printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]);
++  printf ("this = %p\n", (void*)this);
++  printf (" ptr = %p\n", (void*)ptr);
++  printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]);
+ }
+ 
+   static int x[10];
+--- a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C
+@@ -44,15 +44,15 @@
+     A * a = new B;
+     B * b = dynamic_cast<B *>(a);
+ 
+-    printf("%p\n",b);                // (*2*)
++    printf("%p\n",(void*)b);                // (*2*)
+     b->print();
+ 
+     a = b;
+-    printf("%p\n",a);
++    printf("%p\n",(void*)a);
+     a->print();
+ 
+     a = a->clone();
+-    printf("%p\n",a);
++    printf("%p\n",(void*)a);
+     a->print();                      // (*1*)
+ 
+     return 0;
+--- a/src/gcc/testsuite/gcc.dg/pch/inline-4.c
++++ b/src/gcc/testsuite/gcc.dg/pch/inline-4.c
+@@ -1,6 +1,6 @@
+ #include "inline-4.h"
+ extern int printf (const char *, ...);
+ int main(void) {
+-  printf (getstring());
++  printf ("%s", getstring());
+   return 0;
+ }
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-default-relro.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-default-relro.diff
@@ -0,0 +1,29 @@
+# DP: Turn on -Wl,-z,relro by default.
+
+---
+ gcc/doc/invoke.texi |    3 +++
+ gcc/gcc.c           |    1 +
+ 2 files changed, 4 insertions(+), 0 deletions(-)
+
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -9216,6 +9216,9 @@
+ linker.  When using the GNU linker, you can also get the same effect with
+ @samp{-Wl,-Map=output.map}.
+ 
++NOTE: In Ubuntu 8.10 and later versions, for LDFLAGS, the option
++@option{-Wl,-z,relro} is used.  To disable, use @option{-Wl,-z,norelro}.
++
+ @item -u @var{symbol}
+ @opindex u
+ Pretend the symbol @var{symbol} is undefined, to force linking of
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -661,6 +661,7 @@
+     }"PLUGIN_COND_CLOSE" \
+     %{flto|flto=*:%<fcompare-debug*} \
+     %{flto} %{flto=*} %l " LINK_PIE_SPEC \
++   " -z relro "\
+    "%X %{o*} %{e*} %{N} %{n} %{r}\
+     %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\
+     %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
--- gcc-4.6-4.6.3.orig/debian/patches/ada-libgnatvsn.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-libgnatvsn.diff
@@ -0,0 +1,1647 @@
+# DP: - Introduce a new shared library named libgnatvsn, containing
+# DP:   common components of GNAT under the GNAT-Modified GPL, for
+# DP:   use in GNAT tools, ASIS, GLADE and GPS.   Link the gnat tools
+# DP:   against this new library.
+
+# This patch seems large, but the hunks in Makefile.in are actually
+# generated from Makefile.def using autogen.
+
+# !!! Must be applied after ada-link-lib.dpatch
+
+Index: b/src/gnattools/Makefile.in
+===================================================================
+--- a/src/gnattools/Makefile.in
++++ b/src/gnattools/Makefile.in
+@@ -38,10 +38,11 @@
+ CFLAGS=-O2 -Wall
+ INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc
+ ADA_CFLAGS=-O2 -gnatn
+-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I@srcdir@/../gcc/ada
++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn
+ LIB_VERSION=$(strip $(shell grep ' Library_Version :' \
+-              @srcdir@/../gcc/ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
++              ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
+ ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION)
++ADA_LIBS += -L../libgnatvsn -lgnatvsn
+ 
+ # We will use the just-built compiler to compile and link everything.
+ GCC=../gcc/xgcc -B../gcc/
+@@ -67,62 +68,34 @@
+ # Since we don't have gnatmake, we must specify the full list of
+ # object files necessary to build gnatmake and gnatlink.
+ # TODO: remove from these lists the objects that are part of
+-# libgnatvsn and libgnatprj.
++# libgnatprj.
+ GNATLINK_OBJS = \
+ ali.o \
+-alloc.o \
+ butil.o \
+-casing.o \
+-csets.o \
+-debug.o \
+ fmap.o \
+-fname.o \
+ gnatlink.o \
+-gnatvsn.o \
+-hostparm.o \
+ indepsw.o \
+-namet.o \
+-opt.o \
+ osint.o \
+-output.o \
+ prefix.o \
+ rident.o \
+ sdefault.o \
+-snames.o \
+ stylesw.o \
+ switch.o \
+-table.o \
+ targparm.o \
+-tree_io.o \
+-types.o \
+-validsw.o \
+-version.o \
+-widechar.o
++validsw.o
+ 
+ GNATMAKE_OBJS = \
+ ali-util.o \
+ ali.o \
+-alloc.o \
+-atree.o \
+ binderr.o \
+ butil.o \
+-casing.o \
+-csets.o \
+-debug.o \
+-einfo.o\
+-elists.o \
+ err_vars.o \
+ erroutc.o \
+ errutil.o \
+ fmap.o \
+ fname-sf.o \
+ fname-uf.o \
+-fname.o \
+ gnatmake.o \
+-gnatvsn.o \
+-hostparm.o \
+-krunch.o \
+-lib.o \
+ make.o \
+ makeusg.o \
+ makeutl.o \
+@@ -132,12 +105,8 @@
+ mlib-tgt-specific.o \
+ mlib-utl.o \
+ mlib.o \
+-namet.o \
+-nlists.o \
+-opt.o \
+ osint-m.o \
+ osint.o \
+-output.o \
+ prefix.o \
+ prj-attr-pm.o \
+ prj-attr.o \
+@@ -155,47 +124,59 @@
+ prj-util.o \
+ prj.o \
+ rident.o \
+-scans.o \
+ scng.o \
+ sdefault.o \
+ sfn_scan.o \
+-sinfo.o \
+ sinput-c.o \
+ sinput-p.o \
+-sinput.o \
+-snames.o \
+-stand.o \
+-stringt.o \
+ styleg.o \
+ stylesw.o \
+ switch-m.o \
+ switch.o \
+-table.o \
+ targparm.o \
+ tempdir.o \
+-tree_io.o \
+-types.o \
+-uintp.o \
+-uname.o \
+-urealp.o \
+ usage.o \
+ validsw.o \
+-version.o \
+-widechar.o \
+ $(EXTRA_GNATMAKE_OBJS)
+ 
++EXTRA_TOOLS_OBJS = \
++bcheck.o \
++binde.o \
++bindgen.o \
++bindusg.o \
++clean.o \
++gprep.o \
++makegpr.o \
++osint-b.o \
++osint-l.o \
++prep.o \
++prj-makr.o \
++prj-pp.o \
++switch-b.o \
++vms_cmds.o \
++vms_conv.o \
++vms_data.o \
++xr_tabls.o \
++xref_lib.o
++
++OBJECTS = $(GNATLINK_OBJS) $(GNATMAKE_OBJS) $(EXTRA_TOOLS_OBJS)
++
+ # Makefile targets
+ # ----------------
+ 
+ .PHONY: gnattools gnattools-native gnattools-cross regnattools
+ gnattools: @default_gnattools_target@
+ 
+-# Build directory for the tools. Let's copy the target-dependent
+-# sources using the same mechanism as for gnatlib. The other sources are
+-# accessed using the vpath directive.
++BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f))))
++SPECS  := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f))))
++
++$(notdir $(SPECS) $(BODIES)): stamp-gnattools-sources
+ 
+ stamp-gnattools-sources:
+-	$(LN_S) ../gcc/ada/sdefault.adb .
++	for file in $(BODIES) $(SPECS); do \
++	   $(LN_S) -f $$file .; \
++	done
++	rm -f sdefault.adb; $(LN_S) ../gcc/ada/sdefault.adb .
+ 	$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
+ 	          rm -f $(word 1,$(subst <, ,$(PAIR)));\
+ 	          $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \
+@@ -203,6 +184,7 @@
+ 	touch $@
+ 
+ gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so
++gnattools-native: ../libgnatvsn/libgnatvsn.so
+ gnattools-native: stamp-gnattools-sources
+ gnattools-native: $(TOOLS)
+ 
+@@ -210,18 +192,16 @@
+ 
+ vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc
+ vpath %.h @srcdir@/../gcc/ada
+-vpath %.adb .:@srcdir@/../gcc/ada
+-vpath %.ads @srcdir@/../gcc/ada
+ 
+ # Because the just-built gcc is a host tool like us, we can use some
+-# of its object files, e.g. prefix.o and version.o.
++# of its object files, e.g. prefix.o.
+ vpath prefix.o ../gcc
+-vpath version.o ../gcc
+ 
+ # gnatlink
+ 
+ gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o
+ 	$(GCC) -o $@ $^ \
++	   ../libgnatvsn/libgnatvsn.a \
+ 	   ../gcc/ada/rts/libgnat.a \
+ 	   ../libiberty/libiberty.a
+ 
+@@ -238,6 +218,7 @@
+ 
+ gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o
+ 	$(GCC) -o $@ $(ADA_CFLAGS) $^ \
++	   ../libgnatvsn/libgnatvsn.a \
+ 	   ../gcc/ada/rts/libgnat.a \
+ 	   ../libiberty/libiberty.a
+ 
+@@ -251,7 +232,8 @@
+ 	../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali
+ 
+ # Other tools
+-gnatkr: version.o
++gnatkr:
++	if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi
+ 	./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \
+ 	   --GCC="$(GCC)" \
+ 	   --GNATBIND=../gcc/gnatbind
+@@ -262,7 +244,8 @@
+ 	cp -lp $< $@
+ 
+ gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref: \
+-link.o version.o prefix.o
++link.o prefix.o
++	if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi
+ 	./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \
+ 	   --GCC="$(GCC)" \
+ 	   --GNATBIND=../gcc/gnatbind
+@@ -284,6 +267,8 @@
+ %.o: %.c
+ 	$(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES)
+ 
++prefix.o:
++
+ # Other
+ # -----
+ 
+@@ -325,13 +310,15 @@
+ .PHONY: install install-strip install-info install-pdf install-html
+ 
+ # Cleaning rules.
++.PHONY: mostlyclean clean distclean
++
+ mostlyclean:
+ 	$(RM) gnatmake gnatlink $(TOOLS) *.o *.ali
+ 
+-clean:
++clean: mostlyclean
+ 	$(RM) *.ads *.adb stamp-gnattools-sources
+ 
+-distclean:
++distclean: clean
+ 	$(RM) Makefile config.status config.log
+ 
+ maintainer-clean:
+Index: b/src/libgnatvsn/configure
+===================================================================
+--- /dev/null
++++ b/src/libgnatvsn/configure
+@@ -0,0 +1,47 @@
++#!/bin/sh
++
++# Minimal configure script for libgnatvsn.  We're only interested in
++# a few parameters.
++
++for arg in $*; do
++    case ${arg} in
++	--build=*)
++	    build=`expr ${arg} : '--build=\(.\+\)'`;;
++	--host=*)
++	    host=`expr ${arg} : '--host=\(.\+\)'`;;
++	--target=*)
++	    target=`expr ${arg} : '--target=\(.\+\)'`;;
++	--prefix=*)
++	    prefix=`expr ${arg} : '--prefix=\(.\+\)'`;;
++	--srcdir=*)
++	    srcdir=`expr ${arg} : '--srcdir=\(.\+\)'`;;
++	--libdir=*)
++	    libdir=`expr ${arg} : '--libdir=\(.\+\)'`;;
++	--with-pkgversion=*)
++	    pkgversion=`expr ${arg} : '--with-pkgversion=\(.\+\)'`;;
++	--with-bugurl=*)
++	    bugurl=`expr ${arg} : '--with-bugurl=\(.\+\)'`;;
++	*)
++	    echo "Warning: ignoring option: ${arg}"
++    esac
++done
++
++echo "build: ${build}" | tee config.log
++echo "host: ${host}" | tee -a config.log
++echo "target: ${target}" | tee -a config.log
++echo "prefix: ${prefix}" | tee -a config.log
++echo "srcdir: ${srcdir}" | tee -a config.log
++echo "libdir: ${libdir}" | tee -a config.log
++echo "pkgversion: ${pkgversion}" | tee -a config.log
++echo "bugurl: ${bugurl}" | tee -a config.log
++
++echo "Creating Makefile..." | tee -a config.log
++sed -e "s,@build@,${build},g" \
++    -e "s,@host@,${host},g" \
++    -e "s,@target@,${target},g" \
++    -e "s,@prefix@,${prefix},g" \
++    -e "s,@srcdir@,${srcdir},g" \
++    -e "s,@libdir@,${libdir},g" \
++    -e "s,@PKGVERSION@,${pkgversion},g" \
++    -e "s,@REPORT_BUGS_TO@,${bugurl},g" \
++    < ${srcdir}/Makefile.in > Makefile
+Index: b/src/libgnatvsn/Makefile.in
+===================================================================
+--- /dev/null
++++ b/src/libgnatvsn/Makefile.in
+@@ -0,0 +1,157 @@
++# Makefile for libgnatvsn.
++#   Copyright (c) 2006 Ludovic Brenta <ludovic@ludovic-brenta.org>
++#
++# This file 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 2 of the License, or
++# (at your option) any later version.
++# 
++# This program 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 this program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
++
++# Default target; must be first.
++all: libgnatvsn
++
++.SUFFIXES:
++
++CPUS := $(shell getconf _NPROCESSORS_ONLN)
++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \
++                 @srcdir@/../gcc/ada/gnatvsn.ads | \
++	         sed -e 's/.*"\(.*\)".*/\1/'))
++GCC:=../gcc/xgcc -B../gcc/
++LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts
++CFLAGS := -g -O2 -gnatn
++BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER)
++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE)
++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP)
++
++# For use in version.c - double quoted strings, with appropriate
++# surrounding punctuation and spaces, and with the datestamp and
++# development phase collapsed to the empty string in release mode
++# (i.e. if DEVPHASE_c is empty).  The space immediately after the
++# comma in the $(if ...) constructs is significant - do not remove it.
++BASEVER_s   := "\"$(BASEVER)\""
++DEVPHASE_s  := "\"$(if $(DEVPHASE), ($(DEVPHASE)))\""
++DATESTAMP_s := "\"$(if $(DEVPHASE), $(DATESTAMP))\""
++PKGVERSION_s:= "\"@PKGVERSION@\""
++BUGURL_s    := "\"@REPORT_BUGS_TO@\""
++
++ifneq (@build@,@host@)
++   CFLAGS += -b @host@
++endif
++
++.PHONY: libgnatvsn install
++libgnatvsn: libgnatvsn.so.$(LIB_VERSION) libgnatvsn.a
++
++VSN_SOURCES := alloc.ads aspects.adb atree.adb casing.adb csets.adb debug.adb einfo.adb \
++elists.adb fname.adb gnatvsn.adb hostparm.ads krunch.adb lib.adb namet.adb \
++nlists.adb opt.adb output.adb repinfo.adb scans.adb sinfo.adb sem_aux.adb \
++sinput.adb stand.adb stringt.adb table.adb tree_in.adb tree_io.adb types.adb \
++uintp.adb uname.adb urealp.adb widechar.adb
++
++VSN_SEPARATES := lib-list.adb lib-sort.adb
++
++VSN_GENERATED_SOURCES := snames.adb
++
++OBJECTS=$(patsubst %.ads,%.o,$(VSN_SOURCES:.adb=.o) $(VSN_GENERATED_SOURCES:.adb=.o)) version.o
++
++vpath %.c @srcdir@/../gcc
++
++libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS))
++	: # Make libgnatvsn.so
++	$(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \
++	   -L../gcc/ada/rts -lgnat-$(LIB_VERSION)
++	ln -s libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so
++	chmod a=r obj-shared/*.ali
++# Make the .ali files, but not the .o files, visible to the gnat tools.
++	cp -lp obj-shared/*.ali .
++
++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-shared
++
++obj-shared/%.o: %.adb
++	$(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@
++
++obj-shared/%.o: %.ads
++	$(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@
++
++obj-shared/version.o: version.c
++	$(GCC) -c -fPIC -g -O2 \
++	   -DBASEVER=$(BASEVER_s) \
++	   -DDATESTAMP=$(DATESTAMP_s) \
++	   -DDEVPHASE=$(DEVPHASE_s) \
++	   -DPKGVERSION=$(PKGVERSION_s) \
++	   -DBUGURL=$(BUGURL_s) \
++	   -DREVISION= \
++	   $(realpath $<) -o $@
++
++obj-shared:
++	-mkdir $@
++
++libgnatvsn.a: $(addprefix obj-static/,$(OBJECTS))
++	: # Make libgnatvsn.a
++	ar rc $@ $^
++	ranlib $@
++
++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-static
++
++obj-static/%.o: %.adb
++	$(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@
++
++obj-static/%.o: %.ads
++	$(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@
++
++obj-static/version.o: version.c
++	$(GCC) -c -g -O2 \
++	   -DBASEVER=$(BASEVER_s) \
++	   -DDATESTAMP=$(DATESTAMP_s) \
++	   -DDEVPHASE=$(DEVPHASE_s) \
++	   -DPKGVERSION=$(PKGVERSION_s) \
++	   -DBUGURL=$(BUGURL_s) \
++	   -DREVISION= \
++	   $< -o $@
++
++obj-static:
++	-mkdir $@
++
++$(VSN_SOURCES) $(VSN_SEPARATES) $(VSN_GENERATED_SOURCES): stamp-libgnatvsn-sources
++
++stamp-libgnatvsn-sources:
++	for file in $(VSN_SOURCES) $(VSN_SEPARATES); do \
++	   ads=$$(echo $$file | sed 's/\.adb/.ads/'); \
++	   if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then ln -s @srcdir@/../gcc/ada/$$file .; fi; \
++	   if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then ln -s @srcdir@/../gcc/ada/$$ads .; fi; \
++	done
++	for file in $(VSN_GENERATED_SOURCES); do \
++	   ads=$$(echo $$file | sed 's/\.adb/.ads/'); \
++	   if [ -f ../gcc/ada/$$file -a ! -L $$file ] ; then ln -s ../gcc/ada/$$file .; fi; \
++	   if [ -f ../gcc/ada/$$ads -a ! -L $$ads ] ; then ln -s ../gcc/ada/$$ads .; fi; \
++	done
++	touch $@
++
++libdir = @libdir@
++
++install: libgnatvsn
++	$(INSTALL_DATA) libgnatvsn.a $(DESTDIR)$(libdir)
++	$(INSTALL_DATA) libgnatvsn.so.$(LIB_VERSION) $(DESTDIR)$(libdir)
++	cd $(DESTDIR)$(libdir); ln -sf libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so
++	mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn
++	$(INSTALL_DATA) \
++	   $(addprefix @srcdir@/../gcc/ada/,$(VSN_SOURCES) $(VSN_SEPARATES)) \
++	   $(addprefix @srcdir@/../gcc/ada/,$(patsubst %.adb,%.ads,$(filter %.adb,$(VSN_SOURCES)))) \
++	   $(addprefix ../gcc/ada/,$(VSN_GENERATED_SOURCES)) \
++	   $(addprefix ../gcc/ada/,$(patsubst %.adb,%.ads,$(VSN_GENERATED_SOURCES))) \
++	   $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn
++	mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn
++	$(INSTALL) -m 0444 obj-shared/*.ali \
++	   $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn
++	chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn/*.ali
++
++.PHONY: clean
++clean:
++	rm -rf *.ali obj-static obj-shared libgnatvsn* *.adb *.ads stamp*
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -151,6 +151,13 @@
+ 		missing= TAGS;
+ 		missing= install-info;
+ 		missing= installcheck; };
++host_modules= { module= libgnatvsn; no_check=true;
++		missing= info;
++		missing= dvi;
++		missing= html;
++		missing= TAGS;
++		missing= install-info;
++		missing= installcheck; };
+ host_modules= { module= gnattools; no_check=true;
+ 		missing= info;
+ 		missing= dvi;
+@@ -196,6 +203,13 @@
+ 		   missing= TAGS;
+ 		   missing= install-info;
+ 		   missing= installcheck; };
++target_modules = { module= libgnatvsn; no_check=true;
++		   missing= info;
++		   missing= dvi;
++		   missing= html;
++		   missing= TAGS;
++		   missing= install-info;
++		   missing= installcheck; };
+ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
+ 
+ // These are (some of) the make targets to be done in each subdirectory.
+@@ -382,6 +396,8 @@
+ dependencies = { module=all-fixincludes; on=all-libiberty; };
+ 
+ dependencies = { module=all-gnattools; on=all-libada; };
++dependencies = { module=all-gnattools; on=all-libgnatvsn; };
++dependencies = { module=all-libgnatvsn; on=all-libada; };
+ 
+ dependencies = { module=all-lto-plugin; on=all-libiberty; };
+ 
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -951,6 +951,7 @@
+     maybe-configure-libtermcap \
+     maybe-configure-utils \
+     maybe-configure-libada \
++    maybe-configure-libgnatvsn \
+     maybe-configure-gnattools \
+     maybe-configure-lto-plugin
+ .PHONY: configure-target
+@@ -977,6 +978,7 @@
+     maybe-configure-target-qthreads \
+     maybe-configure-target-rda \
+     maybe-configure-target-libada \
++    maybe-configure-target-libgnatvsn \
+     maybe-configure-target-libgomp
+ 
+ # The target built for a native non-bootstrap build.
+@@ -1129,6 +1131,7 @@
+ all-host: maybe-all-libtermcap
+ all-host: maybe-all-utils
+ all-host: maybe-all-libada
++all-host: maybe-all-libgnatvsn
+ all-host: maybe-all-gnattools
+ @if lto-plugin-no-bootstrap
+ all-host: maybe-all-lto-plugin
+@@ -1162,6 +1165,7 @@
+ all-target: maybe-all-target-qthreads
+ all-target: maybe-all-target-rda
+ all-target: maybe-all-target-libada
++all-target: maybe-all-target-libgnatvsn
+ @if target-libgomp-no-bootstrap
+ all-target: maybe-all-target-libgomp
+ @endif target-libgomp-no-bootstrap
+@@ -1259,6 +1263,7 @@
+ info-host: maybe-info-libtermcap
+ info-host: maybe-info-utils
+ info-host: maybe-info-libada
++info-host: maybe-info-libgnatvsn
+ info-host: maybe-info-gnattools
+ info-host: maybe-info-lto-plugin
+ 
+@@ -1286,6 +1291,7 @@
+ info-target: maybe-info-target-qthreads
+ info-target: maybe-info-target-rda
+ info-target: maybe-info-target-libada
++info-target: maybe-info-target-libgnatvsn
+ info-target: maybe-info-target-libgomp
+ 
+ .PHONY: do-dvi
+@@ -1376,6 +1382,7 @@
+ dvi-host: maybe-dvi-libtermcap
+ dvi-host: maybe-dvi-utils
+ dvi-host: maybe-dvi-libada
++dvi-host: maybe-dvi-libgnatvsn
+ dvi-host: maybe-dvi-gnattools
+ dvi-host: maybe-dvi-lto-plugin
+ 
+@@ -1403,6 +1410,7 @@
+ dvi-target: maybe-dvi-target-qthreads
+ dvi-target: maybe-dvi-target-rda
+ dvi-target: maybe-dvi-target-libada
++dvi-target: maybe-dvi-target-libgnatvsn
+ dvi-target: maybe-dvi-target-libgomp
+ 
+ .PHONY: do-pdf
+@@ -1493,6 +1501,7 @@
+ pdf-host: maybe-pdf-libtermcap
+ pdf-host: maybe-pdf-utils
+ pdf-host: maybe-pdf-libada
++pdf-host: maybe-pdf-libgnatvsn
+ pdf-host: maybe-pdf-gnattools
+ pdf-host: maybe-pdf-lto-plugin
+ 
+@@ -1520,6 +1529,7 @@
+ pdf-target: maybe-pdf-target-qthreads
+ pdf-target: maybe-pdf-target-rda
+ pdf-target: maybe-pdf-target-libada
++pdf-target: maybe-pdf-target-libgnatvsn
+ pdf-target: maybe-pdf-target-libgomp
+ 
+ .PHONY: do-html
+@@ -1610,6 +1620,7 @@
+ html-host: maybe-html-libtermcap
+ html-host: maybe-html-utils
+ html-host: maybe-html-libada
++html-host: maybe-html-libgnatvsn
+ html-host: maybe-html-gnattools
+ html-host: maybe-html-lto-plugin
+ 
+@@ -1637,6 +1648,7 @@
+ html-target: maybe-html-target-qthreads
+ html-target: maybe-html-target-rda
+ html-target: maybe-html-target-libada
++html-target: maybe-html-target-libgnatvsn
+ html-target: maybe-html-target-libgomp
+ 
+ .PHONY: do-TAGS
+@@ -1727,6 +1739,7 @@
+ TAGS-host: maybe-TAGS-libtermcap
+ TAGS-host: maybe-TAGS-utils
+ TAGS-host: maybe-TAGS-libada
++TAGS-host: maybe-TAGS-libgnatvsn
+ TAGS-host: maybe-TAGS-gnattools
+ TAGS-host: maybe-TAGS-lto-plugin
+ 
+@@ -1754,6 +1767,7 @@
+ TAGS-target: maybe-TAGS-target-qthreads
+ TAGS-target: maybe-TAGS-target-rda
+ TAGS-target: maybe-TAGS-target-libada
++TAGS-target: maybe-TAGS-target-libgnatvsn
+ TAGS-target: maybe-TAGS-target-libgomp
+ 
+ .PHONY: do-install-info
+@@ -1844,6 +1858,7 @@
+ install-info-host: maybe-install-info-libtermcap
+ install-info-host: maybe-install-info-utils
+ install-info-host: maybe-install-info-libada
++install-info-host: maybe-install-info-libgnatvsn
+ install-info-host: maybe-install-info-gnattools
+ install-info-host: maybe-install-info-lto-plugin
+ 
+@@ -1871,6 +1886,7 @@
+ install-info-target: maybe-install-info-target-qthreads
+ install-info-target: maybe-install-info-target-rda
+ install-info-target: maybe-install-info-target-libada
++install-info-target: maybe-install-info-target-libgnatvsn
+ install-info-target: maybe-install-info-target-libgomp
+ 
+ .PHONY: do-install-pdf
+@@ -1961,6 +1977,7 @@
+ install-pdf-host: maybe-install-pdf-libtermcap
+ install-pdf-host: maybe-install-pdf-utils
+ install-pdf-host: maybe-install-pdf-libada
++install-pdf-host: maybe-install-pdf-libgnatvsn
+ install-pdf-host: maybe-install-pdf-gnattools
+ install-pdf-host: maybe-install-pdf-lto-plugin
+ 
+@@ -1988,6 +2005,7 @@
+ install-pdf-target: maybe-install-pdf-target-qthreads
+ install-pdf-target: maybe-install-pdf-target-rda
+ install-pdf-target: maybe-install-pdf-target-libada
++install-pdf-target: maybe-install-pdf-target-libgnatvsn
+ install-pdf-target: maybe-install-pdf-target-libgomp
+ 
+ .PHONY: do-install-html
+@@ -2078,6 +2096,7 @@
+ install-html-host: maybe-install-html-libtermcap
+ install-html-host: maybe-install-html-utils
+ install-html-host: maybe-install-html-libada
++install-html-host: maybe-install-html-libgnatvsn
+ install-html-host: maybe-install-html-gnattools
+ install-html-host: maybe-install-html-lto-plugin
+ 
+@@ -2105,6 +2124,7 @@
+ install-html-target: maybe-install-html-target-qthreads
+ install-html-target: maybe-install-html-target-rda
+ install-html-target: maybe-install-html-target-libada
++install-html-target: maybe-install-html-target-libgnatvsn
+ install-html-target: maybe-install-html-target-libgomp
+ 
+ .PHONY: do-installcheck
+@@ -2195,6 +2215,7 @@
+ installcheck-host: maybe-installcheck-libtermcap
+ installcheck-host: maybe-installcheck-utils
+ installcheck-host: maybe-installcheck-libada
++installcheck-host: maybe-installcheck-libgnatvsn
+ installcheck-host: maybe-installcheck-gnattools
+ installcheck-host: maybe-installcheck-lto-plugin
+ 
+@@ -2222,6 +2243,7 @@
+ installcheck-target: maybe-installcheck-target-qthreads
+ installcheck-target: maybe-installcheck-target-rda
+ installcheck-target: maybe-installcheck-target-libada
++installcheck-target: maybe-installcheck-target-libgnatvsn
+ installcheck-target: maybe-installcheck-target-libgomp
+ 
+ .PHONY: do-mostlyclean
+@@ -2312,6 +2334,7 @@
+ mostlyclean-host: maybe-mostlyclean-libtermcap
+ mostlyclean-host: maybe-mostlyclean-utils
+ mostlyclean-host: maybe-mostlyclean-libada
++mostlyclean-host: maybe-mostlyclean-libgnatvsn
+ mostlyclean-host: maybe-mostlyclean-gnattools
+ mostlyclean-host: maybe-mostlyclean-lto-plugin
+ 
+@@ -2339,6 +2362,7 @@
+ mostlyclean-target: maybe-mostlyclean-target-qthreads
+ mostlyclean-target: maybe-mostlyclean-target-rda
+ mostlyclean-target: maybe-mostlyclean-target-libada
++mostlyclean-target: maybe-mostlyclean-target-libgnatvsn
+ mostlyclean-target: maybe-mostlyclean-target-libgomp
+ 
+ .PHONY: do-clean
+@@ -2429,6 +2453,7 @@
+ clean-host: maybe-clean-libtermcap
+ clean-host: maybe-clean-utils
+ clean-host: maybe-clean-libada
++clean-host: maybe-clean-libgnatvsn
+ clean-host: maybe-clean-gnattools
+ clean-host: maybe-clean-lto-plugin
+ 
+@@ -2456,6 +2481,7 @@
+ clean-target: maybe-clean-target-qthreads
+ clean-target: maybe-clean-target-rda
+ clean-target: maybe-clean-target-libada
++clean-target: maybe-clean-target-libgnatvsn
+ clean-target: maybe-clean-target-libgomp
+ 
+ .PHONY: do-distclean
+@@ -2546,6 +2572,7 @@
+ distclean-host: maybe-distclean-libtermcap
+ distclean-host: maybe-distclean-utils
+ distclean-host: maybe-distclean-libada
++distclean-host: maybe-distclean-libgnatvsn
+ distclean-host: maybe-distclean-gnattools
+ distclean-host: maybe-distclean-lto-plugin
+ 
+@@ -2573,6 +2600,7 @@
+ distclean-target: maybe-distclean-target-qthreads
+ distclean-target: maybe-distclean-target-rda
+ distclean-target: maybe-distclean-target-libada
++distclean-target: maybe-distclean-target-libgnatvsn
+ distclean-target: maybe-distclean-target-libgomp
+ 
+ .PHONY: do-maintainer-clean
+@@ -2663,6 +2691,7 @@
+ maintainer-clean-host: maybe-maintainer-clean-libtermcap
+ maintainer-clean-host: maybe-maintainer-clean-utils
+ maintainer-clean-host: maybe-maintainer-clean-libada
++maintainer-clean-host: maybe-maintainer-clean-libgnatvsn
+ maintainer-clean-host: maybe-maintainer-clean-gnattools
+ maintainer-clean-host: maybe-maintainer-clean-lto-plugin
+ 
+@@ -2690,6 +2719,7 @@
+ maintainer-clean-target: maybe-maintainer-clean-target-qthreads
+ maintainer-clean-target: maybe-maintainer-clean-target-rda
+ maintainer-clean-target: maybe-maintainer-clean-target-libada
++maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn
+ maintainer-clean-target: maybe-maintainer-clean-target-libgomp
+ 
+ 
+@@ -2835,6 +2865,7 @@
+     maybe-check-libtermcap \
+     maybe-check-utils \
+     maybe-check-libada \
++    maybe-check-libgnatvsn \
+     maybe-check-gnattools \
+     maybe-check-lto-plugin
+ 
+@@ -2862,6 +2893,7 @@
+     maybe-check-target-qthreads \
+     maybe-check-target-rda \
+     maybe-check-target-libada \
++    maybe-check-target-libgnatvsn \
+     maybe-check-target-libgomp
+ 
+ do-check:
+@@ -2978,6 +3010,7 @@
+     maybe-install-libtermcap \
+     maybe-install-utils \
+     maybe-install-libada \
++    maybe-install-libgnatvsn \
+     maybe-install-gnattools \
+     maybe-install-lto-plugin
+ 
+@@ -3060,6 +3093,7 @@
+     maybe-install-libtermcap \
+     maybe-install-utils \
+     maybe-install-libada \
++    maybe-install-libgnatvsn \
+     maybe-install-gnattools \
+     maybe-install-lto-plugin
+ 
+@@ -3087,6 +3121,7 @@
+     maybe-install-target-qthreads \
+     maybe-install-target-rda \
+     maybe-install-target-libada \
++    maybe-install-target-libgnatvsn \
+     maybe-install-target-libgomp
+ 
+ uninstall:
+@@ -3196,6 +3231,7 @@
+     maybe-install-strip-libtermcap \
+     maybe-install-strip-utils \
+     maybe-install-strip-libada \
++    maybe-install-strip-libgnatvsn \
+     maybe-install-strip-gnattools \
+     maybe-install-strip-lto-plugin
+ 
+@@ -3223,6 +3259,7 @@
+     maybe-install-strip-target-qthreads \
+     maybe-install-strip-target-rda \
+     maybe-install-strip-target-libada \
++    maybe-install-strip-target-libgnatvsn \
+     maybe-install-strip-target-libgomp
+ 
+ 
+@@ -45128,6 +45165,343 @@
+ 
+ 
+ 
++.PHONY: configure-libgnatvsn maybe-configure-libgnatvsn
++maybe-configure-libgnatvsn:
++@if gcc-bootstrap
++configure-libgnatvsn: stage_current
++@endif gcc-bootstrap
++@if libgnatvsn
++maybe-configure-libgnatvsn: configure-libgnatvsn
++configure-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	test ! -f $(HOST_SUBDIR)/libgnatvsn/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatvsn ; \
++	$(HOST_EXPORTS)  \
++	echo Configuring in $(HOST_SUBDIR)/libgnatvsn; \
++	cd "$(HOST_SUBDIR)/libgnatvsn" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(HOST_SUBDIR)/libgnatvsn/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \
++	libsrcdir="$$s/libgnatvsn"; \
++	$(SHELL) $${libsrcdir}/configure \
++	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
++	  --target=${target_alias} $${srcdiroption}  \
++	  || exit 1
++@endif libgnatvsn
++
++
++
++
++
++.PHONY: all-libgnatvsn maybe-all-libgnatvsn
++maybe-all-libgnatvsn:
++@if gcc-bootstrap
++all-libgnatvsn: stage_current
++@endif gcc-bootstrap
++@if libgnatvsn
++TARGET-libgnatvsn=all
++maybe-all-libgnatvsn: all-libgnatvsn
++all-libgnatvsn: configure-libgnatvsn
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS)  \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS)  \
++		$(TARGET-libgnatvsn))
++@endif libgnatvsn
++
++
++
++
++.PHONY: check-libgnatvsn maybe-check-libgnatvsn
++maybe-check-libgnatvsn:
++@if libgnatvsn
++maybe-check-libgnatvsn: check-libgnatvsn
++
++check-libgnatvsn:
++
++@endif libgnatvsn
++
++.PHONY: install-libgnatvsn maybe-install-libgnatvsn
++maybe-install-libgnatvsn:
++@if libgnatvsn
++maybe-install-libgnatvsn: install-libgnatvsn
++
++install-libgnatvsn: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(FLAGS_TO_PASS)  install)
++
++@endif libgnatvsn
++
++.PHONY: install-strip-libgnatvsn maybe-install-strip-libgnatvsn
++maybe-install-strip-libgnatvsn:
++@if libgnatvsn
++maybe-install-strip-libgnatvsn: install-strip-libgnatvsn
++
++install-strip-libgnatvsn: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(FLAGS_TO_PASS)  install-strip)
++
++@endif libgnatvsn
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-libgnatvsn info-libgnatvsn
++maybe-info-libgnatvsn:
++@if libgnatvsn
++maybe-info-libgnatvsn: info-libgnatvsn
++
++# libgnatvsn doesn't support info.
++info-libgnatvsn:
++
++@endif libgnatvsn
++
++.PHONY: maybe-dvi-libgnatvsn dvi-libgnatvsn
++maybe-dvi-libgnatvsn:
++@if libgnatvsn
++maybe-dvi-libgnatvsn: dvi-libgnatvsn
++
++# libgnatvsn doesn't support dvi.
++dvi-libgnatvsn:
++
++@endif libgnatvsn
++
++.PHONY: maybe-pdf-libgnatvsn pdf-libgnatvsn
++maybe-pdf-libgnatvsn:
++@if libgnatvsn
++maybe-pdf-libgnatvsn: pdf-libgnatvsn
++
++pdf-libgnatvsn: \
++    configure-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatvsn/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing pdf in libgnatvsn" ; \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          pdf) \
++	  || exit 1
++
++@endif libgnatvsn
++
++.PHONY: maybe-html-libgnatvsn html-libgnatvsn
++maybe-html-libgnatvsn:
++@if libgnatvsn
++maybe-html-libgnatvsn: html-libgnatvsn
++
++# libgnatvsn doesn't support html.
++html-libgnatvsn:
++
++@endif libgnatvsn
++
++.PHONY: maybe-TAGS-libgnatvsn TAGS-libgnatvsn
++maybe-TAGS-libgnatvsn:
++@if libgnatvsn
++maybe-TAGS-libgnatvsn: TAGS-libgnatvsn
++
++# libgnatvsn doesn't support TAGS.
++TAGS-libgnatvsn:
++
++@endif libgnatvsn
++
++.PHONY: maybe-install-info-libgnatvsn install-info-libgnatvsn
++maybe-install-info-libgnatvsn:
++@if libgnatvsn
++maybe-install-info-libgnatvsn: install-info-libgnatvsn
++
++# libgnatvsn doesn't support install-info.
++install-info-libgnatvsn:
++
++@endif libgnatvsn
++
++.PHONY: maybe-install-pdf-libgnatvsn install-pdf-libgnatvsn
++maybe-install-pdf-libgnatvsn:
++@if libgnatvsn
++maybe-install-pdf-libgnatvsn: install-pdf-libgnatvsn
++
++install-pdf-libgnatvsn: \
++    configure-libgnatvsn \
++    pdf-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatvsn/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing install-pdf in libgnatvsn" ; \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          install-pdf) \
++	  || exit 1
++
++@endif libgnatvsn
++
++.PHONY: maybe-install-html-libgnatvsn install-html-libgnatvsn
++maybe-install-html-libgnatvsn:
++@if libgnatvsn
++maybe-install-html-libgnatvsn: install-html-libgnatvsn
++
++install-html-libgnatvsn: \
++    configure-libgnatvsn \
++    html-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatvsn/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing install-html in libgnatvsn" ; \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          install-html) \
++	  || exit 1
++
++@endif libgnatvsn
++
++.PHONY: maybe-installcheck-libgnatvsn installcheck-libgnatvsn
++maybe-installcheck-libgnatvsn:
++@if libgnatvsn
++maybe-installcheck-libgnatvsn: installcheck-libgnatvsn
++
++# libgnatvsn doesn't support installcheck.
++installcheck-libgnatvsn:
++
++@endif libgnatvsn
++
++.PHONY: maybe-mostlyclean-libgnatvsn mostlyclean-libgnatvsn
++maybe-mostlyclean-libgnatvsn:
++@if libgnatvsn
++maybe-mostlyclean-libgnatvsn: mostlyclean-libgnatvsn
++
++mostlyclean-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatvsn/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing mostlyclean in libgnatvsn" ; \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          mostlyclean) \
++	  || exit 1
++
++@endif libgnatvsn
++
++.PHONY: maybe-clean-libgnatvsn clean-libgnatvsn
++maybe-clean-libgnatvsn:
++@if libgnatvsn
++maybe-clean-libgnatvsn: clean-libgnatvsn
++
++clean-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatvsn/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing clean in libgnatvsn" ; \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          clean) \
++	  || exit 1
++
++@endif libgnatvsn
++
++.PHONY: maybe-distclean-libgnatvsn distclean-libgnatvsn
++maybe-distclean-libgnatvsn:
++@if libgnatvsn
++maybe-distclean-libgnatvsn: distclean-libgnatvsn
++
++distclean-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatvsn/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing distclean in libgnatvsn" ; \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          distclean) \
++	  || exit 1
++
++@endif libgnatvsn
++
++.PHONY: maybe-maintainer-clean-libgnatvsn maintainer-clean-libgnatvsn
++maybe-maintainer-clean-libgnatvsn:
++@if libgnatvsn
++maybe-maintainer-clean-libgnatvsn: maintainer-clean-libgnatvsn
++
++maintainer-clean-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f ./libgnatvsn/Makefile ] || exit 0; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	for flag in $(EXTRA_HOST_FLAGS) ; do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	echo "Doing maintainer-clean in libgnatvsn" ; \
++	(cd $(HOST_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	          maintainer-clean) \
++	  || exit 1
++
++@endif libgnatvsn
++
++
++
+ .PHONY: configure-gnattools maybe-configure-gnattools
+ maybe-configure-gnattools:
+ @if gcc-bootstrap
+@@ -57263,6 +57637,361 @@
+ 
+ 
+ 
++.PHONY: configure-target-libgnatvsn maybe-configure-target-libgnatvsn
++maybe-configure-target-libgnatvsn:
++@if gcc-bootstrap
++configure-target-libgnatvsn: stage_current
++@endif gcc-bootstrap
++@if target-libgnatvsn
++maybe-configure-target-libgnatvsn: configure-target-libgnatvsn
++configure-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	echo "Checking multilib configuration for libgnatvsn..."; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libgnatvsn/Makefile; \
++	    mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libgnatvsn/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	echo Configuring in $(TARGET_SUBDIR)/libgnatvsn; \
++	cd "$(TARGET_SUBDIR)/libgnatvsn" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libgnatvsn/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \
++	libsrcdir="$$s/libgnatvsn"; \
++	rm -f no-such-file || : ; \
++	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} $${srcdiroption}  \
++	  || exit 1
++@endif target-libgnatvsn
++
++
++
++
++
++.PHONY: all-target-libgnatvsn maybe-all-target-libgnatvsn
++maybe-all-target-libgnatvsn:
++@if gcc-bootstrap
++all-target-libgnatvsn: stage_current
++@endif gcc-bootstrap
++@if target-libgnatvsn
++TARGET-target-libgnatvsn=all
++maybe-all-target-libgnatvsn: all-target-libgnatvsn
++all-target-libgnatvsn: configure-target-libgnatvsn
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)  \
++		$(TARGET-target-libgnatvsn))
++@endif target-libgnatvsn
++
++
++
++
++
++.PHONY: check-target-libgnatvsn maybe-check-target-libgnatvsn
++maybe-check-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-check-target-libgnatvsn: check-target-libgnatvsn
++
++# Dummy target for uncheckable module.
++check-target-libgnatvsn:
++
++@endif target-libgnatvsn
++
++.PHONY: install-target-libgnatvsn maybe-install-target-libgnatvsn
++maybe-install-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-install-target-libgnatvsn: install-target-libgnatvsn
++
++install-target-libgnatvsn: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
++
++@endif target-libgnatvsn
++
++.PHONY: install-strip-target-libgnatvsn maybe-install-strip-target-libgnatvsn
++maybe-install-strip-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-install-strip-target-libgnatvsn: install-strip-target-libgnatvsn
++
++install-strip-target-libgnatvsn: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
++
++@endif target-libgnatvsn
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-target-libgnatvsn info-target-libgnatvsn
++maybe-info-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-info-target-libgnatvsn: info-target-libgnatvsn
++
++# libgnatvsn doesn't support info.
++info-target-libgnatvsn:
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-dvi-target-libgnatvsn dvi-target-libgnatvsn
++maybe-dvi-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-dvi-target-libgnatvsn: dvi-target-libgnatvsn
++
++# libgnatvsn doesn't support dvi.
++dvi-target-libgnatvsn:
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-pdf-target-libgnatvsn pdf-target-libgnatvsn
++maybe-pdf-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-pdf-target-libgnatvsn: pdf-target-libgnatvsn
++
++pdf-target-libgnatvsn: \
++    configure-target-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing pdf in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           pdf) \
++	  || exit 1
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-html-target-libgnatvsn html-target-libgnatvsn
++maybe-html-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-html-target-libgnatvsn: html-target-libgnatvsn
++
++# libgnatvsn doesn't support html.
++html-target-libgnatvsn:
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-TAGS-target-libgnatvsn TAGS-target-libgnatvsn
++maybe-TAGS-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-TAGS-target-libgnatvsn: TAGS-target-libgnatvsn
++
++# libgnatvsn doesn't support TAGS.
++TAGS-target-libgnatvsn:
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-install-info-target-libgnatvsn install-info-target-libgnatvsn
++maybe-install-info-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-install-info-target-libgnatvsn: install-info-target-libgnatvsn
++
++# libgnatvsn doesn't support install-info.
++install-info-target-libgnatvsn:
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-install-pdf-target-libgnatvsn install-pdf-target-libgnatvsn
++maybe-install-pdf-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-install-pdf-target-libgnatvsn: install-pdf-target-libgnatvsn
++
++install-pdf-target-libgnatvsn: \
++    configure-target-libgnatvsn \
++    pdf-target-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-pdf in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-pdf) \
++	  || exit 1
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-install-html-target-libgnatvsn install-html-target-libgnatvsn
++maybe-install-html-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-install-html-target-libgnatvsn: install-html-target-libgnatvsn
++
++install-html-target-libgnatvsn: \
++    configure-target-libgnatvsn \
++    html-target-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-html in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-html) \
++	  || exit 1
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-installcheck-target-libgnatvsn installcheck-target-libgnatvsn
++maybe-installcheck-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-installcheck-target-libgnatvsn: installcheck-target-libgnatvsn
++
++# libgnatvsn doesn't support installcheck.
++installcheck-target-libgnatvsn:
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-mostlyclean-target-libgnatvsn mostlyclean-target-libgnatvsn
++maybe-mostlyclean-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-mostlyclean-target-libgnatvsn: mostlyclean-target-libgnatvsn
++
++mostlyclean-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           mostlyclean) \
++	  || exit 1
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-clean-target-libgnatvsn clean-target-libgnatvsn
++maybe-clean-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-clean-target-libgnatvsn: clean-target-libgnatvsn
++
++clean-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing clean in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           clean) \
++	  || exit 1
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-distclean-target-libgnatvsn distclean-target-libgnatvsn
++maybe-distclean-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-distclean-target-libgnatvsn: distclean-target-libgnatvsn
++
++distclean-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing distclean in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           distclean) \
++	  || exit 1
++
++@endif target-libgnatvsn
++
++.PHONY: maybe-maintainer-clean-target-libgnatvsn maintainer-clean-target-libgnatvsn
++maybe-maintainer-clean-target-libgnatvsn:
++@if target-libgnatvsn
++maybe-maintainer-clean-target-libgnatvsn: maintainer-clean-target-libgnatvsn
++
++maintainer-clean-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           maintainer-clean) \
++	  || exit 1
++
++@endif target-libgnatvsn
++
++
++
++
++
+ .PHONY: configure-target-libgomp maybe-configure-target-libgomp
+ maybe-configure-target-libgomp:
+ @if gcc-bootstrap
+@@ -60326,6 +61055,7 @@
+ configure-target-qthreads: stage_last
+ configure-target-rda: stage_last
+ configure-target-libada: stage_last
++configure-target-libgnatvsn: stage_last
+ configure-stage1-target-libgomp: maybe-all-stage1-gcc
+ configure-stage2-target-libgomp: maybe-all-stage2-gcc
+ configure-stage3-target-libgomp: maybe-all-stage3-gcc
+@@ -60357,6 +61087,7 @@
+ configure-target-qthreads: maybe-all-gcc
+ configure-target-rda: maybe-all-gcc
+ configure-target-libada: maybe-all-gcc
++configure-target-libgnatvsn: maybe-all-gcc
+ configure-target-libgomp: maybe-all-gcc
+ @endif gcc-no-bootstrap
+ 
+@@ -60657,6 +61388,8 @@
+ all-stagefeedback-libcpp: maybe-all-stagefeedback-intl
+ all-fixincludes: maybe-all-libiberty
+ all-gnattools: maybe-all-libada
++all-gnattools: maybe-all-libgnatvsn
++all-libgnatvsn: maybe-all-libada
+ all-lto-plugin: maybe-all-libiberty
+ 
+ all-stage1-lto-plugin: maybe-all-stage1-libiberty
+@@ -61201,6 +61934,7 @@
+ configure-target-qthreads: maybe-all-target-libgcc
+ configure-target-rda: maybe-all-target-libgcc
+ configure-target-libada: maybe-all-target-libgcc
++configure-target-libgnatvsn: maybe-all-target-libgcc
+ configure-target-libgomp: maybe-all-target-libgcc
+ @endif gcc-no-bootstrap
+ 
+@@ -61247,6 +61981,8 @@
+ 
+ configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss
+ 
++configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss
++
+ configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss
+ 
+ 
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -168,7 +168,7 @@
+ 
+ # these libraries are used by various programs built for the host environment
+ #
+-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv libada"
++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv libada libgnatvsn"
+ 
+ # these tools are built for the host environment
+ # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
+@@ -201,6 +201,7 @@
+ 		${libgcj} \
+ 		target-libobjc \
+ 		target-libada \
++		target-libgnatvsn \
+ 		target-libgo"
+ 
+ # these tools are built using the target libraries, and are intended to
+@@ -302,7 +303,7 @@
+ 
+ # Similarly, some are only suitable for cross toolchains.
+ # Remove these if host=target.
+-cross_only="target-libgloss target-newlib target-opcodes target-libada"
++cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn"
+ 
+ case $is_cross_compiler in
+   no) skipdirs="${skipdirs} ${cross_only}" ;;
+@@ -486,7 +487,7 @@
+ ENABLE_LIBADA=$enableval,
+ ENABLE_LIBADA=yes)
+ if test "${ENABLE_LIBADA}" != "yes" ; then
+-  noconfigdirs="$noconfigdirs gnattools"
++  noconfigdirs="$noconfigdirs libgnatvsn gnattools"
+ fi
+ 
+ AC_ARG_ENABLE(libssp,
+Index: b/src/gcc/ada/gcc-interface/config-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/config-lang.in
++++ b/src/gcc/ada/gcc-interface/config-lang.in
+@@ -36,8 +36,8 @@
+ 
+ outputs="ada/gcc-interface/Makefile ada/Makefile"
+ 
+-target_libs="target-libada"
+-lang_dirs="libada gnattools"
++target_libs="target-libada target-libgnatvsn"
++lang_dirs="libada libgnatvsn gnattools"
+ 
+ # Ada is not enabled by default for the time being.
+ build_by_default=no
+Index: b/src/gcc/ada/gnatvsn.ads
+===================================================================
+--- a/src/gcc/ada/gnatvsn.ads
++++ b/src/gcc/ada/gnatvsn.ads
+@@ -6,7 +6,7 @@
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+---          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
++--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+@@ -92,7 +92,7 @@
+    Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
+    --  Version string stored in e.g. ALI files
+ 
+-   Current_Year : constant String := "2011";
++   Current_Year : constant String := "2010";
+    --  Used in printing copyright messages
+ 
+ end Gnatvsn;
--- gcc-4.6-4.6.3.orig/debian/patches/pr39491.diff
+++ gcc-4.6-4.6.3/debian/patches/pr39491.diff
@@ -0,0 +1,132 @@
+# DP: Proposed patch for PR libstdc++/39491.
+
+2009-04-16  Benjamin Kosnik  <bkoz@redhat.com>
+
+	* src/math_stubs_long_double.cc (__signbitl): Add for hppa linux only.
+
+Index: a/src/libstdc++-v3/src/math_stubs_long_double.cc
+===================================================================
+--- a/src/libstdc++-v3/src/math_stubs_long_double.cc	(revision 146216)
++++ b/src/libstdc++-v3/src/math_stubs_long_double.cc	(working copy)
+@@ -213,4 +221,111 @@
+     return tanh((double) x);
+   }
+ #endif
++
++  // From libmath/signbitl.c
++  // XXX ABI mistakenly exported
++#if defined (__hppa__) && defined (__linux__)
++# include <endian.h>
++# include <float.h>
++
++typedef unsigned int U_int32_t __attribute ((mode (SI)));
++typedef int Int32_t __attribute ((mode (SI)));
++typedef unsigned int U_int64_t __attribute ((mode (DI)));
++typedef int Int64_t __attribute ((mode (DI)));
++
++#if BYTE_ORDER == BIG_ENDIAN
++typedef union
++{
++  long double value;
++  struct
++  {
++    unsigned int sign_exponent:16;
++    unsigned int empty:16;
++    U_int32_t msw;
++    U_int32_t lsw;
++  } parts;
++} ieee_long_double_shape_type;
++#endif
++#if BYTE_ORDER == LITTLE_ENDIAN
++typedef union
++{
++  long double value;
++  struct
++  {
++    U_int32_t lsw;
++    U_int32_t msw;
++    unsigned int sign_exponent:16;
++    unsigned int empty:16;
++  } parts;
++} ieee_long_double_shape_type;
++#endif
++
++/* Get int from the exponent of a long double.  */
++#define GET_LDOUBLE_EXP(exp,d)                                  \
++do {                                                            \
++  ieee_long_double_shape_type ge_u;                             \
++  ge_u.value = (d);                                             \
++  (exp) = ge_u.parts.sign_exponent;                             \
++} while (0)
++
++#if BYTE_ORDER == BIG_ENDIAN
++typedef union
++{
++  long double value;
++  struct
++  {
++    U_int64_t msw;
++    U_int64_t lsw;
++  } parts64;
++  struct
++  {
++    U_int32_t w0, w1, w2, w3;
++  } parts32;
++} ieee_quad_double_shape_type;
++#endif
++
++#if BYTE_ORDER == LITTLE_ENDIAN
++typedef union
++{
++  long double value;
++  struct
++  {
++    U_int64_t lsw;
++    U_int64_t msw;
++  } parts64;
++  struct
++  {
++    U_int32_t w3, w2, w1, w0;
++  } parts32;
++} ieee_quad_double_shape_type;
++#endif
++
++/* Get most significant 64 bit int from a quad long double.  */
++#define GET_LDOUBLE_MSW64(msw,d)				\
++do {								\
++  ieee_quad_double_shape_type qw_u;				\
++  qw_u.value = (d);						\
++  (msw) = qw_u.parts64.msw;					\
++} while (0)
++
++int
++__signbitl (long double x)
++{
++#if LDBL_MANT_DIG == 113
++  Int64_t msw;
++
++  GET_LDOUBLE_MSW64 (msw, x);
++  return msw < 0;
++#else
++  Int32_t e;
++
++  GET_LDOUBLE_EXP (e, x);
++  return e & 0x8000;
++#endif
++}
++#endif
++
++#ifndef _GLIBCXX_HAVE___SIGNBITL
++
++#endif
+ } // extern "C"
+--- a/src/libstdc++-v3/config/abi/pre/gnu.ver~	2009-04-10 01:23:07.000000000 +0200
++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver	2009-04-21 16:24:24.000000000 +0200
+@@ -635,6 +635,7 @@
+     sqrtf;
+     sqrtl;
+     copysignf;
++    __signbitl;
+ 
+    # GLIBCXX_ABI compatibility only.
+     # std::string
--- gcc-4.6-4.6.3.orig/debian/patches/gdc-libphobos-math.diff
+++ gcc-4.6-4.6.3/debian/patches/gdc-libphobos-math.diff
@@ -0,0 +1,28 @@
+# DP: Define fpclassify and signbit for systems that need it.
+
+--- a/src/gcc/d/phobos2/gcc/cbridge_math.c	2010-04-21 13:08:40.000000000 +0100
++++ b/src/gcc/d/phobos2/gcc/cbridge_math.c	2010-08-23 11:01:05.022792451 +0100
+@@ -21,6 +21,23 @@
+ #include <math.h>
+ #include "config.h"
+ 
++/* If undefined, define fpclassify and signbit here */
++#ifndef fpclassify
++# define fpclassify(x) \
++    (sizeof (x) == sizeof (float) \
++     ? __fpclassifyf (x) \
++     : sizeof (x) == sizeof (double) \
++     ? __fpclassify (x) : __fpclassifyl (x))
++#endif
++
++#ifndef signbit
++# define signbit(x) \
++    (sizeof (x) == sizeof (float) \
++     ? __signbitf (x) \
++     : sizeof (x) == sizeof (double) \
++     ? __signbit (x) : __signbitl (x))
++#endif
++
+ /*
+ #if HAVE_DISTINCT_LONG_DOUBLE
+ typedef long double my_long_double;
--- gcc-4.6-4.6.3.orig/debian/patches/ada-acats.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-acats.diff
@@ -0,0 +1,199 @@
+# DP: - When running the ACATS, look for the gnat tools in their new
+# DP:   directory (build/gnattools), and for the shared libraries in
+# DP:   build/gcc/ada/rts-shared-zcx, build/libgnatvsn and build/libgnatprj.
+
+Index: b/src/gcc/testsuite/ada/acats/run_acats
+===================================================================
+--- a/src/gcc/testsuite/ada/acats/run_acats
++++ b/src/gcc/testsuite/ada/acats/run_acats
+@@ -20,52 +20,29 @@
+     return 1
+ }
+ 
++echo '#!/bin/sh' > host_gnatchop
++echo exec /usr/bin/gnatchop '$*' >> host_gnatchop
++
++chmod +x host_gnatchop
++
++echo '#!/bin/sh' > host_gnatmake
++echo echo '$PATH' '$*' >> host_gnatmake
++echo exec /usr/bin/gnatmake '$*' >> host_gnatmake
++
++chmod +x host_gnatmake
++
+ # Set up environment to use the Ada compiler from the object tree
+ 
+-host_gnatchop=`which gnatchop`
+-host_gnatmake=`which gnatmake`
+ ROOT=`${PWDCMD-pwd}`
+ BASE=`cd $ROOT/../../..; ${PWDCMD-pwd}`
+-
+ PATH=$BASE:$ROOT:$PATH
+-ADA_INCLUDE_PATH=$BASE/ada/rts
+-LD_LIBRARY_PATH=$ADA_INCLUDE_PATH:$BASE:$LD_LIBRARY_PATH
+-ADA_OBJECTS_PATH=$ADA_INCLUDE_PATH
+-
+-if [ ! -d $ADA_INCLUDE_PATH ]; then
+-   echo gnatlib missing, exiting.
+-   exit 1
+-fi
+-
+-if [ ! -f $BASE/gnatchop ]; then
+-   echo gnattools missing, exiting.
+-   exit 1
+-fi
+-
+-if [ ! -f $BASE/gnatmake ]; then
+-   echo gnattools missing, exiting.
+-   exit 1
+-fi
+-
++GNATTOOLS=`cd $BASE/../gnattools; ${PWDCMD-pwd}`
++LIBGNATVSN=`cd $BASE/../libgnatvsn; ${PWDCMD-pwd}`
++LIBGNATPRJ=`cd $BASE/../libgnatprj; ${PWDCMD-pwd}`
+ GCC_DRIVER="$BASE/xgcc"
+ GCC="$BASE/xgcc -B$BASE/"
+ export PATH ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_DRIVER GCC LD_LIBRARY_PATH
+-
+-echo '#!/bin/sh' > host_gnatchop
+-echo PATH=`dirname $host_gnatchop`:'$PATH' >> host_gnatchop
+-echo unset ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_EXEC_PREFIX >> host_gnatchop
+-echo export PATH >> host_gnatchop
+-echo exec gnatchop '"$@"' >> host_gnatchop
+-
+-chmod +x host_gnatchop
+-
+-echo '#!/bin/sh' > host_gnatmake
+-echo PATH=`dirname $host_gnatmake`:'$PATH' >> host_gnatmake
+-echo unset ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_EXEC_PREFIX >> host_gnatmake
+-echo export PATH >> host_gnatmake
+-echo exec gnatmake '"$@"' >> host_gnatmake
+-
+-chmod +x host_gnatmake
++export GNATTOOLS LIBGNATVSN LIBGNATPRJ
+ 
+ # Limit the stack to 16MB for stack checking
+ ulimit -s 16384
+Index: b/src/gcc/testsuite/ada/acats/run_all.sh
+===================================================================
+--- a/src/gcc/testsuite/ada/acats/run_all.sh
++++ b/src/gcc/testsuite/ada/acats/run_all.sh
+@@ -12,6 +12,10 @@
+ gccflags="-O2"
+ gnatflags="-gnatws"
+ 
++RTS=`cd $GNATTOOLS/../gcc/ada/rts-shared-zcx; ${PWDCMD-pwd}`
++LD_LIBRARY_PATH=$RTS:$LIBGNATVSN:$LIBGNATPRJ
++export LD_LIBRARY_PATH
++
+ target_run () {
+   eval $EXPECT -f $testdir/run_test.exp $*
+ }
+@@ -48,15 +52,25 @@
+ fi
+ 
+ target_gnatchop () {
+-  gnatchop --GCC="$GCC_DRIVER" $*
++  display ADA_INCLUDE_PATH=$GNATTOOLS/../../src/gcc/ada $GNATTOOLS/gnatchop --GCC="$GCC_DRIVER" $*
++  ADA_INCLUDE_PATH=$GNATTOOLS/../../src/gcc/ada $GNATTOOLS/gnatchop --GCC="$GCC_DRIVER" $*
+ }
+ 
+ target_gnatmake () {
+-  echo gnatmake --GCC=\"$GCC\" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC=\"$GCC\"
+-  gnatmake --GCC="$GCC" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC="$GCC"
++  RTS="$GNATTOOLS/../gcc/ada/rts-shared-zcx"
++  EXTERNAL_OBJECTS="$EXTERNAL_OBJECTS $RTS/adaint.o $RTS/sysdep.o $RTS/init.o $RTS/raise-gcc.o"
++  display $GNATTOOLS/gnatmake -I- -I$RTS -I. \
++      --GCC=\"$GCC\" --GNATBIND="$GNATTOOLS/gnatbind" \
++      --GNATLINK="$GNATTOOLS/gnatlink" $gnatflags $gccflags $* \
++      -bargs -static -largs $EXTERNAL_OBJECTS --GCC=\"$GCC -I- -I$RTS -I.\"
++  $GNATTOOLS/gnatmake -I- -I$RTS -I. \
++      --GCC="$GCC" --GNATBIND="$GNATTOOLS/gnatbind" \
++      --GNATLINK="$GNATTOOLS/gnatlink" $gnatflags $gccflags $* \
++      -bargs -static -largs $EXTERNAL_OBJECTS --GCC="$GCC -I- -I$RTS -I."
+ }
+ 
+ target_gcc () {
++  display $GCC $gccflags $*
+   $GCC $gccflags $*
+ }
+ 
+@@ -86,8 +100,8 @@
+ display `$GCC -v 2>&1`
+ display host=`gcc -dumpmachine`
+ display target=$target
+-display `type gnatmake`
+-gnatls -v >> $dir/acats.log
++display `type $GNATTOOLS/gnatmake`
++$GNATTOOLS/gnatls -I- -I$RTS -v >> $dir/acats.log
+ display ""
+ 
+ display "		=== acats support ==="
+Index: b/src/gcc/testsuite/lib/gnat.exp
+===================================================================
+--- a/src/gcc/testsuite/lib/gnat.exp
++++ b/src/gcc/testsuite/lib/gnat.exp
+@@ -89,18 +89,24 @@
+     global GNAT_UNDER_TEST
+     global TOOL_EXECUTABLE
+     global gnat_target_current
++    global ld_library_path
+ 
+     set gnat_target_current ""
+ 
+     if { $gnat_initialized == 1 } { return }
+ 
+-    if ![info exists GNAT_UNDER_TEST] then {
+-	if [info exists TOOL_EXECUTABLE] {
+-	    set GNAT_UNDER_TEST "$TOOL_EXECUTABLE"
+-	} else {
+-	    set GNAT_UNDER_TEST "[local_find_gnatmake]"
+-	}
+-    }
++    set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts-shared-zcx --GCC=$rootme/xgcc --GNATBIND=$rootme/../gnattools/gnatbind --GNATLINK=$rootme/../gnattools/gnatlink -cargs -B$rootme -largs --GCC=$rootme/xgcc -B$rootme -margs"
++    append ld_library_path ":$rootme/ada/rts-shared-zcx"
++    append ld_library_path ":$rootme/../libgnatvsn"
++    append ld_library_path ":$rootme/../libgnatprj"
++    set_ld_library_path_env_vars
++
++    # gnatlink looks for system.ads itself and has no --RTS option, so
++    # specify via environment
++    verbose -log "ADA_INCLUDE_PATH=$rootme/ada/rts-shared-zcx"
++    verbose -log "ADA_OBJECTS_PATH=$rootme/ada/rts-shared-zcx"
++    setenv ADA_INCLUDE_PATH "$rootme/ada/rts-shared-zcx"
++    setenv ADA_OBJECTS_PATH "$rootme/ada/rts-shared-zcx"
+ 
+     if ![info exists tmpdir] then {
+ 	set tmpdir /tmp
+@@ -121,31 +127,6 @@
+ 	return [gcc_target_compile $source $dest $type $options]
+     }
+ 
+-    # If we detect a change of target, we need to recompute both
+-    # GNAT_UNDER_TEST and the appropriate RTS.
+-    if { $gnat_target_current!="[current_target_name]" } {
+-	set gnat_target_current "[current_target_name]"
+-	if [info exists TOOL_OPTIONS] {
+-	    set rtsdir "[get_multilibs ${TOOL_OPTIONS}]/libada"
+-	} else {
+-	    set rtsdir "[get_multilibs]/libada"
+-	}
+-	if [info exists TOOL_EXECUTABLE] {
+-	    set GNAT_UNDER_TEST "$TOOL_EXECUTABLE"
+-	} else {
+-	    set GNAT_UNDER_TEST "[local_find_gnatmake]"
+-	}
+-        set GNAT_UNDER_TEST "$GNAT_UNDER_TEST --RTS=$rtsdir"
+-
+-	# gnatlink looks for system.ads itself and has no --RTS option, so
+-	# specify via environment
+-	setenv ADA_INCLUDE_PATH "$rtsdir/adainclude"
+-	setenv ADA_OBJECTS_PATH "$rtsdir/adainclude"
+-	# Always log so compilations can be repeated manually.
+-	verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude"
+-	verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude"
+-    }
+-
+     lappend options "compiler=$GNAT_UNDER_TEST -q -f"
+     lappend options "timeout=[timeout_value]"
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-linaro.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-linaro.diff
@@ -0,0 +1,48811 @@
+# DP: Changes for the Linaro 4.6-2012.08 release.
+
+--- a/src/boehm-gc/ChangeLog
++++ b/src/boehm-gc/ChangeLog
+@@ -1,3 +1,17 @@
++2012-03-02  Jack Howarth  <howarth@bromo.med.uc.edu>
++
++	Backport from mainline
++	2012-02-23  Patrick Marlier  <patrick.marlier@gmail.com>
++		    Jack Howarth  <howarth@bromo.med.uc.edu>
++
++	PR boehm-gc/52179
++	* include/gc_config.h.in: Undefine HAVE_PTHREAD_GET_STACKADDR_NP.
++	* include/private/gcconfig.h (DARWIN): Define STACKBOTTOM with
++	pthread_get_stackaddr_np when available.
++	* configure.ac (THREADS): Check availability of
++	pthread_get_stackaddr_np.
++	* configure: Regenerate.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/boehm-gc/configure
++++ b/src/boehm-gc/configure
+@@ -15246,6 +15246,17 @@
+ fi
+ done
+ 
++for ac_func in pthread_get_stackaddr_np
++do :
++  ac_fn_c_check_func "$LINENO" "pthread_get_stackaddr_np" "ac_cv_func_pthread_get_stackaddr_np"
++if test "x$ac_cv_func_pthread_get_stackaddr_np" = x""yes; then :
++  cat >>confdefs.h <<_ACEOF
++#define HAVE_PTHREAD_GET_STACKADDR_NP 1
++_ACEOF
++
++fi
++done
++
+ LIBS="$oldLIBS"
+ 
+ # Configuration of machine-dependent code
+--- a/src/boehm-gc/configure.ac
++++ b/src/boehm-gc/configure.ac
+@@ -392,6 +392,7 @@
+ oldLIBS="$LIBS"
+ LIBS="$LIBS $THREADLIBS"
+ AC_CHECK_FUNCS([pthread_getattr_np])
++AC_CHECK_FUNCS([pthread_get_stackaddr_np])
+ LIBS="$oldLIBS"
+ 
+ # Configuration of machine-dependent code
+--- a/src/boehm-gc/include/gc_config.h.in
++++ b/src/boehm-gc/include/gc_config.h.in
+@@ -87,6 +87,9 @@
+ /* Define to 1 if you have the `pthread_getattr_np' function. */
+ #undef HAVE_PTHREAD_GETATTR_NP
+ 
++/* Define to 1 if you have the `pthread_get_stackaddr_np_np' function. */
++#undef HAVE_PTHREAD_GET_STACKADDR_NP
++
+ /* Define to 1 if you have the <stdint.h> header file. */
+ #undef HAVE_STDINT_H
+ 
+--- a/src/boehm-gc/include/private/gcconfig.h
++++ b/src/boehm-gc/include/private/gcconfig.h
+@@ -1331,7 +1331,11 @@
+ 	 These aren't used when dyld support is enabled (it is by default) */
+ #     define DATASTART ((ptr_t) get_etext())
+ #     define DATAEND	((ptr_t) get_end())
+-#     define STACKBOTTOM ((ptr_t) 0xc0000000)
++#     ifdef HAVE_PTHREAD_GET_STACKADDR_NP
++#       define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
++#     else
++#       define STACKBOTTOM ((ptr_t) 0xc0000000)
++#     endif
+ #     define USE_MMAP
+ #     define USE_MMAP_ANON
+ #     define USE_ASM_PUSH_REGS
+@@ -2011,7 +2015,11 @@
+ 	 These aren't used when dyld support is enabled (it is by default) */
+ #     define DATASTART ((ptr_t) get_etext())
+ #     define DATAEND	((ptr_t) get_end())
+-#     define STACKBOTTOM ((ptr_t) 0x7fff5fc00000)
++#     ifdef HAVE_PTHREAD_GET_STACKADDR_NP
++#       define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
++#     else
++#       define STACKBOTTOM ((ptr_t) 0x7fff5fc00000)
++#     endif
+ #     define USE_MMAP
+ #     define USE_MMAP_ANON
+ #     ifdef GC_DARWIN_THREADS
+--- a/src/ChangeLog.linaro
++++ b/src/ChangeLog.linaro
+@@ -0,0 +1,3802 @@
++2012-08-13  Matthew Gretton-Dann  <matthew.gretton-dann@linaro.org>
++
++	GCC Linaro 4.6-2012.08 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2012-08-10  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	Backport from mainline:
++
++	gcc/
++	2012-07-30  Ulrich Weigand  <ulrich.weigand@linaro.org>
++		    Richard Earnshaw  <rearnsha@arm.com>
++
++	* target.def (vector_alignment): New target hook.
++	* doc/tm.texi.in (TARGET_VECTOR_ALIGNMENT): Document new hook.
++	* doc/tm.texi: Regenerate.
++	* targhooks.c (default_vector_alignment): New function.
++	* targhooks.h (default_vector_alignment): Add prototype.
++	* stor-layout.c (layout_type): Use targetm.vector_alignment.
++	* config/arm/arm.c (arm_vector_alignment): New function.
++	(TARGET_VECTOR_ALIGNMENT): Define.
++
++	* tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use
++	vector type alignment instead of size.
++	* tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Use
++	element type size directly instead of computing it from alignment.
++	Fix variable naming and comment.
++
++	gcc/testsuite/
++	2012-07-30  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	* lib/target-supports.exp
++	(check_effective_target_vect_natural_alignment): New function.
++	* gcc.dg/align-2.c: Only run on targets with natural alignment
++	of vector types.
++	* gcc.dg/vect/slp-25.c: Adjust tests for targets without natural
++	alignment of vector types.
++
++	2011-12-21  Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
++
++	* gcc.dg/vect/vect-peel-1.c: Adjust test diag-scans to fix fail on AVX.
++	* gcc.dg/vect/vect-peel-2.c: Ditto.
++
++	2011-06-21  Ira Rosen  <ira.rosen@linaro.org>
++
++	PR testsuite/49443
++	* gcc.dg/vect/vect-peel-3.c: Expect to fail on vect_no_align
++	targets.
++	* gcc.dg/vect/vect-peel-4.c: Likewise.
++
++	2011-06-14  Ira Rosen  <ira.rosen@linaro.org>
++
++	* gcc.dg/vect/vect-peel-3.c: Adjust misalignment values
++	for double-word vectors.
++	* gcc.dg/vect/vect-peel-4.c: Likewise.
++
++2012-08-01  Michael Hope  <michael.hope@linaro.org>
++
++	Merge from FSF GCC 4.6.3 (svn branches/gcc-4_6-branch 189991).
++
++2012-07-02  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2012-07-02  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	GCC Linaro 4.6-2012.07 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2012-07-01  Michael Hope  <michael.hope@linaro.org>
++
++	Merge from FSF GCC 4.6.3 (svn branches/gcc-4_6-branch 189058).
++
++2012-06-29  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	LP 1010826
++
++	Backport from mainline:
++
++	gcc/
++	PR tree-optimization/53729
++	PR tree-optimization/53636
++	* tree-vect-slp.c (vect_slp_analyze_bb_1): Delay call to
++	vect_verify_datarefs_alignment until after statements have
++	been marked as relevant/irrelevant.
++	* tree-vect-data-refs.c (vect_verify_datarefs_alignment):
++	Skip irrelevant statements.
++	(vect_enhance_data_refs_alignment): Use STMT_VINFO_RELEVANT_P
++	instead of STMT_VINFO_RELEVANT.
++	(vect_get_data_access_cost): Do not check for supportable
++	alignment before calling vect_get_load_cost/vect_get_store_cost.
++	* tree-vect-stmts.c (vect_get_store_cost): Do not abort when
++	handling unsupported alignment.
++	(vect_get_load_cost): Likewise.
++
++	gcc/
++	PR tree-optimization/53636
++	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Verify
++	stride when doing basic-block vectorization.
++
++	gcc/testsuite/
++	PR tree-optimization/53636
++	* gcc.target/arm/pr53636.c: New test.
++
++2012-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (neon_dereference_pointer): Fixup typos.
++
++	gcc/testsuite/
++	* gcc.target/arm/lp101329.c: Remove unneeded comment.
++
++2012-06-21  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	LP 1013209
++	gcc/
++	* config/arm/arm.c (neon_dereference_pointer): Use fold_convert
++	to convert expression to the right type. This is a Linaro 4.6 only
++	patch as this was originally backported from FSF 4.7 and hence applies
++	only here.
++
++	gcc/testsuite/
++	* gcc.target/arm/lp101329.c: New test.
++
++2012-06-14  Michael Hope  <michael.hope@linaro.org>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2012-06-12  Michael Hope  <michael.hope@linaro.org>
++
++	GCC Linaro 4.6-2012.06 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2012-06-11  Michael Hope  <michael.hope@linaro.org>
++
++	Merge from FSF GCC 4.6.3 (svn branches/gcc-4_6-branch 188320).
++
++2012-05-22  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline:
++	gcc/
++	2012-03-15  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	* config.gcc (target_type_format_char): New. Document it. Set it for
++        arm*-*-* .
++
++2012-05-23  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	LP:990530
++	gcc/
++        2012-03-12  Richard Guenther  <rguenther@suse.de>
++	* config/arm/arm.c (neon_dereference_pointer): Do not call
++	covert during RTL expansion.
++
++2012-05-21  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r186859:
++
++	gcc/
++	2012-04-26  Michael Hope  <michael.hope@linaro.org>
++		    Richard Earnshaw  <rearnsha@arm.com>
++
++	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
++	(GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
++	(GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
++	(GLIBC_DYNAMIC_LINKER):	Redefine to use the hard float path.
++
++	Backport from mainline r187012:
++
++	gcc/
++	2012-05-01  Richard Earnshaw  <rearnsha@arm.com>
++
++	* arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_DEFAULT): Avoid ifdef
++	comparing enumeration values.  Update comments.
++
++2012-05-15  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2012-05-15  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2012.05 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2012-05-08  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.3 (svn branches/gcc-4_6-branch 187273).
++
++2012-05-08  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	LP 959242
++
++	Backport from mainline:
++
++	2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	gcc/
++	PR tree-optimization/52633
++	* tree-vect-patterns.c (vect_vect_recog_func_ptrs): Swap order of
++	vect_recog_widen_shift_pattern and vect_recog_over_widening_pattern.
++	(vect_recog_over_widening_pattern): Remove handling of code that was
++	already detected as over-widening pattern.  Remove special handling
++	of "unsigned" cases.  Instead, support general case of conversion
++	of the shift result to another type.
++
++	gcc/testsuite/
++	PR tree-optimization/52633
++	* gcc.target/arm/pr52633.c: New test.
++
++	gcc/
++	* tree-vect-patterns.c (vect_single_imm_use): New function.
++	(vect_recog_widen_mult_pattern): Use it instead of open-coding loop.
++	(vect_recog_over_widening_pattern): Likewise.
++	(vect_recog_widen_shift_pattern): Likewise.
++
++	gcc/
++	* tree-vect-patterns.c (vect_same_loop_or_bb_p): New function.
++	(vect_handle_widen_op_by_const): Use it instead of open-coding test.
++	(vect_recog_widen_mult_pattern): Likewise.
++	(vect_operation_fits_smaller_type): Likewise.
++	(vect_recog_over_widening_pattern): Likewise.
++	(vect_recog_widen_shift_pattern): Add to vect_same_loop_or_bb_p test.
++
++2012-04-16  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	LP 972648
++
++	Backport from mainline:
++
++	2011-08-23  Richard Guenther  <rguenther@suse.de>
++
++	gcc/
++	* Makefile.in (tree-data-ref.o): Add tree-affine.h dependency.
++	* tree-affine.h (aff_comb_cannot_overlap_p): Declare.
++	* tree-affine.c (aff_comb_cannot_overlap_p): New function, moved
++	from ...
++	* tree-ssa-loop-im.c (cannot_overlap_p): ... here.
++	(mem_refs_may_alias_p): Adjust.
++	* tree-data-ref.h (dr_may_alias_p): Adjust.
++	* tree-data-ref.c: Include tree-affine.h.
++	(dr_analyze_indices): Do nothing for the non-loop case.
++	(dr_may_alias_p): Distinguish loop and non-loop case.  Disambiguate
++	more cases in the non-loop case.
++	* graphite-sese-to-poly.c (write_alias_graph_to_ascii_dimacs): Adjust
++	calls to dr_may_alias_p.
++	(write_alias_graph_to_ascii_ecc): Likewise.
++	(write_alias_graph_to_ascii_dot): Likewise.
++	(build_alias_set_optimal_p): Likewise.
++
++2012-04-13  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	LP 968766
++
++	Backport from mainline:
++
++	gcc/
++	PR tree-optimization/52870
++	* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Verify that
++	presumed pattern statement is within the same loop or basic block.
++
++	gcc/testsuite/
++	PR tree-optimization/52870
++	* gcc.dg/vect/pr52870.c: New test.
++
++2012-04-10  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2012-04-10  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2012.04 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2012-04-02  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.3 (svn branches/gcc-4_6-branch 186060).
++
++2012-03-26  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	LP 960283
++	LP 960274
++	LP 960817
++
++	Backport from mainline:
++
++	gcc/
++	PR tree-optimization/52686
++	* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Handle
++	WIDEN_LSHIFT_EXPR.
++
++	gcc/testsuite/
++	PR tree-optimization/52686
++	* gcc.target/arm/pr52686.c: New test.
++
++2012-03-12  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2012-03-12  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2012.03 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2012-03-08  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline.
++        2012-02-28  Richard Earnshaw  <rearnsha@arm.com>
++
++	* arm.c (aapcs_vfp_is_call_or_return_candidate): Only use the machine
++	mode if there is no type information available.
++
++        2012-02-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
++
++	* gcc.target/arm/aapcs/vfp1.c (dg_do run): Run on all eabi variants.
++	* gcc.target/arm/aapcs/vfp2.c: Likewise.
++	* gcc.target/arm/aapcs/vfp3.c: Likewise.
++	* gcc.target/arm/aapcs/vfp4.c: Likewise.
++	* gcc.target/arm/aapcs/vfp5.c: Likewise.
++	* gcc.target/arm/aapcs/vfp6.c: Likewise.
++	* gcc.target/arm/aapcs/vfp7.c: Likewise.
++	* gcc.target/arm/aapcs/vfp8.c: Likewise.
++	* gcc.target/arm/aapcs/vfp9.c: Likewise.
++	* gcc.target/arm/aapcs/vfp10.c: Likewise.
++	* gcc.target/arm/aapcs/vfp11.c: Likewise.
++	* gcc.target/arm/aapcs/vfp12.c: Likewise.
++	* gcc.target/arm/aapcs/vfp13.c: Likewise.
++	* gcc.target/arm/aapcs/vfp14.c: Likewise.
++	* gcc.target/arm/aapcs/vfp15.c: Likewise.
++	* gcc.target/arm/aapcs/vfp16.c: Likewise.
++	* gcc.target/arm/aapcs/vfp17.c: Likewise.
++	* gcc.target/arm/neon-constants.h: New file.
++	* gcc.target/arm/aapcs/neon-constants.h: New file.
++	* gcc.target/arm/aapcs/neon-vect1.c: New test.
++	* gcc.target/arm/aapcs/neon-vect2.c: New test.
++	* gcc.target/arm/aapcs/neon-vect3.c: New test.
++	* gcc.target/arm/aapcs/neon-vect4.c: New test.
++	* gcc.target/arm/aapcs/neon-vect5.c: New test.
++	* gcc.target/arm/aapcs/neon-vect6.c: New test.
++	* gcc.target/arm/aapcs/neon-vect7.c: New test.
++	* gcc.target/arm/aapcs/neon-vect8.c: New test.
++
++2012-03-08  Michael Hope  <michael.hope@linaro.org>
++
++	Backport proposed patch:
++
++	gcc/
++	2012-01-31  Richard Henderson  <rth@redhat.com>
++
++	* longlong.h [arm] (umul_ppmm): Use umull.  Enable for thumb2.
++	[arm] (count_trailing_zeros): Use __builtin_ctz.
++
++2012-03-06  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	Backport from mainline:
++
++	gcc/
++	* config/arm/arm.c (arm_sat_operator_match): New function.
++	* config/arm/arm-protos.h (arm_sat_operator_match): Add prototype.
++	* config/arm/arm.md ("insn" attribute): Add "sat" value.
++	("SAT", "SATrev"): New code iterators.
++	("SATlo", "SAThi"): New code iterator attributes.
++	("*satsi_<SAT:code>"): New pattern.
++	("*satsi_<SAT:code>_shift"): Likewise.
++	* config/arm/predicates.md (sat_shift_operator): New.
++
++	gcc/testsuite/
++	* gcc.target/arm/sat-1.c: New test.
++
++2012-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	LP:942307
++    	gcc/
++    	PR target/50305
++    	* config/arm/arm.c (arm_legitimize_reload_address): Recognize
++    	output of a previous pass through legitimize_reload_address.
++    	Do not attempt to optimize addresses if the base register is
++    	equivalent to a constant.
++    	gcc/testsuite/
++    	PR target/50305
++    	* gcc.target/arm/pr50305.c: New test.
++
++2012-03-02  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.3 Release (svn branches/gcc-4_6-branch 108680).
++
++2012-02-24  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline.
++	gcc/
++        2012-02-21  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
++
++        Revert r183011
++        * config/arm/arm-cores.def (cortex-a15): Use generic Cortex tuning
++        parameters.
++        * config/arm/arm.c (arm_cortex_a15_tune): Remove.
++
++
++2012-02-24  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	LP:#922474
++	gcc/
++	* config/arm/sync.md (sync_lock_releasedi): Define.
++	(arm_sync_lock_releasedi): Likewise.
++	gcc/testsuite
++	Backport from mainline.
++        2012-01-30  Greta Yorsh  <Greta.Yorsh@arm.com>
++	* gcc.target/arm/di-longlong64-sync-withldrexd.c: Accept
++	new code generated for __sync_lock_release.
++
++2012-02-24  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++        2011-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (vfp3_const_double_for_fract_bits): Define.
++	* config/arm/arm-protos.h (vfp3_const_double_for_fract_bits): Declare.
++	* config/arm/constraints.md ("Dt"): New constraint.
++	* config/arm/predicates.md (const_double_vcvt_power_of_two_reciprocal):
++	New.
++	* config/arm/vfp.md (*arm_combine_vcvt_f32_s32): New.
++	(*arm_combine_vcvt_f32_u32): New.
++
++	LP:#900426
++
++	2011-12-06  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++        * config/arm/vfp.md (*combine_vcvt_f64_<FCVTI32typename>): Fix
++       formatting character for vmov.f64 case.
++
++2012-02-24  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (arm_print_operand): Remove wrongly merged code.
++	 (vfp3_const_double_for_fract_bits): Likewise.
++
++2012-02-20  Andrew Stubbs  <ams@codesourcery.com>
++
++	LP:#936863
++	gcc/
++	* config/arm/arm.c (arm_print_operand): Avoid null-pointer
++	dereference from MEM_SIZE.
++
++2012-02-08  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (arm_option_optimization_table): Enable
++	-fsched-pressure using -fsched-pressure-algorithm=model by
++	default when optimizing.
++
++2012-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* sched-deps.c (fixup_sched_groups): Rename to...
++	(chain_to_prev_insn): ...this.
++	(chain_to_prev_insn_p): New function.
++	(deps_analyze_insn): Use it instead of SCHED_GROUP_P.
++
++2012-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* sched-int.h (_haifa_insn_data): Move priority_status.
++	Add model_index.
++	(INSN_MODEL_INDEX): New macro.
++	* haifa-sched.c (insn_delay): New function.
++	(sched_regno_pressure_class): Update commentary.
++	(mark_regno_birth_or_death): Pass the liveness bitmap and
++	pressure array as arguments, instead of using curr_reg_live and
++	curr_reg_pressure.  Only update the pressure if the bit in the
++	liveness set has changed.
++	(initiate_reg_pressure_info): Always trust the live-in set for
++	SCHED_PRESSURE_MODEL.
++	(initiate_bb_reg_pressure_info): Update call to
++	mark_regno_birth_or_death.
++	(dep_list_size): Take the list as argument.
++	(calculate_reg_deaths): New function, extracted from...
++	(setup_insn_reg_pressure_info): ...here.
++	(MODEL_BAR): New macro.
++	(model_pressure_data, model_insn_info, model_pressure_limit)
++	(model_pressure_group): New structures.
++	(model_schedule, model_worklist, model_insns, model_num_insns)
++	(model_curr_point, model_before_pressure, model_next_priority):
++	New variables.
++	(MODEL_PRESSURE_DATA, MODEL_MAX_PRESSURE, MODEL_REF_PRESSURE)
++	(MODEL_INSN_INFO, MODEL_INSN): New macros.
++	(model_index, model_update_limit_points_in_group): New functions.
++	(model_update_limit_points, model_last_use_except): Likewise.
++	(model_start_update_pressure, model_update_pressure): Likewise.
++	(model_recompute, model_spill_cost, model_excess_group_cost): Likewise.
++	(model_excess_cost, model_dump_pressure_points): Likewise.
++	(model_set_excess_costs): Likewise.
++	(rank_for_schedule): Extend SCHED_PRIORITY_WEIGHTED ordering to
++	SCHED_PRIORITY_MODEL.  Use insn_delay.  Use the order in the model
++	schedule as an alternative tie-breaker.  Update the call to
++	dep_list_size.
++	(ready_sort): Call model_set_excess_costs.
++	(update_register_pressure): Update call to mark_regno_birth_or_death.
++	Rely on that function to check liveness rather than doing it here.
++	(model_classify_pressure, model_order_p, model_add_to_worklist_at)
++	(model_remove_from_worklist, model_add_to_worklist, model_promote_insn)
++	(model_add_to_schedule, model_analyze_insns, model_init_pressure_group)
++	(model_record_pressure, model_record_pressures): New functions.
++	(model_record_final_pressures, model_add_successors_to_worklist)
++	(model_promote_predecessors, model_choose_insn): Likewise.
++	(model_reset_queue_indices, model_dump_pressure_summary): Likewise.
++	(model_start_schedule, model_finalize_pressure_group): Likewise.
++	(model_end_schedule): Likewise.
++	(schedule_insn): Say when we're scheduling the next instruction
++	in the model schedule.
++	(schedule_insn): Handle SCHED_PRESSURE_MODEL.
++	(queue_to_ready): Do not add instructions that are
++	MAX_SCHED_READY_INSNS beyond the current point of the model schedule.
++	Always allow the next instruction in the model schedule to be added.
++	(debug_ready_list): Print the INSN_REG_PRESSURE_EXCESS_COST_CHANGE
++	and delay for SCHED_PRESSURE_MODEL too.
++	(prune_ready_list): Extend SCHED_PRIORITY_WEIGHTED handling to
++	SCHED_PRIORITY_MODEL, but also take the DFA into account.
++	(schedule_block): Call model_start_schedule and model_end_schedule.
++	Extend SCHED_PRIORITY_WEIGHTED stall handling to SCHED_PRIORITY_MODEL.
++	(sched_init): Extend INSN_REG_PRESSURE_EXCESS_COST_CHANGE handling
++	to SCHED_PRESSURE_MODEL, but don't allocate saved_reg_live or
++	region_ref_regs.
++	(sched_finish): Update accordingly.
++	(fix_tick_ready): Extend INSN_REG_PRESSURE_EXCESS_COST_CHANGE handling
++	to SCHED_PRESSURE_MODEL.
++	(add_jump_dependencies): Update call to dep_list_size.
++	(haifa_finish_h_i_d): Fix leak of max_reg_pressure.
++	(haifa_init_insn): Extend INSN_REG_PRESSURE_EXCESS_COST_CHANGE handling
++	to SCHED_PRESSURE_MODEL.
++	* sched-deps.c (init_insn_reg_pressure_info): Likewise, but don't
++	allocate INSN_MAX_REG_PRESSURE for SCHED_PRESSURE_MODEL.
++	(sched_analyze_insn): Extend INSN_REG_PRESSURE_EXCESS_COST_CHANGE
++	handling to SCHED_PRESSURE_MODEL.
++
++2012-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* common.opt (fsched-pressure-algorithm=): New option.
++	* flag-types.h (sched_pressure_algorithm): New enum.
++	* sched-int.h (sched_pressure_p): Replace with...
++	(sched_pressure): ...this new variable.
++	* haifa-sched.c (sched_pressure_p): Replace with...
++	(sched_pressure): ...this new variable.
++	(sched_regno_pressure_class, rank_for_schedule, ready_sort)
++	(update_reg_and_insn_max_reg_pressure, schedule_insn)
++	(debug_ready_list, schedule_block, sched_init, sched_finish)
++	(fix_tick_ready, haifa_init_insn): Update accordingly.
++	* sched-deps.c (init_insn_reg_pressure_info): Likewise.
++	* sched-rgn.c (schedule_region): Likewise.
++
++2012-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-04-01  Bernd Schmidt  <bernds@codesourcery.com>
++
++	* haifa-sched.c (prune_ready_list): New function, broken out of
++	schedule_block.
++	(schedule_block): Use it.
++
++2012-02-07  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2012-02-07  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2012.02 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2012-02-01  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.2 (svn branches/gcc-4_6-branch 183786).
++
++2012-01-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline
++        2012-01-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	PR target/51819
++	* config/arm/arm.c (arm_print_operand): Correct output of alignment
++	hints for neon loads and stores.
++
++2012-01-16  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r181210:
++
++	gcc/
++	2011-11-07  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
++
++	* config/arm/arm-cores.def: Add -mcpu=cortex-a7.
++	* config/arm/arm-tables.opt: Regenerate.
++	* config/arm/arm-tune.md: Likewise.
++	* config/arm/bpabi.h (BE8_LINK_SPEC): Add Cortex A-7.
++	* doc/invoke.texi: Document -mcpu=cortex-a7.
++
++2012-01-16  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r182561:
++
++	2011-12-20  Richard Henderson  <rth@redhat.com>
++
++	gcc/
++	* config/arm/arm.md (*arm_cmpdi_unsigned): Enable for thumb2.
++	* config/arm/arm.c (arm_select_cc_mode): Use it.
++
++2012-01-16  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r183011:
++
++	2012-01-09  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
++
++	* config/arm/arm-cores.def (cortex-a15): Use cortex_a15_tune for
++	tuning parameters.
++	* config/arm/arm.c (arm_cortex_a15_tune): New static variable.
++
++2012-01-18  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r183126:
++
++	2012-01-12  Ira Rosen  <irar@il.ibm.com>
++
++	gcc/
++	PR tree-optimization/51799
++	* tree-vect-patterns.c (vect_recog_over_widening_pattern): Check
++	that the last operation is a type demotion.
++
++	gcc/testsuite/
++	* gcc.dg/vect/pr51799.c: New test.
++	* gcc.dg/vect/vect-widen-shift-u8.c: Expect two widening shift
++	patterns.
++
++2012-01-12  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	LP 879725
++	Backport from mainline:
++
++	2012-01-02  Revital Eres  <revital.eres@linaro.org>
++
++	gcc/
++	* ddg.c (def_has_ccmode_p): New function.
++	(add_cross_iteration_register_deps,
++	create_ddg_dep_from_intra_loop_link): Call it.
++
++	gcc/testsuite/
++	* gcc.dg/sms-11.c: New file.
++
++2012-01-11  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2012-01-11  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2012.01 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2012-01-06  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from mainline:
++
++	2012-01-06  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/testsuite/
++	* gcc.target/arm/headmerge-2.c: Adjust scan pattern.
++
++2012-01-05  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.2 (svn branches/gcc-4_6-branch 182894).
++
++2012-01-05  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r182271:
++
++	2011-12-13  Revital Eres  <revital.eres@linaro.org>
++
++	gcc/
++	* modulo-sched.c (mark_loop_unsched): Free bbs.
++
++2011-12-30  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* expr.h (copy_blkmode_to_reg): Declare.
++	* expr.c (copy_blkmode_to_reg): New function.
++	(expand_assignment): Don't expand register RESULT_DECLs before
++	the lhs.  Use copy_blkmode_to_reg to copy BLKmode values into a
++	RESULT_DECL register.
++	(expand_expr_real_1): Handle BLKmode decls when looking for promotion.
++	* stmt.c (expand_return): Move BLKmode-to-register code into
++	copy_blkmode_to_reg.
++
++2011-12-20  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++
++	2011-11-29  Ira Rosen  <ira.rosen@linaro.org>
++
++	PR tree-optimization/51301
++	gcc/
++	* tree-vect-patterns.c (vect_recog_over_widening_pattern): Check that
++	the last statement doesn't convert to a bigger type than the original
++	type of the computation.
++
++	gcc/testsuite/
++	* gcc.dg/vect/pr51301.c: New test.
++
++2011-12-06  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-12-06  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.12 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-12-06  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Revert earlier commit for fixed to floating point conversions.
++	2011-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (vfp3_const_double_for_fract_bits): Define.
++	* config/arm/arm-protos.h (vfp3_const_double_for_fract_bits): Declare.
++	* config/arm/constraints.md ("Dt"): New constraint.
++	* config/arm/predicates.md (const_double_vcvt_power_of_two_reciprocal):
++	New.
++	* config/arm/vfp.md (*arm_combine_vcvt_f32_s32): New.
++	(*arm_combine_vcvt_f32_u32): New.
++
++2011-12-01  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.2 (svn branches/gcc-4_6-branch 181866).
++
++2011-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline -A15 tuning.
++	2011-11-30  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
++
++	* config/arm/arm.c (arm_issue_rate): Cortex-A15 can triple issue.
++	* config/arm/arm.md (mul64): New attribute.
++	(generic_sched): Cortex-A15 is not scheduled generically.
++	(cortex-a15.md): Include.
++	* config/arm/cortex-a15.md: New machine description.
++	* config/arm/t-arm (MD_INCLUDES): Add cortex-a15.md.
++
++        2011-11-30  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
++	* config/arm/t-arm (MD_INCLUDES): Ensure all md files are listed.
++
++2011-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (vfp3_const_double_for_fract_bits): Define.
++	* config/arm/arm-protos.h (vfp3_const_double_for_fract_bits): Declare.
++	* config/arm/constraints.md ("Dt"): New constraint.
++	* config/arm/predicates.md (const_double_vcvt_power_of_two_reciprocal):
++	New.
++	* config/arm/vfp.md (*arm_combine_vcvt_f32_s32): New.
++	(*arm_combine_vcvt_f32_u32): New.
++
++2011-11-27  Ira Rosen  <ira.rosen@linaro.org>
++
++	Needs to be merged upstream:
++
++	gcc/
++	* tree-vect-patterns.c (widened_name_p): Rename to ...
++	(type_conversion_p): ... this.  Add new argument to determine
++	if it's a promotion or demotion operation.  Check for
++	CONVERT_EXPR_CODE_P instead of NOP_EXPR.
++	(vect_recog_dot_prod_pattern): Call type_conversion_p instead
++	widened_name_p.
++	(vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern,
++	vect_operation_fits_smaller_type, vect_recog_widen_shift_pattern):
++	Likewise.
++	(vect_recog_mixed_size_cond_pattern): Likewise and allow
++	non-constant then and else clauses.
++
++	gcc/testsuite/
++	* gcc.dg/vect/bb-slp-cond-3.c: New test.
++	* gcc.dg/vect/bb-slp-cond-4.c: New test.
++
++2011-11-28  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	Backport from mainline (svn r19983):
++
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	gcc/testsuite/
++	* gcc.dg/di-longlong64-sync-1.c: New test.
++	* gcc.dg/di-sync-multithread.c: New test.
++	* gcc.target/arm/di-longlong64-sync-withhelpers.c: New test.
++	* gcc.target/arm/di-longlong64-sync-withldrexd.c: New test.
++	* lib/target-supports.exp: (arm_arch_*_ok): Series of effective-target
++	tests for v5, v6, v6k, and v7-a, and add-options helpers.
++	(check_effective_target_arm_arm_ok): New helper.
++	(check_effective_target_sync_longlong): New helper.
++
++2011-11-28  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	Backport from mainline (svn r19982):
++
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	gcc/
++	* config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
++	* config/arm/linux-atomic.c: Change comment to point to 64bit version.
++	(SYNC_LOCK_RELEASE): Instantiate 64bit version.
++	* config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
++
++2011-11-28  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	Backport from mainline (svn r19981):
++
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (arm_output_ldrex): Support ldrexd.
++	(arm_output_strex): Support strexd.
++	(arm_output_it): New helper to output it in Thumb2 mode only.
++	(arm_output_sync_loop): Support DI mode.  Change comment to
++	not support const_int.
++	(arm_expand_sync): Support DI mode.
++	* config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
++	and LDREXD.
++	* config/arm/iterators.md (NARROW): move from sync.md.
++	(QHSD): New iterator for all current ARM integer modes.
++	(SIDI): New iterator for SI and DI modes only.
++	* config/arm/sync.md (sync_predtab): New mode_attr.
++	(sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
++	(sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
++	(sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
++	(sync_nandsi): Fold into sync_nand<mode>.
++	(sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
++	(sync_new_nandsi): Fold into sync_new_nand<mode>.
++	(sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
++	(sync_old_nandsi): Fold into sync_old_nand<mode>.
++	(sync_compare_and_swap<mode>): Support SI & DI.
++	(sync_lock_test_and_set<mode>): Likewise.
++	(sync_<sync_optab><mode>): Likewise.
++	(sync_nand<mode>): Likewise.
++	(sync_new_<sync_optab><mode>): Likewise.
++	(sync_new_nand<mode>): Likewise.
++	(sync_old_<sync_optab><mode>): Likewise.
++	(sync_old_nand<mode>): Likewise.
++	(arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
++	(arm_sync_lock_test_and_setsi): Likewise.
++	(arm_sync_new_<sync_optab>si): Likewise.
++	(arm_sync_new_nandsi): Likewise.
++	(arm_sync_old_<sync_optab>si): Likewise.
++	(arm_sync_old_nandsi): Likewise.
++	(arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
++	(arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
++	(arm_sync_new_<sync_optab><mode> NARROW): Likewise.
++	(arm_sync_new_nand<mode> NARROW): Likewise.
++	(arm_sync_old_<sync_optab><mode> NARROW): Likewise.
++	(arm_sync_old_nand<mode> NARROW): Likewise.
++
++2011-11-28  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	Backport from mainline (svn r19980):
++
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	PR target/48126
++
++	gcc/
++	* config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
++
++2011-11-28  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	Backport from mainline (svn r19979):
++
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	gcc/
++	* config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
++
++
++2011-11-27  Ira Rosen  <ira.rosen@linaro.org>
++
++	Needs to be merged upstream:
++
++	gcc/
++	* tree-vectorizer.h (vect_pattern_recog): Add new argument.
++	* tree-vect-loop.c (vect_analyze_loop_2): Update call to
++	vect_pattern_recog.
++	* tree-vect-patterns.c (widened_name_p): Pass basic block
++	info to vect_is_simple_use.
++	(vect_recog_dot_prod_pattern): Fail for basic blocks.
++	(vect_recog_widen_sum_pattern): Likewise.
++	(vect_handle_widen_op_by_const): Support basic blocks.
++	(vect_operation_fits_smaller_type,
++	vect_recog_over_widening_pattern): Likewise.
++	(vect_recog_mixed_size_cond_pattern): Support basic blocks.
++	Add printing.
++	(vect_mark_pattern_stmts): Update calls to new_stmt_vec_info.
++	(vect_pattern_recog_1): Check for reduction only in loops.
++	(vect_pattern_recog): Add new argument.  Support basic blocks.
++	* tree-vect-stmts.c (vectorizable_conversion): Pass basic block
++	info to vect_is_simple_use_1.
++	* tree-vect-slp.c (vect_get_and_check_slp_defs): Support basic
++	blocks.
++	(vect_slp_analyze_bb_1): Call vect_pattern_recog.
++
++	gcc/testsuite/
++	* gcc.dg/vect/bb-slp-pattern-1.c: New test.
++	* gcc.dg/vect/bb-slp-pattern-2.c: New test.
++
++2011-11-22  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++
++	2011-11-06  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vectorizer.h (vectorizable_condition): Add argument.
++	* tree-vect-loop.c (vectorizable_reduction): Fail for condition
++	in SLP.  Update calls to vectorizable_condition.
++	* tree-vect-stmts.c (vect_is_simple_cond): Add basic block info to
++	the arguments.  Pass it to vect_is_simple_use_1.
++	(vectorizable_condition): Add slp_node to the arguments.  Support
++	vectorization of basic blocks.  Fail for reduction in SLP.  Update
++	calls to vect_is_simple_cond and vect_is_simple_use.  Support SLP:
++	call vect_get_slp_defs to get vector operands.
++	(vect_analyze_stmt): Update calls to vectorizable_condition.
++	(vect_transform_stmt): Likewise.
++	* tree-vect-slp.c (vect_create_new_slp_node): Handle COND_EXPR.
++	(vect_get_and_check_slp_defs): Handle COND_EXPR.  Allow pattern
++	def stmts.
++	(vect_build_slp_tree): Handle COND_EXPR.
++	(vect_analyze_slp_instance): Push pattern statements to root node.
++	(vect_get_constant_vectors): Fix comments.  Handle COND_EXPR.
++
++	gcc/testsuite/
++	* gcc.dg/vect/bb-slp-cond-1.c: New test.
++	* gcc.dg/vect/slp-cond-1.c: New test.
++
++2011-11-22  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++
++	2011-10-06  Jakub Jelinek  <jakub@redhat.com>
++
++	gcc/
++	PR tree-optimization/50596
++	* tree-vectorizer.h (vect_is_simple_cond): New prototype.
++	(NUM_PATTERNS): Change to 6.
++	* tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
++	function.
++	(vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
++	(vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
++	if it already has one, and don't set STMT_VINFO_VECTYPE in it
++	if it is already set.
++	* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
++	COND_EXPR in pattern stmts.
++	(vect_is_simple_cond): No longer static.
++
++	gcc/testsuite:
++	PR tree-optimization/50596
++	* gcc.dg/vect/vect-cond-8.c: New test.
++
++	2011-10-07  Jakub Jelinek  <jakub@redhat.com>
++
++	gcc/
++	PR tree-optimization/50650
++	* tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
++	call vect_is_simple_cond here, instead fail if cond_expr isn't
++	COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
++	for cond_expr's first operand.
++	* tree-vect-stmts.c (vect_is_simple_cond): Static again.
++	* tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
++
++
++	gcc/
++	* tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Reduce
++	it to integral types only.
++
++	gcc/testsuite/
++	* gcc.dg/vect/pr30858.c: Expect the error message twice for targets
++	with multiple vector sizes.
++	* gcc.dg/vect/vect-cond-8.c: Rename to...
++	* gcc.dg/vect/vect-cond-8a.c: ... this and change the type from float
++	to int.
++	* lib/target-supports.exp (check_effective_target_vect_condition):
++	Return true for NEON.
++
++2011-11-21  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r180131:
++
++	2011-10-18  Julian Brown  <julian@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.c (arm_block_move_unaligned_straight)
++	(arm_adjust_block_mem, arm_block_move_unaligned_loop)
++	(arm_movmemqi_unaligned): New.
++	(arm_gen_movmemqi): Support unaligned block copies.
++
++	gcc/testsuite/
++	* lib/target-supports.exp (check_effective_target_arm_unaligned): New.
++	* gcc.target/arm/unaligned-memcpy-1.c: New.
++	* gcc.target/arm/unaligned-memcpy-2.c: New.
++	* gcc.target/arm/unaligned-memcpy-3.c: New.
++	* gcc.target/arm/unaligned-memcpy-4.c: New.
++
++	2011-09-15  James Greenhalgh  <james.greenhalgh@arm.com>
++
++	gcc/
++	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro.
++
++2011-11-17  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++
++	2011-11-03  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vectorizer.h (slp_void_p): New.
++	(struct _slp_tree): Replace left and right with children.  Update
++	documentation.
++	(struct _slp_oprnd_info): New.
++	(vect_get_vec_defs): Declare.
++	(vect_get_slp_defs): Update arguments.
++	* tree-vect-loop.c (vect_create_epilog_for_reduction): Call
++	vect_get_vec_defs instead of vect_get_slp_defs.
++	(vectorizable_reduction): Likewise.
++	* tree-vect-stmts.c (vect_get_vec_defs): Remove static, add argument.
++	Update call to vect_get_slp_defs.
++	(vectorizable_conversion): Update call to vect_get_vec_defs.
++	(vectorizable_assignment, vectorizable_shift,
++	vectorizable_operation): Likewise.
++	(vectorizable_type_demotion): Call vect_get_vec_defs instead of
++	vect_get_slp_defs.
++	(vectorizable_type_promotion, vectorizable_store): Likewise.
++	(vect_analyze_stmt): Fix typo.
++	* tree-vect-slp.c (vect_free_slp_tree): Update SLP tree traversal.
++	(vect_print_slp_tree, vect_mark_slp_stmts,
++	vect_mark_slp_stmts_relevant, vect_slp_rearrange_stmts,
++	vect_detect_hybrid_slp_stmts, vect_slp_analyze_node_operations,
++	vect_schedule_slp_instance): Likewise.
++	(vect_create_new_slp_node): New.
++	(vect_create_oprnd_info, vect_free_oprnd_info): Likewise.
++	(vect_get_and_check_slp_defs): Pass information about defs using
++	oprnds_info, allow any number of operands.
++	(vect_build_slp_tree): Likewise.  Update calls to
++	vect_get_and_check_slp_defs.  Fix comments.
++	(vect_analyze_slp_instance): Move node creation to
++	vect_create_new_slp_node.
++	(vect_get_slp_defs): Allow any number of operands.
++
++	2011-11-11  Jakub Jelinek  <jakub@redhat.com>
++
++	gcc/
++	* tree-vect-slp.c (vect_free_slp_tree): Also free SLP_TREE_CHILDREN
++	vector.
++	(vect_create_new_slp_node): Don't allocate node before checking stmt
++	type.
++	(vect_free_oprnd_info): Remove FREE_DEF_STMTS argument, always
++	free def_stmts vectors and additionally free oprnd_info.
++	(vect_build_slp_tree): Adjust callers.  Call it even if
++	stop_recursion.  If vect_create_new_slp_node or
++	vect_build_slp_tree fails, properly handle freeing memory.
++	If it succeeded, clear def_stmts in oprnd_info.
++
++2011-11-02  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF mainline:
++
++	2011-11-01  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/bpabi.h (BE8_LINK_SPEC): Recognize generic-armv7 tuning.
++
++2011-11-08  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-11-08  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.11 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-11-04  Revital Eres  <revital.eres@linaro.org>
++
++	Backport from mainline -r180673:
++
++	gcc/
++	* modulo-sched.c (generate_prolog_epilog): Mark prolog
++	and epilog as BB_DISABLE_SCHEDULE.
++	(mark_loop_unsched): New function.
++	(sms_schedule): Call it.
++
++2011-10-26  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge FSF GCC 4.6.2 Release (svn branches/gcc-4_6-branch 180515).
++
++2011-10-27  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++
++	2011-10-18  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* doc/md.texi (vec_widen_ushiftl_hi, vec_widen_ushiftl_lo,
++	vec_widen_sshiftl_hi, vec_widen_sshiftl_lo): Document.
++	* tree-pretty-print.c (dump_generic_node): Handle WIDEN_LSHIFT_EXPR,
++	VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
++	(op_code_prio): Likewise.
++	(op_symbol_code): Handle WIDEN_LSHIFT_EXPR.
++	* optabs.c (optab_for_tree_code): Handle
++	VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
++	(init-optabs): Initialize optab codes for vec_widen_u/sshiftl_hi/lo.
++	* optabs.h (enum optab_index): Add OTI_vec_widen_u/sshiftl_hi/lo.
++	* genopinit.c (optabs): Initialize the new optabs.
++	* expr.c (expand_expr_real_2): Handle
++	VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
++	* gimple-pretty-print.c (dump_binary_rhs): Likewise.
++	* tree-vectorizer.h (NUM_PATTERNS): Increase to 8.
++	* tree.def (WIDEN_LSHIFT_EXPR, VEC_WIDEN_LSHIFT_HI_EXPR,
++	VEC_WIDEN_LSHIFT_LO_EXPR): New.
++	* cfgexpand.c (expand_debug_expr): Handle new tree codes.
++	* tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
++	vect_recog_widen_shift_pattern.
++	(vect_handle_widen_mult_by_const): Rename...
++	(vect_handle_widen_op_by_const): ...to this.  Handle shifts.
++	Add a new argument, update documentation.
++	(vect_recog_widen_mult_pattern): Assume that only second
++	operand can be constant.  Update call to
++	vect_handle_widen_op_by_const.
++	(vect_recog_over_widening_pattern): Fix typo.
++	(vect_recog_widen_shift_pattern): New.
++	* tree-vect-stmts.c (vectorizable_type_promotion): Handle
++	widening shifts.
++	(supportable_widening_operation): Likewise.
++	* tree-inline.c (estimate_operator_cost): Handle new tree codes.
++	* tree-vect-generic.c (expand_vector_operations_1): Likewise.
++	* tree-cfg.c (verify_gimple_assign_binary): Likewise.
++	* config/arm/neon.md (neon_vec_<US>shiftl_<mode>): New.
++	(vec_widen_<US>shiftl_lo_<mode>, neon_vec_<US>shiftl_hi_<mode>,
++	vec_widen_<US>shiftl_hi_<mode>, neon_vec_<US>shift_left_<mode>):
++	Likewise.
++	* config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
++	New.
++	* config/arm/iterators.md (V_innermode): New.
++	* tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
++	for widening shift.
++
++	gcc/testsuite
++	* testsuite/lib/target-supports.exp
++	(check_effective_target_vect_widen_shift): New.
++	* gcc.dg/vect/vect-widen-shift-s16.c: New.
++	* gcc.dg/vect/vect-widen-shift-s8.c: New.
++	* gcc.dg/vect/vect-widen-shift-u16.c: New.
++	* gcc.dg/vect/vect-widen-shift-u8.c: New.
++
++	2011-10-06  Jakub Jelinek  <jakub@redhat.com>
++
++	gcc/
++	* tree-vect-patterns.c (vect_pattern_recog_1): Use
++	vect_recog_func_ptr typedef for the first argument.
++	(vect_pattern_recog): Rename vect_recog_func_ptr variable
++	to vect_recog_func, use vect_recog_func_ptr typedef for it.
++
++	2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	PR tree-optimization/50727
++	* tree-vect-patterns.c (vect_operation_fits_smaller_type): Add
++	DEF_STMT to the list of statements to be replaced by the
++	pattern statements.
++
++	2011-10-09  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	PR tree-optimization/50635
++	* tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
++	DEF_STMT to the list of statements to be replaced by the
++	pattern statements.
++	(vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
++
++2011-10-27  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++	2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vect-stmts.c (vectorizable_load): For SLP without permutation
++	treat the first load of the node as the first element in its
++	interleaving chain.
++	* tree-vect-slp.c (vect_get_and_check_slp_defs): Swap the operands if
++	necessary and possible.
++	(vect_build_slp_tree): Add new argument.  Allow load groups of any size
++	in basic blocks.  Keep all the loads for further permutation check.
++	Use the new argument to determine if there is a permutation.  Update
++	the recursive calls.
++	(vect_supported_load_permutation_p): Allow subchains of interleaving
++	chains in basic block vectorization.
++	(vect_analyze_slp_instance): Update the call to vect_build_slp_tree.
++	Check load permutation based on the new parameter.
++	(vect_schedule_slp_instance): Don't start from the first element in
++	interleaving chain unless the loads are permuted.
++
++	gcc/testsuite/
++	* gcc.dg/vect/bb-slp-29.c: New test.
++
++2011-10-21  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF mainline:
++
++	2011-10-21  Andrew Stubbs  <ams@codesourcery.com>
++
++	PR target/50809
++
++	gcc/
++	* config/arm/driver-arm.c (vendors): Make static.
++
++2011-10-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
++
++	PR tree-optimization/50717
++
++	gcc/
++	* tree-ssa-math-opts.c (is_widening_mult_p): Remove the 'type'
++	parameter.  Calculate 'type' from stmt.
++	(convert_mult_to_widen): Update call the is_widening_mult_p.
++	(convert_plusminus_to_widen): Likewise.
++
++	gcc/testsuite/
++	* gcc.dg/pr50717-1.c: New file.
++	* gcc.target/arm/wmul-12.c: Correct types.
++	* gcc.target/arm/wmul-8.c: Correct types.
++
++2011-10-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++	
++	2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
++
++	* config/arm/driver-arm.c (host_detect_local_cpu): Close the file
++	before exiting.
++
++	2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config.host (arm*-*-linux*): Add driver-arm.o and x-arm.
++	* config/arm/arm.opt: Add 'native' processor_type and
++	arm_arch enum values.
++	* config/arm/arm.h (host_detect_local_cpu): New prototype.
++	(EXTRA_SPEC_FUNCTIONS): New define.
++	(MCPU_MTUNE_NATIVE_SPECS): New define.
++	(DRIVER_SELF_SPECS): New define.
++	* config/arm/driver-arm.c: New file.
++	* config/arm/x-arm: New file.
++	* doc/invoke.texi (ARM Options): Document -mcpu=native,
++	-mtune=native and -march=native.
++
++2011-10-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2011-09-09  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm-cores.def (generic-armv7-a): New architecture.
++	* config/arm/arm-tables.opt: Regenerate.
++	* config/arm/arm-tune.md: Regenerate.
++	* config/arm/arm.c (arm_file_start): Output .arch directive when
++	user passes -mcpu=generic-*.
++	(arm_issue_rate): Add genericv7a support.
++	* config/arm/arm.h (EXTRA_SPECS): Add asm_cpu_spec.
++	(ASM_CPU_SPEC): New define.
++	* config/arm/elf.h (ASM_SPEC): Use %(asm_cpu_spec).
++	* config/arm/semi.h (ASM_SPEC): Likewise.
++	* doc/invoke.texi (ARM Options): Document -mcpu=generic-*
++	and -mtune=generic-*.
++
++2011-10-17  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
++	(SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
++	(node_sched_params): Remove first_reg_move and nreg_moves.
++	(ps_num_consecutive_stages, extend_node_sched_params): New functions.
++	(update_node_sched_params): Move up file.
++	(print_node_sched_params): Print the stage.  Don't dump info related
++	to first_reg_move and nreg_moves.
++	(set_columns_for_row): New function.
++	(set_columns_for_ps): Move up file and use set_columns_for_row.
++	(schedule_reg_move): New function.
++	(schedule_reg_moves): Call extend_node_sched_params and
++	schedule_reg_move.  Extend size of uses bitmap.  Initialize
++	num_consecutive_stages.  Return false if a move could not be
++	scheduled.
++	(apply_reg_moves): Don't emit moves here.
++	(permute_partial_schedule): Handle register moves.
++	(duplicate_insns_of_cycles): Remove for_prolog.  Emit moves according
++	to the same stage-count test as ddg nodes.
++	(generate_prolog_epilog): Update calls accordingly.
++	(sms_schedule): Allow move-scheduling to add a new first stage.
++
++2011-10-17  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* modulo-sched.c (ps_insn): Adjust comment.
++	(ps_reg_move_info): New structure.
++	(partial_schedule): Add reg_moves field.
++	(SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
++	(node_sched_params): Turn first_reg_move into an identifier.
++	(ps_reg_move): New function.
++	(ps_rtl_insn): Cope with register moves.
++	(ps_first_note): Adjust comment and assert that the instruction
++	isn't a register move.
++	(node_sched_params): Replace with...
++	(node_sched_param_vec): ...this vector.
++	(set_node_sched_params): Adjust accordingly.
++	(print_node_sched_params): Take a partial schedule instead of a ddg.
++	Use ps_rtl_insn and ps_reg_move.
++	(generate_reg_moves): Rename to...
++	(schedule_reg_moves): ...this.  Remove rescan parameter.  Record each
++	move in the partial schedule, but don't emit it here.  Don't perform
++	register substitutions here either.
++	(apply_reg_moves): New function.
++	(duplicate_insns_of_cycles): Use register indices directly,
++	rather than finding instructions using PREV_INSN.  Use ps_reg_move.
++	(sms_schedule): Call schedule_reg_moves before committing to
++	a partial schedule.   Try the next ii if the schedule fails.
++	Use apply_reg_moves instead of generate_reg_moves.  Adjust
++	call to print_node_sched_params.  Free node_sched_param_vec
++	instead of node_sched_params.
++	(create_partial_schedule): Initialize reg_moves.
++	(free_partial_schedule): Free reg_moves.
++
++2011-10-17  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* modulo-sched.c (ps_insn): Replace node field with an identifier.
++	(SCHED_ASAP): Replace with..
++	(NODE_ASAP): ...this macro.
++	(SCHED_PARAMS): New macro.
++	(SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
++	(SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
++	(node_sched_params): Remove asap.
++	(ps_rtl_insn, ps_first_note): New functions.
++	(set_node_sched_params): Use XCNEWVEC.  Don't copy across the
++	asap values.
++	(print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
++	(generate_reg_moves): Pass ids to the SCHED_* macros.
++	(update_node_sched_params): Take a ps insn identifier rather than
++	a node as parameter.  Use ps_rtl_insn.
++	(set_columns_for_ps): Update for above field and SCHED_* macro changes.
++	(permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
++	(optimize_sc): Update for above field and SCHED_* macro changes.
++	Update calls to try_scheduling_node_in_cycle and
++	update_node_sched_params.
++	(duplicate_insns_of_cycles): Adjust for above field and SCHED_*
++	macro changes.  Use ps_rtl_insn and ps_first_note.
++	(sms_schedule): Pass ids to the SCHED_* macros.
++	(get_sched_window): Adjust for above field and SCHED_* macro changes.
++	Use NODE_ASAP instead of SCHED_ASAP.
++	(try_scheduling_node_in_cycle): Remove node parameter.  Update
++	call to ps_add_node_check_conflicts.  Pass ids to the SCHED_*
++	macros.
++	(sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
++	(ps_insert_empty_row): Adjust for above field changes.
++	(compute_split_row): Use ids rather than nodes.
++	(verify_partial_schedule): Adjust for above field changes.
++	(print_partial_schedule): Use ps_rtl_insn.
++	(create_ps_insn): Take an id rather than a node.
++	(ps_insn_find_column): Adjust for above field changes.
++	Use ps_rtl_insn.
++	(ps_insn_advance_column): Adjust for above field changes.
++	(add_node_to_ps): Remove node parameter.  Update call to
++	create_ps_insn.
++	(ps_has_conflicts): Use ps_rtl_insn.
++	(ps_add_node_check_conflicts): Replace node parameter than an id.
++
++2011-10-17  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* modulo-sched.c (undo_replace_buff_elem): Delete.
++	(generate_reg_moves): Don't build and return an undo list.
++	(free_undo_replace_buff): Delete.
++	(sms_schedule): Adjust call to generate_reg_moves.
++	Don't call free_undo_replace_buff.
++
++2011-10-17  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-08-08  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* modulo-sched.c (get_sched_window): Use a table for the debug output.
++	Print the current ii.
++	(sms_schedule_by_order): Reduce whitespace in dump line.
++
++2011-10-17  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-08-08  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* modulo-sched.c (get_sched_window): Use just one loop for predecessors
++	and one loop for successors.  Fix upper bound of memory range.
++
++2011-10-17  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r178852:
++
++	2011-09-14  Julian Brown  <julian@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.c (arm_override_options): Add unaligned_access
++	support.
++	(arm_file_start): Emit attribute for unaligned access as appropriate.
++	* config/arm/arm.md (UNSPEC_UNALIGNED_LOAD)
++	(UNSPEC_UNALIGNED_STORE): Add constants for unspecs.
++	(insv, extzv): Add unaligned-access support.
++	(extv): Change to expander. Likewise.
++	(extzv_t1, extv_regsi): Add helpers.
++	(unaligned_loadsi, unaligned_loadhis, unaligned_loadhiu)
++	(unaligned_storesi, unaligned_storehi): New.
++	(*extv_reg): New (previous extv implementation).
++	* config/arm/arm.opt (munaligned_access): Add option.
++	* config/arm/constraints.md (Uw): New constraint.
++	* expmed.c (store_bit_field_1): Adjust bitfield numbering according
++	to size of access, not size of unit, when BITS_BIG_ENDIAN !=
++	BYTES_BIG_ENDIAN. Don't use bitfield accesses for
++	volatile accesses when -fstrict-volatile-bitfields is in effect.
++	(extract_bit_field_1): Likewise.
++
++	Backport from mainline r172697:
++
++	2011-04-19  Wei Guozhi  <carrot@google.com>
++
++	PR target/47855
++	gcc/
++	* config/arm/arm-protos.h (thumb1_legitimate_address_p): New prototype.
++	* config/arm/arm.c (thumb1_legitimate_address_p): Remove the static
++	linkage.
++	* config/arm/constraints.md (Uu): New constraint.
++	* config/arm/arm.md (*arm_movqi_insn): Compute attr "length".
++
++2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++
++	2011-09-27  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
++	vectorization.
++	(vectorizable_type_promotion): Likewise.
++	(vect_analyze_stmt): Call vectorizable_type_demotion and
++	vectorizable_type_promotion for basic blocks.
++	(supportable_widening_operation): Don't assume loop vectorization.
++	* tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
++	basic blocks.  Update vectorization factor for basic block
++	vectorization.
++	(vect_analyze_slp_instance): Allow multiple types for basic block
++	vectorization.  Recheck unrolling factor after construction of SLP
++	instance.
++
++	gcc/testsuite/
++	* gcc.dg/vect/bb-slp-11.c: Expect to get vectorized with 64-bit
++	vectors.
++	* gcc.dg/vect/bb-slp-27.c: New.
++	* gcc.dg/vect/bb-slp-28.c: New.
++
++
++	2011-10-04  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/testsuite/
++	* lib/target-supports.exp (check_effective_target_vect_multiple_sizes):
++	Make et_vect_multiple_sizes_saved global.
++	(check_effective_target_vect64): Make et_vect64_saved global.
++
++2011-10-13  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from mainline:
++
++	2011-10-07  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/predicates.md (shift_amount_operand): Remove constant
++	range check.
++	(shift_operator): Check range of constants for all shift operators.
++
++	gcc/testsuite/
++	* gcc.dg/pr50193-1.c: New file.
++	* gcc.target/arm/shiftable.c: New file.
++
++2011-10-11  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-10-11  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.10 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-10-04  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.1 (svn branches/gcc-4_6-branch 179483).
++
++2011-10-06  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/testsuite/
++	* gcc.dg/vect/bb-slp-26.c: Simplify to make the basic block
++	vectorizable.
++
++	Backport from mainline:
++
++	2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
++	of vect_analyze_bb here.
++	(vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
++
++	gcc/testsuite/
++	* lib/target-supports.exp (check_effective_target_vect64): New.
++	* gcc.dg/vect/bb-slp-11.c: Expect the error message twice in case
++	of multiple vector sizes.
++	* gcc.dg/vect/bb-slp-26.c: New.
++
++2011-10-06  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++
++	2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-data-ref.c (dr_analyze_innermost): Add new argument.
++	Allow not simple iv if analyzing basic block.
++	(create_data_ref): Update call to dr_analyze_innermost.
++	(stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
++	* tree-loop-distribution.c (generate_memset_zero): Likewise.
++	* tree-predcom.c (find_looparound_phi): Likewise.
++	* tree-data-ref.h (dr_analyze_innermost): Add new argument.
++
++	gcc/testsuite/
++	* gcc.dg/vect/bb-slp-24.c: New.
++
++
++	2011-09-15  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Allow
++	read-after-read dependencies in basic block SLP.
++
++	gcc/testsuite/
++	* gcc.dg/vect/bb-slp-25.c: New.
++
++
++	2011-04-21  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* tree-vect-data-refs.c (vect_drs_dependent_in_basic_block): Use
++	operand_equal_p to compare DR_BASE_ADDRESSes.
++	(vect_check_interleaving): Likewise.
++
++	gcc/testsuite/
++	* gcc.dg/vect/vect-119.c: New test.
++
++2011-10-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* config/arm/predicates.md (expandable_comparison_operator): New
++	predicate, extracted from...
++	(arm_comparison_operator): ...here.
++	* config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
++	(cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
++	(movdfcc): Use expandable_comparison_operator.
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* gcc.target/arm/cmp-1.c: New test.
++	* gcc.target/arm/cmp-2.c: Likewise.
++
++2011-10-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-09-07  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	PR target/49030
++	* config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
++	* config/arm/arm.c (maybe_get_arm_condition_code): New function,
++	reusing the old code from get_arm_condition_code.  Return ARM_NV
++	for invalid comparison codes.
++	(get_arm_condition_code): Redefine in terms of
++	maybe_get_arm_condition_code.
++	* config/arm/predicates.md (arm_comparison_operator): Use
++	maybe_get_arm_condition_code.
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-09-07  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	PR target/49030
++	* gcc.dg/torture/pr49030.c: New test.
++
++2011-10-03  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline:
++
++	2011-09-13  Sevak Sargsyan <sevak.sargsyan@ispras.ru>
++
++	gcc/
++	* config/arm/neon.md (neon_vabd<mode>_2, neon_vabd<mode>_3): New
++	define_insn patterns for combine.
++
++	gcc/testsuite/
++	* gcc.target/arm/neon-combine-sub-abs-into-vabd.c: New test.
++
++2011-10-01  Revital Eres  <revital.eres@linaro.org> 
++
++	gcc/
++	Backport from mainline -r179380 and -r179381
++
++	* ddg.c (autoinc_var_is_used_p): New function.
++	(create_ddg_dep_from_intra_loop_link,
++	add_cross_iteration_register_deps): Call it.
++	* ddg.h (autoinc_var_is_used_p): Declare.
++	* modulo-sched.c (sms_schedule): Handle instructions with REG_INC.
++	(generate_reg_moves): Call autoinc_var_is_used_p.  Skip
++	instructions that do not set a register and verify no regmoves
++	are created for !single_set instructions.
++
++	gcc/testsuite/
++
++	* gcc.dg/sms-10.c: New file
++
++2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
++	(neon_move_hi_quad_<mode>): Likewise.
++	(move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
++
++2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
++	(neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
++	(neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
++	(neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
++	that produce subreg moves.  Define using VQX iterators.
++
++2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* simplify-rtx.c (simplify_subreg): Check that the inner mode is
++	a scalar integer before applying integer-only optimisations to
++	inner arithmetic.
++
++2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/testsuite/
++	* lib/target-supports.exp (check_effective_target_vect_multiple_sizes):
++	Replace check_effective_target_arm_neon with
++	check_effective_target_arm_neon_ok.
++
++	Backport from mainline:
++
++	2011-09-06  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (arm_preferred_simd_mode): Check
++	TARGET_NEON_VECTORIZE_DOUBLE instead of
++	TARGET_NEON_VECTORIZE_QUAD.
++	(arm_autovectorize_vector_sizes): Likewise.
++	* config/arm/arm.opt (mvectorize-with-neon-quad): Make inverse
++	mask of mvectorize-with-neon-double.  Add RejectNegative.
++	(mvectorize-with-neon-double): New.
++
++	gcc/testsuite/
++	* lib/target-supports.exp (check_effective_target_vect_multiple_sizes):
++	New procedure.
++	(add_options_for_quad_vectors): Replace with ...
++	(add_options_for_double_vectors): ... this.
++	* gfortran.dg/vect/pr19049.f90: Expect more printings on targets that
++	support multiple vector sizes since the vectorizer attempts to
++	vectorize with both vector sizes.
++	* gcc.dg/vect/no-vfa-vect-79.c,
++	gcc.dg/vect/no-vfa-vect-102a.c, gcc.dg/vect/vect-outer-1a.c,
++	gcc.dg/vect/vect-outer-1b.c, gcc.dg/vect/vect-outer-2b.c,
++	gcc.dg/vect/vect-outer-3a.c, gcc.dg/vect/no-vfa-vect-37.c,
++	gcc.dg/vect/vect-outer-3b.c, gcc.dg/vect/no-vfa-vect-101.c,
++	gcc.dg/vect/no-vfa-vect-102.c, gcc.dg/vect/vect-reduc-dot-s8b.c,
++	gcc.dg/vect/vect-outer-1.c, gcc.dg/vect/vect-104.c: Likewise.
++	* gcc.dg/vect/vect-42.c: Run with 64 bit vectors if applicable.
++	* gcc.dg/vect/vect-multitypes-6.c, gcc.dg/vect/vect-52.c,
++	gcc.dg/vect/vect-54.c, gcc.dg/vect/vect-46.c, gcc.dg/vect/vect-48.c,
++	gcc.dg/vect/vect-96.c, gcc.dg/vect/vect-multitypes-3.c,
++	gcc.dg/vect/vect-40.c: Likewise.
++	* gcc.dg/vect/vect-outer-5.c: Remove quad-vectors option as
++	redundant.
++	* gcc.dg/vect/vect-109.c, gcc.dg/vect/vect-peel-1.c,
++	gcc.dg/vect/vect-peel-2.c, gcc.dg/vect/slp-25.c,
++	gcc.dg/vect/vect-multitypes-1.c, gcc.dg/vect/slp-3.c,
++	gcc.dg/vect/no-vfa-pr29145.c, gcc.dg/vect/vect-multitypes-4.c:
++	Likewise.
++	* gcc.dg/vect/vect-peel-4.c: Make ia global.
++	
++2011-09-22  Revital Eres  <revital.eres@linaro.org>
++
++	Backport from trunk -r178804:
++	* modulo-sched.c (remove_node_from_ps): Return void
++	instead of bool.
++	(optimize_sc): Adjust call to remove_node_from_ps.
++	(sms_schedule): Add print info.
++
++2011-09-16  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	GCC Linaro 4.6-2011.09-1 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	Revert:
++
++	gcc/
++	PR target/49030
++	* config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
++	* config/arm/arm.c (maybe_get_arm_condition_code): New function,
++	reusing the old code from get_arm_condition_code.  Return ARM_NV
++	for invalid comparison codes.
++	(get_arm_condition_code): Redefine in terms of
++	maybe_get_arm_condition_code.
++	* config/arm/predicates.md (arm_comparison_operator): Use
++	maybe_get_arm_condition_code.
++
++	gcc/testsuite/
++	PR target/49030
++	* gcc.dg/torture/pr49030.c: New test.
++
++2011-09-13  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-09-13  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.09 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-09-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from FSF mainline:
++        2011-04-06  Wei Guozhi  <carrot@google.com>
++
++        PR target/47855
++	gcc/
++        * config/arm/arm.md (arm_cmpsi_insn): Compute attr "length".
++        (arm_cond_branch): Likewise.
++        (arm_cond_branch_reversed): Likewise.
++        (arm_jump): Likewise.
++        (push_multi): Likewise.
++        * config/arm/constraints.md (Py): New constraint.
++
++	2011-04-08  Wei Guozhi  <carrot@google.com>
++
++	PR target/47855
++	* config/arm/arm-protos.h (arm_attr_length_push_multi): New prototype.
++	* config/arm/arm.c (arm_attr_length_push_multi): New function.
++	* config/arm/arm.md (*push_multi): Change the length computation to
++	call a C function.
++
++2011-09-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from FSF mainline:
++
++        2011-08-18  Jiangning Liu  <jiangning.liu@arm.com>
++
++	gcc/
++	* config/arm/arm.md (*ior_scc_scc): Enable for Thumb2 as well.
++	(*ior_scc_scc_cmp): Likewise
++	(*and_scc_scc): Likewise.
++	(*and_scc_scc_cmp): Likewise.
++	(*and_scc_scc_nodom): Likewise.
++	(*cmp_ite0, *cmp_ite1, *cmp_and, *cmp_ior): Handle Thumb2.
++
++	gcc/testsuite
++	* gcc.target/arm/thumb2-cond-cmp-1.c: New. Make sure conditional
++	compare can be generated.
++	* gcc.target/arm/thumb2-cond-cmp-2.c: Likewise.
++	* gcc.target/arm/thumb2-cond-cmp-3.c: Likewise.
++	* gcc.target/arm/thumb2-cond-cmp-4.c: Likewise.
++
++2011-09-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/testsuite/
++	* gcc.target/arm/pr50099.c: Fix testcase from previous commit.
++
++2011-09-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	LP:838994
++	gcc/
++	Backport from mainline.
++
++        2011-09-06  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++        PR target/50099
++	* config/arm/iterators.md (qhs_zextenddi_cstr): New.
++	(qhs_zextenddi_op): New.
++	* config/arm/arm.md ("zero_extend<mode>di2"): Use them.
++	* config/arm/predicates.md ("arm_extendqisi_mem_op"):
++	Distinguish between ARM and Thumb2 states.
++
++	gcc/testsuite/
++	* gcc.target/arm/pr50099.c: New test.
++
++2011-09-12  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF mainline:
++
++	2011-09-08  Andrew Stubbs  <ams@codesourcery.com>
++
++	PR tree-optimization/50318
++
++	gcc/
++	* tree-ssa-math-opts.c (convert_plusminus_to_widen): Correct
++	typo in use of mult_rhs1 and mult_rhs2.
++
++	gcc/testsuite/
++	* gcc.target/arm/pr50318-1.c: New file.
++
++2011-09-01  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/predicates.md (shift_amount_operand): Ensure shift
++	amount is positive.
++
++	gcc/testsuite/
++	* gcc.dg/pr50193-1.c: New file.
++
++2011-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	PR target/49030
++	* config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
++	* config/arm/arm.c (maybe_get_arm_condition_code): New function,
++	reusing the old code from get_arm_condition_code.  Return ARM_NV
++	for invalid comparison codes.
++	(get_arm_condition_code): Redefine in terms of
++	maybe_get_arm_condition_code.
++	* config/arm/predicates.md (arm_comparison_operator): Use
++	maybe_get_arm_condition_code.
++
++	gcc/testsuite/
++	PR target/49030
++	* gcc.dg/torture/pr49030.c: New test.
++
++2011-09-12  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF mainline:
++
++	2011-08-30  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.c (optimal_immediate_sequence_1): Make b1, b2,
++	b3 and b4 unsigned.
++
++	2011-08-30  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.c (arm_gen_constant): Set can_negate correctly
++	when code is SET.
++
++	2011-08-26  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.c (struct four_ints): New type.
++	(count_insns_for_constant): Delete function.
++	(find_best_start): Delete function.
++	(optimal_immediate_sequence): New function.
++	(optimal_immediate_sequence_1): New function.
++	(arm_gen_constant): Move constant splitting code to
++	optimal_immediate_sequence.
++	Rewrite constant negation/invertion code.
++
++	gcc/testsuite/
++	* gcc.target/arm/thumb2-replicated-constant1.c: New file.
++	* gcc.target/arm/thumb2-replicated-constant2.c: New file.
++	* gcc.target/arm/thumb2-replicated-constant3.c: New file.
++	* gcc.target/arm/thumb2-replicated-constant4.c: New file.
++
++	2011-08-26  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm-protos.h (const_ok_for_op): Add prototype.
++	* config/arm/arm.c (const_ok_for_op): Add support for addw/subw.
++	Remove prototype. Remove static function type.
++	* config/arm/arm.md (*arm_addsi3): Add addw/subw support.
++	Add arch attribute.
++	* config/arm/constraints.md (Pj, PJ): New constraints.
++
++	2011-04-20  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.c (arm_gen_constant): Move mowv support ....
++	(const_ok_for_op): ... to here.
++
++	2011-04-20  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.c (arm_gen_constant): Remove redundant can_invert.
++
++
++
++2011-09-08  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.1 (svn branches/gcc-4_6-branch 178681).
++
++2011-09-07  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from mainline:
++
++	2011-08-04  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vectorizer.h (struct _stmt_vec_info): Add new field for
++	pattern def statement, and its access macro.
++	(NUM_PATTERNS): Set to 5.
++	* tree-vect-loop.c (vect_determine_vectorization_factor): Handle
++	pattern def statement.
++	(vect_transform_loop): Likewise.
++	* tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add new
++	function vect_recog_over_widening_pattern ().
++	(vect_operation_fits_smaller_type): New function.
++	(vect_recog_over_widening_pattern, vect_mark_pattern_stmts):
++	Likewise.
++	(vect_pattern_recog_1): Move the code that marks pattern
++	statements to vect_mark_pattern_stmts (), and call it.  Update
++	documentation.
++	* tree-vect-stmts.c (vect_supportable_shift): New function.
++	(vect_analyze_stmt): Handle pattern def statement.
++	(new_stmt_vec_info): Initialize pattern def statement.
++
++	gcc/testsuite/
++	* gcc.dg/vect/vect-over-widen-1.c: New test.
++	* gcc.dg/vect/vect-over-widen-2.c: New test.
++	* gcc.dg/vect/vect-over-widen-3.c: New test.
++	* gcc.dg/vect/vect-over-widen-4.c: New test.
++
++
++	2011-08-09  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	PR tree-optimization/50014
++	* tree-vect-loop.c (vectorizable_reduction): Get def type before
++	calling vect_get_vec_def_for_stmt_copy ().
++
++	gcc/testsuite/
++	PR tree-optimization/50014
++	* gcc.dg/vect/pr50014.c: New test.
++
++
++	2011-08-11  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	PR tree-optimization/50039
++	* tree-vect-patterns.c (vect_operation_fits_smaller_type): Check
++	that DEF_STMT has a stmt_vec_info.
++
++	gcc/testsuite/
++	PR tree-optimization/50039
++	* gcc.dg/vect/vect.exp: Run no-tree-fre-* tests with -fno-tree-fre.
++	* gcc.dg/vect/no-tree-fre-pr50039.c: New test.
++
++
++	2011-09-04  Jakub Jelinek  <jakub@redhat.com>
++		    Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	PR tree-optimization/50208
++	* tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add an
++	argument.  Check that def_stmt is inside the loop.
++	(vect_recog_widen_mult_pattern): Update calls to
++	vect_handle_widen_mult_by_cons.
++	(vect_operation_fits_smaller_type): Check that def_stmt is
++	inside the loop.
++
++	gcc/testsuite/
++	PR tree-optimization/50208
++	* gcc.dg/vect/no-fre-pre-pr50208.c: New test.
++	* gcc.dg/vect/vect.exp: Run no-fre-pre-*.c tests with
++	-fno-tree-fre -fno-tree-pre.
++
++2011-09-05  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline.
++	2011-08-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
++
++	* config/arm/cortex-a9.md ("cortex_a9_mult_long"): New.
++	("cortex_a9_multiply_long"): New and use above.  Handle all
++	long multiply cases.
++	("cortex_a9_multiply"): Handle smmul and smmulr.
++	("cortex_a9_mac"): Handle smmla.
++
++2011-09-05  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	2011-08-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	PR target/48328
++	* config/arm/arm.h (CASE_VECTOR_SHORTEN_MODE): Fix distance
++	for tbh instructions.
++
++2011-08-26  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-08-26  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* df-problems.c (df_note_bb_compute): Pass uses rather than defs
++	to df_set_dead_notes_for_mw.
++
++2011-08-25  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF mainline:
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* tree-ssa-math-opts.c (is_widening_mult_rhs_p): Handle constants
++	beyond conversions.
++	(convert_mult_to_widen): Convert constant inputs to the right type.
++	(convert_plusminus_to_widen): Don't automatically reject inputs that
++	are not an SSA_NAME.
++	Convert constant inputs to the right type.
++
++	gcc/testsuite/
++	* gcc.target/arm/wmul-11.c: New file.
++	* gcc.target/arm/wmul-12.c: New file.
++	* gcc.target/arm/wmul-13.c: New file.
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs
++	to the correct type.
++
++	gcc/testsuite/
++	* gcc.target/arm/wmul-10.c: New file.
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* tree-ssa-math-opts.c (convert_mult_to_widen): Better handle
++	unsigned inputs of different modes.
++	(convert_plusminus_to_widen): Likewise.
++
++	gcc/testsuite/
++	* gcc.target/arm/wmul-9.c: New file.
++	* gcc.target/arm/wmul-bitfield-2.c: New file.
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* tree-ssa-math-opts.c (is_widening_mult_rhs_p): Add new argument
++	'type'.
++	Use 'type' from caller, not inferred from 'rhs'.
++	Don't reject non-conversion statements. Do return lhs in this case.
++	(is_widening_mult_p): Add new argument 'type'.
++	Use 'type' from caller, not inferred from 'stmt'.
++	Pass type to is_widening_mult_rhs_p.
++	(convert_mult_to_widen): Pass type to is_widening_mult_p.
++	(convert_plusminus_to_widen): Likewise.
++
++	gcc/testsuite/
++	* gcc.target/arm/wmul-8.c: New file.
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* tree-ssa-math-opts.c (is_widening_mult_p): Remove FIXME.
++	Ensure the the larger type is the first operand.
++
++	gcc/testsuite/
++	* gcc.target/arm/wmul-7.c: New file.
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* tree-ssa-math-opts.c (convert_mult_to_widen): Convert
++	unsupported unsigned multiplies to signed.
++	(convert_plusminus_to_widen): Likewise.
++
++	gcc/testsuite/
++	* gcc.target/arm/wmul-6.c: New file.
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* tree-ssa-math-opts.c (convert_plusminus_to_widen): Permit a single
++	conversion statement separating multiply-and-accumulate.
++
++	gcc/testsuite/
++	* gcc.target/arm/wmul-5.c: New file.
++	* gcc.target/arm/no-wmla-1.c: New file.
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.md (maddhidi4): Remove '*' from name.
++	* expr.c (expand_expr_real_2): Use find_widening_optab_handler.
++	* optabs.c (find_widening_optab_handler_and_mode): New function.
++	(expand_widen_pattern_expr): Use find_widening_optab_handler.
++	(expand_binop_directly): Likewise.
++	(expand_binop): Likewise.
++	* optabs.h (find_widening_optab_handler): New macro define.
++	(find_widening_optab_handler_and_mode): New prototype.
++	* tree-cfg.c (verify_gimple_assign_binary): Adjust WIDEN_MULT_EXPR
++	type precision rules.
++	(verify_gimple_assign_ternary): Likewise for WIDEN_MULT_PLUS_EXPR.
++	* tree-ssa-math-opts.c (build_and_insert_cast): New function.
++	(is_widening_mult_rhs_p): Allow widening by more than one mode.
++	Explicitly disallow mis-matched input types.
++	(convert_mult_to_widen): Use find_widening_optab_handler, and cast
++	input types to fit the new handler.
++	(convert_plusminus_to_widen): Likewise.
++
++	gcc/testsuite/
++	* gcc.target/arm/wmul-bitfield-1.c: New file.
++
++	2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* expr.c (expand_expr_real_2): Use widening_optab_handler.
++	* genopinit.c (optabs): Use set_widening_optab_handler for $N.
++	(gen_insn): $N now means $a must be wider than $b, not consecutive.
++	* optabs.c (widened_mode): New function.
++	(expand_widen_pattern_expr): Use widening_optab_handler.
++	(expand_binop_directly): Likewise.
++	(expand_binop): Likewise.
++	* optabs.h (widening_optab_handlers): New struct.
++	(optab_d): New member, 'widening'.
++	(widening_optab_handler): New function.
++	(set_widening_optab_handler): New function.
++	* tree-ssa-math-opts.c (convert_mult_to_widen): Use
++	widening_optab_handler.
++	(convert_plusminus_to_widen): Likewise.
++
++2011-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	LP:823548
++	gcc/
++	* config/arm/arm.c (arm_init_neon_builtins): Use 
++	n_operands instead of n_generator_args.
++
++2011-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	LP:823548
++	Backport from mainline
++	2011-04-18  Jie Zhang  <jie@codesourcery.com>
++	Richard Earnshaw  <rearnsha@arm.com>
++
++	* arm.c (neon_builtin_type_bits): Remove.
++	(typedef enum neon_builtin_mode): New.
++	(T_MAX): Don't define.
++	(typedef enum neon_builtin_datum): Remove bits, codes[],
++	num_vars and base_fcode.  Add mode, code and fcode.
++	(VAR1, VAR2, VAR3, VAR4, VAR5, VAR6, VAR7, VAR8, VAR9
++	VAR10): Change accordingly.
++	(neon_builtin_data[]): Change accordingly
++	(arm_init_neon_builtins): Change accordingly.
++	(neon_builtin_compare): Remove.
++	(locate_neon_builtin_icode): Remove.
++	(arm_expand_neon_builtin): Change accordingly.
++
++	* arm.h (enum arm_builtins): Move to ...
++	* arm.c (enum arm_builtins): ... here; and rearrange builtin code.
++
++	* arm.c (arm_builtin_decl): Declare.
++	(TARGET_BUILTIN_DECL): Define.
++	(enum arm_builtins): Correct ARM_BUILTIN_MAX.
++	(arm_builtin_decls[]): New.
++	(arm_init_neon_builtins): Store builtin declarations in
++	arm_builtin_decls[].
++	(arm_init_tls_builtins): Likewise.
++	(arm_init_iwmmxt_builtins): Likewise.  Refactor initialization code.
++	(arm_builtin_decl): New.
++
++2011-08-18  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-08-18  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* config/arm/arm.c (arm_rtx_costs_1): Don't modify the costs of SET.
++	(arm_size_rtx_costs): Likewise.
++
++2011-08-18  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
++
++	* config/arm/arm.c (get_label_padding): New function.
++	(create_fix_barrier, arm_reorg): Use it.
++
++2011-08-16  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-08-16  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.08 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-08-15  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* config/rs6000/rs6000.c (paired_expand_vector_init): Don't create
++	CONST_VECTORs with symbolic elements.
++	(rs6000_expand_vector_init): Likewise.
++
++2011-08-15  Michael Hope  <michael.hope@linaro.org>
++
++	Merge from FSF GCC 4.6.1 (svn branches/gcc-4_6-branch 177703).
++
++2011-08-15  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r177357
++
++	gcc/testsuite/
++	2011-08-04  Ian Bolton  <ian.bolton@arm.com>
++
++	* gcc.target/arm/vfp-1.c: no large negative offsets on Thumb2.
++
++2011-08-10  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++        2011-07-28  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	* config/arm/vfp.md ("*movdf_vfp"): Handle the VFP constraints
++	before the core constraints. Adjust attributes.
++	(*thumb2_movdf_vfp"): Likewise.
++
++2011-08-09  Revital Eres  <revital.eres@linaro.org>
++
++	gcc/
++	Backport from trunk -r176972:
++
++	* ddg.c (create_ddg_dep_from_intra_loop_link): Remove
++	the creation of anti-dep edge from a branch.
++	(add_cross_iteration_register_deps):
++	Create anti-dep edge from a branch.
++
++2011-08-09  Revital Eres  <revital.eres@linaro.org>
++
++	gcc/
++	Backport from trunk -r177235.
++	* modulo-sched.c (calculate_stage_count,
++	calculate_must_precede_follow, get_sched_window,
++	try_scheduling_node_in_cycle, remove_node_from_ps):
++	Add declaration.
++	(update_node_sched_params, set_must_precede_follow, optimize_sc):
++	New functions.
++	(reset_sched_times): Call update_node_sched_params.
++	(sms_schedule):	Call optimize_sc.
++	(get_sched_window): Change function arguments.
++	(sms_schedule_by_order): Update call to	get_sched_window.
++	Call set_must_precede_follow.
++	(calculate_stage_count): Add function argument.
++
++2011-07-31  Revital Eres  <revital.eres@linaro.org>
++
++	gcc/
++	Backport from trunk -r176970:
++
++	* modulo-sched.c: Change comment.
++	(reset_sched_times): Fix print message.
++	(print_partial_schedule): Add print info.
++
++
++2011-07-21  Richard Sandiford  <rdsandiford@googlemail.com>
++
++	gcc/
++	Backport from mainline:
++
++	2011-07-21  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* regcprop.c (maybe_mode_change): Check HARD_REGNO_MODE_OK.
++
++2011-07-21  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	PR middle-end/49736
++	* expr.c (all_zeros_p): Undo bogus part of last change.
++
++2011-07-21  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	Backport from mainline:
++	gcc/cp/
++	2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
++	rather than a pointer to it.  Return true if the whole of the value
++	was initialized by the generated statements.  Use
++	complete_ctor_at_level_p instead of count_type_elements.
++
++	gcc/
++	2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* tree.h (categorize_ctor_elements): Remove comment.  Fix long line.
++	(count_type_elements): Delete.
++	(complete_ctor_at_level_p): Declare.
++	* expr.c (flexible_array_member_p): New function, split out from...
++	(count_type_elements): ...here.  Make static.  Replace allow_flexarr
++	parameter with for_ctor_p.  When for_ctor_p is true, return the
++	number of elements that should appear in the top-level constructor,
++	otherwise return an estimate of the number of scalars.
++	(categorize_ctor_elements): Replace p_must_clear with p_complete.
++	(categorize_ctor_elements_1): Likewise.  Use complete_ctor_at_level_p.
++	(complete_ctor_at_level_p): New function, borrowing union logic
++	from old categorize_ctor_elements_1.
++	(mostly_zeros_p): Return true if the constructor is not complete.
++	(all_zeros_p): Update call to categorize_ctor_elements.
++	* gimplify.c (gimplify_init_constructor): Update call to
++	categorize_ctor_elements.  Don't call count_type_elements.
++	Unconditionally prevent clearing for variable-sized types,
++	otherwise rely on categorize_ctor_elements to detect
++	incomplete initializers.
++
++	gcc/testsuite/
++	2011-07-13  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	* gcc.target/arm/pr48183.c: New test.
++
++2011-07-18  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-07-18  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.07-0 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-07-15  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline r174540
++	LP: #807573
++
++	gcc/
++	2011-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
++
++	PR rtl-optimization/48830
++	PR rtl-optimization/48808
++	PR rtl-optimization/48792
++	* reload.c (push_reload): Check contains_reg_of_mode.
++	* reload1.c (strip_paradoxical_subreg): New function.
++	(gen_reload_chain_without_interm_reg_p): Use it to handle
++	paradoxical subregs.
++	(emit_output_reload_insns, gen_reload): Likewise.
++
++	gcc/testsuite/
++	2011-06-01  Eric Botcazou  <ebotcazou@adacore.com>
++		    Hans-Peter Nilsson  <hp@axis.com>
++
++	PR rtl-optimization/48830
++	* gcc.target/sparc/ultrasp12.c: New test.
++
++2011-07-15  Michael Hope  <michael.hope@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-06-29  Nathan Sidwell  <nathan@codesourcery.com>
++
++	* config/arm/unwind-arm.c (enum __cxa_type_match_result): New.
++	(cxa_type_match): Correct declaration.
++	(__gnu_unwind_pr_common): Reconstruct
++	additional indirection when __cxa_type_match returns
++	succeeded_with_ptr_to_base.
++
++	libstdc++-v3/
++	Backport from mainline:
++
++	2011-06-29  Nathan Sidwell  <nathan@codesourcery.com>
++
++	* libsupc++/eh_arm.c (__cxa_type_match): Construct address of
++	thrown object here.  Return succeded_with_ptr_to_base for all
++	pointer cases.
++
++2011-07-15  Michael Hope  <michael.hope@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-03-22  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* combine.c (simplify_set): Try harder to find the best CC mode when
++	simplifying a nested COMPARE on the RHS.
++
++2011-07-15  Michael Hope  <michael.hope@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-04-05  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* ifcvt.c (cond_exec_process_insns): Disallow converting a block
++	that contains the prologue.
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-04-01  Bernd Schmidt  <bernds@codesourcery.com>
++
++	* gcc.c-torture/compile/20110401-1.c: New test.
++
++2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	Backport from mainline:
++	gcc/
++	2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* reload1.c (choose_reload_regs): Use mode sizes to check whether
++	an old reload register completely defines the required value.
++
++	gcc/testsuite/
++	2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* gcc.target/arm/neon-modes-3.c: New test.
++
++2011-07-11  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	2011-06-22  Dmitry Plotnikov  <dplotnikov@ispras.ru>
++	Dmitry Melnik  <dm@ispras.ru>
++
++	* config/arm/arm.c (neon_immediate_valid_for_shift): New function.
++	(neon_output_shift_immediate): Ditto.
++	* config/arm/arm-protos.h (neon_immediate_valid_for_shift): New
++	prototype.
++	(neon_output_shift_immediate): Ditto.
++	* config/arm/neon.md (vashl<mode>3): Modified constraint.
++	(vashr<mode>3_imm): New insn pattern.
++	(vlshr<mode>3_imm): Ditto.
++	(vashr<mode>3): Modified constraint.
++	(vlshr<mode>3): Ditto.
++	* config/arm/predicates.md (imm_for_neon_lshift_operand): New
++	predicate.
++	(imm_for_neon_rshift_operand): Ditto.
++	(imm_lshift_or_reg_neon): Ditto.
++	(imm_rshift_or_reg_neon): Ditto.
++
++	* optabs.c (init_optabs): Init optab codes for vashl, vashr, vlshr.
++
++	gcc/testsuite
++	2011-06-22  Dmitry Plotnikov  <dplotnikov@ispras.ru>
++	Dmitry Melnik  <dm@ispras.ru>
++
++	* gcc.target/arm/neon-vshr-imm-1.c: New testcase.
++	* gcc.target/arm/neon-vshl-imm-1.c: New testcase.
++	* gcc.target/arm/neon-vlshr-imm-1.c: New testcase.
++
++2011-07-11  Revital Eres  <revital.eres@linaro.org>
++
++	Backport from mainline -r175091
++	gcc/
++	* modulo-sched.c (struct ps_insn): Remove row_rest_count
++	field.
++	(struct partial_schedule): Add rows_length field.
++	(verify_partial_schedule): Check rows_length.
++	(ps_insert_empty_row): Handle rows_length.
++	(create_partial_schedule): Likewise.
++	(free_partial_schedule): Likewise.
++	(reset_partial_schedule): Likewise.
++	(create_ps_insn): Remove rest_count argument.
++	(remove_node_from_ps): Update rows_length.
++	(add_node_to_ps): Update rows_length and call create_ps_insn without
++	passing row_rest_count.
++	(rotate_partial_schedule): Update rows_length.
++
++2011-07-11  Revital Eres  <revital.eres@linaro.org>
++
++	Backport from mainline -r175090.
++	gcc/
++	* ddg.c (add_intra_loop_mem_dep): New function.
++	(build_intra_loop_deps): Call it.
++	gcc/testsuite
++	* gcc.dg/sms-9.c: New file.
++
++2011-07-11  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from FSF:
++	2011-06-16  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vectorizer.h (vect_recog_func_ptr): Change the first
++	argument to be a VEC of statements.
++	* tree-vect-loop.c (vect_determine_vectorization_factor): Remove the
++	assert that pattern statements have to have their vector type set.
++	* tree-vect-patterns.c (vect_recog_widen_sum_pattern):
++	Change the first argument to be a VEC of statements.  Update
++	documentation.
++	(vect_recog_dot_prod_pattern, vect_recog_pow_pattern): Likewise.
++	(vect_handle_widen_mult_by_const): New function.
++	(vect_recog_widen_mult_pattern):  Change the first argument to be a
++	VEC of statements.  Update documentation.  Check that the constant is
++	INTEGER_CST.  Support multiplication by a constant that fits an
++	intermediate type - call vect_handle_widen_mult_by_const.
++	(vect_pattern_recog_1): Update vect_recog_func_ptr and its
++	call.  Handle additional pattern statements if necessary.
++
++	gcc/testsuite/
++	* gcc.dg/vect/vect-widen-mult-half-u8.c: New test.
++
++	and
++	2011-06-30  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vect-loop.c (vect_determine_vectorization_factor): Handle
++	both pattern and original statements if necessary.
++	(vect_transform_loop): Likewise.
++	* tree-vect-patterns.c (vect_pattern_recog): Update documentation.
++	* tree-vect-stmts.c (vect_mark_relevant): Add new argument.
++	Mark the pattern statement only if the original statement doesn't
++	have its own uses.
++	(process_use): Call vect_mark_relevant with additional parameter.
++	(vect_mark_stmts_to_be_vectorized): Likewise.
++	(vect_get_vec_def_for_operand): Use vectorized pattern statement.
++	(vect_analyze_stmt): Handle both pattern and original statements
++	if necessary.
++	(vect_transform_stmt): Don't store vectorized pattern statement
++	in the original statement.
++	(vect_is_simple_use_1): Use related pattern statement only if the
++	original statement is irrelevant.
++	* tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
++
++	gcc/testsuite/
++	* gcc.dg/vect/slp-widen-mult-half.c: New test.
++	* gcc.dg/vect/vect-widen-mult-half.c: New test.
++
++2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* builtins.c (get_object_alignment): Fix comment.
++	* fold-const.c (get_pointer_modulus_and_residue): Remove
++	allow_func_align.  Use get_object_alignment.
++	(fold_binary_loc): Update caller.
++
++2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-06-29  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	PR tree-optimization/49545
++	* builtins.c (get_object_alignment_1): Update function comment.
++	Do not use DECL_ALIGN for functions, but test
++	TARGET_PTRMEMFUNC_VBIT_LOCATION instead.
++	* fold-const.c (get_pointer_modulus_and_residue): Don't check
++	for functions here.
++	* tree-ssa-ccp.c (get_value_from_alignment): Likewise.
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-06-29  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* gcc.dg/torture/pr49169.c: Restrict to ARM and MIPS targets.
++
++2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-07-27  Richard Guenther  <rguenther@suse.de>
++
++	PR tree-optimization/49169
++	* fold-const.c (get_pointer_modulus_and_residue): Don't rely on
++	the alignment of function decls.
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-07-27  Michael Hope  <michael.hope@linaro.org>
++		    Richard Sandiford  <richard.sandiford@linaro.org>
++
++	PR tree-optimization/49169
++	* gcc.dg/torture/pr49169.c: New test.
++
++2011-07-01  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6.1 (svn branches/gcc-4_6-branch 175677).
++
++2011-07-03  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from FSF:
++	2011-06-12  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vect-data-refs.c (vect_peeling_hash_get_most_frequent):
++	Take number of iterations to peel into account for equally frequent
++	misalignment values.
++
++2011-07-01  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline.
++	LP 744754
++        2011-04-17  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	* config/arm/arm.c (neon_struct_mem_operand):
++	Support POST_INC/PRE_DEC memory operands.
++
++2011-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline.
++	LP 791327
++	gcc/
++        2011-06-09  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	PR target/49335
++	* config/arm/predicates.md (add_operator): New.
++	* config/arm/arm.md ("*arith_shiftsi"): Fix for SP reg usage
++	in Thumb2.
++
++2011-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline.
++	gcc/
++	2011-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	PR target/49385
++	* config/arm/thumb2.md (*thumb2_movhi_insn): Make sure atleast
++	one of the operands is a register.
++
++2011-06-28  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from FSF:
++
++	2011-06-07  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vectorizer.h (vect_recog_func_ptr): Make last argument to be
++	a pointer.
++	* tree-vect-patterns.c (vect_recog_widen_sum_pattern,
++	vect_recog_widen_mult_pattern, vect_recog_dot_prod_pattern,
++	vect_recog_pow_pattern): Likewise.
++	(vect_pattern_recog_1): Remove declaration.
++	(widened_name_p): Remove declaration.  Add new argument to specify
++	whether to check that both types are either signed or unsigned.
++	(vect_recog_widen_mult_pattern): Update documentation.  Handle
++	unsigned patterns and multiplication by constants.
++	(vect_pattern_recog_1): Update vect_recog_func references.  Use
++	statement information from the statement returned from pattern
++	detection functions.
++	(vect_pattern_recog): Update vect_recog_func reference.
++	* tree-vect-stmts.c (vectorizable_type_promotion): For widening
++	multiplication by a constant use the type of the other operand.
++
++	gcc/testsuite
++	* lib/target-supports.exp
++	(check_effective_target_vect_widen_mult_qi_to_hi):
++	Add NEON as supporting target.
++	(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
++	(check_effective_target_vect_widen_mult_qi_to_hi_pattern): New.
++	(check_effective_target_vect_widen_mult_hi_to_si_pattern): New.
++	* gcc.dg/vect/vect-widen-mult-u8.c: Expect to be vectorized
++	using widening multiplication on targets that support it.
++	* gcc.dg/vect/vect-widen-mult-u16.c: Likewise.
++	* gcc.dg/vect/vect-widen-mult-const-s16.c: New test.
++	* gcc.dg/vect/vect-widen-mult-const-u16.c: New test.
++
++	and
++
++	2011-06-15  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-vect-loop-manip.c (remove_dead_stmts_from_loop): Remove.
++	(slpeel_tree_peel_loop_to_edge): Don't call
++	remove_dead_stmts_from_loop.
++	* tree-vect-loop.c (vect_determine_vectorization_factor): Don't
++	remove irrelevant pattern statements.  For irrelevant statements
++	check if it is the last statement of a detected pattern, use
++	corresponding pattern statement instead.
++	(destroy_loop_vec_info): No need to remove pattern statements,
++	only free stmt_vec_info.
++	(vect_transform_loop): For irrelevant statements check if it is
++	the last statement of a detected pattern, use corresponding
++	pattern statement instead.
++	* tree-vect-patterns.c (vect_pattern_recog_1): Don't insert
++	pattern statements.  Set basic block for the new statement.
++	(vect_pattern_recog): Update documentation.
++	* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Scan
++	operands of pattern statements.
++	(vectorizable_call): Fix printing.  In case of a pattern statement
++	use the lhs of the original statement when creating a dummy
++	statement to replace the original call.
++	(vect_analyze_stmt): For irrelevant statements check if it is
++	the last statement of a detected pattern, use corresponding
++	pattern statement instead.
++	* tree-vect-slp.c (vect_schedule_slp_instance): For pattern
++	statements use gsi of the original statement.
++
++	and
++	2011-06-21  Ira Rosen  <ira.rosen@linaro.org>
++
++	PR tree-optimization/49478
++	gcc/
++
++	* tree-vect-loop.c (vectorizable_reduction): Handle DOT_PROD_EXPR
++	with constant operand.
++
++2011-06-28  Michael Hope  <michael.hope@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	Chung-Lin Tang  <cltang@codesourcery.com>
++	Richard Earnshaw  <rearnsha@arm.com>
++
++	PR target/48250
++	* config/arm/arm.c (arm_legitimize_reload_address): Update cases
++	to use sign-magnitude offsets. Reject unsupported unaligned
++	cases. Add detailed description in comments.
++	* config/arm/arm.md (reload_outdf): Disable for ARM mode; change
++	condition from TARGET_32BIT to TARGET_ARM.
++
++	Chung-Lin Tang  <cltang@codesourcery.com>
++
++	* config/arm/arm.c (arm_legitimize_reload_address): For NEON
++	quad-word modes, reduce to 9-bit index range when above 1016
++	limit.
++
++2011-06-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	Backport from mainline.
++	2011-06-03  Julian Brown  <julian@codesourcery.com>
++
++	* config/arm/arm-cores.def (strongarm, strongarm110, strongarm1100)
++	(strongarm1110): Use strongarm tuning.
++	* config/arm/arm-protos.h (tune_params): Add max_insns_skipped
++	field.
++	* config/arm/arm.c (arm_strongarm_tune): New.
++	(arm_slowmul_tune, arm_fastmul_tune, arm_xscale_tune, arm_9e_tune)
++	(arm_v6t2_tune, arm_cortex_tune, arm_cortex_a5_tune)
++	(arm_cortex_a9_tune, arm_fa726te_tune): Add max_insns_skipped field
++	setting, using previous defaults or 1 for Cortex-A5.
++	(arm_option_override): Set max_insns_skipped from current tuning.
++
++2011-06-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	Backport from mainline.
++	2011-06-02  Julian Brown  <julian@codesourcery.com>
++
++	* config/arm/arm-cores.def (cortex-a5): Use cortex_a5 tuning.
++	* config/arm/arm.c (arm_cortex_a5_branch_cost): New.
++	(arm_cortex_a5_tune): New.
++
++	2011-06-02  Julian Brown  <julian@codesourcery.com>
++
++	* config/arm/arm-protos.h (tune_params): Add branch_cost hook.
++	* config/arm/arm.c (arm_default_branch_cost): New.
++	(arm_slowmul_tune, arm_fastmul_tune, arm_xscale_tune, arm_9e_tune)
++	(arm_v6t2_tune, arm_cortex_tune, arm_cortex_a9_tune)
++	(arm_fa726_tune): Set branch_cost field using
++	arm_default_branch_cost.
++	* config/arm/arm.h (BRANCH_COST): Use branch_cost hook from
++	current_tune structure.
++	* dojump.c (tm_p.h): Include file.
++
++        2011-06-02  Julian Brown  <julian@codesourcery.com>
++
++	* config/arm/arm-cores.def (arm1156t2-s, arm1156t2f-s): Use v6t2
++	tuning.
++	(cortex-a5, cortex-a8, cortex-a15, cortex-r4, cortex-r4f, cortex-m4)
++	(cortex-m3, cortex-m1, cortex-m0): Use cortex tuning.
++	* config/arm/arm-protos.h (tune_params): Add prefer_constant_pool
++	field.
++	* config/arm/arm.c (arm_slowmul_tune, arm_fastmul_tune)
++	(arm_xscale_tune, arm_9e_tune, arm_cortex_a9_tune)
++	(arm_fa726te_tune): Add prefer_constant_pool setting.
++	(arm_v6t2_tune, arm_cortex_tune): New.
++	* config/arm/arm.h (TARGET_USE_MOVT): Make dependent on
++	prefer_constant_pool setting.
++
++2011-06-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	Backport from mainline
++	2011-06-01  Paul Brook  <paul@cpodesourcery.com>
++	* config/arm/arm-cores.def: Add cortex-r5.  Add DIV flags to
++	Cortex-A15.
++	* config/arm/arm-tune.md: Regenerate.
++	* config/arm/arm.c (FL_DIV): Rename...
++	(FL_THUMB_DIV): ... to this.
++	(FL_ARM_DIV): Define.
++	(FL_FOR_ARCH7R, FL_FOR_ARCH7M): Use FL_THUMB_DIV.
++	(arm_arch_hwdiv): Remove.
++	(arm_arch_thumb_hwdiv, arm_arch_arm_hwdiv): New variables.
++	(arm_issue_rate): Add cortexr5.
++	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Set
++	__ARM_ARCH_EXT_IDIV__.
++	(TARGET_IDIV): Define.
++	(arm_arch_hwdiv): Remove.
++	(arm_arch_arm_hwdiv, arm_arch_thumb_hwdiv): New prototypes.
++	* config/arm/arm.md (tune_cortexr4): Add cortexr5.
++	(divsi3, udivsi3): New patterns.
++	* config/arm/thumb2.md (divsi3, udivsi3): Remove.
++	* doc/invoke.texi: Document ARM -mcpu=cortex-r5
++
++2011-06-14  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-06-14  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.06-0 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-06-13  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline:
++	gcc/
++	2011-06-13  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	PR target/48454
++	* config/arm/neon.md (vec_pack_trunc<mode>): Set the lengths
++	correctly for the case with Quad vectors.
++
++2011-06-10  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from mainline:
++	gcc/
++        2011-06-02  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++	* config/arm/neon.md (orndi3_neon): Actually split it.
++
++
++2011-06-10  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++        Backport from mainline.
++	gcc/
++        2011-05-26  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	* config/arm/neon.md ("orn<mode>3_neon"): Canonicalize not.
++	("orndi3_neon"): Likewise.
++	("bic<mode>3_neon"): Likewise.
++
++	gcc/testsuite
++	2011-05-26  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	* gcc.target/arm/neon-vorn-vbic.c: New test.
++
++2011-06-07  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2011-06-07  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* config/arm/arm.md (*maddhidi4tb, *maddhidi4tt): New define_insns.
++	(*maddhisi4tb, *maddhisi4tt): New define_insns.
++
++	gcc/testsuite/
++	* gcc.target/arm/smlatb-1.c: New file.
++	* gcc.target/arm/smlatt-1.c: New file.
++	* gcc.target/arm/smlaltb-1.c: New file.
++	* gcc.target/arm/smlaltt-1.c: New file.
++
++2011-06-07  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2011-06-07  Bernd Schmidt  <bernds@codesourcery.com>
++		    Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* simplify-rtx.c (simplify_unary_operation_1): Canonicalize widening
++	multiplies.
++	* doc/md.texi (Canonicalization of Instructions): Document widening
++	multiply canonicalization.
++
++	gcc/testsuite/
++	* gcc.target/arm/mla-2.c: New test.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* gimple.c (gimple_build_call_internal_1): Add missing call to
++	gimple_call_reset_alias_info.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* gcc.dg/vect/vect-strided-u16-i3.c: New test.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* lib/target-supports.exp (check_effective_target_vect_strided):
++	Replace with...
++	(check_effective_target_vect_strided2)
++	(check_effective_target_vect_strided3)
++	(check_effective_target_vect_strided4)
++	(check_effective_target_vect_strided8): ...these new functions.
++
++	* gcc.dg/vect/O3-pr39675-2.c: Update accordingly.
++	* gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c: Likewise.
++	* gcc.dg/vect/fast-math-slp-27.c: Likewise.
++	* gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c: Likewise.
++	* gcc.dg/vect/pr37539.c: Likewise.
++	* gcc.dg/vect/slp-11a.c: Likewise.
++	* gcc.dg/vect/slp-11b.c: Likewise.
++	* gcc.dg/vect/slp-11c.c: Likewise.
++	* gcc.dg/vect/slp-12a.c: Likewise.
++	* gcc.dg/vect/slp-12b.c: Likewise.
++	* gcc.dg/vect/slp-18.c: Likewise.
++	* gcc.dg/vect/slp-19a.c: Likewise.
++	* gcc.dg/vect/slp-19b.c: Likewise.
++	* gcc.dg/vect/slp-21.c: Likewise.
++	* gcc.dg/vect/slp-23.c: Likewise.
++	* gcc.dg/vect/vect-cselim-1.c: Likewise.
++
++	* gcc.dg/vect/fast-math-vect-complex-3.c: Use vect_stridedN
++	instead of vect_interleave && vect_extract_even_odd.
++	* gcc.dg/vect/no-scevccp-outer-10a.c: Likewise.
++	* gcc.dg/vect/no-scevccp-outer-10b.c: Likewise.
++	* gcc.dg/vect/no-scevccp-outer-20.c: Likewise.
++	* gcc.dg/vect/vect-1.c: Likewise.
++	* gcc.dg/vect/vect-10.c: Likewise.
++	* gcc.dg/vect/vect-98.c: Likewise.
++	* gcc.dg/vect/vect-107.c: Likewise.
++	* gcc.dg/vect/vect-strided-a-mult.c: Likewise.
++	* gcc.dg/vect/vect-strided-a-u16-i2.c: Likewise.
++	* gcc.dg/vect/vect-strided-a-u16-i4.c: Likewise.
++	* gcc.dg/vect/vect-strided-a-u16-mult.c: Likewise.
++	* gcc.dg/vect/vect-strided-a-u32-mult.c: Likewise.
++	* gcc.dg/vect/vect-strided-a-u8-i2-gap.c: Likewise.
++	* gcc.dg/vect/vect-strided-a-u8-i8-gap2.c: Likewise.
++	* gcc.dg/vect/vect-strided-a-u8-i8-gap7.c: Likewise.
++	* gcc.dg/vect/vect-strided-float.c: Likewise.
++	* gcc.dg/vect/vect-strided-mult-char-ls.c: Likewise.
++	* gcc.dg/vect/vect-strided-mult.c: Likewise.
++	* gcc.dg/vect/vect-strided-same-dr.c: Likewise.
++	* gcc.dg/vect/vect-strided-u16-i2.c: Likewise.
++	* gcc.dg/vect/vect-strided-u16-i4.c: Likewise.
++	* gcc.dg/vect/vect-strided-u32-i4.c: Likewise.
++	* gcc.dg/vect/vect-strided-u32-i8.c: Likewise.
++	* gcc.dg/vect/vect-strided-u32-mult.c: Likewise.
++	* gcc.dg/vect/vect-strided-u8-i2-gap.c: Likewise.
++	* gcc.dg/vect/vect-strided-u8-i2.c: Likewise.
++	* gcc.dg/vect/vect-strided-u8-i8-gap2.c: Likewise.
++	* gcc.dg/vect/vect-strided-u8-i8-gap4.c: Likewise.
++	* gcc.dg/vect/vect-strided-u8-i8-gap7.c: Likewise.
++	* gcc.dg/vect/vect-strided-u8-i8.c: Likewise.
++	* gcc.dg/vect/vect-vfa-03.c: Likewise.
++
++	* gcc.dg/vect/no-scevccp-outer-18.c: Add vect_stridedN to the
++	target condition.
++	* gcc.dg/vect/pr30843.c: Likewise.
++	* gcc.dg/vect/pr33866.c: Likewise.
++	* gcc.dg/vect/slp-reduc-6.c: Likewise.
++	* gcc.dg/vect/vect-strided-store-a-u8-i2.c: Likewise.
++	* gcc.dg/vect/vect-strided-store-u16-i4.c: Likewise.
++	* gcc.dg/vect/vect-strided-store-u32-i2.c: Likewise.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* gcc.dg/vect/slp-11.c: Split into...
++	* gcc.dg/vect/slp-11a.c, gcc.dg/vect/slp-11b.c,
++	gcc.dg/vect/slp-11c.c: ...these tests.
++	* gcc.dg/vect/slp-12a.c: Split 4-stride loop into...
++	* gcc.dg/vect/slp-12c.c: ...this new test.
++	* gcc.dg/vect/slp-19.c: Split into...
++	* gcc.dg/vect/slp-19a.c, gcc.dg/vect/slp-19b.c,
++	gcc.dg/vect/slp-19c.c: ...these new tests.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* lib/target-supports.exp
++	(check_effective_target_vect_extract_even_odd_wide): Delete.
++	(check_effective_target_vect_strided_wide): Likewise.
++	* gcc.dg/vect/O3-pr39675-2.c: Use the non-wide versions instead.
++	* gcc.dg/vect/fast-math-pr35982.c: Likewise.
++	* gcc.dg/vect/fast-math-vect-complex-3.c: Likewise.
++	* gcc.dg/vect/pr37539.c: Likewise.
++	* gcc.dg/vect/slp-11.c: Likewise.
++	* gcc.dg/vect/slp-12a.c: Likewise.
++	* gcc.dg/vect/slp-12b.c: Likewise.
++	* gcc.dg/vect/slp-19.c: Likewise.
++	* gcc.dg/vect/slp-23.c: Likewise.
++	* gcc.dg/vect/vect-1.c: Likewise.
++	* gcc.dg/vect/vect-98.c: Likewise.
++	* gcc.dg/vect/vect-107.c: Likewise.
++	* gcc.dg/vect/vect-strided-float.c: Likewise.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-04-21  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* gcc.dg/vect/vect.exp: Run the main tests twice, one with -flto
++	and once without.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainlie:
++
++	2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* config/arm/neon.md (vec_load_lanes<mode><mode>): New expanders,
++	(vec_store_lanes<mode><mode>): Likewise.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* doc/md.texi (vec_load_lanes, vec_store_lanes): Document.
++	* optabs.h (COI_vec_load_lanes, COI_vec_store_lanes): New
++	convert_optab_index values.
++	(vec_load_lanes_optab, vec_store_lanes_optab): New convert optabs.
++	* genopinit.c (optabs): Initialize the new optabs.
++	* internal-fn.def (LOAD_LANES, STORE_LANES): New internal functions.
++	* internal-fn.c (get_multi_vector_move, expand_LOAD_LANES)
++	(expand_STORE_LANES): New functions.
++	* tree.h (build_array_type_nelts): Declare.
++	* tree.c (build_array_type_nelts): New function.
++	* tree-vectorizer.h (vect_model_store_cost): Add a bool argument.
++	(vect_model_load_cost): Likewise.
++	(vect_store_lanes_supported, vect_load_lanes_supported)
++	(vect_record_strided_load_vectors): Declare.
++	* tree-vect-data-refs.c (vect_lanes_optab_supported_p)
++	(vect_store_lanes_supported, vect_load_lanes_supported): New functions.
++	(vect_transform_strided_load): Split out statement recording into...
++	(vect_record_strided_load_vectors): ...this new function.
++	* tree-vect-stmts.c (create_vector_array, read_vector_array)
++	(write_vector_array, create_array_ref): New functions.
++	(vect_model_store_cost): Add store_lanes_p argument.
++	(vect_model_load_cost): Add load_lanes_p argument.
++	(vectorizable_store): Try to use store-lanes functions for
++	interleaved stores.
++	(vectorizable_load): Likewise load-lanes and loads.
++	* tree-vect-slp.c (vect_get_and_check_slp_defs): Update call
++	to vect_model_store_cost.
++	(vect_build_slp_tree): Likewise vect_model_load_cost.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-04-20  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* tree-vect-stmts.c (vectorizable_store): Only chain one related
++	statement per copy.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* tree-inline.c (estimate_num_insns): Likewise.
++
++	Backport from mainline:
++
++	2011-04-20  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* Makefile.in (INTERNAL_FN_DEF, INTERNAL_FN_H): Define.
++	(GIMPLE_H): Include $(INTERNAL_FN_H).
++	(OBJS-common): Add internal-fn.o.
++	(internal-fn.o): New rule.
++	* internal-fn.def: New file.
++	* internal-fn.h: Likewise.
++	* internal-fn.c: Likewise.
++	* gimple.h: Include internal-fn.h.
++	(GF_CALL_INTERNAL): New gf_mask.
++	(gimple_statement_call): Put fntype into a union with a new
++	internal_fn field.
++	(gimple_build_call_internal): Declare.
++	(gimple_build_call_internal_vec): Likewise.
++	(gimple_call_same_target_p): Likewise.
++	(gimple_call_internal_p): New function.
++	(gimple_call_internal_fn): Likewise.
++	(gimple_call_set_fn): Assert that the function is not internal.
++	(gimple_call_set_fndecl): Likewise.
++	(gimple_call_set_internal_fn): New function.
++	(gimple_call_addr_fndecl): Handle null functions.
++	(gimple_call_return_type): Likewise.
++	[---- Plus backport adjustments:
++	(GF_CALL_INTERNAL_FN_SHIFT): New macro.
++	(GF_CALL_INTERNAL_FN): New gf_mask.
++	----]
++	* gimple.c (gimple_build_call_internal_1): New function.
++	(gimple_build_call_internal): Likewise.
++	(gimple_build_call_internal_vec): Likewise.
++	(gimple_call_same_target_p): Likewise.
++	(gimple_call_flags): Handle calls to internal functions.
++	(gimple_call_fnspec): New function.
++	(gimple_call_arg_flags, gimple_call_return_flags): Use it.
++	(gimple_has_side_effects): Handle null functions.
++	(gimple_rhs_has_side_effects): Likewise.
++	(gimple_call_copy_skip_args): Handle calls to internal functions.
++	* cfgexpand.c (expand_call_stmt): Likewise.
++	* expr.c (expand_expr_real_1): Assert that the call isn't internal.
++	* gimple-low.c (gimple_check_call_args): Handle calls to internal
++	functions.
++	* gimple-pretty-print.c (dump_gimple_call): Likewise.
++	* ipa-prop.c (ipa_analyze_call_uses): Handle null functions.
++	* tree-cfg.c (verify_gimple_call): Handle calls to internal functions.
++	(do_warn_unused_result): Likewise.
++	[---- Plus backport adjustments:
++	(verify_stmt): Likewise.
++	----]
++	* tree-eh.c (same_handler_p): Use gimple_call_same_target_p.
++	* tree-ssa-ccp.c (ccp_fold_stmt): Handle calls to internal functions.
++	[---- Plus backport adjustments:
++	(fold_gimple_call): Likewise.
++	----]
++	* tree-ssa-dom.c (hashable_expr): Use the gimple statement to record
++	the target of a call.
++	(initialize_hash_element): Update accordingly.
++	(hashable_expr_equal_p): Use gimple_call_same_target_p.
++	(iterative_hash_hashable_expr): Handle calls to internal functions.
++	(print_expr_hash_elt): Likewise.
++	* tree-ssa-pre.c (can_value_number_call): Likewise.
++	(eliminate): Handle null functions.
++	* tree-ssa-sccvn.c (visit_use): Handle calls to internal functions.
++	* tree-ssa-structalias.c (find_func_aliases): Likewise.
++	* value-prof.c (gimple_ic_transform): Likewise.
++	(gimple_indirect_call_to_profile): Likewise.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* tree-vectorizer.h (vect_strided_store_supported): Add a
++	HOST_WIDE_INT argument.
++	(vect_strided_load_supported): Likewise.
++	(vect_permute_store_chain): Return void.
++	(vect_transform_strided_load): Likewise.
++	(vect_permute_load_chain): Delete.
++	* tree-vect-data-refs.c (vect_strided_store_supported): Take a
++	count argument.  Check that the count is a power of two.
++	(vect_strided_load_supported): Likewise.
++	(vect_permute_store_chain): Return void.  Update after above changes.
++	Assert that the access is supported.
++	(vect_permute_load_chain): Likewise.
++	(vect_transform_strided_load): Return void.
++	* tree-vect-stmts.c (vectorizable_store): Update calls after
++	above interface changes.
++	(vectorizable_load): Likewise.
++	(vect_analyze_stmt): Don't check for strided powers of two here.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* tree-vectorizer.h (vect_create_data_ref_ptr): Add an extra
++	type parameter.
++	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Add an aggr_type
++	parameter.  Generalise code to handle arrays as well as vectors.
++	(vect_setup_realignment): Update accordingly.
++	* tree-vect-stmts.c (vectorizable_store): Likewise.
++	(vectorizable_load): Likewise.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* tree-vect-stmts.c (vectorizable_load): Allocate and free dr_chain
++	within the per-copy loop.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* tree-vect-stmts.c (vectorizable_load): Print the number of copies
++	in the dump file.
++
++2001-06-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-03-25  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS
++	case to VFPv1.
++
++2011-05-26  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6 (svn branches/gcc-4_6-branch 174261).
++
++2011-06-02  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	Backport from mainline:
++
++	2011-03-21  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	gcc/
++	* simplify-rtx.c (simplify_binary_operation_1): Handle
++	(xor (and A B) C) case when B and C are both constants.
++
++	gcc/testsuite/
++	* gcc.target/arm/xor-and.c: New.
++
++	2011-03-18  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	gcc/
++	* combine.c (try_combine): Do simplification only call of
++	subst() on i2 even when i1 is present. Update comments.
++
++	gcc/testsuite/
++	* gcc.target/arm/unsigned-extend-1.c: New.
++
++2011-05-16  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-05-16  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.05-0 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-05-13  Revital Eres  <revital.eres@linaro.org>
++
++	gcc/
++	* ddg.c (free_ddg_all_sccs): Free sccs field in struct ddg_all_sccs.
++	* modulo-sched.c (sms_schedule): Avoid unfreed memory when SMS fails.
++
++2011-05-13  Revital Eres  <revital.eres@linaro.org>
++
++	gcc/
++	* loop-doloop.c (doloop_condition_get): Support new form of
++	doloop pattern and use prev_nondebug_insn instead of PREV_INSN.
++	* config/arm/thumb2.md (*thumb2_addsi3_compare0): Remove "*".
++	(doloop_end): New.
++	* config/arm/arm.md (*addsi3_compare0): Remove "*".
++	* params.def (sms-min-sc): New param flag.
++	* doc/invoke.texi (sms-min-sc): Document it.
++	* ddg.c (create_ddg_dep_from_intra_loop_link): If a true dep edge
++	enters the branch create an anti edge in the opposite direction
++	to prevent the creation of reg-moves.
++	* modulo-sched.c: Adjust comment to reflect the fact we are
++	scheduling closing branch.
++	(PS_STAGE_COUNT): Rename to CALC_STAGE_COUNT and redefine.
++	(stage_count): New field in struct partial_schedule.
++	(calculate_stage_count): New function.
++	(normalize_sched_times): Rename to reset_sched_times and handle
++	incrementing the sched time of the nodes by a constant value
++	passed as parameter.
++	(duplicate_insns_of_cycles): Skip closing branch.
++	(sms_schedule_by_order): Schedule closing branch.
++	(ps_insn_find_column): Handle closing branch.
++	(sms_schedule): Call reset_sched_times and adjust the code to
++	support scheduling of the closing branch. Use sms-min-sc.
++	Support new form of doloop pattern.
++	(ps_insert_empty_row): Update calls to normalize_sched_times
++	and rotate_partial_schedule functions.
++
++2011-05-12  Michael Hope  <michael.hope@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-05-05  Michael Hope  <michael.hope@linaro.org>
++
++	PR pch/45979
++	* config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for
++	__ARM_EABI__ hosts.
++
++2011-05-06  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6 (svn branches/gcc-4_6-branch 173480).
++
++2011-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	From Sergey Grechanik  <mouseentity@ispras.ru>, approved for mainline
++
++	* config/arm/arm.c (coproc_secondary_reload_class): Return NO_REGS
++	for constant vectors.
++
++2011-04-26  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2011-04-05  Tom de Vries  <tom@codesourcery.com>
++
++	PR target/43920
++	gcc/
++	* config/arm/arm.h (BRANCH_COST): Set to 1 for Thumb-2 when optimizing
++	for size.
++
++2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/testsuite/
++	From  Richard Earnshaw  <rearnsha@arm.com>
++
++	PR target/46329
++	* gcc.target/arm/pr46329.c: New test.
++
++	gcc/
++	PR target/46329
++	* config/arm/arm.c (arm_legitimate_constant_p_1): Return false
++	for all Neon struct constants.
++
++2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* targhooks.h (default_legitimate_constant_p); Declare.
++	* targhooks.c (default_legitimate_constant_p): New function.
++
++	Backport from mainline:
++	2011-04-21  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* target.def (legitimate_constant_p): New hook.
++	* doc/tm.texi.in (LEGITIMATE_CONSTANT_P): Replace with...
++	(TARGET_LEGITIMATE_CONSTANT_P): ...this.
++	* doc/tm.texi: Regenerate.
++	* calls.c (precompute_register_parameters): Replace uses of
++	LEGITIMATE_CONSTANT_P with targetm.legitimate_constant_p.
++	(emit_library_call_value_1): Likewise.
++	* expr.c (move_block_to_reg, can_store_by_pieces, emit_move_insn)
++	(compress_float_constant, emit_push_insn, expand_expr_real_1): Likewise.
++	* recog.c (general_operand, immediate_operand): Likewise.
++	* reload.c (find_reloads_toplev, find_reloads_address_part): Likewise.
++	* reload1.c (init_eliminable_invariants): Likewise.
++
++	* config/arm/arm-protos.h (arm_cannot_force_const_mem): Delete.
++	* config/arm/arm.h (ARM_LEGITIMATE_CONSTANT_P): Likewise.
++	(THUMB_LEGITIMATE_CONSTANT_P, LEGITIMATE_CONSTANT_P): Likewise.
++	* config/arm/arm.c (TARGET_LEGITIMATE_CONSTANT_P): Define.
++	(arm_legitimate_constant_p_1, thumb_legitimate_constant_p)
++	(arm_legitimate_constant_p): New functions.
++	(arm_cannot_force_const_mem): Make static.
++
++2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* hooks.h (hook_bool_mode_uhwi_false): Declare.
++	* hooks.c (hook_bool_mode_uhwi_false): New function.
++	* target.def (array_mode_supported_p): New hook.
++	* doc/tm.texi.in (TARGET_ARRAY_MODE_SUPPORTED_P): Add @hook.
++	* doc/tm.texi: Regenerate.
++	* stor-layout.c (mode_for_array): New function.
++	(layout_type): Use it.
++	* config/arm/arm.c (arm_array_mode_supported_p): New function.
++	(TARGET_ARRAY_MODE_SUPPORTED_P): Define.
++
++2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* config/arm/arm.c (arm_print_operand): Use MEM_SIZE to get the
++	size of a '%A' memory reference.
++	(T_DREG, T_QREG): New neon_builtin_type_bits.
++	(arm_init_neon_builtins): Assert that the load and store operands
++	are neon_struct_operands.
++	(locate_neon_builtin_icode): Provide the neon_builtin_type_bits.
++	(NEON_ARG_MEMORY): New builtin_arg.
++	(neon_dereference_pointer): New function.
++	(arm_expand_neon_args): Add a neon_builtin_type_bits argument.
++	Handle NEON_ARG_MEMORY.
++	(arm_expand_neon_builtin): Update after above interface changes.
++	Use NEON_ARG_MEMORY for loads and stores.
++	* config/arm/predicates.md (neon_struct_operand): New predicate.
++	* config/arm/iterators.md (V_two_elem): Tweak formatting.
++	(V_three_elem): Use BLKmode for accesses that have no associated mode.
++	(V_four_elem): Tweak formatting.
++	* config/arm/neon.md (neon_vld1<mode>, neon_vld1_dup<mode>)
++	(neon_vst1_lane<mode>, neon_vst1<mode>, neon_vld2<mode>)
++	(neon_vld2_lane<mode>, neon_vld2_dup<mode>, neon_vst2<mode>)
++	(neon_vst2_lane<mode>, neon_vld3<mode>, neon_vld3_lane<mode>)
++	(neon_vld3_dup<mode>, neon_vst3<mode>, neon_vst3_lane<mode>)
++	(neon_vld4<mode>, neon_vld4_lane<mode>, neon_vld4_dup<mode>)
++	(neon_vst4<mode>): Replace pointer operand with a memory operand.
++	Use %A in the output template.
++	(neon_vld3qa<mode>, neon_vld3qb<mode>, neon_vst3qa<mode>)
++	(neon_vst3qb<mode>, neon_vld4qa<mode>, neon_vld4qb<mode>)
++	(neon_vst4qa<mode>, neon_vst4qb<mode>): Likewise, but halve
++	the width of the memory access.  Remove post-increment.
++	* config/arm/neon-testgen.ml: Allow addresses to have an alignment.
++
++	gcc/testsuite/
++	Backport from mainline:
++
++	2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	* gcc.target/arm/neon-vld3-1.c: New test.
++	* gcc.target/arm/neon-vst3-1.c: New test.
++	* gcc.target/arm/neon/v*.c: Regenerate.
++
++2011-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	Backport from mainline:
++
++	2011-03-30  Richard Sandiford  <richard.sandiford@linaro.org>
++		    Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	PR target/43590
++	* config/arm/neon.md (neon_vld3qa<mode>, neon_vld4qa<mode>): Remove
++	operand 1 and reshuffle the operands to match.
++	(neon_vld3<mode>, neon_vld4<mode>): Update accordingly.
++
++2011-05-04  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	Backport from mainline:
++
++	2011-03-29  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	PR debug/48190
++	* dwarf2out.c (dw_loc_list_node): Add resolved_addr and replaced.
++	(cached_dw_loc_list_def): New structure.
++	(cached_dw_loc_list): New typedef.
++	(cached_dw_loc_list_table): New variable.
++	(cached_dw_loc_list_table_hash): New function.
++	(cached_dw_loc_list_table_eq): Likewise.
++	(add_location_or_const_value_attribute): Take a bool cache_p.
++	Cache the list when the parameter is true.
++	(gen_formal_parameter_die): Update caller.
++	(gen_variable_die): Likewise.
++	(dwarf2out_finish): Likewise.
++	(dwarf2out_abstract_function): Nullify cached_dw_loc_list_table
++	while generating debug info for the decl.
++	(dwarf2out_function_decl): Clear cached_dw_loc_list_table.
++	(dwarf2out_init): Initialize cached_dw_loc_list_table.
++	(resolve_addr): Cache the result of resolving a chain of
++	location lists.
++
++2011-04-26  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2011-04-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
++
++	gcc/
++	* combine.c (subst, combine_simlify_rtx): Add new argument, use it
++	to track processing of conditionals.  Update all callers.
++	(try_combine, simplify_if_then_else): Update.
++
++	2011-04-25  Maxim Kuvyrkov  <maxim@codesourcery.com>
++		    Eric Botcazou <ebotcazou@adacore.com>
++
++	gcc/
++	* combine.c (combine_simplify_rtx): Avoid mis-simplifying conditionals
++	for STORE_FLAG_VALUE==-1 case.
++
++2011-05-02  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from FSF:
++
++	2011-03-27  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* config/arm/arm.c (arm_autovectorize_vector_sizes): New function.
++	(TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Define.
++
++	gcc/testsuite/
++	* gcc.dg/vect/vect-outer-5.c: Reduce the distance between data
++	accesses to preserve the meaning of the test for doubleword vectors.
++	* gcc.dg/vect/no-vfa-pr29145.c: Likewise.
++	* gcc.dg/vect/slp-3.c: Reduce the loop bound for the same reason.
++
++2011-04-27  Ira Rosen  <ira.rosen@linaro.org>
++
++	Backport from FSF:
++
++	2011-04-03  Richard Guenther  <rguenther@suse.de>
++		    Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* tree-if-conv.c (memrefs_read_or_written_unconditionally): Strip all
++	non-variable offsets and compare the remaining bases of the two
++	accesses instead of looking for exact same data-ref.
++
++	gcc/testsuite/
++	* gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c: New test.
++	* gcc.dg/vect/vect.exp: Run if-cvt-stores-vect* tests with
++	-ftree-loop-if-convert-stores.
++
++2011-04-21  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2008-12-03  Daniel Jacobowitz  <dan@codesourcery.com>
++
++	gcc/testsuite/
++	* gcc.dg/vect/vect-shift-3.c, gcc.dg/vect/vect-shift-4.c: New.
++	* lib/target-supports.exp (check_effective_target_vect_shift_char): New
++	function.
++
++2011-04-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-04-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.04-0 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	Backport from FSF:
++
++	2011-04-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
++
++	gcc/
++	* config/arm/arm.md (*arm_negdi2): Fix early clobber constraints.
++
++2011-03-27  Ira Rosen  <ira.rosen@linaro.org>
++
++	gcc/
++	* doc/invoke.texi (max-stores-to-sink): Document.
++	* params.h (MAX_STORES_TO_SINK): Define.
++	* opts.c (finish_options): Set MAX_STORES_TO_SINK to 0
++	if either vectorization or if-conversion is disabled.
++	* tree-data-ref.c (dr_equal_offsets_p1): Moved and renamed from
++	tree-vect-data-refs.c vect_equal_offsets.
++	(dr_equal_offsets_p): New function.
++	(find_data_references_in_bb): Remove static.
++	* tree-data-ref.h (find_data_references_in_bb): Declare.
++	(dr_equal_offsets_p): Likewise.
++	* tree-vect-data-refs.c (vect_equal_offsets): Move to tree-data-ref.c.
++	(vect_drs_dependent_in_basic_block): Update calls to
++	vect_equal_offsets.
++	(vect_check_interleaving): Likewise.
++	* tree-ssa-phiopt.c: Include cfgloop.h and tree-data-ref.h.
++	(cond_if_else_store_replacement): Rename to...
++	(cond_if_else_store_replacement_1): ... this.  Change arguments and
++	documentation.
++	(cond_if_else_store_replacement): New function.
++	* Makefile.in (tree-ssa-phiopt.o): Adjust dependencies.
++	* params.def (PARAM_MAX_STORES_TO_SINK): Define.
++
++	gcc/testsuite/
++	* gcc.dg/vect/vect-cselim-1.c: New test.
++	* gcc.dg/vect/vect-cselim-2.c: New test.
++
++2011-04-07  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6 (svn branches/gcc-4_6-branch 171921).
++
++2011-03-23  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2011-03-23  Julian Brown  <julian@codesourcery.com>
++
++	gcc/
++	* expr.c (expand_expr_real_1): Only use BLKmode for volatile
++	accesses which are not naturally aligned.
++
++2011-03-26  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6 (svn branches/gcc-4_6-branch 171336).
++
++2011-03-22  Andrew Stubbs  <ams@codesourcery.com>
++
++	Backport from FSF:
++
++	2011-03-21  Daniel Jacobowitz  <dan@codesourcery.com>
++
++	gcc/
++	* config/arm/unwind-arm.c (__gnu_unwind_pr_common): Correct test
++	for barrier handlers.
++
++2011-03-13  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6 (trunk svn 170846).
++
++2011-03-10  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6 (trunk svn 170669).
++
++2011-03-03  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* LINARO-VERSION: Bump version.
++
++2011-03-03  Andrew Stubbs  <ams@codesourcery.com>
++
++	GCC Linaro 4.6-2011.03-0 released.
++
++	gcc/
++	* LINARO-VERSION: Update.
++
++2011-02-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	* config/arm/predicates.md (neon_lane_number): Accept 0..15.
++
++	gcc/testsuite/
++	* gcc.target/arm/neon-vld-1.c: New test.
++
++2011-02-02  Richard Sandiford  <richard.sandiford@linaro.org>
++
++	gcc/
++	PR target/47551
++	* config/arm/arm.c (coproc_secondary_reload_class): Handle
++	structure modes.  Don't check neon_vector_mem_operand for
++	vector or structure modes.
++
++	gcc/testsuite/
++	PR target/47551
++	* gcc.target/arm/neon-modes-2.c: New test.
++
++2011-02-28  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6 (trunk svn 170492).
++
++2011-02-25  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merge from FSF GCC 4.6 (trunk svn 170356).
++
++2011-02-21  Andrew Stubbs  <ams@codesourcery.com>
++	    Julian Brown  <julian@codesourcery.com>
++	    Mark Shinwell  <shinwell@codesourcery.com>
++
++	Forward-ported from Linaro GCC 4.5 (bzr99324).
++
++	gcc/
++	* config/arm/arm.h (arm_class_likely_spilled_p): Check against
++	LO_REGS only for Thumb-1.
++	(MODE_BASE_REG_CLASS): Restrict base registers to those which can
++	be used in short instructions when optimising for size on Thumb-2.
++
++2011-02-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merged from Linaro GCC 4.5 (bzr99409).
++
++	2010-09-30  Jie Zhang  <jie@codesourcery.com>
++
++	gcc/testsuite/
++	* gcc.target/arm/neon-thumb2-move.c: Add
++	dg-require-effective-target arm_thumb2_ok.
++
++2011-02-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	Merged from Linaro GCC 4.5 (bzr99325).
++
++	2006-04-21  Kazu Hirata  <kazu@codesourcery.com>
++
++	gcc/testsuite/
++	* gcc.target/arm/vfp-ldmdbd.c, gcc.target/arm/vfp-ldmdbs.c,
++	gcc.target/arm/vfp-ldmiad.c, gcc.target/arm/vfp-ldmias.c,
++	gcc.target/arm/vfp-stmdbd.c, gcc.target/arm/vfp-stmdbs.c,
++	gcc.target/arm/vfp-stmiad.c, gcc.target/arm/vfp-stmias.c: New.
++
++2011-02-19  Andrew Stubbs  <ams@codesourcery.com>
++
++	gcc/
++	* configure: Regenerate.
++	* configure.ac (PKGVERSION): Set default to a custom
++	Linaro string.
++	* LINARO-VERSION: New file.
++
++Imported GCC from FSF trunk SVN revision 170067.
+--- a/src/gcc/ada/ChangeLog
++++ b/src/gcc/ada/ChangeLog
+@@ -1,3 +1,12 @@
++2012-05-26  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* gcc-interface/decl.c (variant_desc): Rename 'record' to 'new_type'.
++	(build_variant_list): Adjust to above renaming.
++	(gnat_to_gnu_entity) <E_Record_Subtype>: Likewise.  Give a unique name
++	to the type of the variant containers.
++	(create_variant_part_from): Likewise.  Give a unique name to the type
++	of the variant part.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/gcc/ada/gcc-interface/decl.c
++++ b/src/gcc/ada/gcc-interface/decl.c
+@@ -120,8 +120,8 @@
+   /* The value of the qualifier.  */
+   tree qual;
+ 
+-  /* The record associated with this variant.  */
+-  tree record;
++  /* The type of the variant after transformation.  */
++  tree new_type;
+ } variant_desc;
+ 
+ DEF_VEC_O(variant_desc);
+@@ -3157,11 +3157,16 @@
+ 		      {
+ 			tree old_variant = v->type;
+ 			tree new_variant = make_node (RECORD_TYPE);
++			tree suffix
++			  = concat_name (DECL_NAME (gnu_variant_part),
++					 IDENTIFIER_POINTER
++					 (DECL_NAME (v->field)));
+ 			TYPE_NAME (new_variant)
+-			  = DECL_NAME (TYPE_NAME (old_variant));
++			  = concat_name (TYPE_NAME (gnu_type),
++					 IDENTIFIER_POINTER (suffix));
+ 			copy_and_substitute_in_size (new_variant, old_variant,
+ 						     gnu_subst_list);
+-			v->record = new_variant;
++			v->new_type = new_variant;
+ 		      }
+ 		}
+ 	      else
+@@ -3265,7 +3270,7 @@
+ 			    if (selected_variant)
+ 			      gnu_cont_type = gnu_type;
+ 			    else
+-			      gnu_cont_type = v->record;
++			      gnu_cont_type = v->new_type;
+ 			  }
+ 			else
+ 			  /* The front-end may pass us "ghost" components if
+@@ -7704,7 +7709,7 @@
+ 	  v->type = variant_type;
+ 	  v->field = gnu_field;
+ 	  v->qual = qual;
+-	  v->record = NULL_TREE;
++	  v->new_type = NULL_TREE;
+ 
+ 	  /* Recurse on the variant subpart of the variant, if any.  */
+ 	  variant_subpart = get_variant_part (variant_type);
+@@ -8457,7 +8462,9 @@
+ 
+   /* First create the type of the variant part from that of the old one.  */
+   new_union_type = make_node (QUAL_UNION_TYPE);
+-  TYPE_NAME (new_union_type) = DECL_NAME (TYPE_NAME (old_union_type));
++  TYPE_NAME (new_union_type)
++    = concat_name (TYPE_NAME (record_type),
++		   IDENTIFIER_POINTER (DECL_NAME (old_variant_part)));
+ 
+   /* If the position of the variant part is constant, subtract it from the
+      size of the type of the parent to get the new size.  This manual CSE
+@@ -8491,7 +8498,7 @@
+ 	continue;
+ 
+       /* Retrieve the list of fields already added to the new variant.  */
+-      new_variant = v->record;
++      new_variant = v->new_type;
+       field_list = TYPE_FIELDS (new_variant);
+ 
+       /* If the old variant had a variant subpart, we need to create a new
+--- a/src/gcc/builtins.c
++++ b/src/gcc/builtins.c
+@@ -264,7 +264,14 @@
+ }
+ 
+ /* Return the alignment in bits of EXP, an object.
+-   Don't return more than MAX_ALIGN no matter what.  */
++   Don't return more than MAX_ALIGN no matter what.
++
++   Note that the address (and thus the alignment) computed here is based
++   on the address to which a symbol resolves, whereas DECL_ALIGN is based
++   on the address at which an object is actually located.  These two
++   addresses are not always the same.  For example, on ARM targets,
++   the address &foo of a Thumb function foo() has the lowest bit set,
++   whereas foo() itself starts on an even address.  */
+ 
+ unsigned int
+ get_object_alignment (tree exp, unsigned int max_align)
+@@ -286,7 +293,21 @@
+     exp = DECL_INITIAL (exp);
+   if (DECL_P (exp)
+       && TREE_CODE (exp) != LABEL_DECL)
+-    align = DECL_ALIGN (exp);
++    {
++      if (TREE_CODE (exp) == FUNCTION_DECL)
++	{
++	  /* Function addresses can encode extra information besides their
++	     alignment.  However, if TARGET_PTRMEMFUNC_VBIT_LOCATION
++	     allows the low bit to be used as a virtual bit, we know
++	     that the address itself must be 2-byte aligned.  */
++	  if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn)
++	    align = 2 * BITS_PER_UNIT;
++	  else
++	    align = BITS_PER_UNIT;
++	}
++      else
++	align = DECL_ALIGN (exp);
++    }
+   else if (CONSTANT_CLASS_P (exp))
+     {
+       align = TYPE_ALIGN (TREE_TYPE (exp));
+--- a/src/gcc/calls.c
++++ b/src/gcc/calls.c
+@@ -686,7 +686,7 @@
+ 	/* If the value is a non-legitimate constant, force it into a
+ 	   pseudo now.  TLS symbols sometimes need a call to resolve.  */
+ 	if (CONSTANT_P (args[i].value)
+-	    && !LEGITIMATE_CONSTANT_P (args[i].value))
++	    && !targetm.legitimate_constant_p (args[i].mode, args[i].value))
+ 	  args[i].value = force_reg (args[i].mode, args[i].value);
+ 
+ 	/* If we are to promote the function arg to a wider mode,
+@@ -3578,7 +3578,8 @@
+ 
+       /* Make sure it is a reasonable operand for a move or push insn.  */
+       if (!REG_P (addr) && !MEM_P (addr)
+-	  && ! (CONSTANT_P (addr) && LEGITIMATE_CONSTANT_P (addr)))
++	  && !(CONSTANT_P (addr)
++	       && targetm.legitimate_constant_p (Pmode, addr)))
+ 	addr = force_operand (addr, NULL_RTX);
+ 
+       argvec[count].value = addr;
+@@ -3619,7 +3620,7 @@
+ 
+       /* Make sure it is a reasonable operand for a move or push insn.  */
+       if (!REG_P (val) && !MEM_P (val)
+-	  && ! (CONSTANT_P (val) && LEGITIMATE_CONSTANT_P (val)))
++	  && !(CONSTANT_P (val) && targetm.legitimate_constant_p (mode, val)))
+ 	val = force_operand (val, NULL_RTX);
+ 
+       if (pass_by_reference (&args_so_far, mode, NULL_TREE, 1))
+--- a/src/gcc/cfgexpand.c
++++ b/src/gcc/cfgexpand.c
+@@ -1843,12 +1843,17 @@
+ static void
+ expand_call_stmt (gimple stmt)
+ {
+-  tree exp;
+-  tree lhs = gimple_call_lhs (stmt);
++  tree exp, lhs;
+   size_t i;
+   bool builtin_p;
+   tree decl;
+ 
++  if (gimple_call_internal_p (stmt))
++    {
++      expand_internal_call (stmt);
++      return;
++    }
++
+   exp = build_vl_exp (CALL_EXPR, gimple_call_num_args (stmt) + 3);
+ 
+   CALL_EXPR_FN (exp) = gimple_call_fn (stmt);
+@@ -1886,6 +1891,7 @@
+   SET_EXPR_LOCATION (exp, gimple_location (stmt));
+   TREE_BLOCK (exp) = gimple_block (stmt);
+ 
++  lhs = gimple_call_lhs (stmt);
+   if (lhs)
+     expand_assignment (lhs, exp, false);
+   else
+@@ -3209,6 +3215,8 @@
+     case VEC_UNPACK_LO_EXPR:
+     case VEC_WIDEN_MULT_HI_EXPR:
+     case VEC_WIDEN_MULT_LO_EXPR:
++    case VEC_WIDEN_LSHIFT_HI_EXPR:
++    case VEC_WIDEN_LSHIFT_LO_EXPR:
+       return NULL;
+ 
+    /* Misc codes.  */
+--- a/src/gcc/cgraph.c
++++ b/src/gcc/cgraph.c
+@@ -1700,19 +1700,27 @@
+   free_nodes = node;
+ }
+ 
+-/* Remove the node from cgraph.  */
++/* Remove the node from cgraph and all inline clones inlined into it.
++   Skip however removal of FORBIDDEN_NODE and return true if it needs to be
++   removed.  This allows to call the function from outer loop walking clone
++   tree.  */
+ 
+-void
+-cgraph_remove_node_and_inline_clones (struct cgraph_node *node)
++bool
++cgraph_remove_node_and_inline_clones (struct cgraph_node *node, struct cgraph_node *forbidden_node)
+ {
+   struct cgraph_edge *e, *next;
++  bool found = false;
++
++  if (node == forbidden_node)
++    return true;
+   for (e = node->callees; e; e = next)
+     {
+       next = e->next_callee;
+       if (!e->inline_failed)
+-        cgraph_remove_node_and_inline_clones (e->callee);
++        found |= cgraph_remove_node_and_inline_clones (e->callee, forbidden_node);
+     }
+   cgraph_remove_node (node);
++  return found;
+ }
+ 
+ /* Notify finalize_compilation_unit that given node is reachable.  */
+--- a/src/gcc/cgraph.h
++++ b/src/gcc/cgraph.h
+@@ -547,7 +547,7 @@
+ void cgraph_insert_node_to_hashtable (struct cgraph_node *node);
+ void cgraph_remove_edge (struct cgraph_edge *);
+ void cgraph_remove_node (struct cgraph_node *);
+-void cgraph_remove_node_and_inline_clones (struct cgraph_node *);
++bool cgraph_remove_node_and_inline_clones (struct cgraph_node *, struct cgraph_node *);
+ void cgraph_release_function_body (struct cgraph_node *);
+ void cgraph_node_remove_callees (struct cgraph_node *node);
+ struct cgraph_edge *cgraph_create_edge (struct cgraph_node *,
+--- a/src/gcc/cgraphunit.c
++++ b/src/gcc/cgraphunit.c
+@@ -2157,8 +2157,19 @@
+             first_clone->ipa_transforms_to_apply);
+   first_clone->ipa_transforms_to_apply = NULL;
+ 
++  /* When doing recursive inlining, the clone may become unnecessary.
++     This is possible i.e. in the case when the recursive function is proved to be
++     non-throwing and the recursion happens only in the EH landing pad.
++     We can not remove the clone until we are done with saving the body.
++     Remove it now.  */
++  if (!first_clone->callers)
++    {
++      cgraph_remove_node_and_inline_clones (first_clone, NULL);
++      first_clone = NULL;
++    }
+ #ifdef ENABLE_CHECKING
+-  verify_cgraph_node (first_clone);
++  else
++    verify_cgraph_node (first_clone);
+ #endif
+   return first_clone;
+ }
+--- a/src/gcc/ChangeLog
++++ b/src/gcc/ChangeLog
+@@ -1,3 +1,530 @@
++2012-07-22  Oleg Endo  <olegendo@gcc.gnu.org>
++
++	PR target/33135
++	* config/sh/sh.opt (mieee): Use Var instead of Mask.  Correct
++	description.
++	* config/sh/sh.c (sh_option_override): Do not change 
++	flag_finite_math_only.  Set TARGET_IEEE to complement of
++	flag_finite_math_only.
++	* doc/invoke.texi (SH options): Add mno-ieee.  Correct
++	description of mieee and mno-ieee behavior.
++
++2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>
++
++	Backported from trunk:
++	2012-07-13  Richard Sandiford  <rdsandiford@googlemail.com>
++		    Steven Bosscher  <steven@gcc.gnu.org>
++		    Bernd Schmidt  <bernds@codesourcery.com>
++
++	PR rtl-optimization/53908
++	* df-problems.c	(can_move_insns_across): When doing
++	memory-reference book-keeping, handle call insns.
++
++2012-07-06  Nick Clifton  <nickc@redhat.com>
++
++	* config/mn10300/mn10300.c (mn10300_encode_section_info): Call
++	default_encode_section_info.
++
++2012-07-04  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/53433
++	* tree-ssa-ccp.c (get_base_constructor): Do not return an
++	error_mark_node DECL_INITIAL.
++
++2012-07-02  Martin Jambor  <mjambor@suse.cz>
++
++	PR middle-end/38474
++	* ipa-prop.c (compute_known_type_jump_func): Check for a BINFO before
++	checking for a dynamic type change.
++
++2012-06-28  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/53790
++	* expr.c (expand_expr_real_1): Verify if the type is complete
++	before inspecting its size.
++
++2012-06-22  Richard Guenther  <rguenther@suse.de>
++
++	* gcov-iov.c: Include bconfig.h and system.h.
++
++2012-06-22  Richard Guenther  <rguenther@suse.de>
++
++	PR gcov-profile/53744
++	* gcov-iov.c (main): Treat "" and "prerelease" the same.
++
++2012-06-19  Joey Ye  <joey.ye@arm.com>
++
++	Backported from mainline
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	* config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
++
++2012-06-18  Joey Ye  <joey.ye@arm.com>
++
++	Backported from mainline
++	2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
++
++	PR target/48126
++	* config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
++
++2012-06-17  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline:
++	2012-06-17  Uros Bizjak  <ubizjak@gmail.com>
++
++	* config/i386/sse.md (vcvtph2ps): Fix vec_select selector.
++
++2012-06-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	Backport from mainline:
++	2012-06-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	* config/pa/pa.h (MAX_PCREL17F_OFFSET): Define.
++	* config/pa/pa.c (pa_attr_length_millicode_call): Use
++	MAX_PCREL17F_OFFSET instead of fixed offset.
++	(pa_attr_length_call): Likewise.
++	(pa_attr_length_indirect_call): Likewise.
++
++2012-06-12  Christian Bruel  <christian.bruel@st.com>
++
++	PR target/53621
++	* config/sh/sh.c (sh_option_override): Don't force
++	 flag_omit_frame_pointer and maccumulate_outgoing_args.
++	* config/sh/sh.opt (maccumulate-outgoing-args): Init as Var.
++
++2012-06-05  Peter Bergner  <bergner@vnet.ibm.com>
++
++	Backport from mainline
++	2011-08-29  Jakub Jelinek  <jakub@redhat.com>
++
++	* gthr-posix.h (__gthread_active_p): Do not use preprocessor
++	conditionals and comments inside macro arguments.
++
++2012-06-04  Edmar Wienskoski  <edmar@freescale.com>
++
++	PR target/53559
++	* config/rs6000/altivec.md (altivec_stvlx): Change machine mode of
++	operands.
++	(altivec_stvlxl): Ditto.
++	(altivec_stvrx): Ditto.
++	(altivec_stvrxl): Ditto.
++
++2012-06-04  Georg-Johann Lay  <avr@gjlay.de>
++
++	Backport from 2012-06-04 mainline r188172
++
++	PR target/46261
++	* config/avr/avr-stdint.h: New file.
++	* config.gcc (avr-*-*,tm_file): Use avr/avr-stdint.h instead of
++	newlib-stdint.h
++
++2012-06-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR target/52999
++	* config/pa/pa.c (TARGET_SECTION_TYPE_FLAGS): Define.
++	(pa_section_type_flags): New.
++	* config/pa/pa.h (LEGITIMATE_CONSTANT_P): Revert previous change.
++
++2012-05-31  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/53541
++	* tree-pretty-print.c (dump_generic_node): Guard against
++	NULL_TREE TREE_TYPE when dumping MEM_REF offset type.
++
++2012-05-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2012-05-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
++
++	PR target/53385
++	* config/rs6000/rs6000.c (print_operand): Revise code that unsafely
++	relied on signed overflow behavior.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2011-11-10  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/51071
++	* gimple.c (gimple_has_side_effects): Remove checking code
++	that doesn't belong here.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2012-02-28  Richard Guenther  <rguenther@suse.de>
++
++	PR target/52407
++	* config/i386/i386.c (ix86_expand_vector_set): Fix element
++	ordering for the VEC_CONCAT for two element vectors for
++	V2SFmode, V2SImode and V2DImode.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2012-04-12  Richard Guenther  <rguenther@suse.de>
++
++	PR c/52862
++	* convert.c (convert_to_pointer): Remove special-casing of zero.
++
++2012-05-21  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/53418
++	* c-typeck.c (build_conditional_expr): Remove C_MAYBE_CONST_EXPR
++	from folded operands before wrapping another around the
++	conditional expression.
++
++2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backport from mainline
++	2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR target/53416
++	* config/i386/i386.md (UNSPEC_RDRAND): Renamed to ...
++	(UNSPECV_RDRAND): This.
++	(rdrand<mode>_1): Updated.
++
++2012-05-20  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backport from mainline
++	2012-05-20  H.J. Lu  <hongjiu.lu@intel.com>
++
++	* config/i386/driver-i386.c (host_detect_local_cpu): Support
++	RDRND, F16C and FSGSBASE.
++
++2012-05-16  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* configure: Regenerate.
++
++2012-05-14  Uros Bizjak  <ubizjak@gmail.com>
++
++	PR target/46098
++	* config/i386/i386.c (ix86_expand_special_args_builtin): Always
++	generate target register for "load" class builtins.
++
++	Revert:
++	2010-10-22  Uros Bizjak  <ubizjak@gmail.com>
++
++	PR target/46098
++	* config/i386/sse.md (*avx_movu<ssemodesuffix><avxmodesuffix>):
++	Rename from avx_movu<ssemodesuffix><avxmodesuffix>.
++	(avx_movu<ssemodesuffix><avxmodesuffix>): New expander.
++	(*<sse>_movu<ssemodesuffix>): Rename from <sse>_movu<ssemodesuffix>.
++	(<sse>_movu<ssemodesuffix>): New expander.
++	(*avx_movdqu<avxmodesuffix>): Rename from avx_movdqu<avxmodesuffix>.
++	(avx_movdqu<avxmodesuffix>): New expander.
++	(*sse2_movdqu): Rename from sse2_movdqu.
++	(sse2_movdqu): New expander.
++
++2012-05-13  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-05-12  Uros Bizjak  <ubizjak@gmail.com>
++
++	* config/alpha/alpha.c (alpha_emit_conditional_branch): Handle
++	ORDERED and UNORDERED conditions.
++
++2012-05-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR target/52999
++	* config/pa/pa.h (LEGITIMATE_CONSTANT_P): Don't put function labels
++	in constant pool.
++
++2012-05-04  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-05-04  Uros Bizjak  <ubizjak@gmail.com>
++
++	PR target/53228
++	* config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE.
++	(TARGET_CMOV): Rename from TARGET_CMOVE.
++	(TARGET_CMOVE): New define.
++	* config/i386/i386.c (ix86_option_override_internal): Use TARGET_CMOV.
++	Do not set TARGET_CMOVE here.
++
++2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from the mainline
++	2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/53199
++	* config/rs6000/rs6000.md (bswapdi splitters): If
++	-mavoid-indexed-addresses (or -mcpu=power6 which sets it by
++	default) is used, generate an alternate sequence that does not
++	depend on using indexed addressing.
++
++2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-04-27  Paolo Bonzini  <bonzini@gnu.org>
++
++	PR target/53138
++	* config/i386/i386.md (x86_mov<mode>cc_0_m1_neg): Add clobber.
++
++2012-04-24  Jakub Jelinek  <jakub@redhat.com>
++
++	PR middle-end/53084
++	* varasm.c (compute_reloc_for_constant): Handle ADDR_EXPR of MEM_REF.
++	(output_addressed_constants): Likewise.
++
++2012-04-20  Thomas Schwinge  <thomas@codesourcery.com>
++
++	struct siginfo vs. siginfo_t
++
++	Backport from trunk (but apply to gcc/):
++
++	2012-04-20  Thomas Schwinge  <thomas@codesourcery.com>
++
++	* config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use
++	siginfo_t instead of struct siginfo.
++	* config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise.
++	* config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise.
++	* config/ia64/linux-unwind.h (ia64_fallback_frame_state)
++	(ia64_handle_unwabi): Likewise.
++	* config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
++	* config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise.
++	* config/sh/linux-unwind.h (shmedia_fallback_frame_state)
++	(sh_fallback_frame_state): Likewise.
++	* config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise.
++
++2012-04-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2012-04-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/52775
++	* config/rs6000/rs6000.h (TARGET_FCFID): Add TARGET_PPC_GPOPT to
++	the list of options to enable the FCFID instruction.
++
++2012-04-12  Richard Earnshaw  <rearnsha@arm.com>
++
++	PR target/49448
++	* config.gcc (arm*-*-linux*): Use an unambiguous pattern for
++	detecting big-endian triplets.
++
++2012-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR middle-end/52894
++	* varasm.c (process_pending_assemble_externals): Set
++	pending_assemble_externals_processed true.
++	(assemble_external): Call assemble_external_real if the pending
++	assemble externals have been processed.
++
++2012-04-09  Eric Botcazou  <ebotcazou@adacore.com>
++
++	PR target/52717
++	* config/sparc/sparc.c (sparc_file_end): Set TREE_PUBLIC explicitly on
++	the DECL generated for the special GOT helper.
++
++2012-04-06  Matt Turner  <mattst88@gmail.com>
++
++	* doc/install.texi: Correct typo "-mno-lsc" -> "-mno-llsc".
++
++2012-03-29  Uros Bizjak  <ubizjak@gmail.com>
++
++	* config/i386/sse.md (avx_h<plusminus_insn>v4df3): Fix results
++	crossing 128bit lane boundary.
++
++2012-03-29  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backported from mainline
++	2012-03-27  Uros Bizjak  <ubizjak@gmail.com>
++
++	PR target/52698
++	* config/i386/i386-protos.h (ix86_legitimize_reload_address):
++	New prototype.
++	* config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): New define.
++	* config/i386/i386.c: Include reload.h.
++	(ix86_legitimize_reload_address): New function.
++
++2012-03-28  Joey Ye  <joey.ye@arm.com>
++
++	Backported from mainline
++	2011-12-20  Bernd Schmidt  <bernds@codesourcery.com>
++
++	PR middle-end/51200
++	* expr.c (store_field): Avoid a direct store if the mode is larger
++	than the size of the bit field.
++	* stor-layout.c (layout_decl): If flag_strict_volatile_bitfields,
++	treat non-volatile bit fields like volatile ones.
++	* toplev.c (process_options): Disallow combination of
++	-fstrict-volatile-bitfields and ABI versions less than 2.
++	* config/arm/arm.c (arm_option_override): Don't enable
++	flag_strict_volatile_bitfields if the ABI version is less than 2.
++	* config/h8300/h8300.c (h8300_option_override): Likewise.
++	* config/rx/rx.c (rx_option_override): Likewise.
++	* config/m32c/m32c.c (m32c_option_override): Likewise.
++	* config/sh/sh.c (sh_option_override): Likewise.
++
++	2011-12-22  Joey Ye  <joey.ye@arm.com>
++
++	* toplev.c (process_options): Fix typo.
++
++2012-03-28  Martin Jambor  <mjambor@suse.cz>
++
++	Backported from mainline
++	2012-03-27  Martin Jambor  <mjambor@suse.cz>
++
++	PR middle-end/52693
++	* tree-sra.c (sra_modify_assign): Do not call
++	load_assign_lhs_subreplacements when working with an unscalarizable
++	region.
++
++2012-03-28  Georg-Johann Lay  <avr@gjlay.de>
++
++	PR target/52741
++
++	Revert r181936 from 2011-12-02 for:
++	* config/avr/libgcc.S (__prologue_saves__, __epilogue_restores__)
++	* config/avr/avr.md (movhi_sp_r_irq_off, movhi_sp_r_irq_on)
++	* config/avr/avr.c (output_movhi, avr_file_start)
++
++2012-03-28  Jakub Jelinek  <jakub@redhat.com>
++
++	PR target/52736
++	* config/i386/sse.md (sse2_loadlpd splitter): Use offset 0
++	instead of 8 in adjust_address.
++
++2012-03-24  Jan Hubicka  <jh@suse.cz>
++
++	Backport from mainline
++	PR regression/52696
++	* predict.c (predict_paths_for_bb): Fix typo.
++
++2012-03-24  Jan Hubicka  <jh@suse.cz>
++
++	Backport from mainline
++	PR middle-end/51737
++	* cgraph.c (cgraph_remove_node_and_inline_clones): Add FORBIDDEN_NODE
++	parameter.
++	* cgraph.h (cgraph_remove_node_and_inline_clones): Update prototype.
++	* ipa-inline-transform.c (save_inline_function_body): Remove copied
++	clone if needed.
++	* tree-inline.c (delete_unreachable_blocks_update_callgraph): Update.
++
++2012-03-24  Steven Bosscher  <steven@gcc.gnu.org>
++
++	PR middle-end/52640
++	* varasm.c: Include pointer-set.h.
++	(pending_assemble_externals_set): New pointer set.
++	(process_pending_assemble_externals): Destroy the pointer set.
++	(assemble_external): See if decl is in pending_assemble_externals_set,
++	and add it to pending_assemble_externals if necessary.
++	(init_varasm_once): Allocate pending_assemble_externals_set.
++
++2012-03-16  Jan Hubicka  <jh@suse.cz>
++
++	Backport from mainline
++	PR middle-end/48600
++	* predict.c (predict_paths_for_bb): Prevent looping.
++	(predict_paths_leading_to_edge, predict_paths_leading_to): Update.
++
++2012-03-16  Michael Hope  <michael.hope@linaro.org>
++
++	Backport from mainline
++	2011-05-05  Michael Hope  <michael.hope@linaro.org>
++
++	PR pch/45979
++	* config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for
++	__ARM_EABI__ hosts.
++
++2012-03-15  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	Backport from mainline
++	2012-03-10  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	PR rtl-optimization/52528
++	* combine.c (can_combine_p): Add setting of subst_low_luid
++	before call to expand_field_assignment().
++
++2012-03-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	Backport from mainline
++	2011-09-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR Bug middle-end/50232
++	* config/pa/pa.md (return): Define "return" insn pattern.
++	(epilogue): Use it when no epilogue is needed.
++	* config/pa/pa.c (pa_can_use_return_insn): New function.
++	* config/pa/pa-protos.h (pa_can_use_return_insn): Declare.
++
++	Backport for mainline
++	2012-01-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR target/51871
++	* config/pa/pa.c (pa_return_addr_rtx): Add support for PA2.0 export
++	stubs.
++
++2012-03-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	PR target/50310
++	* config/rs6000/vector.md (vector_uneq<mode>): Add support for
++	UNEQ, LTGT, ORDERED, and UNORDERED IEEE vector comparisons.
++	(vector_ltgt<mode>): Likewise.
++	(vector_ordered<mode>): Likewise.
++	(vector_unordered<mode>): Likewise.
++	* config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise.
++
++2012-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	Backport from mainline
++	2012-03-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	PR target/52408
++	* config/pa/pa.md (zvdep_imm32): Change type of variable x from int to
++	unsigned HOST_WIDE_INT.
++	(zvdep_imm64): Likewise.
++	(vdepi_ior): Change type of variable x from int to HOST_WIDE_INT.
++	(vdepi_and): Likewise.
++	Likewise for unamed 64-bit patterns.
++	* config/pa/predicates.md (lhs_lshift_cint_operand): Update comment.
++
++2012-03-03  Eric Botcazou  <ebotcazou@adacore.com>
++
++	PR target/52425
++	Backport from mainline
++	2011-05-22  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* config/sparc/sparc.c (sparc_delegitimize_address): Handle
++	UNSPEC_MOVE_PIC pattern.
++
++2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
++
++	Backport from mainline
++	2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
++
++	* config/rs6000/vsx.md (vsx_set_<mode>): Reorder operands.
++
++2012-03-02  Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++	    Ira Rosen <irar@il.ibm.com>
++
++	PR tree-optimization/50031
++	PR tree-optimization/50969
++	* targhooks.c (default_builtin_vectorization_cost): Handle
++	vec_promote_demote.
++	* target.h (enum vect_cost_for_stmt): Add vec_promote_demote.
++	* tree-vect-loop.c (vect_get_single_scalar_iteraion_cost): Handle
++	all types of reduction and pattern statements.
++	(vect_estimate_min_profitable_iters): Likewise.
++	* tree-vect-stmts.c (vect_model_promotion_demotion_cost): New function.
++	(vect_model_store_cost): Use vec_perm rather than vector_stmt for
++	statement cost.
++	(vect_model_load_cost): Likewise.
++	(vect_get_load_cost): Likewise; add dump logic for explicit realigns.
++	(vectorizable_type_demotion): Call vect_model_promotion_demotion_cost.
++	(vectorizable_type_promotion): Likewise.
++	* config/spu/spu.c (spu_builtin_vectorization_cost): Handle
++	vec_promote_demote.
++	* config/i386/i386.c (ix86_builtin_vectorization_cost): Likewise.
++	* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Update
++	vec_perm for VSX and handle vec_promote_demote.
++
++2012-03-01  Jakub Jelinek  <jakub@redhat.com>
++
++	* BASE-VER: Set to 4.6.4.
++	* DEV-PHASE: Set to prerelease.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/gcc/combine.c
++++ b/src/gcc/combine.c
+@@ -391,8 +391,8 @@
+ static void undo_all (void);
+ static void undo_commit (void);
+ static rtx *find_split_point (rtx *, rtx, bool);
+-static rtx subst (rtx, rtx, rtx, int, int);
+-static rtx combine_simplify_rtx (rtx, enum machine_mode, int);
++static rtx subst (rtx, rtx, rtx, int, int, int);
++static rtx combine_simplify_rtx (rtx, enum machine_mode, int, int);
+ static rtx simplify_if_then_else (rtx);
+ static rtx simplify_set (rtx);
+ static rtx simplify_logical (rtx);
+@@ -1788,6 +1788,10 @@
+   if (set == 0)
+     return 0;
+ 
++  /* The simplification in expand_field_assignment may call back to
++     get_last_value, so set safe guard here.  */
++  subst_low_luid = DF_INSN_LUID (insn);
++
+   set = expand_field_assignment (set);
+   src = SET_SRC (set), dest = SET_DEST (set);
+ 
+@@ -3096,7 +3100,7 @@
+       /* It is possible that the source of I2 or I1 may be performing
+ 	 an unneeded operation, such as a ZERO_EXTEND of something
+ 	 that is known to have the high part zero.  Handle that case
+-	 by letting subst look at the innermost one of them.
++	 by letting subst look at the inner insns.
+ 
+ 	 Another way to do this would be to have a function that tries
+ 	 to simplify a single insn instead of merging two or more
+@@ -3119,13 +3123,11 @@
+ 	  if (i1)
+ 	    {
+ 	      subst_low_luid = DF_INSN_LUID (i1);
+-	      i1src = subst (i1src, pc_rtx, pc_rtx, 0, 0);
+-	    }
+-	  else
+-	    {
+-	      subst_low_luid = DF_INSN_LUID (i2);
+-	      i2src = subst (i2src, pc_rtx, pc_rtx, 0, 0);
++	      i1src = subst (i1src, pc_rtx, pc_rtx, 0, 0, 0);
+ 	    }
++
++	  subst_low_luid = DF_INSN_LUID (i2);
++	  i2src = subst (i2src, pc_rtx, pc_rtx, 0, 0, 0);
+ 	}
+ 
+       n_occurrences = 0;		/* `subst' counts here */
+@@ -3136,7 +3138,7 @@
+ 	 self-referential RTL when we will be substituting I1SRC for I1DEST
+ 	 later.  Likewise if I0 feeds into I2, either directly or indirectly
+ 	 through I1, and I0DEST is in I0SRC.  */
+-      newpat = subst (PATTERN (i3), i2dest, i2src, 0,
++      newpat = subst (PATTERN (i3), i2dest, i2src, 0, 0,
+ 		      (i1_feeds_i2_n && i1dest_in_i1src)
+ 		      || ((i0_feeds_i2_n || (i0_feeds_i1_n && i1_feeds_i2_n))
+ 			  && i0dest_in_i0src));
+@@ -3180,7 +3182,7 @@
+ 	 copy of I1SRC each time we substitute it, in order to avoid creating
+ 	 self-referential RTL when we will be substituting I0SRC for I0DEST
+ 	 later.  */
+-      newpat = subst (newpat, i1dest, i1src, 0,
++      newpat = subst (newpat, i1dest, i1src, 0, 0,
+ 		      i0_feeds_i1_n && i0dest_in_i0src);
+       substed_i1 = 1;
+ 
+@@ -3214,7 +3216,7 @@
+ 
+       n_occurrences = 0;
+       subst_low_luid = DF_INSN_LUID (i0);
+-      newpat = subst (newpat, i0dest, i0src, 0, 0);
++      newpat = subst (newpat, i0dest, i0src, 0, 0, 0);
+       substed_i0 = 1;
+     }
+ 
+@@ -3276,7 +3278,7 @@
+ 	{
+ 	  rtx t = i1pat;
+ 	  if (i0_feeds_i1_n)
+-	    t = subst (t, i0dest, i0src_copy ? i0src_copy : i0src, 0, 0);
++	    t = subst (t, i0dest, i0src_copy ? i0src_copy : i0src, 0, 0, 0);
+ 
+ 	  XVECEXP (newpat, 0, --total_sets) = t;
+ 	}
+@@ -3284,10 +3286,10 @@
+ 	{
+ 	  rtx t = i2pat;
+ 	  if (i1_feeds_i2_n)
+-	    t = subst (t, i1dest, i1src_copy ? i1src_copy : i1src, 0,
++	    t = subst (t, i1dest, i1src_copy ? i1src_copy : i1src, 0, 0,
+ 		       i0_feeds_i1_n && i0dest_in_i0src);
+ 	  if ((i0_feeds_i1_n && i1_feeds_i2_n) || i0_feeds_i2_n)
+-	    t = subst (t, i0dest, i0src_copy2 ? i0src_copy2 : i0src, 0, 0);
++	    t = subst (t, i0dest, i0src_copy2 ? i0src_copy2 : i0src, 0, 0, 0);
+ 
+ 	  XVECEXP (newpat, 0, --total_sets) = t;
+ 	}
+@@ -4959,11 +4961,13 @@
+ 
+    IN_DEST is nonzero if we are processing the SET_DEST of a SET.
+ 
++   IN_COND is nonzero if we are on top level of the condition.
++
+    UNIQUE_COPY is nonzero if each substitution must be unique.  We do this
+    by copying if `n_occurrences' is nonzero.  */
+ 
+ static rtx
+-subst (rtx x, rtx from, rtx to, int in_dest, int unique_copy)
++subst (rtx x, rtx from, rtx to, int in_dest, int in_cond, int unique_copy)
+ {
+   enum rtx_code code = GET_CODE (x);
+   enum machine_mode op0_mode = VOIDmode;
+@@ -5024,7 +5028,7 @@
+       && GET_CODE (XVECEXP (x, 0, 0)) == SET
+       && GET_CODE (SET_SRC (XVECEXP (x, 0, 0))) == ASM_OPERANDS)
+     {
+-      new_rtx = subst (XVECEXP (x, 0, 0), from, to, 0, unique_copy);
++      new_rtx = subst (XVECEXP (x, 0, 0), from, to, 0, 0, unique_copy);
+ 
+       /* If this substitution failed, this whole thing fails.  */
+       if (GET_CODE (new_rtx) == CLOBBER
+@@ -5041,7 +5045,7 @@
+ 	      && GET_CODE (dest) != CC0
+ 	      && GET_CODE (dest) != PC)
+ 	    {
+-	      new_rtx = subst (dest, from, to, 0, unique_copy);
++	      new_rtx = subst (dest, from, to, 0, 0, unique_copy);
+ 
+ 	      /* If this substitution failed, this whole thing fails.  */
+ 	      if (GET_CODE (new_rtx) == CLOBBER
+@@ -5087,8 +5091,8 @@
+ 		    }
+ 		  else
+ 		    {
+-		      new_rtx = subst (XVECEXP (x, i, j), from, to, 0,
+-				   unique_copy);
++		      new_rtx = subst (XVECEXP (x, i, j), from, to, 0, 0,
++				       unique_copy);
+ 
+ 		      /* If this substitution failed, this whole thing
+ 			 fails.  */
+@@ -5165,7 +5169,9 @@
+ 				&& (code == SUBREG || code == STRICT_LOW_PART
+ 				    || code == ZERO_EXTRACT))
+ 			       || code == SET)
+-			      && i == 0), unique_copy);
++			      && i == 0),
++				 code == IF_THEN_ELSE && i == 0,
++				 unique_copy);
+ 
+ 	      /* If we found that we will have to reject this combination,
+ 		 indicate that by returning the CLOBBER ourselves, rather than
+@@ -5222,7 +5228,7 @@
+       /* If X is sufficiently simple, don't bother trying to do anything
+ 	 with it.  */
+       if (code != CONST_INT && code != REG && code != CLOBBER)
+-	x = combine_simplify_rtx (x, op0_mode, in_dest);
++	x = combine_simplify_rtx (x, op0_mode, in_dest, in_cond);
+ 
+       if (GET_CODE (x) == code)
+ 	break;
+@@ -5242,10 +5248,12 @@
+    expression.
+ 
+    OP0_MODE is the original mode of XEXP (x, 0).  IN_DEST is nonzero
+-   if we are inside a SET_DEST.  */
++   if we are inside a SET_DEST.  IN_COND is nonzero if we are on the top level
++   of a condition.  */
+ 
+ static rtx
+-combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int in_dest)
++combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int in_dest,
++		      int in_cond)
+ {
+   enum rtx_code code = GET_CODE (x);
+   enum machine_mode mode = GET_MODE (x);
+@@ -5300,8 +5308,8 @@
+ 	     false arms to store-flag values.  Be careful to use copy_rtx
+ 	     here since true_rtx or false_rtx might share RTL with x as a
+ 	     result of the if_then_else_cond call above.  */
+-	  true_rtx = subst (copy_rtx (true_rtx), pc_rtx, pc_rtx, 0, 0);
+-	  false_rtx = subst (copy_rtx (false_rtx), pc_rtx, pc_rtx, 0, 0);
++	  true_rtx = subst (copy_rtx (true_rtx), pc_rtx, pc_rtx, 0, 0, 0);
++	  false_rtx = subst (copy_rtx (false_rtx), pc_rtx, pc_rtx, 0, 0, 0);
+ 
+ 	  /* If true_rtx and false_rtx are not general_operands, an if_then_else
+ 	     is unlikely to be simpler.  */
+@@ -5645,7 +5653,7 @@
+ 	{
+ 	  /* Try to simplify the expression further.  */
+ 	  rtx tor = simplify_gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1));
+-	  temp = combine_simplify_rtx (tor, VOIDmode, in_dest);
++	  temp = combine_simplify_rtx (tor, VOIDmode, in_dest, 0);
+ 
+ 	  /* If we could, great.  If not, do not go ahead with the IOR
+ 	     replacement, since PLUS appears in many special purpose
+@@ -5738,7 +5746,16 @@
+ 	     ZERO_EXTRACT is indeed appropriate, it will be placed back by
+ 	     the call to make_compound_operation in the SET case.  */
+ 
+-	  if (STORE_FLAG_VALUE == 1
++	  if (in_cond)
++	    /* Don't apply below optimizations if the caller would
++	       prefer a comparison rather than a value.
++	       E.g., for the condition in an IF_THEN_ELSE most targets need
++	       an explicit comparison.  */
++	    {
++	      ;
++	    }
++
++	  else if (STORE_FLAG_VALUE == 1
+ 	      && new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
+ 	      && op1 == const0_rtx
+ 	      && mode == GET_MODE (op0)
+@@ -5784,7 +5801,10 @@
+ 
+ 	  /* If STORE_FLAG_VALUE is -1, we have cases similar to
+ 	     those above.  */
+-	  if (STORE_FLAG_VALUE == -1
++	  if (in_cond)
++	    ;
++
++	  else if (STORE_FLAG_VALUE == -1
+ 	      && new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
+ 	      && op1 == const0_rtx
+ 	      && (num_sign_bit_copies (op0, mode)
+@@ -5982,11 +6002,11 @@
+       if (reg_mentioned_p (from, true_rtx))
+ 	true_rtx = subst (known_cond (copy_rtx (true_rtx), true_code,
+ 				      from, true_val),
+-		      pc_rtx, pc_rtx, 0, 0);
++			  pc_rtx, pc_rtx, 0, 0, 0);
+       if (reg_mentioned_p (from, false_rtx))
+ 	false_rtx = subst (known_cond (copy_rtx (false_rtx), false_code,
+ 				   from, false_val),
+-		       pc_rtx, pc_rtx, 0, 0);
++			   pc_rtx, pc_rtx, 0, 0, 0);
+ 
+       SUBST (XEXP (x, 1), swapped ? false_rtx : true_rtx);
+       SUBST (XEXP (x, 2), swapped ? true_rtx : false_rtx);
+@@ -6203,11 +6223,11 @@
+ 	{
+ 	  temp = subst (simplify_gen_relational (true_code, m, VOIDmode,
+ 						 cond_op0, cond_op1),
+-			pc_rtx, pc_rtx, 0, 0);
++			pc_rtx, pc_rtx, 0, 0, 0);
+ 	  temp = simplify_gen_binary (MULT, m, temp,
+ 				      simplify_gen_binary (MULT, m, c1,
+ 							   const_true_rtx));
+-	  temp = subst (temp, pc_rtx, pc_rtx, 0, 0);
++	  temp = subst (temp, pc_rtx, pc_rtx, 0, 0, 0);
+ 	  temp = simplify_gen_binary (op, m, gen_lowpart (m, z), temp);
+ 
+ 	  if (extend_op != UNKNOWN)
+@@ -6287,10 +6307,18 @@
+       enum rtx_code new_code;
+       rtx op0, op1, tmp;
+       int other_changed = 0;
++      rtx inner_compare = NULL_RTX;
+       enum machine_mode compare_mode = GET_MODE (dest);
+ 
+       if (GET_CODE (src) == COMPARE)
+-	op0 = XEXP (src, 0), op1 = XEXP (src, 1);
++	{
++	  op0 = XEXP (src, 0), op1 = XEXP (src, 1);
++	  if (GET_CODE (op0) == COMPARE && op1 == const0_rtx)
++	    {
++	      inner_compare = op0;
++	      op0 = XEXP (inner_compare, 0), op1 = XEXP (inner_compare, 1);
++	    }
++	}
+       else
+ 	op0 = src, op1 = CONST0_RTX (GET_MODE (src));
+ 
+@@ -6332,6 +6360,12 @@
+ 	 need to use a different CC mode here.  */
+       if (GET_MODE_CLASS (GET_MODE (op0)) == MODE_CC)
+ 	compare_mode = GET_MODE (op0);
++      else if (inner_compare
++	       && GET_MODE_CLASS (GET_MODE (inner_compare)) == MODE_CC
++	       && new_code == old_code
++	       && op0 == XEXP (inner_compare, 0)
++	       && op1 == XEXP (inner_compare, 1))
++	compare_mode = GET_MODE (inner_compare);
+       else
+ 	compare_mode = SELECT_CC_MODE (new_code, op0, op1);
+ 
+--- a/src/gcc/common.opt
++++ b/src/gcc/common.opt
+@@ -1614,6 +1614,19 @@
+ Common Report Var(flag_sched_pressure) Init(0) Optimization
+ Enable register pressure sensitive insn scheduling
+ 
++fsched-pressure-algorithm=
++Common Joined RejectNegative Enum(sched_pressure_algorithm) Var(flag_sched_pressure_algorithm) Init(SCHED_PRESSURE_WEIGHTED)
++-fira-algorithm=[CB|priority] Set the used IRA algorithm
++
++Enum
++Name(sched_pressure_algorithm) Type(enum sched_pressure_algorithm) UnknownError(unknown %<fsched-pressure%> algorithm %qs)
++
++EnumValue
++Enum(sched_pressure_algorithm) String(weighted) Value(SCHED_PRESSURE_WEIGHTED)
++
++EnumValue
++Enum(sched_pressure_algorithm) String(model) Value(SCHED_PRESSURE_MODEL)
++
+ fsched-spec
+ Common Report Var(flag_schedule_speculative) Init(1) Optimization
+ Allow speculative motion of non-loads
+--- a/src/gcc/config/alpha/alpha.c
++++ b/src/gcc/config/alpha/alpha.c
+@@ -2469,7 +2469,7 @@
+     {
+     case EQ:  case LE:  case LT:  case LEU:  case LTU:
+     case UNORDERED:
+-      /* We have these compares: */
++      /* We have these compares.  */
+       cmp_code = code, branch_code = NE;
+       break;
+ 
+@@ -2706,13 +2706,15 @@
+       switch (code)
+ 	{
+ 	case EQ: case LE: case LT: case LEU: case LTU:
++	case UNORDERED:
+ 	  /* We have these compares.  */
+ 	  cmp_code = code, code = NE;
+ 	  break;
+ 
+ 	case NE:
+-	  /* This must be reversed.  */
+-	  cmp_code = EQ, code = EQ;
++	case ORDERED:
++	  /* These must be reversed.  */
++	  cmp_code = reverse_condition (code), code = EQ;
+ 	  break;
+ 
+ 	case GE: case GT: case GEU: case GTU:
+@@ -2732,6 +2734,14 @@
+ 	  gcc_unreachable ();
+ 	}
+ 
++      if (cmp_mode == DImode)
++	{
++	  if (!reg_or_0_operand (op0, DImode))
++	    op0 = force_reg (DImode, op0);
++	  if (!reg_or_8bit_operand (op1, DImode))
++	    op1 = force_reg (DImode, op1);
++	}
++
+       tem = gen_reg_rtx (cmp_mode);
+       emit_insn (gen_rtx_SET (VOIDmode, tem,
+ 			      gen_rtx_fmt_ee (cmp_code, cmp_mode,
+@@ -2743,6 +2753,14 @@
+       local_fast_math = 1;
+     }
+ 
++  if (cmp_mode == DImode)
++    {
++      if (!reg_or_0_operand (op0, DImode))
++	op0 = force_reg (DImode, op0);
++      if (!reg_or_8bit_operand (op1, DImode))
++	op1 = force_reg (DImode, op1);
++    }
++
+   /* We may be able to use a conditional move directly.
+      This avoids emitting spurious compares.  */
+   if (signed_comparison_operator (cmp, VOIDmode)
+@@ -2761,11 +2779,13 @@
+   switch (code)
+     {
+     case EQ:  case LE:  case LT:  case LEU:  case LTU:
++    case UNORDERED:
+       /* We have these compares: */
+       break;
+ 
+     case NE:
+-      /* This must be reversed.  */
++    case ORDERED:
++      /* These must be reversed.  */
+       code = reverse_condition (code);
+       cmov_code = EQ;
+       break;
+--- a/src/gcc/config/alpha/linux-unwind.h
++++ b/src/gcc/config/alpha/linux-unwind.h
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for Alpha Linux.
+-   Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2009, 2011, 2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -49,7 +49,7 @@
+   else if (pc[1] == 0x201f015f)		/* lda $0,NR_rt_sigreturn */
+     {
+       struct rt_sigframe {
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       sc = &rt_->uc.uc_mcontext;
+--- a/src/gcc/config/arm/arm.c
++++ b/src/gcc/config/arm/arm.c
+@@ -63,6 +63,11 @@
+ 
+ void (*arm_lang_output_object_attributes_hook)(void);
+ 
++struct four_ints
++{
++  int i[4];
++};
++
+ /* Forward function declarations.  */
+ static bool arm_needs_doubleword_align (enum machine_mode, const_tree);
+ static int arm_compute_static_chain_stack_bytes (void);
+@@ -81,7 +86,6 @@
+ static bool arm_legitimate_address_p (enum machine_mode, rtx, bool);
+ static int thumb_far_jump_used_p (void);
+ static bool thumb_force_lr_save (void);
+-static int const_ok_for_op (HOST_WIDE_INT, enum rtx_code);
+ static rtx emit_sfm (int, int);
+ static unsigned arm_size_return_regs (void);
+ static bool arm_assemble_integer (rtx, unsigned int, int);
+@@ -129,7 +133,13 @@
+ static int arm_comp_type_attributes (const_tree, const_tree);
+ static void arm_set_default_type_attributes (tree);
+ static int arm_adjust_cost (rtx, rtx, rtx, int);
+-static int count_insns_for_constant (HOST_WIDE_INT, int);
++static int optimal_immediate_sequence (enum rtx_code code,
++				       unsigned HOST_WIDE_INT val,
++				       struct four_ints *return_sequence);
++static int optimal_immediate_sequence_1 (enum rtx_code code,
++					 unsigned HOST_WIDE_INT val,
++					 struct four_ints *return_sequence,
++					 int i);
+ static int arm_get_strip_length (int);
+ static bool arm_function_ok_for_sibcall (tree, tree);
+ static enum machine_mode arm_promote_function_mode (const_tree,
+@@ -143,6 +153,8 @@
+ static void arm_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT,
+ 				 tree);
+ static bool arm_have_conditional_execution (void);
++static bool arm_cannot_force_const_mem (rtx);
++static bool arm_legitimate_constant_p (enum machine_mode, rtx);
+ static bool arm_rtx_costs_1 (rtx, enum rtx_code, int*, bool);
+ static bool arm_size_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *);
+ static bool arm_slowmul_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool);
+@@ -160,6 +172,7 @@
+ static rtx arm_expand_binop_builtin (enum insn_code, tree, rtx);
+ static rtx arm_expand_unop_builtin (enum insn_code, tree, rtx, int);
+ static rtx arm_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
++static tree arm_builtin_decl (unsigned, bool);
+ static void emit_constant_insn (rtx cond, rtx pattern);
+ static rtx emit_set_insn (rtx, rtx);
+ static int arm_arg_partial_bytes (CUMULATIVE_ARGS *, enum machine_mode,
+@@ -241,8 +254,11 @@
+ static bool cortex_a9_sched_adjust_cost (rtx, rtx, rtx, int *);
+ static bool xscale_sched_adjust_cost (rtx, rtx, rtx, int *);
+ static bool fa726te_sched_adjust_cost (rtx, rtx, rtx, int *);
++static bool arm_array_mode_supported_p (enum machine_mode,
++					unsigned HOST_WIDE_INT);
+ static enum machine_mode arm_preferred_simd_mode (enum machine_mode);
+ static bool arm_class_likely_spilled_p (reg_class_t);
++static HOST_WIDE_INT arm_vector_alignment (const_tree type);
+ static bool arm_vector_alignment_reachable (const_tree type, bool is_packed);
+ static bool arm_builtin_support_vector_misalignment (enum machine_mode mode,
+ 						     const_tree type,
+@@ -250,6 +266,9 @@
+ 						     bool is_packed);
+ static void arm_conditional_register_usage (void);
+ static reg_class_t arm_preferred_rename_class (reg_class_t rclass);
++static unsigned int arm_autovectorize_vector_sizes (void);
++static int arm_default_branch_cost (bool, bool);
++static int arm_cortex_a5_branch_cost (bool, bool);
+ 
+ 
+ /* Table of machine attributes.  */
+@@ -293,6 +312,11 @@
+ /* Set default optimization options.  */
+ static const struct default_options arm_option_optimization_table[] =
+   {
++    /* Enable -fsched-pressure using -fsched-pressure-algorithm=model
++       by default when optimizing.  */
++    { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 },
++    { OPT_LEVELS_1_PLUS, OPT_fsched_pressure_algorithm_,
++      NULL, SCHED_PRESSURE_MODEL },
+     /* Enable section anchors by default at -O1 or higher.  */
+     { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 },
+     { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 },
+@@ -393,8 +417,13 @@
+ #define TARGET_SHIFT_TRUNCATION_MASK arm_shift_truncation_mask
+ #undef TARGET_VECTOR_MODE_SUPPORTED_P
+ #define TARGET_VECTOR_MODE_SUPPORTED_P arm_vector_mode_supported_p
++#undef TARGET_ARRAY_MODE_SUPPORTED_P
++#define TARGET_ARRAY_MODE_SUPPORTED_P arm_array_mode_supported_p
+ #undef TARGET_VECTORIZE_PREFERRED_SIMD_MODE
+ #define TARGET_VECTORIZE_PREFERRED_SIMD_MODE arm_preferred_simd_mode
++#undef TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES
++#define TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES \
++  arm_autovectorize_vector_sizes
+ 
+ #undef  TARGET_MACHINE_DEPENDENT_REORG
+ #define TARGET_MACHINE_DEPENDENT_REORG arm_reorg
+@@ -403,6 +432,8 @@
+ #define TARGET_INIT_BUILTINS  arm_init_builtins
+ #undef  TARGET_EXPAND_BUILTIN
+ #define TARGET_EXPAND_BUILTIN arm_expand_builtin
++#undef  TARGET_BUILTIN_DECL
++#define TARGET_BUILTIN_DECL arm_builtin_decl
+ 
+ #undef TARGET_INIT_LIBFUNCS
+ #define TARGET_INIT_LIBFUNCS arm_init_libfuncs
+@@ -519,6 +550,9 @@
+ #undef TARGET_HAVE_CONDITIONAL_EXECUTION
+ #define TARGET_HAVE_CONDITIONAL_EXECUTION arm_have_conditional_execution
+ 
++#undef TARGET_LEGITIMATE_CONSTANT_P
++#define TARGET_LEGITIMATE_CONSTANT_P arm_legitimate_constant_p
++
+ #undef TARGET_CANNOT_FORCE_CONST_MEM
+ #define TARGET_CANNOT_FORCE_CONST_MEM arm_cannot_force_const_mem
+ 
+@@ -579,6 +613,9 @@
+ #undef TARGET_CLASS_LIKELY_SPILLED_P
+ #define TARGET_CLASS_LIKELY_SPILLED_P arm_class_likely_spilled_p
+ 
++#undef TARGET_VECTOR_ALIGNMENT
++#define TARGET_VECTOR_ALIGNMENT arm_vector_alignment
++
+ #undef TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
+ #define TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE \
+   arm_vector_alignment_reachable
+@@ -659,12 +696,13 @@
+ #define FL_THUMB2     (1 << 16)	      /* Thumb-2.  */
+ #define FL_NOTM	      (1 << 17)	      /* Instructions not present in the 'M'
+ 					 profile.  */
+-#define FL_DIV	      (1 << 18)	      /* Hardware divide.  */
++#define FL_THUMB_DIV  (1 << 18)	      /* Hardware divide (Thumb mode).  */
+ #define FL_VFPV3      (1 << 19)       /* Vector Floating Point V3.  */
+ #define FL_NEON       (1 << 20)       /* Neon instructions.  */
+ #define FL_ARCH7EM    (1 << 21)	      /* Instructions present in the ARMv7E-M
+ 					 architecture.  */
+ #define FL_ARCH7      (1 << 22)       /* Architecture 7.  */
++#define FL_ARM_DIV    (1 << 23)	      /* Hardware divide (ARM mode).  */
+ 
+ #define FL_IWMMXT     (1 << 29)	      /* XScale v2 or "Intel Wireless MMX technology".  */
+ 
+@@ -691,8 +729,8 @@
+ #define FL_FOR_ARCH6M	(FL_FOR_ARCH6 & ~FL_NOTM)
+ #define FL_FOR_ARCH7	((FL_FOR_ARCH6T2 & ~FL_NOTM) | FL_ARCH7)
+ #define FL_FOR_ARCH7A	(FL_FOR_ARCH7 | FL_NOTM | FL_ARCH6K)
+-#define FL_FOR_ARCH7R	(FL_FOR_ARCH7A | FL_DIV)
+-#define FL_FOR_ARCH7M	(FL_FOR_ARCH7 | FL_DIV)
++#define FL_FOR_ARCH7R	(FL_FOR_ARCH7A | FL_THUMB_DIV)
++#define FL_FOR_ARCH7M	(FL_FOR_ARCH7 | FL_THUMB_DIV)
+ #define FL_FOR_ARCH7EM  (FL_FOR_ARCH7M | FL_ARCH7EM)
+ 
+ /* The bits in this mask specify which
+@@ -778,7 +816,8 @@
+ int arm_arch_thumb2;
+ 
+ /* Nonzero if chip supports integer division instruction.  */
+-int arm_arch_hwdiv;
++int arm_arch_arm_hwdiv;
++int arm_arch_thumb_hwdiv;
+ 
+ /* In case of a PRE_INC, POST_INC, PRE_DEC, POST_DEC memory reference,
+    we must report the mode of the memory reference from
+@@ -851,48 +890,117 @@
+ {
+   arm_slowmul_rtx_costs,
+   NULL,
+-  3,
+-  ARM_PREFETCH_NOT_BENEFICIAL
++  3,						/* Constant limit.  */
++  5,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  true,						/* Prefer constant pool.  */
++  arm_default_branch_cost
+ };
+ 
+ const struct tune_params arm_fastmul_tune =
+ {
+   arm_fastmul_rtx_costs,
+   NULL,
+-  1,
+-  ARM_PREFETCH_NOT_BENEFICIAL
++  1,						/* Constant limit.  */
++  5,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  true,						/* Prefer constant pool.  */
++  arm_default_branch_cost
++};
++
++/* StrongARM has early execution of branches, so a sequence that is worth
++   skipping is shorter.  Set max_insns_skipped to a lower value.  */
++
++const struct tune_params arm_strongarm_tune =
++{
++  arm_fastmul_rtx_costs,
++  NULL,
++  1,						/* Constant limit.  */
++  3,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  true,						/* Prefer constant pool.  */
++  arm_default_branch_cost
+ };
+ 
+ const struct tune_params arm_xscale_tune =
+ {
+   arm_xscale_rtx_costs,
+   xscale_sched_adjust_cost,
+-  2,
+-  ARM_PREFETCH_NOT_BENEFICIAL
++  2,						/* Constant limit.  */
++  3,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  true,						/* Prefer constant pool.  */
++  arm_default_branch_cost
+ };
+ 
+ const struct tune_params arm_9e_tune =
+ {
+   arm_9e_rtx_costs,
+   NULL,
+-  1,
+-  ARM_PREFETCH_NOT_BENEFICIAL
++  1,						/* Constant limit.  */
++  5,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  true,						/* Prefer constant pool.  */
++  arm_default_branch_cost
++};
++
++const struct tune_params arm_v6t2_tune =
++{
++  arm_9e_rtx_costs,
++  NULL,
++  1,						/* Constant limit.  */
++  5,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  false,					/* Prefer constant pool.  */
++  arm_default_branch_cost
++};
++
++/* Generic Cortex tuning.  Use more specific tunings if appropriate.  */
++const struct tune_params arm_cortex_tune =
++{
++  arm_9e_rtx_costs,
++  NULL,
++  1,						/* Constant limit.  */
++  5,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  false,					/* Prefer constant pool.  */
++  arm_default_branch_cost
++};
++
++/* Branches can be dual-issued on Cortex-A5, so conditional execution is
++   less appealing.  Set max_insns_skipped to a low value.  */
++
++const struct tune_params arm_cortex_a5_tune =
++{
++  arm_9e_rtx_costs,
++  NULL,
++  1,						/* Constant limit.  */
++  1,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  false,					/* Prefer constant pool.  */
++  arm_cortex_a5_branch_cost
+ };
+ 
+ const struct tune_params arm_cortex_a9_tune =
+ {
+   arm_9e_rtx_costs,
+   cortex_a9_sched_adjust_cost,
+-  1,
+-  ARM_PREFETCH_BENEFICIAL(4,32,32)
++  1,						/* Constant limit.  */
++  5,						/* Max cond insns.  */
++  ARM_PREFETCH_BENEFICIAL(4,32,32),
++  false,					/* Prefer constant pool.  */
++  arm_default_branch_cost
+ };
+ 
+ const struct tune_params arm_fa726te_tune =
+ {
+   arm_9e_rtx_costs,
+   fa726te_sched_adjust_cost,
+-  1,
+-  ARM_PREFETCH_NOT_BENEFICIAL
++  1,						/* Constant limit.  */
++  5,						/* Max cond insns.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  true,						/* Prefer constant pool.  */
++  arm_default_branch_cost
+ };
+ 
+ 
+@@ -1698,7 +1806,8 @@
+   arm_tune_wbuf = (tune_flags & FL_WBUF) != 0;
+   arm_tune_xscale = (tune_flags & FL_XSCALE) != 0;
+   arm_arch_iwmmxt = (insn_flags & FL_IWMMXT) != 0;
+-  arm_arch_hwdiv = (insn_flags & FL_DIV) != 0;
++  arm_arch_thumb_hwdiv = (insn_flags & FL_THUMB_DIV) != 0;
++  arm_arch_arm_hwdiv = (insn_flags & FL_ARM_DIV) != 0;
+   arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0;
+ 
+   /* If we are not using the default (ARM mode) section anchor offset
+@@ -1965,6 +2074,28 @@
+ 	fix_cm3_ldrd = 0;
+     }
+ 
++  /* Enable -munaligned-access by default for
++     - all ARMv6 architecture-based processors
++     - ARMv7-A, ARMv7-R, and ARMv7-M architecture-based processors.
++
++     Disable -munaligned-access by default for
++     - all pre-ARMv6 architecture-based processors
++     - ARMv6-M architecture-based processors.  */
++
++  if (unaligned_access == 2)
++    {
++      if (arm_arch6 && (arm_arch_notm || arm_arch7))
++	unaligned_access = 1;
++      else
++	unaligned_access = 0;
++    }
++  else if (unaligned_access == 1
++	   && !(arm_arch6 && (arm_arch_notm || arm_arch7)))
++    {
++      warning (0, "target CPU does not support unaligned accesses");
++      unaligned_access = 0;
++    }
++
+   if (TARGET_THUMB1 && flag_schedule_insns)
+     {
+       /* Don't warn since it's on by default in -O2.  */
+@@ -1978,12 +2109,7 @@
+       max_insns_skipped = 6;
+     }
+   else
+-    {
+-      /* StrongARM has early execution of branches, so a sequence
+-         that is worth skipping is shorter.  */
+-      if (arm_tune_strongarm)
+-        max_insns_skipped = 3;
+-    }
++    max_insns_skipped = current_tune->max_insns_skipped;
+ 
+   /* Hot/Cold partitioning is not currently supported, since we can't
+      handle literal pool placement in that case.  */
+@@ -2005,7 +2131,8 @@
+ 			   global_options_set.x_param_values);
+ 
+   /* ARM EABI defaults to strict volatile bitfields.  */
+-  if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0)
++  if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0
++      && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ 
+   /* Enable sw prefetching at -O3 for CPUS that have prefetch, and we have deemed
+@@ -2440,7 +2567,7 @@
+ }
+ 
+ /* Return true if I is a valid constant for the operation CODE.  */
+-static int
++int
+ const_ok_for_op (HOST_WIDE_INT i, enum rtx_code code)
+ {
+   if (const_ok_for_arm (i))
+@@ -2448,7 +2575,21 @@
+ 
+   switch (code)
+     {
++    case SET:
++      /* See if we can use movw.  */
++      if (arm_arch_thumb2 && (i & 0xffff0000) == 0)
++	return 1;
++      else
++	return 0;
++
+     case PLUS:
++      /* See if we can use addw or subw.  */
++      if (TARGET_THUMB2
++	  && ((i & 0xfffff000) == 0
++	      || ((-i) & 0xfffff000) == 0))
++	return 1;
++      /* else fall through.  */
++
+     case COMPARE:
+     case EQ:
+     case NE:
+@@ -2564,68 +2705,41 @@
+ 			   1);
+ }
+ 
+-/* Return the number of instructions required to synthesize the given
+-   constant, if we start emitting them from bit-position I.  */
+-static int
+-count_insns_for_constant (HOST_WIDE_INT remainder, int i)
+-{
+-  HOST_WIDE_INT temp1;
+-  int step_size = TARGET_ARM ? 2 : 1;
+-  int num_insns = 0;
+-
+-  gcc_assert (TARGET_ARM || i == 0);
+-
+-  do
+-    {
+-      int end;
+-
+-      if (i <= 0)
+-	i += 32;
+-      if (remainder & (((1 << step_size) - 1) << (i - step_size)))
+-	{
+-	  end = i - 8;
+-	  if (end < 0)
+-	    end += 32;
+-	  temp1 = remainder & ((0x0ff << end)
+-				    | ((i < end) ? (0xff >> (32 - end)) : 0));
+-	  remainder &= ~temp1;
+-	  num_insns++;
+-	  i -= 8 - step_size;
+-	}
+-      i -= step_size;
+-    } while (remainder);
+-  return num_insns;
+-}
+-
++/* Return a sequence of integers, in RETURN_SEQUENCE that fit into
++   ARM/THUMB2 immediates, and add up to VAL.
++   Thr function return value gives the number of insns required.  */
+ static int
+-find_best_start (unsigned HOST_WIDE_INT remainder)
++optimal_immediate_sequence (enum rtx_code code, unsigned HOST_WIDE_INT val,
++			    struct four_ints *return_sequence)
+ {
+   int best_consecutive_zeros = 0;
+   int i;
+   int best_start = 0;
++  int insns1, insns2;
++  struct four_ints tmp_sequence;
+ 
+   /* If we aren't targetting ARM, the best place to start is always at
+-     the bottom.  */
+-  if (! TARGET_ARM)
+-    return 0;
+-
+-  for (i = 0; i < 32; i += 2)
++     the bottom, otherwise look more closely.  */
++  if (TARGET_ARM)
+     {
+-      int consecutive_zeros = 0;
+-
+-      if (!(remainder & (3 << i)))
++      for (i = 0; i < 32; i += 2)
+ 	{
+-	  while ((i < 32) && !(remainder & (3 << i)))
+-	    {
+-	      consecutive_zeros += 2;
+-	      i += 2;
+-	    }
+-	  if (consecutive_zeros > best_consecutive_zeros)
++	  int consecutive_zeros = 0;
++
++	  if (!(val & (3 << i)))
+ 	    {
+-	      best_consecutive_zeros = consecutive_zeros;
+-	      best_start = i - consecutive_zeros;
++	      while ((i < 32) && !(val & (3 << i)))
++		{
++		  consecutive_zeros += 2;
++		  i += 2;
++		}
++	      if (consecutive_zeros > best_consecutive_zeros)
++		{
++		  best_consecutive_zeros = consecutive_zeros;
++		  best_start = i - consecutive_zeros;
++		}
++	      i -= 2;
+ 	    }
+-	  i -= 2;
+ 	}
+     }
+ 
+@@ -2652,13 +2766,161 @@
+      the constant starting from `best_start', and also starting from
+      zero (i.e. with bit 31 first to be output).  If `best_start' doesn't
+      yield a shorter sequence, we may as well use zero.  */
++  insns1 = optimal_immediate_sequence_1 (code, val, return_sequence, best_start);
+   if (best_start != 0
+-      && ((((unsigned HOST_WIDE_INT) 1) << best_start) < remainder)
+-      && (count_insns_for_constant (remainder, 0) <=
+-	  count_insns_for_constant (remainder, best_start)))
+-    best_start = 0;
++      && ((((unsigned HOST_WIDE_INT) 1) << best_start) < val))
++    {
++      insns2 = optimal_immediate_sequence_1 (code, val, &tmp_sequence, 0);
++      if (insns2 <= insns1)
++	{
++	  *return_sequence = tmp_sequence;
++	  insns1 = insns2;
++	}
++    }
++
++  return insns1;
++}
++
++/* As for optimal_immediate_sequence, but starting at bit-position I.  */
++static int
++optimal_immediate_sequence_1 (enum rtx_code code, unsigned HOST_WIDE_INT val,
++			     struct four_ints *return_sequence, int i)
++{
++  int remainder = val & 0xffffffff;
++  int insns = 0;
++
++  /* Try and find a way of doing the job in either two or three
++     instructions.
++     
++     In ARM mode we can use 8-bit constants, rotated to any 2-bit aligned
++     location.  We start at position I.  This may be the MSB, or
++     optimial_immediate_sequence may have positioned it at the largest block 
++     of zeros that are aligned on a 2-bit boundary. We then fill up the temps,
++     wrapping around to the top of the word when we drop off the bottom.
++     In the worst case this code should produce no more than four insns.
++
++     In Thumb2 mode, we can use 32/16-bit replicated constants, and 8-bit
++     constants, shifted to any arbitrary location.  We should always start
++     at the MSB.  */
++  do
++    {
++      int end;
++      unsigned int b1, b2, b3, b4;
++      unsigned HOST_WIDE_INT result;
++      int loc;
++
++      gcc_assert (insns < 4);
++
++      if (i <= 0)
++	i += 32;
++
++      /* First, find the next normal 12/8-bit shifted/rotated immediate.  */
++      if (remainder & ((TARGET_ARM ? (3 << (i - 2)) : (1 << (i - 1)))))
++	{
++	  loc = i;
++	  if (i <= 12 && TARGET_THUMB2 && code == PLUS)
++	    /* We can use addw/subw for the last 12 bits.  */
++	    result = remainder;
++	  else
++	    {
++	      /* Use an 8-bit shifted/rotated immediate.  */
++	      end = i - 8;
++	      if (end < 0)
++		end += 32;
++	      result = remainder & ((0x0ff << end)
++				   | ((i < end) ? (0xff >> (32 - end))
++						: 0));
++	      i -= 8;
++	    }
++	}
++      else
++	{
++	  /* Arm allows rotates by a multiple of two. Thumb-2 allows
++	     arbitrary shifts.  */
++	  i -= TARGET_ARM ? 2 : 1;
++	  continue;
++	}
++
++      /* Next, see if we can do a better job with a thumb2 replicated
++	 constant.
++       
++         We do it this way around to catch the cases like 0x01F001E0 where
++	 two 8-bit immediates would work, but a replicated constant would
++	 make it worse.
++       
++         TODO: 16-bit constants that don't clear all the bits, but still win.
++         TODO: Arithmetic splitting for set/add/sub, rather than bitwise.  */
++      if (TARGET_THUMB2)
++	{
++	  b1 = (remainder & 0xff000000) >> 24;
++	  b2 = (remainder & 0x00ff0000) >> 16;
++	  b3 = (remainder & 0x0000ff00) >> 8;
++	  b4 = remainder & 0xff;
++
++	  if (loc > 24)
++	    {
++	      /* The 8-bit immediate already found clears b1 (and maybe b2),
++		 but must leave b3 and b4 alone.  */
++
++	      /* First try to find a 32-bit replicated constant that clears
++		 almost everything.  We can assume that we can't do it in one,
++		 or else we wouldn't be here.  */
++	      unsigned int tmp = b1 & b2 & b3 & b4;
++	      unsigned int tmp2 = tmp + (tmp << 8) + (tmp << 16)
++				  + (tmp << 24);
++	      unsigned int matching_bytes = (tmp == b1) + (tmp == b2)
++					    + (tmp == b3) + (tmp == b4);
++	      if (tmp
++		  && (matching_bytes >= 3
++		      || (matching_bytes == 2
++			  && const_ok_for_op (remainder & ~tmp2, code))))
++		{
++		  /* At least 3 of the bytes match, and the fourth has at 
++		     least as many bits set, or two of the bytes match
++		     and it will only require one more insn to finish.  */
++		  result = tmp2;
++		  i = tmp != b1 ? 32
++		      : tmp != b2 ? 24
++		      : tmp != b3 ? 16
++		      : 8;
++		}
++
++	      /* Second, try to find a 16-bit replicated constant that can
++		 leave three of the bytes clear.  If b2 or b4 is already
++		 zero, then we can.  If the 8-bit from above would not
++		 clear b2 anyway, then we still win.  */
++	      else if (b1 == b3 && (!b2 || !b4
++			       || (remainder & 0x00ff0000 & ~result)))
++		{
++		  result = remainder & 0xff00ff00;
++		  i = 24;
++		}
++	    }
++	  else if (loc > 16)
++	    {
++	      /* The 8-bit immediate already found clears b2 (and maybe b3)
++		 and we don't get here unless b1 is alredy clear, but it will
++		 leave b4 unchanged.  */
++
++	      /* If we can clear b2 and b4 at once, then we win, since the
++		 8-bits couldn't possibly reach that far.  */
++	      if (b2 == b4)
++		{
++		  result = remainder & 0x00ff00ff;
++		  i = 16;
++		}
++	    }
++	}
++
++      return_sequence->i[insns++] = result;
++      remainder &= ~result;
++
++      if (code == SET || code == MINUS)
++	code = PLUS;
++    }
++  while (remainder);
+ 
+-  return best_start;
++  return insns;
+ }
+ 
+ /* Emit an instruction with the indicated PATTERN.  If COND is
+@@ -2675,7 +2937,6 @@
+ 
+ /* As above, but extra parameter GENERATE which, if clear, suppresses
+    RTL generation.  */
+-/* ??? This needs more work for thumb2.  */
+ 
+ static int
+ arm_gen_constant (enum rtx_code code, enum machine_mode mode, rtx cond,
+@@ -2687,15 +2948,15 @@
+   int final_invert = 0;
+   int can_negate_initial = 0;
+   int i;
+-  int num_bits_set = 0;
+   int set_sign_bit_copies = 0;
+   int clear_sign_bit_copies = 0;
+   int clear_zero_bit_copies = 0;
+   int set_zero_bit_copies = 0;
+-  int insns = 0;
++  int insns = 0, neg_insns, inv_insns;
+   unsigned HOST_WIDE_INT temp1, temp2;
+   unsigned HOST_WIDE_INT remainder = val & 0xffffffff;
+-  int step_size = TARGET_ARM ? 2 : 1;
++  struct four_ints *immediates;
++  struct four_ints pos_immediates, neg_immediates, inv_immediates;
+ 
+   /* Find out which operations are safe for a given CODE.  Also do a quick
+      check for degenerate cases; these can occur when DImode operations
+@@ -2704,7 +2965,6 @@
+     {
+     case SET:
+       can_invert = 1;
+-      can_negate = 1;
+       break;
+ 
+     case PLUS:
+@@ -2732,9 +2992,6 @@
+ 				gen_rtx_SET (VOIDmode, target, source));
+ 	  return 1;
+ 	}
+-
+-      if (TARGET_THUMB2)
+-	can_invert = 1;
+       break;
+ 
+     case AND:
+@@ -2776,6 +3033,7 @@
+ 					     gen_rtx_NOT (mode, source)));
+ 	  return 1;
+ 	}
++      final_invert = 1;
+       break;
+ 
+     case MINUS:
+@@ -2798,7 +3056,6 @@
+ 							    source)));
+ 	  return 1;
+ 	}
+-      can_negate = 1;
+ 
+       break;
+ 
+@@ -2807,9 +3064,7 @@
+     }
+ 
+   /* If we can do it in one insn get out quickly.  */
+-  if (const_ok_for_arm (val)
+-      || (can_negate_initial && const_ok_for_arm (-val))
+-      || (can_invert && const_ok_for_arm (~val)))
++  if (const_ok_for_op (val, code))
+     {
+       if (generate)
+ 	emit_constant_insn (cond,
+@@ -2862,15 +3117,6 @@
+   switch (code)
+     {
+     case SET:
+-      /* See if we can use movw.  */
+-      if (arm_arch_thumb2 && (remainder & 0xffff0000) == 0)
+-	{
+-	  if (generate)
+-	    emit_constant_insn (cond, gen_rtx_SET (VOIDmode, target,
+-						   GEN_INT (val)));
+-	  return 1;
+-	}
+-
+       /* See if we can do this by sign_extending a constant that is known
+ 	 to be negative.  This is a good, way of doing it, since the shift
+ 	 may well merge into a subsequent insn.  */
+@@ -3221,121 +3467,97 @@
+       break;
+     }
+ 
+-  for (i = 0; i < 32; i++)
+-    if (remainder & (1 << i))
+-      num_bits_set++;
+-
+-  if ((code == AND)
+-      || (code != IOR && can_invert && num_bits_set > 16))
+-    remainder ^= 0xffffffff;
+-  else if (code == PLUS && num_bits_set > 16)
+-    remainder = (-remainder) & 0xffffffff;
+-
+-  /* For XOR, if more than half the bits are set and there's a sequence
+-     of more than 8 consecutive ones in the pattern then we can XOR by the
+-     inverted constant and then invert the final result; this may save an
+-     instruction and might also lead to the final mvn being merged with
+-     some other operation.  */
+-  else if (code == XOR && num_bits_set > 16
+-	   && (count_insns_for_constant (remainder ^ 0xffffffff,
+-					 find_best_start
+-					 (remainder ^ 0xffffffff))
+-	       < count_insns_for_constant (remainder,
+-					   find_best_start (remainder))))
++  /* Calculate what the instruction sequences would be if we generated it
++     normally, negated, or inverted.  */
++  if (code == AND)
++    /* AND cannot be split into multiple insns, so invert and use BIC.  */
++    insns = 99;
++  else
++    insns = optimal_immediate_sequence (code, remainder, &pos_immediates);
++
++  if (can_negate)
++    neg_insns = optimal_immediate_sequence (code, (-remainder) & 0xffffffff,
++					    &neg_immediates);
++  else
++    neg_insns = 99;
++
++  if (can_invert || final_invert)
++    inv_insns = optimal_immediate_sequence (code, remainder ^ 0xffffffff,
++					    &inv_immediates);
++  else
++    inv_insns = 99;
++
++  immediates = &pos_immediates;
++
++  /* Is the negated immediate sequence more efficient?  */
++  if (neg_insns < insns && neg_insns <= inv_insns)
+     {
+-      remainder ^= 0xffffffff;
+-      final_invert = 1;
++      insns = neg_insns;
++      immediates = &neg_immediates;
++    }
++  else
++    can_negate = 0;
++
++  /* Is the inverted immediate sequence more efficient?
++     We must allow for an extra NOT instruction for XOR operations, although
++     there is some chance that the final 'mvn' will get optimized later.  */
++  if ((inv_insns + 1) < insns || (!final_invert && inv_insns < insns))
++    {
++      insns = inv_insns;
++      immediates = &inv_immediates;
+     }
+   else
+     {
+       can_invert = 0;
+-      can_negate = 0;
++      final_invert = 0;
+     }
+ 
+-  /* Now try and find a way of doing the job in either two or three
+-     instructions.
+-     We start by looking for the largest block of zeros that are aligned on
+-     a 2-bit boundary, we then fill up the temps, wrapping around to the
+-     top of the word when we drop off the bottom.
+-     In the worst case this code should produce no more than four insns.
+-     Thumb-2 constants are shifted, not rotated, so the MSB is always the
+-     best place to start.  */
+-
+-  /* ??? Use thumb2 replicated constants when the high and low halfwords are
+-     the same.  */
+-  {
+-    /* Now start emitting the insns.  */
+-    i = find_best_start (remainder);
+-    do
+-      {
+-	int end;
++  /* Now output the chosen sequence as instructions.  */
++  if (generate)
++    {
++      for (i = 0; i < insns; i++)
++	{
++	  rtx new_src, temp1_rtx;
+ 
+-	if (i <= 0)
+-	  i += 32;
+-	if (remainder & (3 << (i - 2)))
+-	  {
+-	    end = i - 8;
+-	    if (end < 0)
+-	      end += 32;
+-	    temp1 = remainder & ((0x0ff << end)
+-				 | ((i < end) ? (0xff >> (32 - end)) : 0));
+-	    remainder &= ~temp1;
++	  temp1 = immediates->i[i];
+ 
+-	    if (generate)
+-	      {
+-		rtx new_src, temp1_rtx;
++	  if (code == SET || code == MINUS)
++	    new_src = (subtargets ? gen_reg_rtx (mode) : target);
++	  else if ((final_invert || i < (insns - 1)) && subtargets)
++	    new_src = gen_reg_rtx (mode);
++	  else
++	    new_src = target;
+ 
+-		if (code == SET || code == MINUS)
+-		  {
+-		    new_src = (subtargets ? gen_reg_rtx (mode) : target);
+-		    if (can_invert && code != MINUS)
+-		      temp1 = ~temp1;
+-		  }
+-		else
+-		  {
+-		    if ((final_invert || remainder) && subtargets)
+-		      new_src = gen_reg_rtx (mode);
+-		    else
+-		      new_src = target;
+-		    if (can_invert)
+-		      temp1 = ~temp1;
+-		    else if (can_negate)
+-		      temp1 = -temp1;
+-		  }
++	  if (can_invert)
++	    temp1 = ~temp1;
++	  else if (can_negate)
++	    temp1 = -temp1;
+ 
+-		temp1 = trunc_int_for_mode (temp1, mode);
+-		temp1_rtx = GEN_INT (temp1);
++	  temp1 = trunc_int_for_mode (temp1, mode);
++	  temp1_rtx = GEN_INT (temp1);
+ 
+-		if (code == SET)
+-		  ;
+-		else if (code == MINUS)
+-		  temp1_rtx = gen_rtx_MINUS (mode, temp1_rtx, source);
+-		else
+-		  temp1_rtx = gen_rtx_fmt_ee (code, mode, source, temp1_rtx);
++	  if (code == SET)
++	    ;
++	  else if (code == MINUS)
++	    temp1_rtx = gen_rtx_MINUS (mode, temp1_rtx, source);
++	  else
++	    temp1_rtx = gen_rtx_fmt_ee (code, mode, source, temp1_rtx);
+ 
+-		emit_constant_insn (cond,
+-				    gen_rtx_SET (VOIDmode, new_src,
+-						 temp1_rtx));
+-		source = new_src;
+-	      }
++	  emit_constant_insn (cond,
++			      gen_rtx_SET (VOIDmode, new_src,
++					   temp1_rtx));
++	  source = new_src;
+ 
+-	    if (code == SET)
+-	      {
+-		can_invert = 0;
+-		code = PLUS;
+-	      }
+-	    else if (code == MINUS)
++	  if (code == SET)
++	    {
++	      can_negate = can_invert;
++	      can_invert = 0;
+ 	      code = PLUS;
+-
+-	    insns++;
+-	    i -= 8 - step_size;
+-	  }
+-	/* Arm allows rotates by a multiple of two. Thumb-2 allows arbitrary
+-	   shifts.  */
+-	i -= step_size;
+-      }
+-    while (remainder);
+-  }
++	    }
++	  else if (code == MINUS)
++	    code = PLUS;
++	}
++    }
+ 
+   if (final_invert)
+     {
+@@ -4114,6 +4336,11 @@
+ 	  (TARGET_VFP_DOUBLE || !is_double));
+ }
+ 
++/* Return true if an argument whose type is TYPE, or mode is MODE, is
++   suitable for passing or returning in VFP registers for the PCS
++   variant selected.  If it is, then *BASE_MODE is updated to contain
++   a machine mode describing each element of the argument's type and
++   *COUNT to hold the number of such elements.  */
+ static bool
+ aapcs_vfp_is_call_or_return_candidate (enum arm_pcs pcs_variant,
+ 				       enum machine_mode mode, const_tree type,
+@@ -4121,9 +4348,20 @@
+ {
+   enum machine_mode new_mode = VOIDmode;
+ 
+-  if (GET_MODE_CLASS (mode) == MODE_FLOAT
+-      || GET_MODE_CLASS (mode) == MODE_VECTOR_INT
+-      || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
++  /* If we have the type information, prefer that to working things
++     out from the mode.  */
++  if (type)
++    {
++      int ag_count = aapcs_vfp_sub_candidate (type, &new_mode);
++
++      if (ag_count > 0 && ag_count <= 4)
++	*count = ag_count;
++      else
++	return false;
++    }
++  else if (GET_MODE_CLASS (mode) == MODE_FLOAT
++	   || GET_MODE_CLASS (mode) == MODE_VECTOR_INT
++	   || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
+     {
+       *count = 1;
+       new_mode = mode;
+@@ -4133,15 +4371,6 @@
+       *count = 2;
+       new_mode = (mode == DCmode ? DFmode : SFmode);
+     }
+-  else if (type && (mode == BLKmode || TREE_CODE (type) == VECTOR_TYPE))
+-    {
+-      int ag_count = aapcs_vfp_sub_candidate (type, &new_mode);
+-
+-      if (ag_count > 0 && ag_count <= 4)
+-	*count = ag_count;
+-      else
+-	return false;
+-    }
+   else
+     return false;
+ 
+@@ -5933,7 +6162,7 @@
+    addresses based on the frame pointer or arg pointer until the
+    reload pass starts.  This is so that eliminating such addresses
+    into stack based ones won't produce impossible code.  */
+-static int
++int
+ thumb1_legitimate_address_p (enum machine_mode mode, rtx x, int strict_p)
+ {
+   /* ??? Not clear if this is right.  Experiment.  */
+@@ -6415,31 +6644,159 @@
+ 			       int opnum, int type,
+ 			       int ind_levels ATTRIBUTE_UNUSED)
+ {
++  /* We must recognize output that we have already generated ourselves.  */
++  if (GET_CODE (*p) == PLUS
++      && GET_CODE (XEXP (*p, 0)) == PLUS
++      && GET_CODE (XEXP (XEXP (*p, 0), 0)) == REG
++      && GET_CODE (XEXP (XEXP (*p, 0), 1)) == CONST_INT
++      && GET_CODE (XEXP (*p, 1)) == CONST_INT)
++    {
++      push_reload (XEXP (*p, 0), NULL_RTX, &XEXP (*p, 0), NULL,
++		   MODE_BASE_REG_CLASS (mode), GET_MODE (*p),
++		   VOIDmode, 0, 0, opnum, (enum reload_type) type);
++      return true;
++    }
++
+   if (GET_CODE (*p) == PLUS
+       && GET_CODE (XEXP (*p, 0)) == REG
+       && ARM_REGNO_OK_FOR_BASE_P (REGNO (XEXP (*p, 0)))
++      /* If the base register is equivalent to a constant, let the generic
++	 code handle it.  Otherwise we will run into problems if a future
++	 reload pass decides to rematerialize the constant.  */
++      && !reg_equiv_constant [ORIGINAL_REGNO (XEXP (*p, 0))]
+       && GET_CODE (XEXP (*p, 1)) == CONST_INT)
+     {
+       HOST_WIDE_INT val = INTVAL (XEXP (*p, 1));
+       HOST_WIDE_INT low, high;
+ 
+-      if (mode == DImode || (mode == DFmode && TARGET_SOFT_FLOAT))
+-	low = ((val & 0xf) ^ 0x8) - 0x8;
+-      else if (TARGET_MAVERICK && TARGET_HARD_FLOAT)
+-	/* Need to be careful, -256 is not a valid offset.  */
+-	low = val >= 0 ? (val & 0xff) : -((-val) & 0xff);
+-      else if (mode == SImode
+-	       || (mode == SFmode && TARGET_SOFT_FLOAT)
+-	       || ((mode == HImode || mode == QImode) && ! arm_arch4))
+-	/* Need to be careful, -4096 is not a valid offset.  */
+-	low = val >= 0 ? (val & 0xfff) : -((-val) & 0xfff);
+-      else if ((mode == HImode || mode == QImode) && arm_arch4)
+-	/* Need to be careful, -256 is not a valid offset.  */
+-	low = val >= 0 ? (val & 0xff) : -((-val) & 0xff);
+-      else if (GET_MODE_CLASS (mode) == MODE_FLOAT
+-	       && TARGET_HARD_FLOAT && TARGET_FPA)
+-	/* Need to be careful, -1024 is not a valid offset.  */
+-	low = val >= 0 ? (val & 0x3ff) : -((-val) & 0x3ff);
++      /* Detect coprocessor load/stores.  */
++      bool coproc_p = ((TARGET_HARD_FLOAT
++			&& (TARGET_VFP || TARGET_FPA || TARGET_MAVERICK)
++			&& (mode == SFmode || mode == DFmode
++			    || (mode == DImode && TARGET_MAVERICK)))
++		       || (TARGET_REALLY_IWMMXT
++			   && VALID_IWMMXT_REG_MODE (mode))
++		       || (TARGET_NEON
++			   && (VALID_NEON_DREG_MODE (mode)
++			       || VALID_NEON_QREG_MODE (mode))));
++
++      /* For some conditions, bail out when lower two bits are unaligned.  */
++      if ((val & 0x3) != 0
++	  /* Coprocessor load/store indexes are 8-bits + '00' appended.  */
++	  && (coproc_p
++	      /* For DI, and DF under soft-float: */
++	      || ((mode == DImode || mode == DFmode)
++		  /* Without ldrd, we use stm/ldm, which does not
++		     fair well with unaligned bits.  */
++		  && (! TARGET_LDRD
++		      /* Thumb-2 ldrd/strd is [-1020,+1020] in steps of 4.  */
++		      || TARGET_THUMB2))))
++	return false;
++
++      /* When breaking down a [reg+index] reload address into [(reg+high)+low],
++	 of which the (reg+high) gets turned into a reload add insn,
++	 we try to decompose the index into high/low values that can often
++	 also lead to better reload CSE.
++	 For example:
++	         ldr r0, [r2, #4100]  // Offset too large
++		 ldr r1, [r2, #4104]  // Offset too large
++
++	 is best reloaded as:
++	         add t1, r2, #4096
++		 ldr r0, [t1, #4]
++		 add t2, r2, #4096
++		 ldr r1, [t2, #8]
++
++	 which post-reload CSE can simplify in most cases to eliminate the
++	 second add instruction:
++	         add t1, r2, #4096
++		 ldr r0, [t1, #4]
++		 ldr r1, [t1, #8]
++
++	 The idea here is that we want to split out the bits of the constant
++	 as a mask, rather than as subtracting the maximum offset that the
++	 respective type of load/store used can handle.
++
++	 When encountering negative offsets, we can still utilize it even if
++	 the overall offset is positive; sometimes this may lead to an immediate
++	 that can be constructed with fewer instructions.
++	 For example:
++	         ldr r0, [r2, #0x3FFFFC]
++
++	 This is best reloaded as:
++	         add t1, r2, #0x400000
++		 ldr r0, [t1, #-4]
++
++	 The trick for spotting this for a load insn with N bits of offset
++	 (i.e. bits N-1:0) is to look at bit N; if it is set, then chose a
++	 negative offset that is going to make bit N and all the bits below
++	 it become zero in the remainder part.
++
++	 The SIGN_MAG_LOW_ADDR_BITS macro below implements this, with respect
++	 to sign-magnitude addressing (i.e. separate +- bit, or 1's complement),
++	 used in most cases of ARM load/store instructions.  */
++
++#define SIGN_MAG_LOW_ADDR_BITS(VAL, N)					\
++      (((VAL) & ((1 << (N)) - 1))					\
++       ? (((VAL) & ((1 << ((N) + 1)) - 1)) ^ (1 << (N))) - (1 << (N))	\
++       : 0)
++
++      if (coproc_p)
++	{
++	  low = SIGN_MAG_LOW_ADDR_BITS (val, 10);
++
++	  /* NEON quad-word load/stores are made of two double-word accesses,
++	     so the valid index range is reduced by 8. Treat as 9-bit range if
++	     we go over it.  */
++	  if (TARGET_NEON && VALID_NEON_QREG_MODE (mode) && low >= 1016)
++	    low = SIGN_MAG_LOW_ADDR_BITS (val, 9);
++	}
++      else if (GET_MODE_SIZE (mode) == 8)
++	{
++	  if (TARGET_LDRD)
++	    low = (TARGET_THUMB2
++		   ? SIGN_MAG_LOW_ADDR_BITS (val, 10)
++		   : SIGN_MAG_LOW_ADDR_BITS (val, 8));
++	  else
++	    /* For pre-ARMv5TE (without ldrd), we use ldm/stm(db/da/ib)
++	       to access doublewords. The supported load/store offsets are
++	       -8, -4, and 4, which we try to produce here.  */
++	    low = ((val & 0xf) ^ 0x8) - 0x8;
++	}
++      else if (GET_MODE_SIZE (mode) < 8)
++	{
++	  /* NEON element load/stores do not have an offset.  */
++	  if (TARGET_NEON_FP16 && mode == HFmode)
++	    return false;
++
++	  if (TARGET_THUMB2)
++	    {
++	      /* Thumb-2 has an asymmetrical index range of (-256,4096).
++		 Try the wider 12-bit range first, and re-try if the result
++		 is out of range.  */
++	      low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
++	      if (low < -255)
++		low = SIGN_MAG_LOW_ADDR_BITS (val, 8);
++	    }
++	  else
++	    {
++	      if (mode == HImode || mode == HFmode)
++		{
++		  if (arm_arch4)
++		    low = SIGN_MAG_LOW_ADDR_BITS (val, 8);
++		  else
++		    {
++		      /* The storehi/movhi_bytes fallbacks can use only
++			 [-4094,+4094] of the full ldrb/strb index range.  */
++		      low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
++		      if (low == 4095 || low == -4095)
++			return false;
++		    }
++		}
++	      else
++		low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
++	    }
++	}
+       else
+ 	return false;
+ 
+@@ -6552,9 +6909,47 @@
+   return for_each_rtx (&x, arm_tls_operand_p_1, NULL);
+ }
+ 
++/* Implement TARGET_LEGITIMATE_CONSTANT_P.
++
++   On the ARM, allow any integer (invalid ones are removed later by insn
++   patterns), nice doubles and symbol_refs which refer to the function's
++   constant pool XXX.
++
++   When generating pic allow anything.  */
++
++static bool
++arm_legitimate_constant_p_1 (enum machine_mode mode, rtx x)
++{
++  /* At present, we have no support for Neon structure constants, so forbid
++     them here.  It might be possible to handle simple cases like 0 and -1
++     in future.  */
++  if (TARGET_NEON && VALID_NEON_STRUCT_MODE (mode))
++    return false;
++
++  return flag_pic || !label_mentioned_p (x);
++}
++
++static bool
++thumb_legitimate_constant_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x)
++{
++  return (GET_CODE (x) == CONST_INT
++	  || GET_CODE (x) == CONST_DOUBLE
++	  || CONSTANT_ADDRESS_P (x)
++	  || flag_pic);
++}
++
++static bool
++arm_legitimate_constant_p (enum machine_mode mode, rtx x)
++{
++  return (!arm_cannot_force_const_mem (x)
++	  && (TARGET_32BIT
++	      ? arm_legitimate_constant_p_1 (mode, x)
++	      : thumb_legitimate_constant_p (mode, x)));
++}
++
+ /* Implement TARGET_CANNOT_FORCE_CONST_MEM.  */
+ 
+-bool
++static bool
+ arm_cannot_force_const_mem (rtx x)
+ {
+   rtx base, offset;
+@@ -7250,6 +7645,9 @@
+ 	*total = COSTS_N_INSNS (4);
+       return true;
+ 
++    case SET:
++      return false;
++
+     case UNSPEC:
+       /* We cost this as high as our memory costs to allow this to
+ 	 be hoisted from loops.  */
+@@ -7606,6 +8004,9 @@
+       *total = COSTS_N_INSNS (1) + 1;
+       return true;
+ 
++    case SET:
++      return false;
++
+     default:
+       if (mode != VOIDmode)
+ 	*total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
+@@ -8186,6 +8587,21 @@
+   return cost;
+ }
+ 
++static int
++arm_default_branch_cost (bool speed_p, bool predictable_p ATTRIBUTE_UNUSED)
++{
++  if (TARGET_32BIT)
++    return (TARGET_THUMB2 && !speed_p) ? 1 : 4;
++  else
++    return (optimize > 0) ? 2 : 0;
++}
++
++static int
++arm_cortex_a5_branch_cost (bool speed_p, bool predictable_p)
++{
++  return speed_p ? 0 : arm_default_branch_cost (speed_p, predictable_p);
++}
++
+ static int fp_consts_inited = 0;
+ 
+ /* Only zero is valid for VFP.  Other values are also valid for FPA.  */
+@@ -8643,6 +9059,66 @@
+   return 1;
+ }
+ 
++/* Return TRUE if rtx OP is legal for use in a VSHR or VSHL instruction.  If
++   the immediate is valid, write a constant suitable for using as an operand
++   to VSHR/VSHL to *MODCONST and the corresponding element width to
++   *ELEMENTWIDTH. ISLEFTSHIFT is for determine left or right shift,
++   because they have different limitations.  */
++
++int
++neon_immediate_valid_for_shift (rtx op, enum machine_mode mode,
++				rtx *modconst, int *elementwidth,
++				bool isleftshift)
++{
++  unsigned int innersize = GET_MODE_SIZE (GET_MODE_INNER (mode));
++  unsigned int n_elts = CONST_VECTOR_NUNITS (op), i;
++  unsigned HOST_WIDE_INT last_elt = 0;
++  unsigned HOST_WIDE_INT maxshift;
++
++  /* Split vector constant out into a byte vector.  */
++  for (i = 0; i < n_elts; i++)
++    {
++      rtx el = CONST_VECTOR_ELT (op, i);
++      unsigned HOST_WIDE_INT elpart;
++
++      if (GET_CODE (el) == CONST_INT)
++        elpart = INTVAL (el);
++      else if (GET_CODE (el) == CONST_DOUBLE)
++        return 0;
++      else
++        gcc_unreachable ();
++
++      if (i != 0 && elpart != last_elt)
++        return 0;
++
++      last_elt = elpart;
++    }
++
++  /* Shift less than element size.  */
++  maxshift = innersize * 8;
++
++  if (isleftshift)
++    {
++      /* Left shift immediate value can be from 0 to <size>-1.  */
++      if (last_elt >= maxshift)
++        return 0;
++    }
++  else
++    {
++      /* Right shift immediate value can be from 1 to <size>.  */
++      if (last_elt == 0 || last_elt > maxshift)
++	return 0;
++    }
++
++  if (elementwidth)
++    *elementwidth = innersize * 8;
++
++  if (modconst)
++    *modconst = CONST_VECTOR_ELT (op, 0);
++
++  return 1;
++}
++
+ /* Return a string suitable for output of Neon immediate logic operation
+    MNEM.  */
+ 
+@@ -8665,6 +9141,28 @@
+   return templ;
+ }
+ 
++/* Return a string suitable for output of Neon immediate shift operation
++   (VSHR or VSHL) MNEM.  */
++
++char *
++neon_output_shift_immediate (const char *mnem, char sign, rtx *op2,
++			     enum machine_mode mode, int quad,
++			     bool isleftshift)
++{
++  int width, is_valid;
++  static char templ[40];
++
++  is_valid = neon_immediate_valid_for_shift (*op2, mode, op2, &width, isleftshift);
++  gcc_assert (is_valid != 0);
++
++  if (quad)
++    sprintf (templ, "%s.%c%d\t%%q0, %%q1, %%2", mnem, sign, width);
++  else
++    sprintf (templ, "%s.%c%d\t%%P0, %%P1, %%2", mnem, sign, width);
++
++  return templ;
++}
++
+ /* Output a sequence of pairwise operations to implement a reduction.
+    NOTE: We do "too much work" here, because pairwise operations work on two
+    registers-worth of operands in one go. Unfortunately we can't exploit those
+@@ -9137,6 +9635,11 @@
+   if (GET_CODE (ind) == REG)
+     return arm_address_register_rtx_p (ind, 0);
+ 
++  /* vldm/vstm allows POST_INC (ia) and PRE_DEC (db).  */
++  if (GET_CODE (ind) == POST_INC
++      || GET_CODE (ind) == PRE_DEC)
++    return arm_address_register_rtx_p (XEXP (ind, 0), 0);
++
+   return FALSE;
+ }
+ 
+@@ -9165,11 +9668,14 @@
+       return GENERAL_REGS;
+     }
+ 
++  /* The neon move patterns handle all legitimate vector and struct
++     addresses.  */
+   if (TARGET_NEON
++      && (MEM_P (x) || GET_CODE (x) == CONST_VECTOR)
+       && (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
+-          || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
+-      && neon_vector_mem_operand (x, 0))
+-     return NO_REGS;
++	  || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT
++	  || VALID_NEON_STRUCT_MODE (mode)))
++    return NO_REGS;
+ 
+   if (arm_coproc_mem_operand (x, wb) || s_register_operand (x, mode))
+     return NO_REGS;
+@@ -9484,6 +9990,42 @@
+     }
+ }
+ 
++/* Match pair of min/max operators that can be implemented via usat/ssat.  */
++
++bool
++arm_sat_operator_match (rtx lo_bound, rtx hi_bound,
++			int *mask, bool *signed_sat)
++{
++  /* The high bound must be a power of two minus one.  */
++  int log = exact_log2 (INTVAL (hi_bound) + 1);
++  if (log == -1)
++    return false;
++
++  /* The low bound is either zero (for usat) or one less than the
++     negation of the high bound (for ssat).  */
++  if (INTVAL (lo_bound) == 0)
++    {
++      if (mask)
++        *mask = log;
++      if (signed_sat)
++        *signed_sat = false;
++
++      return true;
++    }
++
++  if (INTVAL (lo_bound) == -INTVAL (hi_bound) - 1)
++    {
++      if (mask)
++        *mask = log + 1;
++      if (signed_sat)
++        *signed_sat = true;
++
++      return true;
++    }
++
++  return false;
++}
++
+ /* Return 1 if memory locations are adjacent.  */
+ int
+ adjacent_mem_locations (rtx a, rtx b)
+@@ -10363,6 +10905,335 @@
+   return true;
+ }
+ 
++/* Copy a block of memory using plain ldr/str/ldrh/strh instructions, to permit
++   unaligned copies on processors which support unaligned semantics for those
++   instructions.  INTERLEAVE_FACTOR can be used to attempt to hide load latency
++   (using more registers) by doing e.g. load/load/store/store for a factor of 2.
++   An interleave factor of 1 (the minimum) will perform no interleaving. 
++   Load/store multiple are used for aligned addresses where possible.  */
++
++static void
++arm_block_move_unaligned_straight (rtx dstbase, rtx srcbase,
++				   HOST_WIDE_INT length,
++				   unsigned int interleave_factor)
++{
++  rtx *regs = XALLOCAVEC (rtx, interleave_factor);
++  int *regnos = XALLOCAVEC (int, interleave_factor);
++  HOST_WIDE_INT block_size_bytes = interleave_factor * UNITS_PER_WORD;
++  HOST_WIDE_INT i, j;
++  HOST_WIDE_INT remaining = length, words;
++  rtx halfword_tmp = NULL, byte_tmp = NULL;
++  rtx dst, src;
++  bool src_aligned = MEM_ALIGN (srcbase) >= BITS_PER_WORD;
++  bool dst_aligned = MEM_ALIGN (dstbase) >= BITS_PER_WORD;
++  HOST_WIDE_INT srcoffset, dstoffset;
++  HOST_WIDE_INT src_autoinc, dst_autoinc;
++  rtx mem, addr;
++  
++  gcc_assert (1 <= interleave_factor && interleave_factor <= 4);
++  
++  /* Use hard registers if we have aligned source or destination so we can use
++     load/store multiple with contiguous registers.  */
++  if (dst_aligned || src_aligned)
++    for (i = 0; i < interleave_factor; i++)
++      regs[i] = gen_rtx_REG (SImode, i);
++  else
++    for (i = 0; i < interleave_factor; i++)
++      regs[i] = gen_reg_rtx (SImode);
++
++  dst = copy_addr_to_reg (XEXP (dstbase, 0));
++  src = copy_addr_to_reg (XEXP (srcbase, 0));
++
++  srcoffset = dstoffset = 0;
++  
++  /* Calls to arm_gen_load_multiple and arm_gen_store_multiple update SRC/DST.
++     For copying the last bytes we want to subtract this offset again.  */
++  src_autoinc = dst_autoinc = 0;
++
++  for (i = 0; i < interleave_factor; i++)
++    regnos[i] = i;
++
++  /* Copy BLOCK_SIZE_BYTES chunks.  */
++
++  for (i = 0; i + block_size_bytes <= length; i += block_size_bytes)
++    {
++      /* Load words.  */
++      if (src_aligned && interleave_factor > 1)
++	{
++	  emit_insn (arm_gen_load_multiple (regnos, interleave_factor, src,
++					    TRUE, srcbase, &srcoffset));
++	  src_autoinc += UNITS_PER_WORD * interleave_factor;
++	}
++      else
++	{
++	  for (j = 0; j < interleave_factor; j++)
++	    {
++	      addr = plus_constant (src, srcoffset + j * UNITS_PER_WORD
++					 - src_autoinc);
++	      mem = adjust_automodify_address (srcbase, SImode, addr,
++					       srcoffset + j * UNITS_PER_WORD);
++	      emit_insn (gen_unaligned_loadsi (regs[j], mem));
++	    }
++	  srcoffset += block_size_bytes;
++	}
++
++      /* Store words.  */
++      if (dst_aligned && interleave_factor > 1)
++	{
++	  emit_insn (arm_gen_store_multiple (regnos, interleave_factor, dst,
++					     TRUE, dstbase, &dstoffset));
++	  dst_autoinc += UNITS_PER_WORD * interleave_factor;
++	}
++      else
++	{
++	  for (j = 0; j < interleave_factor; j++)
++	    {
++	      addr = plus_constant (dst, dstoffset + j * UNITS_PER_WORD
++					 - dst_autoinc);
++	      mem = adjust_automodify_address (dstbase, SImode, addr,
++					       dstoffset + j * UNITS_PER_WORD);
++	      emit_insn (gen_unaligned_storesi (mem, regs[j]));
++	    }
++	  dstoffset += block_size_bytes;
++	}
++
++      remaining -= block_size_bytes;
++    }
++  
++  /* Copy any whole words left (note these aren't interleaved with any
++     subsequent halfword/byte load/stores in the interests of simplicity).  */
++  
++  words = remaining / UNITS_PER_WORD;
++
++  gcc_assert (words < interleave_factor);
++  
++  if (src_aligned && words > 1)
++    {
++      emit_insn (arm_gen_load_multiple (regnos, words, src, TRUE, srcbase,
++					&srcoffset));
++      src_autoinc += UNITS_PER_WORD * words;
++    }
++  else
++    {
++      for (j = 0; j < words; j++)
++	{
++	  addr = plus_constant (src,
++				srcoffset + j * UNITS_PER_WORD - src_autoinc);
++	  mem = adjust_automodify_address (srcbase, SImode, addr,
++					   srcoffset + j * UNITS_PER_WORD);
++	  emit_insn (gen_unaligned_loadsi (regs[j], mem));
++	}
++      srcoffset += words * UNITS_PER_WORD;
++    }
++
++  if (dst_aligned && words > 1)
++    {
++      emit_insn (arm_gen_store_multiple (regnos, words, dst, TRUE, dstbase,
++					 &dstoffset));
++      dst_autoinc += words * UNITS_PER_WORD;
++    }
++  else
++    {
++      for (j = 0; j < words; j++)
++	{
++	  addr = plus_constant (dst,
++				dstoffset + j * UNITS_PER_WORD - dst_autoinc);
++	  mem = adjust_automodify_address (dstbase, SImode, addr,
++					   dstoffset + j * UNITS_PER_WORD);
++	  emit_insn (gen_unaligned_storesi (mem, regs[j]));
++	}
++      dstoffset += words * UNITS_PER_WORD;
++    }
++
++  remaining -= words * UNITS_PER_WORD;
++  
++  gcc_assert (remaining < 4);
++  
++  /* Copy a halfword if necessary.  */
++  
++  if (remaining >= 2)
++    {
++      halfword_tmp = gen_reg_rtx (SImode);
++
++      addr = plus_constant (src, srcoffset - src_autoinc);
++      mem = adjust_automodify_address (srcbase, HImode, addr, srcoffset);
++      emit_insn (gen_unaligned_loadhiu (halfword_tmp, mem));
++
++      /* Either write out immediately, or delay until we've loaded the last
++	 byte, depending on interleave factor.  */
++      if (interleave_factor == 1)
++	{
++	  addr = plus_constant (dst, dstoffset - dst_autoinc);
++	  mem = adjust_automodify_address (dstbase, HImode, addr, dstoffset);
++	  emit_insn (gen_unaligned_storehi (mem,
++		       gen_lowpart (HImode, halfword_tmp)));
++	  halfword_tmp = NULL;
++	  dstoffset += 2;
++	}
++
++      remaining -= 2;
++      srcoffset += 2;
++    }
++  
++  gcc_assert (remaining < 2);
++  
++  /* Copy last byte.  */
++  
++  if ((remaining & 1) != 0)
++    {
++      byte_tmp = gen_reg_rtx (SImode);
++
++      addr = plus_constant (src, srcoffset - src_autoinc);
++      mem = adjust_automodify_address (srcbase, QImode, addr, srcoffset);
++      emit_move_insn (gen_lowpart (QImode, byte_tmp), mem);
++
++      if (interleave_factor == 1)
++	{
++	  addr = plus_constant (dst, dstoffset - dst_autoinc);
++	  mem = adjust_automodify_address (dstbase, QImode, addr, dstoffset);
++	  emit_move_insn (mem, gen_lowpart (QImode, byte_tmp));
++	  byte_tmp = NULL;
++	  dstoffset++;
++	}
++
++      remaining--;
++      srcoffset++;
++    }
++  
++  /* Store last halfword if we haven't done so already.  */
++  
++  if (halfword_tmp)
++    {
++      addr = plus_constant (dst, dstoffset - dst_autoinc);
++      mem = adjust_automodify_address (dstbase, HImode, addr, dstoffset);
++      emit_insn (gen_unaligned_storehi (mem,
++		   gen_lowpart (HImode, halfword_tmp)));
++      dstoffset += 2;
++    }
++
++  /* Likewise for last byte.  */
++
++  if (byte_tmp)
++    {
++      addr = plus_constant (dst, dstoffset - dst_autoinc);
++      mem = adjust_automodify_address (dstbase, QImode, addr, dstoffset);
++      emit_move_insn (mem, gen_lowpart (QImode, byte_tmp));
++      dstoffset++;
++    }
++  
++  gcc_assert (remaining == 0 && srcoffset == dstoffset);
++}
++
++/* From mips_adjust_block_mem:
++
++   Helper function for doing a loop-based block operation on memory
++   reference MEM.  Each iteration of the loop will operate on LENGTH
++   bytes of MEM.
++
++   Create a new base register for use within the loop and point it to
++   the start of MEM.  Create a new memory reference that uses this
++   register.  Store them in *LOOP_REG and *LOOP_MEM respectively.  */
++
++static void
++arm_adjust_block_mem (rtx mem, HOST_WIDE_INT length, rtx *loop_reg,
++		      rtx *loop_mem)
++{
++  *loop_reg = copy_addr_to_reg (XEXP (mem, 0));
++  
++  /* Although the new mem does not refer to a known location,
++     it does keep up to LENGTH bytes of alignment.  */
++  *loop_mem = change_address (mem, BLKmode, *loop_reg);
++  set_mem_align (*loop_mem, MIN (MEM_ALIGN (mem), length * BITS_PER_UNIT));
++}
++
++/* From mips_block_move_loop:
++
++   Move LENGTH bytes from SRC to DEST using a loop that moves BYTES_PER_ITER
++   bytes at a time.  LENGTH must be at least BYTES_PER_ITER.  Assume that
++   the memory regions do not overlap.  */
++
++static void
++arm_block_move_unaligned_loop (rtx dest, rtx src, HOST_WIDE_INT length,
++			       unsigned int interleave_factor,
++			       HOST_WIDE_INT bytes_per_iter)
++{
++  rtx label, src_reg, dest_reg, final_src, test;
++  HOST_WIDE_INT leftover;
++  
++  leftover = length % bytes_per_iter;
++  length -= leftover;
++  
++  /* Create registers and memory references for use within the loop.  */
++  arm_adjust_block_mem (src, bytes_per_iter, &src_reg, &src);
++  arm_adjust_block_mem (dest, bytes_per_iter, &dest_reg, &dest);
++  
++  /* Calculate the value that SRC_REG should have after the last iteration of
++     the loop.  */
++  final_src = expand_simple_binop (Pmode, PLUS, src_reg, GEN_INT (length),
++				   0, 0, OPTAB_WIDEN);
++
++  /* Emit the start of the loop.  */
++  label = gen_label_rtx ();
++  emit_label (label);
++  
++  /* Emit the loop body.  */
++  arm_block_move_unaligned_straight (dest, src, bytes_per_iter,
++				     interleave_factor);
++
++  /* Move on to the next block.  */
++  emit_move_insn (src_reg, plus_constant (src_reg, bytes_per_iter));
++  emit_move_insn (dest_reg, plus_constant (dest_reg, bytes_per_iter));
++  
++  /* Emit the loop condition.  */
++  test = gen_rtx_NE (VOIDmode, src_reg, final_src);
++  emit_jump_insn (gen_cbranchsi4 (test, src_reg, final_src, label));
++  
++  /* Mop up any left-over bytes.  */
++  if (leftover)
++    arm_block_move_unaligned_straight (dest, src, leftover, interleave_factor);
++}
++
++/* Emit a block move when either the source or destination is unaligned (not
++   aligned to a four-byte boundary).  This may need further tuning depending on
++   core type, optimize_size setting, etc.  */
++
++static int
++arm_movmemqi_unaligned (rtx *operands)
++{
++  HOST_WIDE_INT length = INTVAL (operands[2]);
++  
++  if (optimize_size)
++    {
++      bool src_aligned = MEM_ALIGN (operands[1]) >= BITS_PER_WORD;
++      bool dst_aligned = MEM_ALIGN (operands[0]) >= BITS_PER_WORD;
++      /* Inlined memcpy using ldr/str/ldrh/strh can be quite big: try to limit
++	 size of code if optimizing for size.  We'll use ldm/stm if src_aligned
++	 or dst_aligned though: allow more interleaving in those cases since the
++	 resulting code can be smaller.  */
++      unsigned int interleave_factor = (src_aligned || dst_aligned) ? 2 : 1;
++      HOST_WIDE_INT bytes_per_iter = (src_aligned || dst_aligned) ? 8 : 4;
++      
++      if (length > 12)
++	arm_block_move_unaligned_loop (operands[0], operands[1], length,
++				       interleave_factor, bytes_per_iter);
++      else
++	arm_block_move_unaligned_straight (operands[0], operands[1], length,
++					   interleave_factor);
++    }
++  else
++    {
++      /* Note that the loop created by arm_block_move_unaligned_loop may be
++	 subject to loop unrolling, which makes tuning this condition a little
++	 redundant.  */
++      if (length > 32)
++	arm_block_move_unaligned_loop (operands[0], operands[1], length, 4, 16);
++      else
++	arm_block_move_unaligned_straight (operands[0], operands[1], length, 4);
++    }
++  
++  return 1;
++}
++
+ int
+ arm_gen_movmemqi (rtx *operands)
+ {
+@@ -10375,8 +11246,13 @@
+ 
+   if (GET_CODE (operands[2]) != CONST_INT
+       || GET_CODE (operands[3]) != CONST_INT
+-      || INTVAL (operands[2]) > 64
+-      || INTVAL (operands[3]) & 3)
++      || INTVAL (operands[2]) > 64)
++    return 0;
++
++  if (unaligned_access && (INTVAL (operands[3]) & 3) != 0)
++    return arm_movmemqi_unaligned (operands);
++
++  if (INTVAL (operands[3]) & 3)
+     return 0;
+ 
+   dstbase = operands[0];
+@@ -10804,7 +11680,7 @@
+ 	    return CC_Zmode;
+ 
+ 	  /* We can do an equality test in three Thumb instructions.  */
+-	  if (!TARGET_ARM)
++	  if (!TARGET_32BIT)
+ 	    return CC_Zmode;
+ 
+ 	  /* FALLTHROUGH */
+@@ -10816,7 +11692,7 @@
+ 	  /* DImode unsigned comparisons can be implemented by cmp +
+ 	     cmpeq without a scratch register.  Not worth doing in
+ 	     Thumb-2.  */
+-	  if (TARGET_ARM)
++	  if (TARGET_32BIT)
+ 	    return CC_CZmode;
+ 
+ 	  /* FALLTHROUGH */
+@@ -11465,6 +12341,19 @@
+   return 0;
+ }
+ 
++/* Return the maximum amount of padding that will be inserted before
++   label LABEL.  */
++
++static HOST_WIDE_INT
++get_label_padding (rtx label)
++{
++  HOST_WIDE_INT align, min_insn_size;
++
++  align = 1 << label_to_alignment (label);
++  min_insn_size = TARGET_THUMB ? 2 : 4;
++  return align > min_insn_size ? align - min_insn_size : 0;
++}
++
+ /* Move a minipool fix MP from its current location to before MAX_MP.
+    If MAX_MP is NULL, then MP doesn't need moving, but the addressing
+    constraints may need updating.  */
+@@ -12011,8 +12900,12 @@
+ 	 within range.  */
+       gcc_assert (GET_CODE (from) != BARRIER);
+ 
+-      /* Count the length of this insn.  */
+-      count += get_attr_length (from);
++      /* Count the length of this insn.  This must stay in sync with the
++	 code that pushes minipool fixes.  */
++      if (LABEL_P (from))
++	count += get_label_padding (from);
++      else
++	count += get_attr_length (from);
+ 
+       /* If there is a jump table, add its length.  */
+       tmp = is_jump_table (from);
+@@ -12432,6 +13325,11 @@
+ 	      insn = table;
+ 	    }
+ 	}
++      else if (LABEL_P (insn))
++	/* Add the worst-case padding due to alignment.  We don't add
++	   the _current_ padding because the minipool insertions
++	   themselves might change it.  */
++	address += get_label_padding (insn);
+     }
+ 
+   fix = minipool_fix_head;
+@@ -16623,7 +17521,8 @@
+       {
+ 	rtx addr;
+ 	bool postinc = FALSE;
+-	unsigned align, modesize, align_bits;
++	unsigned align, memsize, align_bits;
++	rtx memsize_rtx;
+ 
+ 	gcc_assert (GET_CODE (x) == MEM);
+ 	addr = XEXP (x, 0);
+@@ -16638,14 +17537,15 @@
+ 	   instruction (for some alignments) as an aid to the memory subsystem
+ 	   of the target.  */
+ 	align = MEM_ALIGN (x) >> 3;
+-	modesize = GET_MODE_SIZE (GET_MODE (x));
++	memsize_rtx = MEM_SIZE (x);
++	memsize = memsize_rtx ? INTVAL (memsize_rtx) : 0;
+ 	
+ 	/* Only certain alignment specifiers are supported by the hardware.  */
+-	if (modesize == 16 && (align % 32) == 0)
++	if (memsize == 16 && (align % 32) == 0)
+ 	  align_bits = 256;
+-	else if ((modesize == 8 || modesize == 16) && (align % 16) == 0)
++	else if (memsize == 16 && (align % 16) == 0)
+ 	  align_bits = 128;
+-	else if ((align % 8) == 0)
++	else if (memsize >= 8 && (align % 8) == 0)
+ 	  align_bits = 64;
+ 	else
+ 	  align_bits = 0;
+@@ -16695,6 +17595,11 @@
+       }
+       return;
+ 
++    case 'v':
++	gcc_assert (GET_CODE (x) == CONST_DOUBLE);
++	fprintf (stream, "#%d", vfp3_const_double_for_fract_bits (x));
++	return;
++
+     /* Register specifier for vld1.16/vst1.16.  Translate the S register
+        number into a D register number and element index.  */
+     case 'z':
+@@ -17054,10 +17959,10 @@
+    decremented/zeroed by arm_asm_output_opcode as the insns are output.  */
+ 
+ /* Returns the index of the ARM condition code string in
+-   `arm_condition_codes'.  COMPARISON should be an rtx like
+-   `(eq (...) (...))'.  */
+-static enum arm_cond_code
+-get_arm_condition_code (rtx comparison)
++   `arm_condition_codes', or ARM_NV if the comparison is invalid.
++   COMPARISON should be an rtx like `(eq (...) (...))'.  */
++enum arm_cond_code
++maybe_get_arm_condition_code (rtx comparison)
+ {
+   enum machine_mode mode = GET_MODE (XEXP (comparison, 0));
+   enum arm_cond_code code;
+@@ -17081,11 +17986,11 @@
+     case CC_DLTUmode: code = ARM_CC;
+ 
+     dominance:
+-      gcc_assert (comp_code == EQ || comp_code == NE);
+-
+       if (comp_code == EQ)
+ 	return ARM_INVERSE_CONDITION_CODE (code);
+-      return code;
++      if (comp_code == NE)
++	return code;
++      return ARM_NV;
+ 
+     case CC_NOOVmode:
+       switch (comp_code)
+@@ -17094,7 +17999,7 @@
+ 	case EQ: return ARM_EQ;
+ 	case GE: return ARM_PL;
+ 	case LT: return ARM_MI;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_Zmode:
+@@ -17102,7 +18007,7 @@
+ 	{
+ 	case NE: return ARM_NE;
+ 	case EQ: return ARM_EQ;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_Nmode:
+@@ -17110,7 +18015,7 @@
+ 	{
+ 	case NE: return ARM_MI;
+ 	case EQ: return ARM_PL;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CCFPEmode:
+@@ -17135,7 +18040,7 @@
+ 	  /* UNEQ and LTGT do not have a representation.  */
+ 	case UNEQ: /* Fall through.  */
+ 	case LTGT: /* Fall through.  */
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_SWPmode:
+@@ -17151,7 +18056,7 @@
+ 	case GTU: return ARM_CC;
+ 	case LEU: return ARM_CS;
+ 	case LTU: return ARM_HI;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_Cmode:
+@@ -17159,7 +18064,7 @@
+ 	{
+ 	case LTU: return ARM_CS;
+ 	case GEU: return ARM_CC;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_CZmode:
+@@ -17171,7 +18076,7 @@
+ 	case GTU: return ARM_HI;
+ 	case LEU: return ARM_LS;
+ 	case LTU: return ARM_CC;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_NCVmode:
+@@ -17181,7 +18086,7 @@
+ 	case LT: return ARM_LT;
+ 	case GEU: return ARM_CS;
+ 	case LTU: return ARM_CC;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CCmode:
+@@ -17197,13 +18102,22 @@
+ 	case GTU: return ARM_HI;
+ 	case LEU: return ARM_LS;
+ 	case LTU: return ARM_CC;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     default: gcc_unreachable ();
+     }
+ }
+ 
++/* Like maybe_get_arm_condition_code, but never return ARM_NV.  */
++static enum arm_cond_code
++get_arm_condition_code (rtx comparison)
++{
++  enum arm_cond_code code = maybe_get_arm_condition_code (comparison);
++  gcc_assert (code != ARM_NV);
++  return code;
++}
++
+ /* Tell arm_asm_output_opcode to output IT blocks for conditionally executed
+    instructions.  */
+ void
+@@ -17815,926 +18729,618 @@
+   return value;
+ }
+ 
+-#define def_mbuiltin(MASK, NAME, TYPE, CODE)				\
+-  do									\
+-    {									\
+-      if ((MASK) & insn_flags)						\
+-        add_builtin_function ((NAME), (TYPE), (CODE),			\
+-			     BUILT_IN_MD, NULL, NULL_TREE);		\
+-    }									\
+-  while (0)
++typedef enum {
++  T_V8QI,
++  T_V4HI,
++  T_V2SI,
++  T_V2SF,
++  T_DI,
++  T_V16QI,
++  T_V8HI,
++  T_V4SI,
++  T_V4SF,
++  T_V2DI,
++  T_TI,
++  T_EI,
++  T_OI,
++  T_MAX		/* Size of enum.  Keep last.  */
++} neon_builtin_type_mode;
++
++#define TYPE_MODE_BIT(X) (1 << (X))
++
++#define TB_DREG (TYPE_MODE_BIT (T_V8QI) | TYPE_MODE_BIT (T_V4HI)	\
++		 | TYPE_MODE_BIT (T_V2SI) | TYPE_MODE_BIT (T_V2SF)	\
++		 | TYPE_MODE_BIT (T_DI))
++#define TB_QREG (TYPE_MODE_BIT (T_V16QI) | TYPE_MODE_BIT (T_V8HI)	\
++		 | TYPE_MODE_BIT (T_V4SI) | TYPE_MODE_BIT (T_V4SF)	\
++		 | TYPE_MODE_BIT (T_V2DI) | TYPE_MODE_BIT (T_TI))
+ 
+-struct builtin_description
+-{
+-  const unsigned int       mask;
+-  const enum insn_code     icode;
+-  const char * const       name;
+-  const enum arm_builtins  code;
+-  const enum rtx_code      comparison;
+-  const unsigned int       flag;
+-};
++#define v8qi_UP  T_V8QI
++#define v4hi_UP  T_V4HI
++#define v2si_UP  T_V2SI
++#define v2sf_UP  T_V2SF
++#define di_UP    T_DI
++#define v16qi_UP T_V16QI
++#define v8hi_UP  T_V8HI
++#define v4si_UP  T_V4SI
++#define v4sf_UP  T_V4SF
++#define v2di_UP  T_V2DI
++#define ti_UP	 T_TI
++#define ei_UP	 T_EI
++#define oi_UP	 T_OI
+ 
+-static const struct builtin_description bdesc_2arg[] =
+-{
+-#define IWMMXT_BUILTIN(code, string, builtin) \
+-  { FL_IWMMXT, CODE_FOR_##code, "__builtin_arm_" string, \
+-    ARM_BUILTIN_##builtin, UNKNOWN, 0 },
++#define UP(X) X##_UP
+ 
+-  IWMMXT_BUILTIN (addv8qi3, "waddb", WADDB)
+-  IWMMXT_BUILTIN (addv4hi3, "waddh", WADDH)
+-  IWMMXT_BUILTIN (addv2si3, "waddw", WADDW)
+-  IWMMXT_BUILTIN (subv8qi3, "wsubb", WSUBB)
+-  IWMMXT_BUILTIN (subv4hi3, "wsubh", WSUBH)
+-  IWMMXT_BUILTIN (subv2si3, "wsubw", WSUBW)
+-  IWMMXT_BUILTIN (ssaddv8qi3, "waddbss", WADDSSB)
+-  IWMMXT_BUILTIN (ssaddv4hi3, "waddhss", WADDSSH)
+-  IWMMXT_BUILTIN (ssaddv2si3, "waddwss", WADDSSW)
+-  IWMMXT_BUILTIN (sssubv8qi3, "wsubbss", WSUBSSB)
+-  IWMMXT_BUILTIN (sssubv4hi3, "wsubhss", WSUBSSH)
+-  IWMMXT_BUILTIN (sssubv2si3, "wsubwss", WSUBSSW)
+-  IWMMXT_BUILTIN (usaddv8qi3, "waddbus", WADDUSB)
+-  IWMMXT_BUILTIN (usaddv4hi3, "waddhus", WADDUSH)
+-  IWMMXT_BUILTIN (usaddv2si3, "waddwus", WADDUSW)
+-  IWMMXT_BUILTIN (ussubv8qi3, "wsubbus", WSUBUSB)
+-  IWMMXT_BUILTIN (ussubv4hi3, "wsubhus", WSUBUSH)
+-  IWMMXT_BUILTIN (ussubv2si3, "wsubwus", WSUBUSW)
+-  IWMMXT_BUILTIN (mulv4hi3, "wmulul", WMULUL)
+-  IWMMXT_BUILTIN (smulv4hi3_highpart, "wmulsm", WMULSM)
+-  IWMMXT_BUILTIN (umulv4hi3_highpart, "wmulum", WMULUM)
+-  IWMMXT_BUILTIN (eqv8qi3, "wcmpeqb", WCMPEQB)
+-  IWMMXT_BUILTIN (eqv4hi3, "wcmpeqh", WCMPEQH)
+-  IWMMXT_BUILTIN (eqv2si3, "wcmpeqw", WCMPEQW)
+-  IWMMXT_BUILTIN (gtuv8qi3, "wcmpgtub", WCMPGTUB)
+-  IWMMXT_BUILTIN (gtuv4hi3, "wcmpgtuh", WCMPGTUH)
+-  IWMMXT_BUILTIN (gtuv2si3, "wcmpgtuw", WCMPGTUW)
+-  IWMMXT_BUILTIN (gtv8qi3, "wcmpgtsb", WCMPGTSB)
+-  IWMMXT_BUILTIN (gtv4hi3, "wcmpgtsh", WCMPGTSH)
+-  IWMMXT_BUILTIN (gtv2si3, "wcmpgtsw", WCMPGTSW)
+-  IWMMXT_BUILTIN (umaxv8qi3, "wmaxub", WMAXUB)
+-  IWMMXT_BUILTIN (smaxv8qi3, "wmaxsb", WMAXSB)
+-  IWMMXT_BUILTIN (umaxv4hi3, "wmaxuh", WMAXUH)
+-  IWMMXT_BUILTIN (smaxv4hi3, "wmaxsh", WMAXSH)
+-  IWMMXT_BUILTIN (umaxv2si3, "wmaxuw", WMAXUW)
+-  IWMMXT_BUILTIN (smaxv2si3, "wmaxsw", WMAXSW)
+-  IWMMXT_BUILTIN (uminv8qi3, "wminub", WMINUB)
+-  IWMMXT_BUILTIN (sminv8qi3, "wminsb", WMINSB)
+-  IWMMXT_BUILTIN (uminv4hi3, "wminuh", WMINUH)
+-  IWMMXT_BUILTIN (sminv4hi3, "wminsh", WMINSH)
+-  IWMMXT_BUILTIN (uminv2si3, "wminuw", WMINUW)
+-  IWMMXT_BUILTIN (sminv2si3, "wminsw", WMINSW)
+-  IWMMXT_BUILTIN (iwmmxt_anddi3, "wand", WAND)
+-  IWMMXT_BUILTIN (iwmmxt_nanddi3, "wandn", WANDN)
+-  IWMMXT_BUILTIN (iwmmxt_iordi3, "wor", WOR)
+-  IWMMXT_BUILTIN (iwmmxt_xordi3, "wxor", WXOR)
+-  IWMMXT_BUILTIN (iwmmxt_uavgv8qi3, "wavg2b", WAVG2B)
+-  IWMMXT_BUILTIN (iwmmxt_uavgv4hi3, "wavg2h", WAVG2H)
+-  IWMMXT_BUILTIN (iwmmxt_uavgrndv8qi3, "wavg2br", WAVG2BR)
+-  IWMMXT_BUILTIN (iwmmxt_uavgrndv4hi3, "wavg2hr", WAVG2HR)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckilb, "wunpckilb", WUNPCKILB)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckilh, "wunpckilh", WUNPCKILH)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckilw, "wunpckilw", WUNPCKILW)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckihb, "wunpckihb", WUNPCKIHB)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckihh, "wunpckihh", WUNPCKIHH)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckihw, "wunpckihw", WUNPCKIHW)
+-  IWMMXT_BUILTIN (iwmmxt_wmadds, "wmadds", WMADDS)
+-  IWMMXT_BUILTIN (iwmmxt_wmaddu, "wmaddu", WMADDU)
++typedef enum {
++  NEON_BINOP,
++  NEON_TERNOP,
++  NEON_UNOP,
++  NEON_GETLANE,
++  NEON_SETLANE,
++  NEON_CREATE,
++  NEON_DUP,
++  NEON_DUPLANE,
++  NEON_COMBINE,
++  NEON_SPLIT,
++  NEON_LANEMUL,
++  NEON_LANEMULL,
++  NEON_LANEMULH,
++  NEON_LANEMAC,
++  NEON_SCALARMUL,
++  NEON_SCALARMULL,
++  NEON_SCALARMULH,
++  NEON_SCALARMAC,
++  NEON_CONVERT,
++  NEON_FIXCONV,
++  NEON_SELECT,
++  NEON_RESULTPAIR,
++  NEON_REINTERP,
++  NEON_VTBL,
++  NEON_VTBX,
++  NEON_LOAD1,
++  NEON_LOAD1LANE,
++  NEON_STORE1,
++  NEON_STORE1LANE,
++  NEON_LOADSTRUCT,
++  NEON_LOADSTRUCTLANE,
++  NEON_STORESTRUCT,
++  NEON_STORESTRUCTLANE,
++  NEON_LOGICBINOP,
++  NEON_SHIFTINSERT,
++  NEON_SHIFTIMM,
++  NEON_SHIFTACC
++} neon_itype;
+ 
+-#define IWMMXT_BUILTIN2(code, builtin) \
+-  { FL_IWMMXT, CODE_FOR_##code, NULL, ARM_BUILTIN_##builtin, UNKNOWN, 0 },
++typedef struct {
++  const char *name;
++  const neon_itype itype;
++  const neon_builtin_type_mode mode;
++  const enum insn_code code;
++  unsigned int fcode;
++} neon_builtin_datum;
+ 
+-  IWMMXT_BUILTIN2 (iwmmxt_wpackhss, WPACKHSS)
+-  IWMMXT_BUILTIN2 (iwmmxt_wpackwss, WPACKWSS)
+-  IWMMXT_BUILTIN2 (iwmmxt_wpackdss, WPACKDSS)
+-  IWMMXT_BUILTIN2 (iwmmxt_wpackhus, WPACKHUS)
+-  IWMMXT_BUILTIN2 (iwmmxt_wpackwus, WPACKWUS)
+-  IWMMXT_BUILTIN2 (iwmmxt_wpackdus, WPACKDUS)
+-  IWMMXT_BUILTIN2 (ashlv4hi3_di,    WSLLH)
+-  IWMMXT_BUILTIN2 (ashlv4hi3_iwmmxt, WSLLHI)
+-  IWMMXT_BUILTIN2 (ashlv2si3_di,    WSLLW)
+-  IWMMXT_BUILTIN2 (ashlv2si3_iwmmxt, WSLLWI)
+-  IWMMXT_BUILTIN2 (ashldi3_di,      WSLLD)
+-  IWMMXT_BUILTIN2 (ashldi3_iwmmxt,  WSLLDI)
+-  IWMMXT_BUILTIN2 (lshrv4hi3_di,    WSRLH)
+-  IWMMXT_BUILTIN2 (lshrv4hi3_iwmmxt, WSRLHI)
+-  IWMMXT_BUILTIN2 (lshrv2si3_di,    WSRLW)
+-  IWMMXT_BUILTIN2 (lshrv2si3_iwmmxt, WSRLWI)
+-  IWMMXT_BUILTIN2 (lshrdi3_di,      WSRLD)
+-  IWMMXT_BUILTIN2 (lshrdi3_iwmmxt,  WSRLDI)
+-  IWMMXT_BUILTIN2 (ashrv4hi3_di,    WSRAH)
+-  IWMMXT_BUILTIN2 (ashrv4hi3_iwmmxt, WSRAHI)
+-  IWMMXT_BUILTIN2 (ashrv2si3_di,    WSRAW)
+-  IWMMXT_BUILTIN2 (ashrv2si3_iwmmxt, WSRAWI)
+-  IWMMXT_BUILTIN2 (ashrdi3_di,      WSRAD)
+-  IWMMXT_BUILTIN2 (ashrdi3_iwmmxt,  WSRADI)
+-  IWMMXT_BUILTIN2 (rorv4hi3_di,     WRORH)
+-  IWMMXT_BUILTIN2 (rorv4hi3,        WRORHI)
+-  IWMMXT_BUILTIN2 (rorv2si3_di,     WRORW)
+-  IWMMXT_BUILTIN2 (rorv2si3,        WRORWI)
+-  IWMMXT_BUILTIN2 (rordi3_di,       WRORD)
+-  IWMMXT_BUILTIN2 (rordi3,          WRORDI)
+-  IWMMXT_BUILTIN2 (iwmmxt_wmacuz,   WMACUZ)
+-  IWMMXT_BUILTIN2 (iwmmxt_wmacsz,   WMACSZ)
+-};
++#define CF(N,X) CODE_FOR_neon_##N##X
+ 
+-static const struct builtin_description bdesc_1arg[] =
++#define VAR1(T, N, A) \
++  {#N, NEON_##T, UP (A), CF (N, A), 0}
++#define VAR2(T, N, A, B) \
++  VAR1 (T, N, A), \
++  {#N, NEON_##T, UP (B), CF (N, B), 0}
++#define VAR3(T, N, A, B, C) \
++  VAR2 (T, N, A, B), \
++  {#N, NEON_##T, UP (C), CF (N, C), 0}
++#define VAR4(T, N, A, B, C, D) \
++  VAR3 (T, N, A, B, C), \
++  {#N, NEON_##T, UP (D), CF (N, D), 0}
++#define VAR5(T, N, A, B, C, D, E) \
++  VAR4 (T, N, A, B, C, D), \
++  {#N, NEON_##T, UP (E), CF (N, E), 0}
++#define VAR6(T, N, A, B, C, D, E, F) \
++  VAR5 (T, N, A, B, C, D, E), \
++  {#N, NEON_##T, UP (F), CF (N, F), 0}
++#define VAR7(T, N, A, B, C, D, E, F, G) \
++  VAR6 (T, N, A, B, C, D, E, F), \
++  {#N, NEON_##T, UP (G), CF (N, G), 0}
++#define VAR8(T, N, A, B, C, D, E, F, G, H) \
++  VAR7 (T, N, A, B, C, D, E, F, G), \
++  {#N, NEON_##T, UP (H), CF (N, H), 0}
++#define VAR9(T, N, A, B, C, D, E, F, G, H, I) \
++  VAR8 (T, N, A, B, C, D, E, F, G, H), \
++  {#N, NEON_##T, UP (I), CF (N, I), 0}
++#define VAR10(T, N, A, B, C, D, E, F, G, H, I, J) \
++  VAR9 (T, N, A, B, C, D, E, F, G, H, I), \
++  {#N, NEON_##T, UP (J), CF (N, J), 0}
++
++/* The mode entries in the following table correspond to the "key" type of the
++   instruction variant, i.e. equivalent to that which would be specified after
++   the assembler mnemonic, which usually refers to the last vector operand.
++   (Signed/unsigned/polynomial types are not differentiated between though, and
++   are all mapped onto the same mode for a given element size.) The modes
++   listed per instruction should be the same as those defined for that
++   instruction's pattern in neon.md.  */
++
++static neon_builtin_datum neon_builtin_data[] =
+ {
+-  IWMMXT_BUILTIN (iwmmxt_tmovmskb, "tmovmskb", TMOVMSKB)
+-  IWMMXT_BUILTIN (iwmmxt_tmovmskh, "tmovmskh", TMOVMSKH)
+-  IWMMXT_BUILTIN (iwmmxt_tmovmskw, "tmovmskw", TMOVMSKW)
+-  IWMMXT_BUILTIN (iwmmxt_waccb, "waccb", WACCB)
+-  IWMMXT_BUILTIN (iwmmxt_wacch, "wacch", WACCH)
+-  IWMMXT_BUILTIN (iwmmxt_waccw, "waccw", WACCW)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckehub, "wunpckehub", WUNPCKEHUB)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckehuh, "wunpckehuh", WUNPCKEHUH)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckehuw, "wunpckehuw", WUNPCKEHUW)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckehsb, "wunpckehsb", WUNPCKEHSB)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckehsh, "wunpckehsh", WUNPCKEHSH)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckehsw, "wunpckehsw", WUNPCKEHSW)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckelub, "wunpckelub", WUNPCKELUB)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckeluh, "wunpckeluh", WUNPCKELUH)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckeluw, "wunpckeluw", WUNPCKELUW)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckelsb, "wunpckelsb", WUNPCKELSB)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckelsh, "wunpckelsh", WUNPCKELSH)
+-  IWMMXT_BUILTIN (iwmmxt_wunpckelsw, "wunpckelsw", WUNPCKELSW)
++  VAR10 (BINOP, vadd,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR3 (BINOP, vaddl, v8qi, v4hi, v2si),
++  VAR3 (BINOP, vaddw, v8qi, v4hi, v2si),
++  VAR6 (BINOP, vhadd, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR8 (BINOP, vqadd, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR3 (BINOP, vaddhn, v8hi, v4si, v2di),
++  VAR8 (BINOP, vmul, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR8 (TERNOP, vmla, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR3 (TERNOP, vmlal, v8qi, v4hi, v2si),
++  VAR8 (TERNOP, vmls, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR3 (TERNOP, vmlsl, v8qi, v4hi, v2si),
++  VAR4 (BINOP, vqdmulh, v4hi, v2si, v8hi, v4si),
++  VAR2 (TERNOP, vqdmlal, v4hi, v2si),
++  VAR2 (TERNOP, vqdmlsl, v4hi, v2si),
++  VAR3 (BINOP, vmull, v8qi, v4hi, v2si),
++  VAR2 (SCALARMULL, vmull_n, v4hi, v2si),
++  VAR2 (LANEMULL, vmull_lane, v4hi, v2si),
++  VAR2 (SCALARMULL, vqdmull_n, v4hi, v2si),
++  VAR2 (LANEMULL, vqdmull_lane, v4hi, v2si),
++  VAR4 (SCALARMULH, vqdmulh_n, v4hi, v2si, v8hi, v4si),
++  VAR4 (LANEMULH, vqdmulh_lane, v4hi, v2si, v8hi, v4si),
++  VAR2 (BINOP, vqdmull, v4hi, v2si),
++  VAR8 (BINOP, vshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR8 (BINOP, vqshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR8 (SHIFTIMM, vshr_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR3 (SHIFTIMM, vshrn_n, v8hi, v4si, v2di),
++  VAR3 (SHIFTIMM, vqshrn_n, v8hi, v4si, v2di),
++  VAR3 (SHIFTIMM, vqshrun_n, v8hi, v4si, v2di),
++  VAR8 (SHIFTIMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR8 (SHIFTIMM, vqshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR8 (SHIFTIMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR3 (SHIFTIMM, vshll_n, v8qi, v4hi, v2si),
++  VAR8 (SHIFTACC, vsra_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR10 (BINOP, vsub,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR3 (BINOP, vsubl, v8qi, v4hi, v2si),
++  VAR3 (BINOP, vsubw, v8qi, v4hi, v2si),
++  VAR8 (BINOP, vqsub, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR6 (BINOP, vhsub, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR3 (BINOP, vsubhn, v8hi, v4si, v2di),
++  VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR2 (BINOP, vcage, v2sf, v4sf),
++  VAR2 (BINOP, vcagt, v2sf, v4sf),
++  VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR8 (BINOP, vabd, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR3 (BINOP, vabdl, v8qi, v4hi, v2si),
++  VAR6 (TERNOP, vaba, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR3 (TERNOP, vabal, v8qi, v4hi, v2si),
++  VAR8 (BINOP, vmax, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR8 (BINOP, vmin, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR4 (BINOP, vpadd, v8qi, v4hi, v2si, v2sf),
++  VAR6 (UNOP, vpaddl, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR6 (BINOP, vpadal, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR4 (BINOP, vpmax, v8qi, v4hi, v2si, v2sf),
++  VAR4 (BINOP, vpmin, v8qi, v4hi, v2si, v2sf),
++  VAR2 (BINOP, vrecps, v2sf, v4sf),
++  VAR2 (BINOP, vrsqrts, v2sf, v4sf),
++  VAR8 (SHIFTINSERT, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR8 (SHIFTINSERT, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
++  VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  VAR2 (UNOP, vcnt, v8qi, v16qi),
++  VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf),
++  VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf),
++  VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
++  /* FIXME: vget_lane supports more variants than this!  */
++  VAR10 (GETLANE, vget_lane,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (SETLANE, vset_lane,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR5 (CREATE, vcreate, v8qi, v4hi, v2si, v2sf, di),
++  VAR10 (DUP, vdup_n,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (DUPLANE, vdup_lane,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR5 (COMBINE, vcombine, v8qi, v4hi, v2si, v2sf, di),
++  VAR5 (SPLIT, vget_high, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR5 (SPLIT, vget_low, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR3 (UNOP, vmovn, v8hi, v4si, v2di),
++  VAR3 (UNOP, vqmovn, v8hi, v4si, v2di),
++  VAR3 (UNOP, vqmovun, v8hi, v4si, v2di),
++  VAR3 (UNOP, vmovl, v8qi, v4hi, v2si),
++  VAR6 (LANEMUL, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR6 (LANEMAC, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR2 (LANEMAC, vmlal_lane, v4hi, v2si),
++  VAR2 (LANEMAC, vqdmlal_lane, v4hi, v2si),
++  VAR6 (LANEMAC, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR2 (LANEMAC, vmlsl_lane, v4hi, v2si),
++  VAR2 (LANEMAC, vqdmlsl_lane, v4hi, v2si),
++  VAR6 (SCALARMUL, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR6 (SCALARMAC, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR2 (SCALARMAC, vmlal_n, v4hi, v2si),
++  VAR2 (SCALARMAC, vqdmlal_n, v4hi, v2si),
++  VAR6 (SCALARMAC, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR2 (SCALARMAC, vmlsl_n, v4hi, v2si),
++  VAR2 (SCALARMAC, vqdmlsl_n, v4hi, v2si),
++  VAR10 (BINOP, vext,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR4 (UNOP, vrev32, v8qi, v4hi, v16qi, v8hi),
++  VAR2 (UNOP, vrev16, v8qi, v16qi),
++  VAR4 (CONVERT, vcvt, v2si, v2sf, v4si, v4sf),
++  VAR4 (FIXCONV, vcvt_n, v2si, v2sf, v4si, v4sf),
++  VAR10 (SELECT, vbsl,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR1 (VTBL, vtbl1, v8qi),
++  VAR1 (VTBL, vtbl2, v8qi),
++  VAR1 (VTBL, vtbl3, v8qi),
++  VAR1 (VTBL, vtbl4, v8qi),
++  VAR1 (VTBX, vtbx1, v8qi),
++  VAR1 (VTBX, vtbx2, v8qi),
++  VAR1 (VTBX, vtbx3, v8qi),
++  VAR1 (VTBX, vtbx4, v8qi),
++  VAR8 (RESULTPAIR, vtrn, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR8 (RESULTPAIR, vzip, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR8 (RESULTPAIR, vuzp, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
++  VAR5 (REINTERP, vreinterpretv8qi, v8qi, v4hi, v2si, v2sf, di),
++  VAR5 (REINTERP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di),
++  VAR5 (REINTERP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di),
++  VAR5 (REINTERP, vreinterpretv2sf, v8qi, v4hi, v2si, v2sf, di),
++  VAR5 (REINTERP, vreinterpretdi, v8qi, v4hi, v2si, v2sf, di),
++  VAR5 (REINTERP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR5 (REINTERP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR5 (REINTERP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR5 (REINTERP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR5 (REINTERP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (LOAD1, vld1,
++         v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (LOAD1LANE, vld1_lane,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (LOAD1, vld1_dup,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (STORE1, vst1,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (STORE1LANE, vst1_lane,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR9 (LOADSTRUCT,
++	vld2, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
++  VAR7 (LOADSTRUCTLANE, vld2_lane,
++	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR5 (LOADSTRUCT, vld2_dup, v8qi, v4hi, v2si, v2sf, di),
++  VAR9 (STORESTRUCT, vst2,
++	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
++  VAR7 (STORESTRUCTLANE, vst2_lane,
++	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR9 (LOADSTRUCT,
++	vld3, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
++  VAR7 (LOADSTRUCTLANE, vld3_lane,
++	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR5 (LOADSTRUCT, vld3_dup, v8qi, v4hi, v2si, v2sf, di),
++  VAR9 (STORESTRUCT, vst3,
++	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
++  VAR7 (STORESTRUCTLANE, vst3_lane,
++	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR9 (LOADSTRUCT, vld4,
++	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
++  VAR7 (LOADSTRUCTLANE, vld4_lane,
++	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR5 (LOADSTRUCT, vld4_dup, v8qi, v4hi, v2si, v2sf, di),
++  VAR9 (STORESTRUCT, vst4,
++	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
++  VAR7 (STORESTRUCTLANE, vst4_lane,
++	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
++  VAR10 (LOGICBINOP, vand,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (LOGICBINOP, vorr,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (BINOP, veor,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (LOGICBINOP, vbic,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
++  VAR10 (LOGICBINOP, vorn,
++	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
++};
++
++#undef CF
++#undef VAR1
++#undef VAR2
++#undef VAR3
++#undef VAR4
++#undef VAR5
++#undef VAR6
++#undef VAR7
++#undef VAR8
++#undef VAR9
++#undef VAR10
++
++/* Neon defines builtins from ARM_BUILTIN_MAX upwards, though they don't have
++   symbolic names defined here (which would require too much duplication).
++   FIXME?  */
++enum arm_builtins
++{
++  ARM_BUILTIN_GETWCX,
++  ARM_BUILTIN_SETWCX,
++
++  ARM_BUILTIN_WZERO,
++
++  ARM_BUILTIN_WAVG2BR,
++  ARM_BUILTIN_WAVG2HR,
++  ARM_BUILTIN_WAVG2B,
++  ARM_BUILTIN_WAVG2H,
++
++  ARM_BUILTIN_WACCB,
++  ARM_BUILTIN_WACCH,
++  ARM_BUILTIN_WACCW,
++
++  ARM_BUILTIN_WMACS,
++  ARM_BUILTIN_WMACSZ,
++  ARM_BUILTIN_WMACU,
++  ARM_BUILTIN_WMACUZ,
++
++  ARM_BUILTIN_WSADB,
++  ARM_BUILTIN_WSADBZ,
++  ARM_BUILTIN_WSADH,
++  ARM_BUILTIN_WSADHZ,
++
++  ARM_BUILTIN_WALIGN,
++
++  ARM_BUILTIN_TMIA,
++  ARM_BUILTIN_TMIAPH,
++  ARM_BUILTIN_TMIABB,
++  ARM_BUILTIN_TMIABT,
++  ARM_BUILTIN_TMIATB,
++  ARM_BUILTIN_TMIATT,
++
++  ARM_BUILTIN_TMOVMSKB,
++  ARM_BUILTIN_TMOVMSKH,
++  ARM_BUILTIN_TMOVMSKW,
++
++  ARM_BUILTIN_TBCSTB,
++  ARM_BUILTIN_TBCSTH,
++  ARM_BUILTIN_TBCSTW,
++
++  ARM_BUILTIN_WMADDS,
++  ARM_BUILTIN_WMADDU,
++
++  ARM_BUILTIN_WPACKHSS,
++  ARM_BUILTIN_WPACKWSS,
++  ARM_BUILTIN_WPACKDSS,
++  ARM_BUILTIN_WPACKHUS,
++  ARM_BUILTIN_WPACKWUS,
++  ARM_BUILTIN_WPACKDUS,
++
++  ARM_BUILTIN_WADDB,
++  ARM_BUILTIN_WADDH,
++  ARM_BUILTIN_WADDW,
++  ARM_BUILTIN_WADDSSB,
++  ARM_BUILTIN_WADDSSH,
++  ARM_BUILTIN_WADDSSW,
++  ARM_BUILTIN_WADDUSB,
++  ARM_BUILTIN_WADDUSH,
++  ARM_BUILTIN_WADDUSW,
++  ARM_BUILTIN_WSUBB,
++  ARM_BUILTIN_WSUBH,
++  ARM_BUILTIN_WSUBW,
++  ARM_BUILTIN_WSUBSSB,
++  ARM_BUILTIN_WSUBSSH,
++  ARM_BUILTIN_WSUBSSW,
++  ARM_BUILTIN_WSUBUSB,
++  ARM_BUILTIN_WSUBUSH,
++  ARM_BUILTIN_WSUBUSW,
++
++  ARM_BUILTIN_WAND,
++  ARM_BUILTIN_WANDN,
++  ARM_BUILTIN_WOR,
++  ARM_BUILTIN_WXOR,
++
++  ARM_BUILTIN_WCMPEQB,
++  ARM_BUILTIN_WCMPEQH,
++  ARM_BUILTIN_WCMPEQW,
++  ARM_BUILTIN_WCMPGTUB,
++  ARM_BUILTIN_WCMPGTUH,
++  ARM_BUILTIN_WCMPGTUW,
++  ARM_BUILTIN_WCMPGTSB,
++  ARM_BUILTIN_WCMPGTSH,
++  ARM_BUILTIN_WCMPGTSW,
++
++  ARM_BUILTIN_TEXTRMSB,
++  ARM_BUILTIN_TEXTRMSH,
++  ARM_BUILTIN_TEXTRMSW,
++  ARM_BUILTIN_TEXTRMUB,
++  ARM_BUILTIN_TEXTRMUH,
++  ARM_BUILTIN_TEXTRMUW,
++  ARM_BUILTIN_TINSRB,
++  ARM_BUILTIN_TINSRH,
++  ARM_BUILTIN_TINSRW,
++
++  ARM_BUILTIN_WMAXSW,
++  ARM_BUILTIN_WMAXSH,
++  ARM_BUILTIN_WMAXSB,
++  ARM_BUILTIN_WMAXUW,
++  ARM_BUILTIN_WMAXUH,
++  ARM_BUILTIN_WMAXUB,
++  ARM_BUILTIN_WMINSW,
++  ARM_BUILTIN_WMINSH,
++  ARM_BUILTIN_WMINSB,
++  ARM_BUILTIN_WMINUW,
++  ARM_BUILTIN_WMINUH,
++  ARM_BUILTIN_WMINUB,
++
++  ARM_BUILTIN_WMULUM,
++  ARM_BUILTIN_WMULSM,
++  ARM_BUILTIN_WMULUL,
++
++  ARM_BUILTIN_PSADBH,
++  ARM_BUILTIN_WSHUFH,
++
++  ARM_BUILTIN_WSLLH,
++  ARM_BUILTIN_WSLLW,
++  ARM_BUILTIN_WSLLD,
++  ARM_BUILTIN_WSRAH,
++  ARM_BUILTIN_WSRAW,
++  ARM_BUILTIN_WSRAD,
++  ARM_BUILTIN_WSRLH,
++  ARM_BUILTIN_WSRLW,
++  ARM_BUILTIN_WSRLD,
++  ARM_BUILTIN_WRORH,
++  ARM_BUILTIN_WRORW,
++  ARM_BUILTIN_WRORD,
++  ARM_BUILTIN_WSLLHI,
++  ARM_BUILTIN_WSLLWI,
++  ARM_BUILTIN_WSLLDI,
++  ARM_BUILTIN_WSRAHI,
++  ARM_BUILTIN_WSRAWI,
++  ARM_BUILTIN_WSRADI,
++  ARM_BUILTIN_WSRLHI,
++  ARM_BUILTIN_WSRLWI,
++  ARM_BUILTIN_WSRLDI,
++  ARM_BUILTIN_WRORHI,
++  ARM_BUILTIN_WRORWI,
++  ARM_BUILTIN_WRORDI,
++
++  ARM_BUILTIN_WUNPCKIHB,
++  ARM_BUILTIN_WUNPCKIHH,
++  ARM_BUILTIN_WUNPCKIHW,
++  ARM_BUILTIN_WUNPCKILB,
++  ARM_BUILTIN_WUNPCKILH,
++  ARM_BUILTIN_WUNPCKILW,
++
++  ARM_BUILTIN_WUNPCKEHSB,
++  ARM_BUILTIN_WUNPCKEHSH,
++  ARM_BUILTIN_WUNPCKEHSW,
++  ARM_BUILTIN_WUNPCKEHUB,
++  ARM_BUILTIN_WUNPCKEHUH,
++  ARM_BUILTIN_WUNPCKEHUW,
++  ARM_BUILTIN_WUNPCKELSB,
++  ARM_BUILTIN_WUNPCKELSH,
++  ARM_BUILTIN_WUNPCKELSW,
++  ARM_BUILTIN_WUNPCKELUB,
++  ARM_BUILTIN_WUNPCKELUH,
++  ARM_BUILTIN_WUNPCKELUW,
++
++  ARM_BUILTIN_THREAD_POINTER,
++
++  ARM_BUILTIN_NEON_BASE,
++
++  ARM_BUILTIN_MAX = ARM_BUILTIN_NEON_BASE + ARRAY_SIZE (neon_builtin_data)
+ };
+ 
+-/* Set up all the iWMMXt builtins.  This is
+-   not called if TARGET_IWMMXT is zero.  */
++static GTY(()) tree arm_builtin_decls[ARM_BUILTIN_MAX];
+ 
+ static void
+-arm_init_iwmmxt_builtins (void)
++arm_init_neon_builtins (void)
+ {
+-  const struct builtin_description * d;
+-  size_t i;
+-  tree endlink = void_list_node;
++  unsigned int i, fcode;
++  tree decl;
+ 
+-  tree V2SI_type_node = build_vector_type_for_mode (intSI_type_node, V2SImode);
+-  tree V4HI_type_node = build_vector_type_for_mode (intHI_type_node, V4HImode);
+-  tree V8QI_type_node = build_vector_type_for_mode (intQI_type_node, V8QImode);
++  tree neon_intQI_type_node;
++  tree neon_intHI_type_node;
++  tree neon_polyQI_type_node;
++  tree neon_polyHI_type_node;
++  tree neon_intSI_type_node;
++  tree neon_intDI_type_node;
++  tree neon_float_type_node;
+ 
+-  tree int_ftype_int
+-    = build_function_type (integer_type_node,
+-			   tree_cons (NULL_TREE, integer_type_node, endlink));
+-  tree v8qi_ftype_v8qi_v8qi_int
+-    = build_function_type (V8QI_type_node,
+-			   tree_cons (NULL_TREE, V8QI_type_node,
+-				      tree_cons (NULL_TREE, V8QI_type_node,
+-						 tree_cons (NULL_TREE,
+-							    integer_type_node,
+-							    endlink))));
+-  tree v4hi_ftype_v4hi_int
+-    = build_function_type (V4HI_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 endlink)));
+-  tree v2si_ftype_v2si_int
+-    = build_function_type (V2SI_type_node,
+-			   tree_cons (NULL_TREE, V2SI_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 endlink)));
+-  tree v2si_ftype_di_di
+-    = build_function_type (V2SI_type_node,
+-			   tree_cons (NULL_TREE, long_long_integer_type_node,
+-				      tree_cons (NULL_TREE, long_long_integer_type_node,
+-						 endlink)));
+-  tree di_ftype_di_int
+-    = build_function_type (long_long_integer_type_node,
+-			   tree_cons (NULL_TREE, long_long_integer_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 endlink)));
+-  tree di_ftype_di_int_int
+-    = build_function_type (long_long_integer_type_node,
+-			   tree_cons (NULL_TREE, long_long_integer_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 tree_cons (NULL_TREE,
+-							    integer_type_node,
+-							    endlink))));
+-  tree int_ftype_v8qi
+-    = build_function_type (integer_type_node,
+-			   tree_cons (NULL_TREE, V8QI_type_node,
+-				      endlink));
+-  tree int_ftype_v4hi
+-    = build_function_type (integer_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      endlink));
+-  tree int_ftype_v2si
+-    = build_function_type (integer_type_node,
+-			   tree_cons (NULL_TREE, V2SI_type_node,
+-				      endlink));
+-  tree int_ftype_v8qi_int
+-    = build_function_type (integer_type_node,
+-			   tree_cons (NULL_TREE, V8QI_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 endlink)));
+-  tree int_ftype_v4hi_int
+-    = build_function_type (integer_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 endlink)));
+-  tree int_ftype_v2si_int
+-    = build_function_type (integer_type_node,
+-			   tree_cons (NULL_TREE, V2SI_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 endlink)));
+-  tree v8qi_ftype_v8qi_int_int
+-    = build_function_type (V8QI_type_node,
+-			   tree_cons (NULL_TREE, V8QI_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 tree_cons (NULL_TREE,
+-							    integer_type_node,
+-							    endlink))));
+-  tree v4hi_ftype_v4hi_int_int
+-    = build_function_type (V4HI_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 tree_cons (NULL_TREE,
+-							    integer_type_node,
+-							    endlink))));
+-  tree v2si_ftype_v2si_int_int
+-    = build_function_type (V2SI_type_node,
+-			   tree_cons (NULL_TREE, V2SI_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 tree_cons (NULL_TREE,
+-							    integer_type_node,
+-							    endlink))));
+-  /* Miscellaneous.  */
+-  tree v8qi_ftype_v4hi_v4hi
+-    = build_function_type (V8QI_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      tree_cons (NULL_TREE, V4HI_type_node,
+-						 endlink)));
+-  tree v4hi_ftype_v2si_v2si
+-    = build_function_type (V4HI_type_node,
+-			   tree_cons (NULL_TREE, V2SI_type_node,
+-				      tree_cons (NULL_TREE, V2SI_type_node,
+-						 endlink)));
+-  tree v2si_ftype_v4hi_v4hi
+-    = build_function_type (V2SI_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      tree_cons (NULL_TREE, V4HI_type_node,
+-						 endlink)));
+-  tree v2si_ftype_v8qi_v8qi
+-    = build_function_type (V2SI_type_node,
+-			   tree_cons (NULL_TREE, V8QI_type_node,
+-				      tree_cons (NULL_TREE, V8QI_type_node,
+-						 endlink)));
+-  tree v4hi_ftype_v4hi_di
+-    = build_function_type (V4HI_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      tree_cons (NULL_TREE,
+-						 long_long_integer_type_node,
+-						 endlink)));
+-  tree v2si_ftype_v2si_di
+-    = build_function_type (V2SI_type_node,
+-			   tree_cons (NULL_TREE, V2SI_type_node,
+-				      tree_cons (NULL_TREE,
+-						 long_long_integer_type_node,
+-						 endlink)));
+-  tree void_ftype_int_int
+-    = build_function_type (void_type_node,
+-			   tree_cons (NULL_TREE, integer_type_node,
+-				      tree_cons (NULL_TREE, integer_type_node,
+-						 endlink)));
+-  tree di_ftype_void
+-    = build_function_type (long_long_unsigned_type_node, endlink);
+-  tree di_ftype_v8qi
+-    = build_function_type (long_long_integer_type_node,
+-			   tree_cons (NULL_TREE, V8QI_type_node,
+-				      endlink));
+-  tree di_ftype_v4hi
+-    = build_function_type (long_long_integer_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      endlink));
+-  tree di_ftype_v2si
+-    = build_function_type (long_long_integer_type_node,
+-			   tree_cons (NULL_TREE, V2SI_type_node,
+-				      endlink));
+-  tree v2si_ftype_v4hi
+-    = build_function_type (V2SI_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      endlink));
+-  tree v4hi_ftype_v8qi
+-    = build_function_type (V4HI_type_node,
+-			   tree_cons (NULL_TREE, V8QI_type_node,
+-				      endlink));
++  tree intQI_pointer_node;
++  tree intHI_pointer_node;
++  tree intSI_pointer_node;
++  tree intDI_pointer_node;
++  tree float_pointer_node;
+ 
+-  tree di_ftype_di_v4hi_v4hi
+-    = build_function_type (long_long_unsigned_type_node,
+-			   tree_cons (NULL_TREE,
+-				      long_long_unsigned_type_node,
+-				      tree_cons (NULL_TREE, V4HI_type_node,
+-						 tree_cons (NULL_TREE,
+-							    V4HI_type_node,
+-							    endlink))));
++  tree const_intQI_node;
++  tree const_intHI_node;
++  tree const_intSI_node;
++  tree const_intDI_node;
++  tree const_float_node;
+ 
+-  tree di_ftype_v4hi_v4hi
+-    = build_function_type (long_long_unsigned_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      tree_cons (NULL_TREE, V4HI_type_node,
+-						 endlink)));
++  tree const_intQI_pointer_node;
++  tree const_intHI_pointer_node;
++  tree const_intSI_pointer_node;
++  tree const_intDI_pointer_node;
++  tree const_float_pointer_node;
+ 
+-  /* Normal vector binops.  */
+-  tree v8qi_ftype_v8qi_v8qi
+-    = build_function_type (V8QI_type_node,
+-			   tree_cons (NULL_TREE, V8QI_type_node,
+-				      tree_cons (NULL_TREE, V8QI_type_node,
+-						 endlink)));
+-  tree v4hi_ftype_v4hi_v4hi
+-    = build_function_type (V4HI_type_node,
+-			   tree_cons (NULL_TREE, V4HI_type_node,
+-				      tree_cons (NULL_TREE, V4HI_type_node,
+-						 endlink)));
+-  tree v2si_ftype_v2si_v2si
+-    = build_function_type (V2SI_type_node,
+-			   tree_cons (NULL_TREE, V2SI_type_node,
+-				      tree_cons (NULL_TREE, V2SI_type_node,
+-						 endlink)));
+-  tree di_ftype_di_di
+-    = build_function_type (long_long_unsigned_type_node,
+-			   tree_cons (NULL_TREE, long_long_unsigned_type_node,
+-				      tree_cons (NULL_TREE,
+-						 long_long_unsigned_type_node,
+-						 endlink)));
++  tree V8QI_type_node;
++  tree V4HI_type_node;
++  tree V2SI_type_node;
++  tree V2SF_type_node;
++  tree V16QI_type_node;
++  tree V8HI_type_node;
++  tree V4SI_type_node;
++  tree V4SF_type_node;
++  tree V2DI_type_node;
+ 
+-  /* Add all builtins that are more or less simple operations on two
+-     operands.  */
+-  for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++)
+-    {
+-      /* Use one of the operands; the target can have a different mode for
+-	 mask-generating compares.  */
+-      enum machine_mode mode;
+-      tree type;
++  tree intUQI_type_node;
++  tree intUHI_type_node;
++  tree intUSI_type_node;
++  tree intUDI_type_node;
+ 
+-      if (d->name == 0)
+-	continue;
++  tree intEI_type_node;
++  tree intOI_type_node;
++  tree intCI_type_node;
++  tree intXI_type_node;
+ 
+-      mode = insn_data[d->icode].operand[1].mode;
++  tree V8QI_pointer_node;
++  tree V4HI_pointer_node;
++  tree V2SI_pointer_node;
++  tree V2SF_pointer_node;
++  tree V16QI_pointer_node;
++  tree V8HI_pointer_node;
++  tree V4SI_pointer_node;
++  tree V4SF_pointer_node;
++  tree V2DI_pointer_node;
+ 
+-      switch (mode)
+-	{
+-	case V8QImode:
+-	  type = v8qi_ftype_v8qi_v8qi;
+-	  break;
+-	case V4HImode:
+-	  type = v4hi_ftype_v4hi_v4hi;
+-	  break;
+-	case V2SImode:
+-	  type = v2si_ftype_v2si_v2si;
+-	  break;
+-	case DImode:
+-	  type = di_ftype_di_di;
+-	  break;
++  tree void_ftype_pv8qi_v8qi_v8qi;
++  tree void_ftype_pv4hi_v4hi_v4hi;
++  tree void_ftype_pv2si_v2si_v2si;
++  tree void_ftype_pv2sf_v2sf_v2sf;
++  tree void_ftype_pdi_di_di;
++  tree void_ftype_pv16qi_v16qi_v16qi;
++  tree void_ftype_pv8hi_v8hi_v8hi;
++  tree void_ftype_pv4si_v4si_v4si;
++  tree void_ftype_pv4sf_v4sf_v4sf;
++  tree void_ftype_pv2di_v2di_v2di;
+ 
+-	default:
+-	  gcc_unreachable ();
+-	}
++  tree reinterp_ftype_dreg[5][5];
++  tree reinterp_ftype_qreg[5][5];
++  tree dreg_types[5], qreg_types[5];
+ 
+-      def_mbuiltin (d->mask, d->name, type, d->code);
+-    }
++  /* Create distinguished type nodes for NEON vector element types,
++     and pointers to values of such types, so we can detect them later.  */
++  neon_intQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode));
++  neon_intHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode));
++  neon_polyQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode));
++  neon_polyHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode));
++  neon_intSI_type_node = make_signed_type (GET_MODE_PRECISION (SImode));
++  neon_intDI_type_node = make_signed_type (GET_MODE_PRECISION (DImode));
++  neon_float_type_node = make_node (REAL_TYPE);
++  TYPE_PRECISION (neon_float_type_node) = FLOAT_TYPE_SIZE;
++  layout_type (neon_float_type_node);
+ 
+-  /* Add the remaining MMX insns with somewhat more complicated types.  */
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wzero", di_ftype_void, ARM_BUILTIN_WZERO);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_setwcx", void_ftype_int_int, ARM_BUILTIN_SETWCX);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_getwcx", int_ftype_int, ARM_BUILTIN_GETWCX);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsllh", v4hi_ftype_v4hi_di, ARM_BUILTIN_WSLLH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsllw", v2si_ftype_v2si_di, ARM_BUILTIN_WSLLW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wslld", di_ftype_di_di, ARM_BUILTIN_WSLLD);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsllhi", v4hi_ftype_v4hi_int, ARM_BUILTIN_WSLLHI);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsllwi", v2si_ftype_v2si_int, ARM_BUILTIN_WSLLWI);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wslldi", di_ftype_di_int, ARM_BUILTIN_WSLLDI);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrlh", v4hi_ftype_v4hi_di, ARM_BUILTIN_WSRLH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrlw", v2si_ftype_v2si_di, ARM_BUILTIN_WSRLW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrld", di_ftype_di_di, ARM_BUILTIN_WSRLD);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrlhi", v4hi_ftype_v4hi_int, ARM_BUILTIN_WSRLHI);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrlwi", v2si_ftype_v2si_int, ARM_BUILTIN_WSRLWI);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrldi", di_ftype_di_int, ARM_BUILTIN_WSRLDI);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrah", v4hi_ftype_v4hi_di, ARM_BUILTIN_WSRAH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsraw", v2si_ftype_v2si_di, ARM_BUILTIN_WSRAW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrad", di_ftype_di_di, ARM_BUILTIN_WSRAD);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrahi", v4hi_ftype_v4hi_int, ARM_BUILTIN_WSRAHI);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsrawi", v2si_ftype_v2si_int, ARM_BUILTIN_WSRAWI);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsradi", di_ftype_di_int, ARM_BUILTIN_WSRADI);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wrorh", v4hi_ftype_v4hi_di, ARM_BUILTIN_WRORH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wrorw", v2si_ftype_v2si_di, ARM_BUILTIN_WRORW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wrord", di_ftype_di_di, ARM_BUILTIN_WRORD);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wrorhi", v4hi_ftype_v4hi_int, ARM_BUILTIN_WRORHI);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wrorwi", v2si_ftype_v2si_int, ARM_BUILTIN_WRORWI);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wrordi", di_ftype_di_int, ARM_BUILTIN_WRORDI);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wshufh", v4hi_ftype_v4hi_int, ARM_BUILTIN_WSHUFH);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsadb", v2si_ftype_v8qi_v8qi, ARM_BUILTIN_WSADB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsadh", v2si_ftype_v4hi_v4hi, ARM_BUILTIN_WSADH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsadbz", v2si_ftype_v8qi_v8qi, ARM_BUILTIN_WSADBZ);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wsadhz", v2si_ftype_v4hi_v4hi, ARM_BUILTIN_WSADHZ);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_textrmsb", int_ftype_v8qi_int, ARM_BUILTIN_TEXTRMSB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_textrmsh", int_ftype_v4hi_int, ARM_BUILTIN_TEXTRMSH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_textrmsw", int_ftype_v2si_int, ARM_BUILTIN_TEXTRMSW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_textrmub", int_ftype_v8qi_int, ARM_BUILTIN_TEXTRMUB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_textrmuh", int_ftype_v4hi_int, ARM_BUILTIN_TEXTRMUH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_textrmuw", int_ftype_v2si_int, ARM_BUILTIN_TEXTRMUW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tinsrb", v8qi_ftype_v8qi_int_int, ARM_BUILTIN_TINSRB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tinsrh", v4hi_ftype_v4hi_int_int, ARM_BUILTIN_TINSRH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tinsrw", v2si_ftype_v2si_int_int, ARM_BUILTIN_TINSRW);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_waccb", di_ftype_v8qi, ARM_BUILTIN_WACCB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wacch", di_ftype_v4hi, ARM_BUILTIN_WACCH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_waccw", di_ftype_v2si, ARM_BUILTIN_WACCW);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmovmskb", int_ftype_v8qi, ARM_BUILTIN_TMOVMSKB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmovmskh", int_ftype_v4hi, ARM_BUILTIN_TMOVMSKH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmovmskw", int_ftype_v2si, ARM_BUILTIN_TMOVMSKW);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wpackhss", v8qi_ftype_v4hi_v4hi, ARM_BUILTIN_WPACKHSS);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wpackhus", v8qi_ftype_v4hi_v4hi, ARM_BUILTIN_WPACKHUS);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wpackwus", v4hi_ftype_v2si_v2si, ARM_BUILTIN_WPACKWUS);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wpackwss", v4hi_ftype_v2si_v2si, ARM_BUILTIN_WPACKWSS);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wpackdus", v2si_ftype_di_di, ARM_BUILTIN_WPACKDUS);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wpackdss", v2si_ftype_di_di, ARM_BUILTIN_WPACKDSS);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckehub", v4hi_ftype_v8qi, ARM_BUILTIN_WUNPCKEHUB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckehuh", v2si_ftype_v4hi, ARM_BUILTIN_WUNPCKEHUH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckehuw", di_ftype_v2si, ARM_BUILTIN_WUNPCKEHUW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckehsb", v4hi_ftype_v8qi, ARM_BUILTIN_WUNPCKEHSB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckehsh", v2si_ftype_v4hi, ARM_BUILTIN_WUNPCKEHSH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckehsw", di_ftype_v2si, ARM_BUILTIN_WUNPCKEHSW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckelub", v4hi_ftype_v8qi, ARM_BUILTIN_WUNPCKELUB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckeluh", v2si_ftype_v4hi, ARM_BUILTIN_WUNPCKELUH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckeluw", di_ftype_v2si, ARM_BUILTIN_WUNPCKELUW);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckelsb", v4hi_ftype_v8qi, ARM_BUILTIN_WUNPCKELSB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckelsh", v2si_ftype_v4hi, ARM_BUILTIN_WUNPCKELSH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wunpckelsw", di_ftype_v2si, ARM_BUILTIN_WUNPCKELSW);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wmacs", di_ftype_di_v4hi_v4hi, ARM_BUILTIN_WMACS);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wmacsz", di_ftype_v4hi_v4hi, ARM_BUILTIN_WMACSZ);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wmacu", di_ftype_di_v4hi_v4hi, ARM_BUILTIN_WMACU);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_wmacuz", di_ftype_v4hi_v4hi, ARM_BUILTIN_WMACUZ);
+-
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_walign", v8qi_ftype_v8qi_v8qi_int, ARM_BUILTIN_WALIGN);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmia", di_ftype_di_int_int, ARM_BUILTIN_TMIA);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmiaph", di_ftype_di_int_int, ARM_BUILTIN_TMIAPH);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmiabb", di_ftype_di_int_int, ARM_BUILTIN_TMIABB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmiabt", di_ftype_di_int_int, ARM_BUILTIN_TMIABT);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmiatb", di_ftype_di_int_int, ARM_BUILTIN_TMIATB);
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_tmiatt", di_ftype_di_int_int, ARM_BUILTIN_TMIATT);
+-}
++  /* Define typedefs which exactly correspond to the modes we are basing vector
++     types on.  If you change these names you'll need to change
++     the table used by arm_mangle_type too.  */
++  (*lang_hooks.types.register_builtin_type) (neon_intQI_type_node,
++					     "__builtin_neon_qi");
++  (*lang_hooks.types.register_builtin_type) (neon_intHI_type_node,
++					     "__builtin_neon_hi");
++  (*lang_hooks.types.register_builtin_type) (neon_intSI_type_node,
++					     "__builtin_neon_si");
++  (*lang_hooks.types.register_builtin_type) (neon_float_type_node,
++					     "__builtin_neon_sf");
++  (*lang_hooks.types.register_builtin_type) (neon_intDI_type_node,
++					     "__builtin_neon_di");
++  (*lang_hooks.types.register_builtin_type) (neon_polyQI_type_node,
++					     "__builtin_neon_poly8");
++  (*lang_hooks.types.register_builtin_type) (neon_polyHI_type_node,
++					     "__builtin_neon_poly16");
+ 
+-static void
+-arm_init_tls_builtins (void)
+-{
+-  tree ftype, decl;
+-
+-  ftype = build_function_type (ptr_type_node, void_list_node);
+-  decl = add_builtin_function ("__builtin_thread_pointer", ftype,
+-			       ARM_BUILTIN_THREAD_POINTER, BUILT_IN_MD,
+-			       NULL, NULL_TREE);
+-  TREE_NOTHROW (decl) = 1;
+-  TREE_READONLY (decl) = 1;
+-}
+-
+-enum neon_builtin_type_bits {
+-  T_V8QI  = 0x0001,
+-  T_V4HI  = 0x0002,
+-  T_V2SI  = 0x0004,
+-  T_V2SF  = 0x0008,
+-  T_DI    = 0x0010,
+-  T_V16QI = 0x0020,
+-  T_V8HI  = 0x0040,
+-  T_V4SI  = 0x0080,
+-  T_V4SF  = 0x0100,
+-  T_V2DI  = 0x0200,
+-  T_TI	  = 0x0400,
+-  T_EI	  = 0x0800,
+-  T_OI	  = 0x1000
+-};
+-
+-#define v8qi_UP  T_V8QI
+-#define v4hi_UP  T_V4HI
+-#define v2si_UP  T_V2SI
+-#define v2sf_UP  T_V2SF
+-#define di_UP    T_DI
+-#define v16qi_UP T_V16QI
+-#define v8hi_UP  T_V8HI
+-#define v4si_UP  T_V4SI
+-#define v4sf_UP  T_V4SF
+-#define v2di_UP  T_V2DI
+-#define ti_UP	 T_TI
+-#define ei_UP	 T_EI
+-#define oi_UP	 T_OI
+-
+-#define UP(X) X##_UP
+-
+-#define T_MAX 13
+-
+-typedef enum {
+-  NEON_BINOP,
+-  NEON_TERNOP,
+-  NEON_UNOP,
+-  NEON_GETLANE,
+-  NEON_SETLANE,
+-  NEON_CREATE,
+-  NEON_DUP,
+-  NEON_DUPLANE,
+-  NEON_COMBINE,
+-  NEON_SPLIT,
+-  NEON_LANEMUL,
+-  NEON_LANEMULL,
+-  NEON_LANEMULH,
+-  NEON_LANEMAC,
+-  NEON_SCALARMUL,
+-  NEON_SCALARMULL,
+-  NEON_SCALARMULH,
+-  NEON_SCALARMAC,
+-  NEON_CONVERT,
+-  NEON_FIXCONV,
+-  NEON_SELECT,
+-  NEON_RESULTPAIR,
+-  NEON_REINTERP,
+-  NEON_VTBL,
+-  NEON_VTBX,
+-  NEON_LOAD1,
+-  NEON_LOAD1LANE,
+-  NEON_STORE1,
+-  NEON_STORE1LANE,
+-  NEON_LOADSTRUCT,
+-  NEON_LOADSTRUCTLANE,
+-  NEON_STORESTRUCT,
+-  NEON_STORESTRUCTLANE,
+-  NEON_LOGICBINOP,
+-  NEON_SHIFTINSERT,
+-  NEON_SHIFTIMM,
+-  NEON_SHIFTACC
+-} neon_itype;
+-
+-typedef struct {
+-  const char *name;
+-  const neon_itype itype;
+-  const int bits;
+-  const enum insn_code codes[T_MAX];
+-  const unsigned int num_vars;
+-  unsigned int base_fcode;
+-} neon_builtin_datum;
+-
+-#define CF(N,X) CODE_FOR_neon_##N##X
+-
+-#define VAR1(T, N, A) \
+-  #N, NEON_##T, UP (A), { CF (N, A) }, 1, 0
+-#define VAR2(T, N, A, B) \
+-  #N, NEON_##T, UP (A) | UP (B), { CF (N, A), CF (N, B) }, 2, 0
+-#define VAR3(T, N, A, B, C) \
+-  #N, NEON_##T, UP (A) | UP (B) | UP (C), \
+-  { CF (N, A), CF (N, B), CF (N, C) }, 3, 0
+-#define VAR4(T, N, A, B, C, D) \
+-  #N, NEON_##T, UP (A) | UP (B) | UP (C) | UP (D), \
+-  { CF (N, A), CF (N, B), CF (N, C), CF (N, D) }, 4, 0
+-#define VAR5(T, N, A, B, C, D, E) \
+-  #N, NEON_##T, UP (A) | UP (B) | UP (C) | UP (D) | UP (E), \
+-  { CF (N, A), CF (N, B), CF (N, C), CF (N, D), CF (N, E) }, 5, 0
+-#define VAR6(T, N, A, B, C, D, E, F) \
+-  #N, NEON_##T, UP (A) | UP (B) | UP (C) | UP (D) | UP (E) | UP (F), \
+-  { CF (N, A), CF (N, B), CF (N, C), CF (N, D), CF (N, E), CF (N, F) }, 6, 0
+-#define VAR7(T, N, A, B, C, D, E, F, G) \
+-  #N, NEON_##T, UP (A) | UP (B) | UP (C) | UP (D) | UP (E) | UP (F) | UP (G), \
+-  { CF (N, A), CF (N, B), CF (N, C), CF (N, D), CF (N, E), CF (N, F), \
+-    CF (N, G) }, 7, 0
+-#define VAR8(T, N, A, B, C, D, E, F, G, H) \
+-  #N, NEON_##T, UP (A) | UP (B) | UP (C) | UP (D) | UP (E) | UP (F) | UP (G) \
+-                | UP (H), \
+-  { CF (N, A), CF (N, B), CF (N, C), CF (N, D), CF (N, E), CF (N, F), \
+-    CF (N, G), CF (N, H) }, 8, 0
+-#define VAR9(T, N, A, B, C, D, E, F, G, H, I) \
+-  #N, NEON_##T, UP (A) | UP (B) | UP (C) | UP (D) | UP (E) | UP (F) | UP (G) \
+-                | UP (H) | UP (I), \
+-  { CF (N, A), CF (N, B), CF (N, C), CF (N, D), CF (N, E), CF (N, F), \
+-    CF (N, G), CF (N, H), CF (N, I) }, 9, 0
+-#define VAR10(T, N, A, B, C, D, E, F, G, H, I, J) \
+-  #N, NEON_##T, UP (A) | UP (B) | UP (C) | UP (D) | UP (E) | UP (F) | UP (G) \
+-                | UP (H) | UP (I) | UP (J), \
+-  { CF (N, A), CF (N, B), CF (N, C), CF (N, D), CF (N, E), CF (N, F), \
+-    CF (N, G), CF (N, H), CF (N, I), CF (N, J) }, 10, 0
+-
+-/* The mode entries in the following table correspond to the "key" type of the
+-   instruction variant, i.e. equivalent to that which would be specified after
+-   the assembler mnemonic, which usually refers to the last vector operand.
+-   (Signed/unsigned/polynomial types are not differentiated between though, and
+-   are all mapped onto the same mode for a given element size.) The modes
+-   listed per instruction should be the same as those defined for that
+-   instruction's pattern in neon.md.
+-   WARNING: Variants should be listed in the same increasing order as
+-   neon_builtin_type_bits.  */
+-
+-static neon_builtin_datum neon_builtin_data[] =
+-{
+-  { VAR10 (BINOP, vadd,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR3 (BINOP, vaddl, v8qi, v4hi, v2si) },
+-  { VAR3 (BINOP, vaddw, v8qi, v4hi, v2si) },
+-  { VAR6 (BINOP, vhadd, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR8 (BINOP, vqadd, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR3 (BINOP, vaddhn, v8hi, v4si, v2di) },
+-  { VAR8 (BINOP, vmul, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR8 (TERNOP, vmla, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR3 (TERNOP, vmlal, v8qi, v4hi, v2si) },
+-  { VAR8 (TERNOP, vmls, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR3 (TERNOP, vmlsl, v8qi, v4hi, v2si) },
+-  { VAR4 (BINOP, vqdmulh, v4hi, v2si, v8hi, v4si) },
+-  { VAR2 (TERNOP, vqdmlal, v4hi, v2si) },
+-  { VAR2 (TERNOP, vqdmlsl, v4hi, v2si) },
+-  { VAR3 (BINOP, vmull, v8qi, v4hi, v2si) },
+-  { VAR2 (SCALARMULL, vmull_n, v4hi, v2si) },
+-  { VAR2 (LANEMULL, vmull_lane, v4hi, v2si) },
+-  { VAR2 (SCALARMULL, vqdmull_n, v4hi, v2si) },
+-  { VAR2 (LANEMULL, vqdmull_lane, v4hi, v2si) },
+-  { VAR4 (SCALARMULH, vqdmulh_n, v4hi, v2si, v8hi, v4si) },
+-  { VAR4 (LANEMULH, vqdmulh_lane, v4hi, v2si, v8hi, v4si) },
+-  { VAR2 (BINOP, vqdmull, v4hi, v2si) },
+-  { VAR8 (BINOP, vshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR8 (BINOP, vqshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR8 (SHIFTIMM, vshr_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR3 (SHIFTIMM, vshrn_n, v8hi, v4si, v2di) },
+-  { VAR3 (SHIFTIMM, vqshrn_n, v8hi, v4si, v2di) },
+-  { VAR3 (SHIFTIMM, vqshrun_n, v8hi, v4si, v2di) },
+-  { VAR8 (SHIFTIMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR8 (SHIFTIMM, vqshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR8 (SHIFTIMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR3 (SHIFTIMM, vshll_n, v8qi, v4hi, v2si) },
+-  { VAR8 (SHIFTACC, vsra_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR10 (BINOP, vsub,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR3 (BINOP, vsubl, v8qi, v4hi, v2si) },
+-  { VAR3 (BINOP, vsubw, v8qi, v4hi, v2si) },
+-  { VAR8 (BINOP, vqsub, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR6 (BINOP, vhsub, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR3 (BINOP, vsubhn, v8hi, v4si, v2di) },
+-  { VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR2 (BINOP, vcage, v2sf, v4sf) },
+-  { VAR2 (BINOP, vcagt, v2sf, v4sf) },
+-  { VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR8 (BINOP, vabd, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR3 (BINOP, vabdl, v8qi, v4hi, v2si) },
+-  { VAR6 (TERNOP, vaba, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR3 (TERNOP, vabal, v8qi, v4hi, v2si) },
+-  { VAR8 (BINOP, vmax, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR8 (BINOP, vmin, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR4 (BINOP, vpadd, v8qi, v4hi, v2si, v2sf) },
+-  { VAR6 (UNOP, vpaddl, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR6 (BINOP, vpadal, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR4 (BINOP, vpmax, v8qi, v4hi, v2si, v2sf) },
+-  { VAR4 (BINOP, vpmin, v8qi, v4hi, v2si, v2sf) },
+-  { VAR2 (BINOP, vrecps, v2sf, v4sf) },
+-  { VAR2 (BINOP, vrsqrts, v2sf, v4sf) },
+-  { VAR8 (SHIFTINSERT, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR8 (SHIFTINSERT, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di) },
+-  { VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  { VAR2 (UNOP, vcnt, v8qi, v16qi) },
+-  { VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf) },
+-  { VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf) },
+-  { VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si) },
+-  /* FIXME: vget_lane supports more variants than this!  */
+-  { VAR10 (GETLANE, vget_lane,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (SETLANE, vset_lane,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR5 (CREATE, vcreate, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR10 (DUP, vdup_n,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (DUPLANE, vdup_lane,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR5 (COMBINE, vcombine, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR5 (SPLIT, vget_high, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR5 (SPLIT, vget_low, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR3 (UNOP, vmovn, v8hi, v4si, v2di) },
+-  { VAR3 (UNOP, vqmovn, v8hi, v4si, v2di) },
+-  { VAR3 (UNOP, vqmovun, v8hi, v4si, v2di) },
+-  { VAR3 (UNOP, vmovl, v8qi, v4hi, v2si) },
+-  { VAR6 (LANEMUL, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR6 (LANEMAC, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR2 (LANEMAC, vmlal_lane, v4hi, v2si) },
+-  { VAR2 (LANEMAC, vqdmlal_lane, v4hi, v2si) },
+-  { VAR6 (LANEMAC, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR2 (LANEMAC, vmlsl_lane, v4hi, v2si) },
+-  { VAR2 (LANEMAC, vqdmlsl_lane, v4hi, v2si) },
+-  { VAR6 (SCALARMUL, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR6 (SCALARMAC, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR2 (SCALARMAC, vmlal_n, v4hi, v2si) },
+-  { VAR2 (SCALARMAC, vqdmlal_n, v4hi, v2si) },
+-  { VAR6 (SCALARMAC, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR2 (SCALARMAC, vmlsl_n, v4hi, v2si) },
+-  { VAR2 (SCALARMAC, vqdmlsl_n, v4hi, v2si) },
+-  { VAR10 (BINOP, vext,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR4 (UNOP, vrev32, v8qi, v4hi, v16qi, v8hi) },
+-  { VAR2 (UNOP, vrev16, v8qi, v16qi) },
+-  { VAR4 (CONVERT, vcvt, v2si, v2sf, v4si, v4sf) },
+-  { VAR4 (FIXCONV, vcvt_n, v2si, v2sf, v4si, v4sf) },
+-  { VAR10 (SELECT, vbsl,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR1 (VTBL, vtbl1, v8qi) },
+-  { VAR1 (VTBL, vtbl2, v8qi) },
+-  { VAR1 (VTBL, vtbl3, v8qi) },
+-  { VAR1 (VTBL, vtbl4, v8qi) },
+-  { VAR1 (VTBX, vtbx1, v8qi) },
+-  { VAR1 (VTBX, vtbx2, v8qi) },
+-  { VAR1 (VTBX, vtbx3, v8qi) },
+-  { VAR1 (VTBX, vtbx4, v8qi) },
+-  { VAR8 (RESULTPAIR, vtrn, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR8 (RESULTPAIR, vzip, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR8 (RESULTPAIR, vuzp, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf) },
+-  { VAR5 (REINTERP, vreinterpretv8qi, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR5 (REINTERP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR5 (REINTERP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR5 (REINTERP, vreinterpretv2sf, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR5 (REINTERP, vreinterpretdi, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR5 (REINTERP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR5 (REINTERP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR5 (REINTERP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR5 (REINTERP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR5 (REINTERP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (LOAD1, vld1,
+-           v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (LOAD1LANE, vld1_lane,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (LOAD1, vld1_dup,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (STORE1, vst1,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (STORE1LANE, vst1_lane,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR9 (LOADSTRUCT,
+-	  vld2, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf) },
+-  { VAR7 (LOADSTRUCTLANE, vld2_lane,
+-	  v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR5 (LOADSTRUCT, vld2_dup, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR9 (STORESTRUCT, vst2,
+-	  v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf) },
+-  { VAR7 (STORESTRUCTLANE, vst2_lane,
+-	  v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR9 (LOADSTRUCT,
+-	  vld3, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf) },
+-  { VAR7 (LOADSTRUCTLANE, vld3_lane,
+-	  v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR5 (LOADSTRUCT, vld3_dup, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR9 (STORESTRUCT, vst3,
+-	  v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf) },
+-  { VAR7 (STORESTRUCTLANE, vst3_lane,
+-	  v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR9 (LOADSTRUCT, vld4,
+-	  v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf) },
+-  { VAR7 (LOADSTRUCTLANE, vld4_lane,
+-	  v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR5 (LOADSTRUCT, vld4_dup, v8qi, v4hi, v2si, v2sf, di) },
+-  { VAR9 (STORESTRUCT, vst4,
+-	  v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf) },
+-  { VAR7 (STORESTRUCTLANE, vst4_lane,
+-	  v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf) },
+-  { VAR10 (LOGICBINOP, vand,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (LOGICBINOP, vorr,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (BINOP, veor,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (LOGICBINOP, vbic,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) },
+-  { VAR10 (LOGICBINOP, vorn,
+-	   v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) }
+-};
+-
+-#undef CF
+-#undef VAR1
+-#undef VAR2
+-#undef VAR3
+-#undef VAR4
+-#undef VAR5
+-#undef VAR6
+-#undef VAR7
+-#undef VAR8
+-#undef VAR9
+-#undef VAR10
+-
+-static void
+-arm_init_neon_builtins (void)
+-{
+-  unsigned int i, fcode = ARM_BUILTIN_NEON_BASE;
+-
+-  tree neon_intQI_type_node;
+-  tree neon_intHI_type_node;
+-  tree neon_polyQI_type_node;
+-  tree neon_polyHI_type_node;
+-  tree neon_intSI_type_node;
+-  tree neon_intDI_type_node;
+-  tree neon_float_type_node;
+-
+-  tree intQI_pointer_node;
+-  tree intHI_pointer_node;
+-  tree intSI_pointer_node;
+-  tree intDI_pointer_node;
+-  tree float_pointer_node;
+-
+-  tree const_intQI_node;
+-  tree const_intHI_node;
+-  tree const_intSI_node;
+-  tree const_intDI_node;
+-  tree const_float_node;
+-
+-  tree const_intQI_pointer_node;
+-  tree const_intHI_pointer_node;
+-  tree const_intSI_pointer_node;
+-  tree const_intDI_pointer_node;
+-  tree const_float_pointer_node;
+-
+-  tree V8QI_type_node;
+-  tree V4HI_type_node;
+-  tree V2SI_type_node;
+-  tree V2SF_type_node;
+-  tree V16QI_type_node;
+-  tree V8HI_type_node;
+-  tree V4SI_type_node;
+-  tree V4SF_type_node;
+-  tree V2DI_type_node;
+-
+-  tree intUQI_type_node;
+-  tree intUHI_type_node;
+-  tree intUSI_type_node;
+-  tree intUDI_type_node;
+-
+-  tree intEI_type_node;
+-  tree intOI_type_node;
+-  tree intCI_type_node;
+-  tree intXI_type_node;
+-
+-  tree V8QI_pointer_node;
+-  tree V4HI_pointer_node;
+-  tree V2SI_pointer_node;
+-  tree V2SF_pointer_node;
+-  tree V16QI_pointer_node;
+-  tree V8HI_pointer_node;
+-  tree V4SI_pointer_node;
+-  tree V4SF_pointer_node;
+-  tree V2DI_pointer_node;
+-
+-  tree void_ftype_pv8qi_v8qi_v8qi;
+-  tree void_ftype_pv4hi_v4hi_v4hi;
+-  tree void_ftype_pv2si_v2si_v2si;
+-  tree void_ftype_pv2sf_v2sf_v2sf;
+-  tree void_ftype_pdi_di_di;
+-  tree void_ftype_pv16qi_v16qi_v16qi;
+-  tree void_ftype_pv8hi_v8hi_v8hi;
+-  tree void_ftype_pv4si_v4si_v4si;
+-  tree void_ftype_pv4sf_v4sf_v4sf;
+-  tree void_ftype_pv2di_v2di_v2di;
+-
+-  tree reinterp_ftype_dreg[5][5];
+-  tree reinterp_ftype_qreg[5][5];
+-  tree dreg_types[5], qreg_types[5];
+-
+-  /* Create distinguished type nodes for NEON vector element types,
+-     and pointers to values of such types, so we can detect them later.  */
+-  neon_intQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode));
+-  neon_intHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode));
+-  neon_polyQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode));
+-  neon_polyHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode));
+-  neon_intSI_type_node = make_signed_type (GET_MODE_PRECISION (SImode));
+-  neon_intDI_type_node = make_signed_type (GET_MODE_PRECISION (DImode));
+-  neon_float_type_node = make_node (REAL_TYPE);
+-  TYPE_PRECISION (neon_float_type_node) = FLOAT_TYPE_SIZE;
+-  layout_type (neon_float_type_node);
+-
+-  /* Define typedefs which exactly correspond to the modes we are basing vector
+-     types on.  If you change these names you'll need to change
+-     the table used by arm_mangle_type too.  */
+-  (*lang_hooks.types.register_builtin_type) (neon_intQI_type_node,
+-					     "__builtin_neon_qi");
+-  (*lang_hooks.types.register_builtin_type) (neon_intHI_type_node,
+-					     "__builtin_neon_hi");
+-  (*lang_hooks.types.register_builtin_type) (neon_intSI_type_node,
+-					     "__builtin_neon_si");
+-  (*lang_hooks.types.register_builtin_type) (neon_float_type_node,
+-					     "__builtin_neon_sf");
+-  (*lang_hooks.types.register_builtin_type) (neon_intDI_type_node,
+-					     "__builtin_neon_di");
+-  (*lang_hooks.types.register_builtin_type) (neon_polyQI_type_node,
+-					     "__builtin_neon_poly8");
+-  (*lang_hooks.types.register_builtin_type) (neon_polyHI_type_node,
+-					     "__builtin_neon_poly16");
+-
+-  intQI_pointer_node = build_pointer_type (neon_intQI_type_node);
+-  intHI_pointer_node = build_pointer_type (neon_intHI_type_node);
+-  intSI_pointer_node = build_pointer_type (neon_intSI_type_node);
+-  intDI_pointer_node = build_pointer_type (neon_intDI_type_node);
+-  float_pointer_node = build_pointer_type (neon_float_type_node);
++  intQI_pointer_node = build_pointer_type (neon_intQI_type_node);
++  intHI_pointer_node = build_pointer_type (neon_intHI_type_node);
++  intSI_pointer_node = build_pointer_type (neon_intSI_type_node);
++  intDI_pointer_node = build_pointer_type (neon_intDI_type_node);
++  float_pointer_node = build_pointer_type (neon_float_type_node);
+ 
+   /* Next create constant-qualified versions of the above types.  */
+   const_intQI_node = build_qualified_type (neon_intQI_type_node,
+@@ -18863,264 +19469,752 @@
+   qreg_types[3] = V4SF_type_node;
+   qreg_types[4] = V2DI_type_node;
+ 
+-  for (i = 0; i < 5; i++)
++  for (i = 0; i < 5; i++)
++    {
++      int j;
++      for (j = 0; j < 5; j++)
++        {
++          reinterp_ftype_dreg[i][j]
++            = build_function_type_list (dreg_types[i], dreg_types[j], NULL);
++          reinterp_ftype_qreg[i][j]
++            = build_function_type_list (qreg_types[i], qreg_types[j], NULL);
++        }
++    }
++
++  for (i = 0, fcode = ARM_BUILTIN_NEON_BASE;
++       i < ARRAY_SIZE (neon_builtin_data);
++       i++, fcode++)
++    {
++      neon_builtin_datum *d = &neon_builtin_data[i];
++
++      const char* const modenames[] = {
++	"v8qi", "v4hi", "v2si", "v2sf", "di",
++	"v16qi", "v8hi", "v4si", "v4sf", "v2di",
++	"ti", "ei", "oi"
++      };
++      char namebuf[60];
++      tree ftype = NULL;
++      int is_load = 0, is_store = 0;
++
++      gcc_assert (ARRAY_SIZE (modenames) == T_MAX);
++
++      d->fcode = fcode;
++
++      switch (d->itype)
++	{
++	case NEON_LOAD1:
++	case NEON_LOAD1LANE:
++	case NEON_LOADSTRUCT:
++	case NEON_LOADSTRUCTLANE:
++	  is_load = 1;
++	  /* Fall through.  */
++	case NEON_STORE1:
++	case NEON_STORE1LANE:
++	case NEON_STORESTRUCT:
++	case NEON_STORESTRUCTLANE:
++	  if (!is_load)
++	    is_store = 1;
++	  /* Fall through.  */
++	case NEON_UNOP:
++	case NEON_BINOP:
++	case NEON_LOGICBINOP:
++	case NEON_SHIFTINSERT:
++	case NEON_TERNOP:
++	case NEON_GETLANE:
++	case NEON_SETLANE:
++	case NEON_CREATE:
++	case NEON_DUP:
++	case NEON_DUPLANE:
++	case NEON_SHIFTIMM:
++	case NEON_SHIFTACC:
++	case NEON_COMBINE:
++	case NEON_SPLIT:
++	case NEON_CONVERT:
++	case NEON_FIXCONV:
++	case NEON_LANEMUL:
++	case NEON_LANEMULL:
++	case NEON_LANEMULH:
++	case NEON_LANEMAC:
++	case NEON_SCALARMUL:
++	case NEON_SCALARMULL:
++	case NEON_SCALARMULH:
++	case NEON_SCALARMAC:
++	case NEON_SELECT:
++	case NEON_VTBL:
++	case NEON_VTBX:
++	  {
++	    int k;
++	    tree return_type = void_type_node, args = void_list_node;
++
++	    /* Build a function type directly from the insn_data for
++	       this builtin.  The build_function_type() function takes
++	       care of removing duplicates for us.  */
++	    for (k = insn_data[d->code].n_operands - 1; k >= 0; k--)
++	      {
++		tree eltype;
++
++		if (is_load && k == 1)
++		  {
++		    /* Neon load patterns always have the memory
++		       operand in the operand 1 position.  */
++		    gcc_assert (insn_data[d->code].operand[k].predicate
++				== neon_struct_operand);
++
++		    switch (d->mode)
++		      {
++		      case T_V8QI:
++		      case T_V16QI:
++			eltype = const_intQI_pointer_node;
++			break;
++
++		      case T_V4HI:
++		      case T_V8HI:
++			eltype = const_intHI_pointer_node;
++			break;
++
++		      case T_V2SI:
++		      case T_V4SI:
++			eltype = const_intSI_pointer_node;
++			break;
++
++		      case T_V2SF:
++		      case T_V4SF:
++			eltype = const_float_pointer_node;
++			break;
++
++		      case T_DI:
++		      case T_V2DI:
++			eltype = const_intDI_pointer_node;
++			break;
++
++		      default: gcc_unreachable ();
++		      }
++		  }
++		else if (is_store && k == 0)
++		  {
++		    /* Similarly, Neon store patterns use operand 0 as
++		       the memory location to store to.  */
++		    gcc_assert (insn_data[d->code].operand[k].predicate
++				== neon_struct_operand);
++
++		    switch (d->mode)
++		      {
++		      case T_V8QI:
++		      case T_V16QI:
++			eltype = intQI_pointer_node;
++			break;
++
++		      case T_V4HI:
++		      case T_V8HI:
++			eltype = intHI_pointer_node;
++			break;
++
++		      case T_V2SI:
++		      case T_V4SI:
++			eltype = intSI_pointer_node;
++			break;
++
++		      case T_V2SF:
++		      case T_V4SF:
++			eltype = float_pointer_node;
++			break;
++
++		      case T_DI:
++		      case T_V2DI:
++			eltype = intDI_pointer_node;
++			break;
++
++		      default: gcc_unreachable ();
++		      }
++		  }
++		else
++		  {
++		    switch (insn_data[d->code].operand[k].mode)
++		      {
++		      case VOIDmode: eltype = void_type_node; break;
++			/* Scalars.  */
++		      case QImode: eltype = neon_intQI_type_node; break;
++		      case HImode: eltype = neon_intHI_type_node; break;
++		      case SImode: eltype = neon_intSI_type_node; break;
++		      case SFmode: eltype = neon_float_type_node; break;
++		      case DImode: eltype = neon_intDI_type_node; break;
++		      case TImode: eltype = intTI_type_node; break;
++		      case EImode: eltype = intEI_type_node; break;
++		      case OImode: eltype = intOI_type_node; break;
++		      case CImode: eltype = intCI_type_node; break;
++		      case XImode: eltype = intXI_type_node; break;
++			/* 64-bit vectors.  */
++		      case V8QImode: eltype = V8QI_type_node; break;
++		      case V4HImode: eltype = V4HI_type_node; break;
++		      case V2SImode: eltype = V2SI_type_node; break;
++		      case V2SFmode: eltype = V2SF_type_node; break;
++			/* 128-bit vectors.  */
++		      case V16QImode: eltype = V16QI_type_node; break;
++		      case V8HImode: eltype = V8HI_type_node; break;
++		      case V4SImode: eltype = V4SI_type_node; break;
++		      case V4SFmode: eltype = V4SF_type_node; break;
++		      case V2DImode: eltype = V2DI_type_node; break;
++		      default: gcc_unreachable ();
++		      }
++		  }
++
++		if (k == 0 && !is_store)
++		  return_type = eltype;
++		else
++		  args = tree_cons (NULL_TREE, eltype, args);
++	      }
++
++	    ftype = build_function_type (return_type, args);
++	  }
++	  break;
++
++	case NEON_RESULTPAIR:
++	  {
++	    switch (insn_data[d->code].operand[1].mode)
++	      {
++	      case V8QImode: ftype = void_ftype_pv8qi_v8qi_v8qi; break;
++	      case V4HImode: ftype = void_ftype_pv4hi_v4hi_v4hi; break;
++	      case V2SImode: ftype = void_ftype_pv2si_v2si_v2si; break;
++	      case V2SFmode: ftype = void_ftype_pv2sf_v2sf_v2sf; break;
++	      case DImode: ftype = void_ftype_pdi_di_di; break;
++	      case V16QImode: ftype = void_ftype_pv16qi_v16qi_v16qi; break;
++	      case V8HImode: ftype = void_ftype_pv8hi_v8hi_v8hi; break;
++	      case V4SImode: ftype = void_ftype_pv4si_v4si_v4si; break;
++	      case V4SFmode: ftype = void_ftype_pv4sf_v4sf_v4sf; break;
++	      case V2DImode: ftype = void_ftype_pv2di_v2di_v2di; break;
++	      default: gcc_unreachable ();
++	      }
++	  }
++	  break;
++
++	case NEON_REINTERP:
++	  {
++	    /* We iterate over 5 doubleword types, then 5 quadword
++	       types.  */
++	    int rhs = d->mode % 5;
++	    switch (insn_data[d->code].operand[0].mode)
++	      {
++	      case V8QImode: ftype = reinterp_ftype_dreg[0][rhs]; break;
++	      case V4HImode: ftype = reinterp_ftype_dreg[1][rhs]; break;
++	      case V2SImode: ftype = reinterp_ftype_dreg[2][rhs]; break;
++	      case V2SFmode: ftype = reinterp_ftype_dreg[3][rhs]; break;
++	      case DImode: ftype = reinterp_ftype_dreg[4][rhs]; break;
++	      case V16QImode: ftype = reinterp_ftype_qreg[0][rhs]; break;
++	      case V8HImode: ftype = reinterp_ftype_qreg[1][rhs]; break;
++	      case V4SImode: ftype = reinterp_ftype_qreg[2][rhs]; break;
++	      case V4SFmode: ftype = reinterp_ftype_qreg[3][rhs]; break;
++	      case V2DImode: ftype = reinterp_ftype_qreg[4][rhs]; break;
++	      default: gcc_unreachable ();
++	      }
++	  }
++	  break;
++
++	default:
++	  gcc_unreachable ();
++	}
++
++      gcc_assert (ftype != NULL);
++
++      sprintf (namebuf, "__builtin_neon_%s%s", d->name, modenames[d->mode]);
++
++      decl = add_builtin_function (namebuf, ftype, fcode, BUILT_IN_MD, NULL,
++				   NULL_TREE);
++      arm_builtin_decls[fcode] = decl;
++    }
++}
++
++#define def_mbuiltin(MASK, NAME, TYPE, CODE)				\
++  do									\
++    {									\
++      if ((MASK) & insn_flags)						\
++	{								\
++	  tree bdecl;							\
++	  bdecl = add_builtin_function ((NAME), (TYPE), (CODE),		\
++					BUILT_IN_MD, NULL, NULL_TREE);	\
++	  arm_builtin_decls[CODE] = bdecl;				\
++	}								\
++    }									\
++  while (0)
++  
++struct builtin_description
++{
++  const unsigned int       mask;
++  const enum insn_code     icode;
++  const char * const       name;
++  const enum arm_builtins  code;
++  const enum rtx_code      comparison;
++  const unsigned int       flag;
++};
++  
++static const struct builtin_description bdesc_2arg[] =
++{
++#define IWMMXT_BUILTIN(code, string, builtin) \
++  { FL_IWMMXT, CODE_FOR_##code, "__builtin_arm_" string, \
++    ARM_BUILTIN_##builtin, UNKNOWN, 0 },
++  
++  IWMMXT_BUILTIN (addv8qi3, "waddb", WADDB)
++  IWMMXT_BUILTIN (addv4hi3, "waddh", WADDH)
++  IWMMXT_BUILTIN (addv2si3, "waddw", WADDW)
++  IWMMXT_BUILTIN (subv8qi3, "wsubb", WSUBB)
++  IWMMXT_BUILTIN (subv4hi3, "wsubh", WSUBH)
++  IWMMXT_BUILTIN (subv2si3, "wsubw", WSUBW)
++  IWMMXT_BUILTIN (ssaddv8qi3, "waddbss", WADDSSB)
++  IWMMXT_BUILTIN (ssaddv4hi3, "waddhss", WADDSSH)
++  IWMMXT_BUILTIN (ssaddv2si3, "waddwss", WADDSSW)
++  IWMMXT_BUILTIN (sssubv8qi3, "wsubbss", WSUBSSB)
++  IWMMXT_BUILTIN (sssubv4hi3, "wsubhss", WSUBSSH)
++  IWMMXT_BUILTIN (sssubv2si3, "wsubwss", WSUBSSW)
++  IWMMXT_BUILTIN (usaddv8qi3, "waddbus", WADDUSB)
++  IWMMXT_BUILTIN (usaddv4hi3, "waddhus", WADDUSH)
++  IWMMXT_BUILTIN (usaddv2si3, "waddwus", WADDUSW)
++  IWMMXT_BUILTIN (ussubv8qi3, "wsubbus", WSUBUSB)
++  IWMMXT_BUILTIN (ussubv4hi3, "wsubhus", WSUBUSH)
++  IWMMXT_BUILTIN (ussubv2si3, "wsubwus", WSUBUSW)
++  IWMMXT_BUILTIN (mulv4hi3, "wmulul", WMULUL)
++  IWMMXT_BUILTIN (smulv4hi3_highpart, "wmulsm", WMULSM)
++  IWMMXT_BUILTIN (umulv4hi3_highpart, "wmulum", WMULUM)
++  IWMMXT_BUILTIN (eqv8qi3, "wcmpeqb", WCMPEQB)
++  IWMMXT_BUILTIN (eqv4hi3, "wcmpeqh", WCMPEQH)
++  IWMMXT_BUILTIN (eqv2si3, "wcmpeqw", WCMPEQW)
++  IWMMXT_BUILTIN (gtuv8qi3, "wcmpgtub", WCMPGTUB)
++  IWMMXT_BUILTIN (gtuv4hi3, "wcmpgtuh", WCMPGTUH)
++  IWMMXT_BUILTIN (gtuv2si3, "wcmpgtuw", WCMPGTUW)
++  IWMMXT_BUILTIN (gtv8qi3, "wcmpgtsb", WCMPGTSB)
++  IWMMXT_BUILTIN (gtv4hi3, "wcmpgtsh", WCMPGTSH)
++  IWMMXT_BUILTIN (gtv2si3, "wcmpgtsw", WCMPGTSW)
++  IWMMXT_BUILTIN (umaxv8qi3, "wmaxub", WMAXUB)
++  IWMMXT_BUILTIN (smaxv8qi3, "wmaxsb", WMAXSB)
++  IWMMXT_BUILTIN (umaxv4hi3, "wmaxuh", WMAXUH)
++  IWMMXT_BUILTIN (smaxv4hi3, "wmaxsh", WMAXSH)
++  IWMMXT_BUILTIN (umaxv2si3, "wmaxuw", WMAXUW)
++  IWMMXT_BUILTIN (smaxv2si3, "wmaxsw", WMAXSW)
++  IWMMXT_BUILTIN (uminv8qi3, "wminub", WMINUB)
++  IWMMXT_BUILTIN (sminv8qi3, "wminsb", WMINSB)
++  IWMMXT_BUILTIN (uminv4hi3, "wminuh", WMINUH)
++  IWMMXT_BUILTIN (sminv4hi3, "wminsh", WMINSH)
++  IWMMXT_BUILTIN (uminv2si3, "wminuw", WMINUW)
++  IWMMXT_BUILTIN (sminv2si3, "wminsw", WMINSW)
++  IWMMXT_BUILTIN (iwmmxt_anddi3, "wand", WAND)
++  IWMMXT_BUILTIN (iwmmxt_nanddi3, "wandn", WANDN)
++  IWMMXT_BUILTIN (iwmmxt_iordi3, "wor", WOR)
++  IWMMXT_BUILTIN (iwmmxt_xordi3, "wxor", WXOR)
++  IWMMXT_BUILTIN (iwmmxt_uavgv8qi3, "wavg2b", WAVG2B)
++  IWMMXT_BUILTIN (iwmmxt_uavgv4hi3, "wavg2h", WAVG2H)
++  IWMMXT_BUILTIN (iwmmxt_uavgrndv8qi3, "wavg2br", WAVG2BR)
++  IWMMXT_BUILTIN (iwmmxt_uavgrndv4hi3, "wavg2hr", WAVG2HR)
++  IWMMXT_BUILTIN (iwmmxt_wunpckilb, "wunpckilb", WUNPCKILB)
++  IWMMXT_BUILTIN (iwmmxt_wunpckilh, "wunpckilh", WUNPCKILH)
++  IWMMXT_BUILTIN (iwmmxt_wunpckilw, "wunpckilw", WUNPCKILW)
++  IWMMXT_BUILTIN (iwmmxt_wunpckihb, "wunpckihb", WUNPCKIHB)
++  IWMMXT_BUILTIN (iwmmxt_wunpckihh, "wunpckihh", WUNPCKIHH)
++  IWMMXT_BUILTIN (iwmmxt_wunpckihw, "wunpckihw", WUNPCKIHW)
++  IWMMXT_BUILTIN (iwmmxt_wmadds, "wmadds", WMADDS)
++  IWMMXT_BUILTIN (iwmmxt_wmaddu, "wmaddu", WMADDU)
++  
++#define IWMMXT_BUILTIN2(code, builtin) \
++  { FL_IWMMXT, CODE_FOR_##code, NULL, ARM_BUILTIN_##builtin, UNKNOWN, 0 },
++  
++  IWMMXT_BUILTIN2 (iwmmxt_wpackhss, WPACKHSS)
++  IWMMXT_BUILTIN2 (iwmmxt_wpackwss, WPACKWSS)
++  IWMMXT_BUILTIN2 (iwmmxt_wpackdss, WPACKDSS)
++  IWMMXT_BUILTIN2 (iwmmxt_wpackhus, WPACKHUS)
++  IWMMXT_BUILTIN2 (iwmmxt_wpackwus, WPACKWUS)
++  IWMMXT_BUILTIN2 (iwmmxt_wpackdus, WPACKDUS)
++  IWMMXT_BUILTIN2 (ashlv4hi3_di,    WSLLH)
++  IWMMXT_BUILTIN2 (ashlv4hi3_iwmmxt, WSLLHI)
++  IWMMXT_BUILTIN2 (ashlv2si3_di,    WSLLW)
++  IWMMXT_BUILTIN2 (ashlv2si3_iwmmxt, WSLLWI)
++  IWMMXT_BUILTIN2 (ashldi3_di,      WSLLD)
++  IWMMXT_BUILTIN2 (ashldi3_iwmmxt,  WSLLDI)
++  IWMMXT_BUILTIN2 (lshrv4hi3_di,    WSRLH)
++  IWMMXT_BUILTIN2 (lshrv4hi3_iwmmxt, WSRLHI)
++  IWMMXT_BUILTIN2 (lshrv2si3_di,    WSRLW)
++  IWMMXT_BUILTIN2 (lshrv2si3_iwmmxt, WSRLWI)
++  IWMMXT_BUILTIN2 (lshrdi3_di,      WSRLD)
++  IWMMXT_BUILTIN2 (lshrdi3_iwmmxt,  WSRLDI)
++  IWMMXT_BUILTIN2 (ashrv4hi3_di,    WSRAH)
++  IWMMXT_BUILTIN2 (ashrv4hi3_iwmmxt, WSRAHI)
++  IWMMXT_BUILTIN2 (ashrv2si3_di,    WSRAW)
++  IWMMXT_BUILTIN2 (ashrv2si3_iwmmxt, WSRAWI)
++  IWMMXT_BUILTIN2 (ashrdi3_di,      WSRAD)
++  IWMMXT_BUILTIN2 (ashrdi3_iwmmxt,  WSRADI)
++  IWMMXT_BUILTIN2 (rorv4hi3_di,     WRORH)
++  IWMMXT_BUILTIN2 (rorv4hi3,        WRORHI)
++  IWMMXT_BUILTIN2 (rorv2si3_di,     WRORW)
++  IWMMXT_BUILTIN2 (rorv2si3,        WRORWI)
++  IWMMXT_BUILTIN2 (rordi3_di,       WRORD)
++  IWMMXT_BUILTIN2 (rordi3,          WRORDI)
++  IWMMXT_BUILTIN2 (iwmmxt_wmacuz,   WMACUZ)
++  IWMMXT_BUILTIN2 (iwmmxt_wmacsz,   WMACSZ)
++};
++  
++static const struct builtin_description bdesc_1arg[] =
++{
++  IWMMXT_BUILTIN (iwmmxt_tmovmskb, "tmovmskb", TMOVMSKB)
++  IWMMXT_BUILTIN (iwmmxt_tmovmskh, "tmovmskh", TMOVMSKH)
++  IWMMXT_BUILTIN (iwmmxt_tmovmskw, "tmovmskw", TMOVMSKW)
++  IWMMXT_BUILTIN (iwmmxt_waccb, "waccb", WACCB)
++  IWMMXT_BUILTIN (iwmmxt_wacch, "wacch", WACCH)
++  IWMMXT_BUILTIN (iwmmxt_waccw, "waccw", WACCW)
++  IWMMXT_BUILTIN (iwmmxt_wunpckehub, "wunpckehub", WUNPCKEHUB)
++  IWMMXT_BUILTIN (iwmmxt_wunpckehuh, "wunpckehuh", WUNPCKEHUH)
++  IWMMXT_BUILTIN (iwmmxt_wunpckehuw, "wunpckehuw", WUNPCKEHUW)
++  IWMMXT_BUILTIN (iwmmxt_wunpckehsb, "wunpckehsb", WUNPCKEHSB)
++  IWMMXT_BUILTIN (iwmmxt_wunpckehsh, "wunpckehsh", WUNPCKEHSH)
++  IWMMXT_BUILTIN (iwmmxt_wunpckehsw, "wunpckehsw", WUNPCKEHSW)
++  IWMMXT_BUILTIN (iwmmxt_wunpckelub, "wunpckelub", WUNPCKELUB)
++  IWMMXT_BUILTIN (iwmmxt_wunpckeluh, "wunpckeluh", WUNPCKELUH)
++  IWMMXT_BUILTIN (iwmmxt_wunpckeluw, "wunpckeluw", WUNPCKELUW)
++  IWMMXT_BUILTIN (iwmmxt_wunpckelsb, "wunpckelsb", WUNPCKELSB)
++  IWMMXT_BUILTIN (iwmmxt_wunpckelsh, "wunpckelsh", WUNPCKELSH)
++  IWMMXT_BUILTIN (iwmmxt_wunpckelsw, "wunpckelsw", WUNPCKELSW)
++};
++  
++/* Set up all the iWMMXt builtins.  This is not called if
++   TARGET_IWMMXT is zero.  */
++
++static void
++arm_init_iwmmxt_builtins (void)
++{
++  const struct builtin_description * d;
++  size_t i;
++  tree endlink = void_list_node;
++
++  tree V2SI_type_node = build_vector_type_for_mode (intSI_type_node, V2SImode);
++  tree V4HI_type_node = build_vector_type_for_mode (intHI_type_node, V4HImode);
++  tree V8QI_type_node = build_vector_type_for_mode (intQI_type_node, V8QImode);
++
++  tree int_ftype_int
++    = build_function_type (integer_type_node,
++			   tree_cons (NULL_TREE, integer_type_node, endlink));
++  tree v8qi_ftype_v8qi_v8qi_int
++    = build_function_type (V8QI_type_node,
++			   tree_cons (NULL_TREE, V8QI_type_node,
++				      tree_cons (NULL_TREE, V8QI_type_node,
++						 tree_cons (NULL_TREE,
++							    integer_type_node,
++							    endlink))));
++  tree v4hi_ftype_v4hi_int
++    = build_function_type (V4HI_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 endlink)));
++  tree v2si_ftype_v2si_int
++    = build_function_type (V2SI_type_node,
++			   tree_cons (NULL_TREE, V2SI_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 endlink)));
++  tree v2si_ftype_di_di
++    = build_function_type (V2SI_type_node,
++			   tree_cons (NULL_TREE, long_long_integer_type_node,
++				      tree_cons (NULL_TREE,
++						 long_long_integer_type_node,
++						 endlink)));
++  tree di_ftype_di_int
++    = build_function_type (long_long_integer_type_node,
++			   tree_cons (NULL_TREE, long_long_integer_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 endlink)));
++  tree di_ftype_di_int_int
++    = build_function_type (long_long_integer_type_node,
++			   tree_cons (NULL_TREE, long_long_integer_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 tree_cons (NULL_TREE,
++							    integer_type_node,
++							    endlink))));
++  tree int_ftype_v8qi
++    = build_function_type (integer_type_node,
++			   tree_cons (NULL_TREE, V8QI_type_node,
++				      endlink));
++  tree int_ftype_v4hi
++    = build_function_type (integer_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      endlink));
++  tree int_ftype_v2si
++    = build_function_type (integer_type_node,
++			   tree_cons (NULL_TREE, V2SI_type_node,
++				      endlink));
++  tree int_ftype_v8qi_int
++    = build_function_type (integer_type_node,
++			   tree_cons (NULL_TREE, V8QI_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 endlink)));
++  tree int_ftype_v4hi_int
++    = build_function_type (integer_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 endlink)));
++  tree int_ftype_v2si_int
++    = build_function_type (integer_type_node,
++			   tree_cons (NULL_TREE, V2SI_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 endlink)));
++  tree v8qi_ftype_v8qi_int_int
++    = build_function_type (V8QI_type_node,
++			   tree_cons (NULL_TREE, V8QI_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 tree_cons (NULL_TREE,
++							    integer_type_node,
++							    endlink))));
++  tree v4hi_ftype_v4hi_int_int
++    = build_function_type (V4HI_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 tree_cons (NULL_TREE,
++							    integer_type_node,
++							    endlink))));
++  tree v2si_ftype_v2si_int_int
++    = build_function_type (V2SI_type_node,
++			   tree_cons (NULL_TREE, V2SI_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 tree_cons (NULL_TREE,
++							    integer_type_node,
++							    endlink))));
++  /* Miscellaneous.  */
++  tree v8qi_ftype_v4hi_v4hi
++    = build_function_type (V8QI_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      tree_cons (NULL_TREE, V4HI_type_node,
++						 endlink)));
++  tree v4hi_ftype_v2si_v2si
++    = build_function_type (V4HI_type_node,
++			   tree_cons (NULL_TREE, V2SI_type_node,
++				      tree_cons (NULL_TREE, V2SI_type_node,
++						 endlink)));
++  tree v2si_ftype_v4hi_v4hi
++    = build_function_type (V2SI_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      tree_cons (NULL_TREE, V4HI_type_node,
++						 endlink)));
++  tree v2si_ftype_v8qi_v8qi
++    = build_function_type (V2SI_type_node,
++			   tree_cons (NULL_TREE, V8QI_type_node,
++				      tree_cons (NULL_TREE, V8QI_type_node,
++						 endlink)));
++  tree v4hi_ftype_v4hi_di
++    = build_function_type (V4HI_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      tree_cons (NULL_TREE,
++						 long_long_integer_type_node,
++						 endlink)));
++  tree v2si_ftype_v2si_di
++    = build_function_type (V2SI_type_node,
++			   tree_cons (NULL_TREE, V2SI_type_node,
++				      tree_cons (NULL_TREE,
++						 long_long_integer_type_node,
++						 endlink)));
++  tree void_ftype_int_int
++    = build_function_type (void_type_node,
++			   tree_cons (NULL_TREE, integer_type_node,
++				      tree_cons (NULL_TREE, integer_type_node,
++						 endlink)));
++  tree di_ftype_void
++    = build_function_type (long_long_unsigned_type_node, endlink);
++  tree di_ftype_v8qi
++    = build_function_type (long_long_integer_type_node,
++			   tree_cons (NULL_TREE, V8QI_type_node,
++				      endlink));
++  tree di_ftype_v4hi
++    = build_function_type (long_long_integer_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      endlink));
++  tree di_ftype_v2si
++    = build_function_type (long_long_integer_type_node,
++			   tree_cons (NULL_TREE, V2SI_type_node,
++				      endlink));
++  tree v2si_ftype_v4hi
++    = build_function_type (V2SI_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      endlink));
++  tree v4hi_ftype_v8qi
++    = build_function_type (V4HI_type_node,
++			   tree_cons (NULL_TREE, V8QI_type_node,
++				      endlink));
++
++  tree di_ftype_di_v4hi_v4hi
++    = build_function_type (long_long_unsigned_type_node,
++			   tree_cons (NULL_TREE,
++				      long_long_unsigned_type_node,
++				      tree_cons (NULL_TREE, V4HI_type_node,
++						 tree_cons (NULL_TREE,
++							    V4HI_type_node,
++							    endlink))));
++
++  tree di_ftype_v4hi_v4hi
++    = build_function_type (long_long_unsigned_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      tree_cons (NULL_TREE, V4HI_type_node,
++						 endlink)));
++  
++  /* Normal vector binops.  */
++  tree v8qi_ftype_v8qi_v8qi
++    = build_function_type (V8QI_type_node,
++			   tree_cons (NULL_TREE, V8QI_type_node,
++				      tree_cons (NULL_TREE, V8QI_type_node,
++						 endlink)));
++  tree v4hi_ftype_v4hi_v4hi
++    = build_function_type (V4HI_type_node,
++			   tree_cons (NULL_TREE, V4HI_type_node,
++				      tree_cons (NULL_TREE, V4HI_type_node,
++						 endlink)));
++  tree v2si_ftype_v2si_v2si
++    = build_function_type (V2SI_type_node,
++			   tree_cons (NULL_TREE, V2SI_type_node,
++				      tree_cons (NULL_TREE, V2SI_type_node,
++						 endlink)));
++  tree di_ftype_di_di
++    = build_function_type (long_long_unsigned_type_node,
++			   tree_cons (NULL_TREE, long_long_unsigned_type_node,
++				      tree_cons (NULL_TREE,
++						 long_long_unsigned_type_node,
++						 endlink)));
++  
++  /* Add all builtins that are more or less simple operations on two
++     operands.  */
++  for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++)
+     {
+-      int j;
+-      for (j = 0; j < 5; j++)
+-        {
+-          reinterp_ftype_dreg[i][j]
+-            = build_function_type_list (dreg_types[i], dreg_types[j], NULL);
+-          reinterp_ftype_qreg[i][j]
+-            = build_function_type_list (qreg_types[i], qreg_types[j], NULL);
+-        }
+-    }
++      /* Use one of the operands; the target can have a different mode for
++	 mask-generating compares.  */
++      enum machine_mode mode;
++      tree type;
+ 
+-  for (i = 0; i < ARRAY_SIZE (neon_builtin_data); i++)
+-    {
+-      neon_builtin_datum *d = &neon_builtin_data[i];
+-      unsigned int j, codeidx = 0;
++      if (d->name == 0)
++	continue;
+ 
+-      d->base_fcode = fcode;
++      mode = insn_data[d->icode].operand[1].mode;
+ 
+-      for (j = 0; j < T_MAX; j++)
++      switch (mode)
+ 	{
+-	  const char* const modenames[] = {
+-	    "v8qi", "v4hi", "v2si", "v2sf", "di",
+-	    "v16qi", "v8hi", "v4si", "v4sf", "v2di"
+-	  };
+-	  char namebuf[60];
+-	  tree ftype = NULL;
+-	  enum insn_code icode;
+-	  int is_load = 0, is_store = 0;
+-
+-          if ((d->bits & (1 << j)) == 0)
+-            continue;
+-
+-          icode = d->codes[codeidx++];
+-
+-          switch (d->itype)
+-            {
+-	    case NEON_LOAD1:
+-	    case NEON_LOAD1LANE:
+-	    case NEON_LOADSTRUCT:
+-	    case NEON_LOADSTRUCTLANE:
+-	      is_load = 1;
+-	      /* Fall through.  */
+-	    case NEON_STORE1:
+-	    case NEON_STORE1LANE:
+-	    case NEON_STORESTRUCT:
+-	    case NEON_STORESTRUCTLANE:
+-	      if (!is_load)
+-	        is_store = 1;
+-	      /* Fall through.  */
+-            case NEON_UNOP:
+-	    case NEON_BINOP:
+-	    case NEON_LOGICBINOP:
+-	    case NEON_SHIFTINSERT:
+-	    case NEON_TERNOP:
+-	    case NEON_GETLANE:
+-	    case NEON_SETLANE:
+-	    case NEON_CREATE:
+-	    case NEON_DUP:
+-	    case NEON_DUPLANE:
+-	    case NEON_SHIFTIMM:
+-	    case NEON_SHIFTACC:
+-	    case NEON_COMBINE:
+-	    case NEON_SPLIT:
+-	    case NEON_CONVERT:
+-	    case NEON_FIXCONV:
+-	    case NEON_LANEMUL:
+-	    case NEON_LANEMULL:
+-	    case NEON_LANEMULH:
+-	    case NEON_LANEMAC:
+-	    case NEON_SCALARMUL:
+-	    case NEON_SCALARMULL:
+-	    case NEON_SCALARMULH:
+-	    case NEON_SCALARMAC:
+-	    case NEON_SELECT:
+-	    case NEON_VTBL:
+-	    case NEON_VTBX:
+-	      {
+-		int k;
+-		tree return_type = void_type_node, args = void_list_node;
+-
+-		/* Build a function type directly from the insn_data for this
+-		   builtin.  The build_function_type() function takes care of
+-		   removing duplicates for us.  */
+-		for (k = insn_data[icode].n_operands - 1; k >= 0; k--)
+-		  {
+-		    tree eltype;
+-
+-		    if (is_load && k == 1)
+-		      {
+-		        /* Neon load patterns always have the memory operand
+-			   (a SImode pointer) in the operand 1 position.  We
+-			   want a const pointer to the element type in that
+-			   position.  */
+-		        gcc_assert (insn_data[icode].operand[k].mode == SImode);
+-
+-			switch (1 << j)
+-			  {
+-			  case T_V8QI:
+-			  case T_V16QI:
+-			    eltype = const_intQI_pointer_node;
+-			    break;
+-
+-			  case T_V4HI:
+-			  case T_V8HI:
+-			    eltype = const_intHI_pointer_node;
+-			    break;
+-
+-			  case T_V2SI:
+-			  case T_V4SI:
+-			    eltype = const_intSI_pointer_node;
+-			    break;
+-
+-			  case T_V2SF:
+-			  case T_V4SF:
+-			    eltype = const_float_pointer_node;
+-			    break;
+-
+-			  case T_DI:
+-			  case T_V2DI:
+-			    eltype = const_intDI_pointer_node;
+-			    break;
+-
+-			  default: gcc_unreachable ();
+-			  }
+-  		      }
+-		    else if (is_store && k == 0)
+-		      {
+-		        /* Similarly, Neon store patterns use operand 0 as
+-			   the memory location to store to (a SImode pointer).
+-			   Use a pointer to the element type of the store in
+-			   that position.  */
+-			gcc_assert (insn_data[icode].operand[k].mode == SImode);
+-
+-			switch (1 << j)
+-			  {
+-			  case T_V8QI:
+-			  case T_V16QI:
+-			    eltype = intQI_pointer_node;
+-			    break;
+-
+-			  case T_V4HI:
+-			  case T_V8HI:
+-			    eltype = intHI_pointer_node;
+-			    break;
+-
+-			  case T_V2SI:
+-			  case T_V4SI:
+-			    eltype = intSI_pointer_node;
+-			    break;
+-
+-			  case T_V2SF:
+-			  case T_V4SF:
+-			    eltype = float_pointer_node;
+-			    break;
+-
+-			  case T_DI:
+-			  case T_V2DI:
+-			    eltype = intDI_pointer_node;
+-			    break;
+-
+-			  default: gcc_unreachable ();
+-			  }
+-		      }
+-		    else
+-		      {
+-			switch (insn_data[icode].operand[k].mode)
+-	        	  {
+-			  case VOIDmode: eltype = void_type_node; break;
+-			  /* Scalars.  */
+-			  case QImode: eltype = neon_intQI_type_node; break;
+-			  case HImode: eltype = neon_intHI_type_node; break;
+-			  case SImode: eltype = neon_intSI_type_node; break;
+-			  case SFmode: eltype = neon_float_type_node; break;
+-			  case DImode: eltype = neon_intDI_type_node; break;
+-			  case TImode: eltype = intTI_type_node; break;
+-			  case EImode: eltype = intEI_type_node; break;
+-			  case OImode: eltype = intOI_type_node; break;
+-			  case CImode: eltype = intCI_type_node; break;
+-			  case XImode: eltype = intXI_type_node; break;
+-			  /* 64-bit vectors.  */
+-			  case V8QImode: eltype = V8QI_type_node; break;
+-			  case V4HImode: eltype = V4HI_type_node; break;
+-			  case V2SImode: eltype = V2SI_type_node; break;
+-			  case V2SFmode: eltype = V2SF_type_node; break;
+-			  /* 128-bit vectors.  */
+-			  case V16QImode: eltype = V16QI_type_node; break;
+-			  case V8HImode: eltype = V8HI_type_node; break;
+-			  case V4SImode: eltype = V4SI_type_node; break;
+-			  case V4SFmode: eltype = V4SF_type_node; break;
+-			  case V2DImode: eltype = V2DI_type_node; break;
+-			  default: gcc_unreachable ();
+-			  }
+-		      }
+-
+-		    if (k == 0 && !is_store)
+-	              return_type = eltype;
+-		    else
+-		      args = tree_cons (NULL_TREE, eltype, args);
+-		  }
+-
+-		ftype = build_function_type (return_type, args);
+-	      }
+-	      break;
++	case V8QImode:
++	  type = v8qi_ftype_v8qi_v8qi;
++	  break;
++	case V4HImode:
++	  type = v4hi_ftype_v4hi_v4hi;
++	  break;
++	case V2SImode:
++	  type = v2si_ftype_v2si_v2si;
++	  break;
++	case DImode:
++	  type = di_ftype_di_di;
++	  break;
+ 
+-	    case NEON_RESULTPAIR:
+-              {
+-                switch (insn_data[icode].operand[1].mode)
+-                  {
+-		  case V8QImode: ftype = void_ftype_pv8qi_v8qi_v8qi; break;
+-                  case V4HImode: ftype = void_ftype_pv4hi_v4hi_v4hi; break;
+-                  case V2SImode: ftype = void_ftype_pv2si_v2si_v2si; break;
+-                  case V2SFmode: ftype = void_ftype_pv2sf_v2sf_v2sf; break;
+-                  case DImode: ftype = void_ftype_pdi_di_di; break;
+-                  case V16QImode: ftype = void_ftype_pv16qi_v16qi_v16qi; break;
+-                  case V8HImode: ftype = void_ftype_pv8hi_v8hi_v8hi; break;
+-                  case V4SImode: ftype = void_ftype_pv4si_v4si_v4si; break;
+-                  case V4SFmode: ftype = void_ftype_pv4sf_v4sf_v4sf; break;
+-                  case V2DImode: ftype = void_ftype_pv2di_v2di_v2di; break;
+-                  default: gcc_unreachable ();
+-                  }
+-              }
+-              break;
++	default:
++	  gcc_unreachable ();
++	}
+ 
+-	    case NEON_REINTERP:
+-              {
+-                /* We iterate over 5 doubleword types, then 5 quadword
+-                   types.  */
+-                int rhs = j % 5;
+-                switch (insn_data[icode].operand[0].mode)
+-                  {
+-                  case V8QImode: ftype = reinterp_ftype_dreg[0][rhs]; break;
+-                  case V4HImode: ftype = reinterp_ftype_dreg[1][rhs]; break;
+-                  case V2SImode: ftype = reinterp_ftype_dreg[2][rhs]; break;
+-                  case V2SFmode: ftype = reinterp_ftype_dreg[3][rhs]; break;
+-                  case DImode: ftype = reinterp_ftype_dreg[4][rhs]; break;
+-                  case V16QImode: ftype = reinterp_ftype_qreg[0][rhs]; break;
+-                  case V8HImode: ftype = reinterp_ftype_qreg[1][rhs]; break;
+-                  case V4SImode: ftype = reinterp_ftype_qreg[2][rhs]; break;
+-		  case V4SFmode: ftype = reinterp_ftype_qreg[3][rhs]; break;
+-                  case V2DImode: ftype = reinterp_ftype_qreg[4][rhs]; break;
+-                  default: gcc_unreachable ();
+-                  }
+-              }
+-              break;
++      def_mbuiltin (d->mask, d->name, type, d->code);
++    }
+ 
+-            default:
+-              gcc_unreachable ();
+-            }
++  /* Add the remaining MMX insns with somewhat more complicated types.  */
++#define iwmmx_mbuiltin(NAME, TYPE, CODE)			\
++  def_mbuiltin (FL_IWMMXT, "__builtin_arm_" NAME, (TYPE),	\
++		ARM_BUILTIN_ ## CODE)
++
++  iwmmx_mbuiltin ("wzero", di_ftype_void, WZERO);
++  iwmmx_mbuiltin ("setwcx", void_ftype_int_int, SETWCX);
++  iwmmx_mbuiltin ("getwcx", int_ftype_int, GETWCX);
++
++  iwmmx_mbuiltin ("wsllh", v4hi_ftype_v4hi_di, WSLLH);
++  iwmmx_mbuiltin ("wsllw", v2si_ftype_v2si_di, WSLLW);
++  iwmmx_mbuiltin ("wslld", di_ftype_di_di, WSLLD);
++  iwmmx_mbuiltin ("wsllhi", v4hi_ftype_v4hi_int, WSLLHI);
++  iwmmx_mbuiltin ("wsllwi", v2si_ftype_v2si_int, WSLLWI);
++  iwmmx_mbuiltin ("wslldi", di_ftype_di_int, WSLLDI);
++
++  iwmmx_mbuiltin ("wsrlh", v4hi_ftype_v4hi_di, WSRLH);
++  iwmmx_mbuiltin ("wsrlw", v2si_ftype_v2si_di, WSRLW);
++  iwmmx_mbuiltin ("wsrld", di_ftype_di_di, WSRLD);
++  iwmmx_mbuiltin ("wsrlhi", v4hi_ftype_v4hi_int, WSRLHI);
++  iwmmx_mbuiltin ("wsrlwi", v2si_ftype_v2si_int, WSRLWI);
++  iwmmx_mbuiltin ("wsrldi", di_ftype_di_int, WSRLDI);
++
++  iwmmx_mbuiltin ("wsrah", v4hi_ftype_v4hi_di, WSRAH);
++  iwmmx_mbuiltin ("wsraw", v2si_ftype_v2si_di, WSRAW);
++  iwmmx_mbuiltin ("wsrad", di_ftype_di_di, WSRAD);
++  iwmmx_mbuiltin ("wsrahi", v4hi_ftype_v4hi_int, WSRAHI);
++  iwmmx_mbuiltin ("wsrawi", v2si_ftype_v2si_int, WSRAWI);
++  iwmmx_mbuiltin ("wsradi", di_ftype_di_int, WSRADI);
++
++  iwmmx_mbuiltin ("wrorh", v4hi_ftype_v4hi_di, WRORH);
++  iwmmx_mbuiltin ("wrorw", v2si_ftype_v2si_di, WRORW);
++  iwmmx_mbuiltin ("wrord", di_ftype_di_di, WRORD);
++  iwmmx_mbuiltin ("wrorhi", v4hi_ftype_v4hi_int, WRORHI);
++  iwmmx_mbuiltin ("wrorwi", v2si_ftype_v2si_int, WRORWI);
++  iwmmx_mbuiltin ("wrordi", di_ftype_di_int, WRORDI);
++
++  iwmmx_mbuiltin ("wshufh", v4hi_ftype_v4hi_int, WSHUFH);
++
++  iwmmx_mbuiltin ("wsadb", v2si_ftype_v8qi_v8qi, WSADB);
++  iwmmx_mbuiltin ("wsadh", v2si_ftype_v4hi_v4hi, WSADH);
++  iwmmx_mbuiltin ("wsadbz", v2si_ftype_v8qi_v8qi, WSADBZ);
++  iwmmx_mbuiltin ("wsadhz", v2si_ftype_v4hi_v4hi, WSADHZ);
++
++  iwmmx_mbuiltin ("textrmsb", int_ftype_v8qi_int, TEXTRMSB);
++  iwmmx_mbuiltin ("textrmsh", int_ftype_v4hi_int, TEXTRMSH);
++  iwmmx_mbuiltin ("textrmsw", int_ftype_v2si_int, TEXTRMSW);
++  iwmmx_mbuiltin ("textrmub", int_ftype_v8qi_int, TEXTRMUB);
++  iwmmx_mbuiltin ("textrmuh", int_ftype_v4hi_int, TEXTRMUH);
++  iwmmx_mbuiltin ("textrmuw", int_ftype_v2si_int, TEXTRMUW);
++  iwmmx_mbuiltin ("tinsrb", v8qi_ftype_v8qi_int_int, TINSRB);
++  iwmmx_mbuiltin ("tinsrh", v4hi_ftype_v4hi_int_int, TINSRH);
++  iwmmx_mbuiltin ("tinsrw", v2si_ftype_v2si_int_int, TINSRW);
++
++  iwmmx_mbuiltin ("waccb", di_ftype_v8qi, WACCB);
++  iwmmx_mbuiltin ("wacch", di_ftype_v4hi, WACCH);
++  iwmmx_mbuiltin ("waccw", di_ftype_v2si, WACCW);
++
++  iwmmx_mbuiltin ("tmovmskb", int_ftype_v8qi, TMOVMSKB);
++  iwmmx_mbuiltin ("tmovmskh", int_ftype_v4hi, TMOVMSKH);
++  iwmmx_mbuiltin ("tmovmskw", int_ftype_v2si, TMOVMSKW);
++
++  iwmmx_mbuiltin ("wpackhss", v8qi_ftype_v4hi_v4hi, WPACKHSS);
++  iwmmx_mbuiltin ("wpackhus", v8qi_ftype_v4hi_v4hi, WPACKHUS);
++  iwmmx_mbuiltin ("wpackwus", v4hi_ftype_v2si_v2si, WPACKWUS);
++  iwmmx_mbuiltin ("wpackwss", v4hi_ftype_v2si_v2si, WPACKWSS);
++  iwmmx_mbuiltin ("wpackdus", v2si_ftype_di_di, WPACKDUS);
++  iwmmx_mbuiltin ("wpackdss", v2si_ftype_di_di, WPACKDSS);
++
++  iwmmx_mbuiltin ("wunpckehub", v4hi_ftype_v8qi, WUNPCKEHUB);
++  iwmmx_mbuiltin ("wunpckehuh", v2si_ftype_v4hi, WUNPCKEHUH);
++  iwmmx_mbuiltin ("wunpckehuw", di_ftype_v2si, WUNPCKEHUW);
++  iwmmx_mbuiltin ("wunpckehsb", v4hi_ftype_v8qi, WUNPCKEHSB);
++  iwmmx_mbuiltin ("wunpckehsh", v2si_ftype_v4hi, WUNPCKEHSH);
++  iwmmx_mbuiltin ("wunpckehsw", di_ftype_v2si, WUNPCKEHSW);
++  iwmmx_mbuiltin ("wunpckelub", v4hi_ftype_v8qi, WUNPCKELUB);
++  iwmmx_mbuiltin ("wunpckeluh", v2si_ftype_v4hi, WUNPCKELUH);
++  iwmmx_mbuiltin ("wunpckeluw", di_ftype_v2si, WUNPCKELUW);
++  iwmmx_mbuiltin ("wunpckelsb", v4hi_ftype_v8qi, WUNPCKELSB);
++  iwmmx_mbuiltin ("wunpckelsh", v2si_ftype_v4hi, WUNPCKELSH);
++  iwmmx_mbuiltin ("wunpckelsw", di_ftype_v2si, WUNPCKELSW);
++
++  iwmmx_mbuiltin ("wmacs", di_ftype_di_v4hi_v4hi, WMACS);
++  iwmmx_mbuiltin ("wmacsz", di_ftype_v4hi_v4hi, WMACSZ);
++  iwmmx_mbuiltin ("wmacu", di_ftype_di_v4hi_v4hi, WMACU);
++  iwmmx_mbuiltin ("wmacuz", di_ftype_v4hi_v4hi, WMACUZ);
++
++  iwmmx_mbuiltin ("walign", v8qi_ftype_v8qi_v8qi_int, WALIGN);
++  iwmmx_mbuiltin ("tmia", di_ftype_di_int_int, TMIA);
++  iwmmx_mbuiltin ("tmiaph", di_ftype_di_int_int, TMIAPH);
++  iwmmx_mbuiltin ("tmiabb", di_ftype_di_int_int, TMIABB);
++  iwmmx_mbuiltin ("tmiabt", di_ftype_di_int_int, TMIABT);
++  iwmmx_mbuiltin ("tmiatb", di_ftype_di_int_int, TMIATB);
++  iwmmx_mbuiltin ("tmiatt", di_ftype_di_int_int, TMIATT);
+ 
+-          gcc_assert (ftype != NULL);
++#undef iwmmx_mbuiltin
++}
+ 
+-          sprintf (namebuf, "__builtin_neon_%s%s", d->name, modenames[j]);
++static void
++arm_init_tls_builtins (void)
++{
++  tree ftype, decl;
+ 
+-          add_builtin_function (namebuf, ftype, fcode++, BUILT_IN_MD, NULL,
+-				NULL_TREE);
+-        }
+-    }
++  ftype = build_function_type (ptr_type_node, void_list_node);
++  decl = add_builtin_function ("__builtin_thread_pointer", ftype,
++			       ARM_BUILTIN_THREAD_POINTER, BUILT_IN_MD,
++			       NULL, NULL_TREE);
++  TREE_NOTHROW (decl) = 1;
++  TREE_READONLY (decl) = 1;
++  arm_builtin_decls[ARM_BUILTIN_THREAD_POINTER] = decl;
+ }
+ 
+ static void
+@@ -19147,6 +20241,17 @@
+     arm_init_fp16_builtins ();
+ }
+ 
++/* Return the ARM builtin for CODE.  */
++
++static tree
++arm_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
++{
++  if (code >= ARM_BUILTIN_MAX)
++    return error_mark_node;
++
++  return arm_builtin_decls[code];
++}
++
+ /* Implement TARGET_INVALID_PARAMETER_TYPE.  */
+ 
+ static const char *
+@@ -19298,55 +20403,68 @@
+   return target;
+ }
+ 
+-static int
+-neon_builtin_compare (const void *a, const void *b)
+-{
+-  const neon_builtin_datum *const key = (const neon_builtin_datum *) a;
+-  const neon_builtin_datum *const memb = (const neon_builtin_datum *) b;
+-  unsigned int soughtcode = key->base_fcode;
+-
+-  if (soughtcode >= memb->base_fcode
+-      && soughtcode < memb->base_fcode + memb->num_vars)
+-    return 0;
+-  else if (soughtcode < memb->base_fcode)
+-    return -1;
+-  else
+-    return 1;
+-}
+-
+-static enum insn_code
+-locate_neon_builtin_icode (int fcode, neon_itype *itype)
+-{
+-  neon_builtin_datum key
+-    = { NULL, (neon_itype) 0, 0, { CODE_FOR_nothing }, 0, 0 };
+-  neon_builtin_datum *found;
+-  int idx;
+-
+-  key.base_fcode = fcode;
+-  found = (neon_builtin_datum *)
+-    bsearch (&key, &neon_builtin_data[0], ARRAY_SIZE (neon_builtin_data),
+-		   sizeof (neon_builtin_data[0]), neon_builtin_compare);
+-  gcc_assert (found);
+-  idx = fcode - (int) found->base_fcode;
+-  gcc_assert (idx >= 0 && idx < T_MAX && idx < (int)found->num_vars);
+-
+-  if (itype)
+-    *itype = found->itype;
+-
+-  return found->codes[idx];
+-}
+-
+ typedef enum {
+   NEON_ARG_COPY_TO_REG,
+   NEON_ARG_CONSTANT,
++  NEON_ARG_MEMORY,
+   NEON_ARG_STOP
+ } builtin_arg;
+ 
+ #define NEON_MAX_BUILTIN_ARGS 5
+ 
++/* EXP is a pointer argument to a Neon load or store intrinsic.  Derive
++   and return an expression for the accessed memory.
++
++   The intrinsic function operates on a block of registers that has
++   mode REG_MODE.  This block contains vectors of type TYPE_MODE.
++   The function references the memory at EXP in mode MEM_MODE;
++   this mode may be BLKmode if no more suitable mode is available.  */
++
++static tree
++neon_dereference_pointer (tree exp, enum machine_mode mem_mode,
++			  enum machine_mode reg_mode,
++			  neon_builtin_type_mode type_mode)
++{
++  HOST_WIDE_INT reg_size, vector_size, nvectors, nelems;
++  tree elem_type, upper_bound, array_type;
++
++  /* Work out the size of the register block in bytes.  */
++  reg_size = GET_MODE_SIZE (reg_mode);
++
++  /* Work out the size of each vector in bytes.  */
++  gcc_assert (TYPE_MODE_BIT (type_mode) & (TB_DREG | TB_QREG));
++  vector_size = (TYPE_MODE_BIT (type_mode) & TB_QREG ? 16 : 8);
++
++  /* Work out how many vectors there are.  */
++  gcc_assert (reg_size % vector_size == 0);
++  nvectors = reg_size / vector_size;
++
++  /* Work out how many elements are being loaded or stored.
++     MEM_MODE == REG_MODE implies a one-to-one mapping between register
++     and memory elements; anything else implies a lane load or store.  */
++  if (mem_mode == reg_mode)
++    nelems = vector_size * nvectors;
++  else
++    nelems = nvectors;
++
++  /* Work out the type of each element.  */
++  gcc_assert (POINTER_TYPE_P (TREE_TYPE (exp)));
++  elem_type = TREE_TYPE (TREE_TYPE (exp));
++
++  /* Create a type that describes the full access.  */
++  upper_bound = build_int_cst (size_type_node, nelems - 1);
++  array_type = build_array_type (elem_type, build_index_type (upper_bound));
++  /* Dereference EXP using that type.  */
++  exp = fold_convert (build_pointer_type (array_type), exp);
++
++  return fold_build2 (MEM_REF, array_type, exp,
++		      build_int_cst (TREE_TYPE (exp), 0));
++}
++
+ /* Expand a Neon builtin.  */
+ static rtx
+ arm_expand_neon_args (rtx target, int icode, int have_retval,
++		      neon_builtin_type_mode type_mode,
+ 		      tree exp, ...)
+ {
+   va_list ap;
+@@ -19355,7 +20473,9 @@
+   rtx op[NEON_MAX_BUILTIN_ARGS];
+   enum machine_mode tmode = insn_data[icode].operand[0].mode;
+   enum machine_mode mode[NEON_MAX_BUILTIN_ARGS];
++  enum machine_mode other_mode;
+   int argc = 0;
++  int opno;
+ 
+   if (have_retval
+       && (!target
+@@ -19373,26 +20493,46 @@
+         break;
+       else
+         {
++          opno = argc + have_retval;
++          mode[argc] = insn_data[icode].operand[opno].mode;
+           arg[argc] = CALL_EXPR_ARG (exp, argc);
++          if (thisarg == NEON_ARG_MEMORY)
++            {
++              other_mode = insn_data[icode].operand[1 - opno].mode;
++              arg[argc] = neon_dereference_pointer (arg[argc], mode[argc],
++                                                    other_mode, type_mode);
++            }
+           op[argc] = expand_normal (arg[argc]);
+-          mode[argc] = insn_data[icode].operand[argc + have_retval].mode;
+ 
+           switch (thisarg)
+             {
+             case NEON_ARG_COPY_TO_REG:
+               /*gcc_assert (GET_MODE (op[argc]) == mode[argc]);*/
+-              if (!(*insn_data[icode].operand[argc + have_retval].predicate)
++              if (!(*insn_data[icode].operand[opno].predicate)
+                      (op[argc], mode[argc]))
+                 op[argc] = copy_to_mode_reg (mode[argc], op[argc]);
+               break;
+ 
+             case NEON_ARG_CONSTANT:
+               /* FIXME: This error message is somewhat unhelpful.  */
+-              if (!(*insn_data[icode].operand[argc + have_retval].predicate)
++              if (!(*insn_data[icode].operand[opno].predicate)
+                     (op[argc], mode[argc]))
+ 		error ("argument must be a constant");
+               break;
+ 
++            case NEON_ARG_MEMORY:
++	      gcc_assert (MEM_P (op[argc]));
++	      PUT_MODE (op[argc], mode[argc]);
++	      /* ??? arm_neon.h uses the same built-in functions for signed
++		 and unsigned accesses, casting where necessary.  This isn't
++		 alias safe.  */
++	      set_mem_alias_set (op[argc], 0);
++	      if (!(*insn_data[icode].operand[opno].predicate)
++                    (op[argc], mode[argc]))
++		op[argc] = (replace_equiv_address
++			    (op[argc], force_reg (Pmode, XEXP (op[argc], 0))));
++              break;
++
+             case NEON_ARG_STOP:
+               gcc_unreachable ();
+             }
+@@ -19470,15 +20610,17 @@
+ static rtx
+ arm_expand_neon_builtin (int fcode, tree exp, rtx target)
+ {
+-  neon_itype itype;
+-  enum insn_code icode = locate_neon_builtin_icode (fcode, &itype);
++  neon_builtin_datum *d = &neon_builtin_data[fcode - ARM_BUILTIN_NEON_BASE];
++  neon_itype itype = d->itype;
++  enum insn_code icode = d->code;
++  neon_builtin_type_mode type_mode = d->mode;
+ 
+   switch (itype)
+     {
+     case NEON_UNOP:
+     case NEON_CONVERT:
+     case NEON_DUPLANE:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT, NEON_ARG_STOP);
+ 
+     case NEON_BINOP:
+@@ -19488,90 +20630,90 @@
+     case NEON_SCALARMULH:
+     case NEON_SHIFTINSERT:
+     case NEON_LOGICBINOP:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT,
+         NEON_ARG_STOP);
+ 
+     case NEON_TERNOP:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG,
+         NEON_ARG_CONSTANT, NEON_ARG_STOP);
+ 
+     case NEON_GETLANE:
+     case NEON_FIXCONV:
+     case NEON_SHIFTIMM:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT, NEON_ARG_CONSTANT,
+         NEON_ARG_STOP);
+ 
+     case NEON_CREATE:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_STOP);
+ 
+     case NEON_DUP:
+     case NEON_SPLIT:
+     case NEON_REINTERP:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_STOP);
+ 
+     case NEON_COMBINE:
+     case NEON_VTBL:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_STOP);
+ 
+     case NEON_RESULTPAIR:
+-      return arm_expand_neon_args (target, icode, 0, exp,
++      return arm_expand_neon_args (target, icode, 0, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG,
+         NEON_ARG_STOP);
+ 
+     case NEON_LANEMUL:
+     case NEON_LANEMULL:
+     case NEON_LANEMULH:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT,
+         NEON_ARG_CONSTANT, NEON_ARG_STOP);
+ 
+     case NEON_LANEMAC:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG,
+         NEON_ARG_CONSTANT, NEON_ARG_CONSTANT, NEON_ARG_STOP);
+ 
+     case NEON_SHIFTACC:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+         NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT,
+         NEON_ARG_CONSTANT, NEON_ARG_STOP);
+ 
+     case NEON_SCALARMAC:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+ 	NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG,
+         NEON_ARG_CONSTANT, NEON_ARG_STOP);
+ 
+     case NEON_SELECT:
+     case NEON_VTBX:
+-      return arm_expand_neon_args (target, icode, 1, exp,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
+ 	NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG,
+         NEON_ARG_STOP);
+ 
+     case NEON_LOAD1:
+     case NEON_LOADSTRUCT:
+-      return arm_expand_neon_args (target, icode, 1, exp,
+-	NEON_ARG_COPY_TO_REG, NEON_ARG_STOP);
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
++	NEON_ARG_MEMORY, NEON_ARG_STOP);
+ 
+     case NEON_LOAD1LANE:
+     case NEON_LOADSTRUCTLANE:
+-      return arm_expand_neon_args (target, icode, 1, exp,
+-	NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT,
++      return arm_expand_neon_args (target, icode, 1, type_mode, exp,
++	NEON_ARG_MEMORY, NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT,
+ 	NEON_ARG_STOP);
+ 
+     case NEON_STORE1:
+     case NEON_STORESTRUCT:
+-      return arm_expand_neon_args (target, icode, 0, exp,
+-	NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_STOP);
++      return arm_expand_neon_args (target, icode, 0, type_mode, exp,
++	NEON_ARG_MEMORY, NEON_ARG_COPY_TO_REG, NEON_ARG_STOP);
+ 
+     case NEON_STORE1LANE:
+     case NEON_STORESTRUCTLANE:
+-      return arm_expand_neon_args (target, icode, 0, exp,
+-	NEON_ARG_COPY_TO_REG, NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT,
++      return arm_expand_neon_args (target, icode, 0, type_mode, exp,
++	NEON_ARG_MEMORY, NEON_ARG_COPY_TO_REG, NEON_ARG_CONSTANT,
+ 	NEON_ARG_STOP);
+     }
+ 
+@@ -21484,6 +22626,8 @@
+       const char *fpu_name;
+       if (arm_selected_arch)
+ 	asm_fprintf (asm_out_file, "\t.arch %s\n", arm_selected_arch->name);
++      else if (strncmp (arm_selected_cpu->name, "generic", 7) == 0)
++	asm_fprintf (asm_out_file, "\t.arch %s\n", arm_selected_cpu->name + 8);
+       else
+ 	asm_fprintf (asm_out_file, "\t.cpu %s\n", arm_selected_cpu->name);
+ 
+@@ -21547,6 +22691,10 @@
+ 	val = 6;
+       asm_fprintf (asm_out_file, "\t.eabi_attribute 30, %d\n", val);
+ 
++      /* Tag_CPU_unaligned_access.  */
++      asm_fprintf (asm_out_file, "\t.eabi_attribute 34, %d\n",
++		   unaligned_access);
++
+       /* Tag_ABI_FP_16bit_format.  */
+       if (arm_fp16_format)
+ 	asm_fprintf (asm_out_file, "\t.eabi_attribute 38, %d\n",
+@@ -22290,7 +23438,21 @@
+   return false;
+ }
+ 
+-/* Use the option -mvectorize-with-neon-quad to override the use of doubleword
++/* Implements target hook array_mode_supported_p.  */
++
++static bool
++arm_array_mode_supported_p (enum machine_mode mode,
++			    unsigned HOST_WIDE_INT nelems)
++{
++  if (TARGET_NEON
++      && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
++      && (nelems >= 2 && nelems <= 4))
++    return true;
++
++  return false;
++}
++
++/* Use the option -mvectorize-with-neon-double to override the use of quardword
+    registers when autovectorizing for Neon, at least until multiple vector
+    widths are supported properly by the middle-end.  */
+ 
+@@ -22301,15 +23463,15 @@
+     switch (mode)
+       {
+       case SFmode:
+-	return TARGET_NEON_VECTORIZE_QUAD ? V4SFmode : V2SFmode;
++	return TARGET_NEON_VECTORIZE_DOUBLE ? V2SFmode : V4SFmode;
+       case SImode:
+-	return TARGET_NEON_VECTORIZE_QUAD ? V4SImode : V2SImode;
++	return TARGET_NEON_VECTORIZE_DOUBLE ? V2SImode : V4SImode;
+       case HImode:
+-	return TARGET_NEON_VECTORIZE_QUAD ? V8HImode : V4HImode;
++	return TARGET_NEON_VECTORIZE_DOUBLE ? V4HImode : V8HImode;
+       case QImode:
+-	return TARGET_NEON_VECTORIZE_QUAD ? V16QImode : V8QImode;
++	return TARGET_NEON_VECTORIZE_DOUBLE ? V8QImode : V16QImode;
+       case DImode:
+-	if (TARGET_NEON_VECTORIZE_QUAD)
++	if (!TARGET_NEON_VECTORIZE_DOUBLE)
+ 	  return V2DImode;
+ 	break;
+ 
+@@ -22334,14 +23496,16 @@
+ 
+ /* Implement TARGET_CLASS_LIKELY_SPILLED_P.
+  
+-   We need to define this for LO_REGS on thumb.  Otherwise we can end up
+-   using r0-r4 for function arguments, r7 for the stack frame and don't
+-   have enough left over to do doubleword arithmetic.  */
+-
++   We need to define this for LO_REGS on Thumb-1.  Otherwise we can end up
++   using r0-r4 for function arguments, r7 for the stack frame and don't have
++   enough left over to do doubleword arithmetic.  For Thumb-2 all the
++   potentially problematic instructions accept high registers so this is not
++   necessary.  Care needs to be taken to avoid adding new Thumb-2 patterns
++   that require many low registers.  */
+ static bool
+ arm_class_likely_spilled_p (reg_class_t rclass)
+ {
+-  if ((TARGET_THUMB && rclass == LO_REGS)
++  if ((TARGET_THUMB1 && rclass == LO_REGS)
+       || rclass  == CC_REG)
+     return true;
+ 
+@@ -22993,8 +24157,13 @@
+ {
+   switch (arm_tune)
+     {
++    case cortexa15:
++      return 3;
++
+     case cortexr4:
+     case cortexr4f:
++    case cortexr5:
++    case genericv7a:
+     case cortexa5:
+     case cortexa8:
+     case cortexa9:
+@@ -23247,12 +24416,26 @@
+ 		  rtx target,
+ 		  rtx memory)
+ {
+-  const char *suffix = arm_ldrex_suffix (mode);
+-  rtx operands[2];
++  rtx operands[3];
+ 
+   operands[0] = target;
+-  operands[1] = memory;
+-  arm_output_asm_insn (emit, 0, operands, "ldrex%s\t%%0, %%C1", suffix);
++  if (mode != DImode)
++    {
++      const char *suffix = arm_ldrex_suffix (mode);
++      operands[1] = memory;
++      arm_output_asm_insn (emit, 0, operands, "ldrex%s\t%%0, %%C1", suffix);
++    }
++  else
++    {
++      /* The restrictions on target registers in ARM mode are that the two
++	 registers are consecutive and the first one is even; Thumb is
++	 actually more flexible, but DI should give us this anyway.
++	 Note that the 1st register always gets the lowest word in memory.  */
++      gcc_assert ((REGNO (target) & 1) == 0);
++      operands[1] = gen_rtx_REG (SImode, REGNO (target) + 1);
++      operands[2] = memory;
++      arm_output_asm_insn (emit, 0, operands, "ldrexd\t%%0, %%1, %%C2");
++    }
+ }
+ 
+ /* Emit a strex{b,h,d, } instruction appropriate for the specified
+@@ -23265,14 +24448,41 @@
+ 		  rtx value,
+ 		  rtx memory)
+ {
+-  const char *suffix = arm_ldrex_suffix (mode);
+-  rtx operands[3];
++  rtx operands[4];
+ 
+   operands[0] = result;
+   operands[1] = value;
+-  operands[2] = memory;
+-  arm_output_asm_insn (emit, 0, operands, "strex%s%s\t%%0, %%1, %%C2", suffix,
+-		       cc);
++  if (mode != DImode)
++    {
++      const char *suffix = arm_ldrex_suffix (mode);
++      operands[2] = memory;
++      arm_output_asm_insn (emit, 0, operands, "strex%s%s\t%%0, %%1, %%C2",
++			  suffix, cc);
++    }
++  else
++    {
++      /* The restrictions on target registers in ARM mode are that the two
++	 registers are consecutive and the first one is even; Thumb is
++	 actually more flexible, but DI should give us this anyway.
++	 Note that the 1st register always gets the lowest word in memory.  */
++      gcc_assert ((REGNO (value) & 1) == 0 || TARGET_THUMB2);
++      operands[2] = gen_rtx_REG (SImode, REGNO (value) + 1);
++      operands[3] = memory;
++      arm_output_asm_insn (emit, 0, operands, "strexd%s\t%%0, %%1, %%2, %%C3",
++			   cc);
++    }
++}
++
++/* Helper to emit an it instruction in Thumb2 mode only; although the assembler
++   will ignore it in ARM mode, emitting it will mess up instruction counts we
++   sometimes keep 'flags' are the extra t's and e's if it's more than one
++   instruction that is conditional.  */
++static void
++arm_output_it (emit_f emit, const char *flags, const char *cond)
++{
++  rtx operands[1]; /* Don't actually use the operand.  */
++  if (TARGET_THUMB2)
++    arm_output_asm_insn (emit, 0, operands, "it%s\t%s", flags, cond);
+ }
+ 
+ /* Helper to emit a two operand instruction.  */
+@@ -23314,7 +24524,7 @@
+ 
+    required_value:
+ 
+-   RTX register or const_int representing the required old_value for
++   RTX register representing the required old_value for
+    the modify to continue, if NULL no comparsion is performed.  */
+ static void
+ arm_output_sync_loop (emit_f emit,
+@@ -23328,7 +24538,13 @@
+ 		      enum attr_sync_op sync_op,
+ 		      int early_barrier_required)
+ {
+-  rtx operands[1];
++  rtx operands[2];
++  /* We'll use the lo for the normal rtx in the none-DI case
++     as well as the least-sig word in the DI case.  */
++  rtx old_value_lo, required_value_lo, new_value_lo, t1_lo;
++  rtx old_value_hi, required_value_hi, new_value_hi, t1_hi;
++
++  bool is_di = mode == DImode;
+ 
+   gcc_assert (t1 != t2);
+ 
+@@ -23339,82 +24555,142 @@
+ 
+   arm_output_ldrex (emit, mode, old_value, memory);
+ 
++  if (is_di)
++    {
++      old_value_lo = gen_lowpart (SImode, old_value);
++      old_value_hi = gen_highpart (SImode, old_value);
++      if (required_value)
++	{
++	  required_value_lo = gen_lowpart (SImode, required_value);
++	  required_value_hi = gen_highpart (SImode, required_value);
++	}
++      else
++	{
++	  /* Silence false potentially unused warning.  */
++	  required_value_lo = NULL_RTX;
++	  required_value_hi = NULL_RTX;
++	}
++      new_value_lo = gen_lowpart (SImode, new_value);
++      new_value_hi = gen_highpart (SImode, new_value);
++      t1_lo = gen_lowpart (SImode, t1);
++      t1_hi = gen_highpart (SImode, t1);
++    }
++  else
++    {
++      old_value_lo = old_value;
++      new_value_lo = new_value;
++      required_value_lo = required_value;
++      t1_lo = t1;
++
++      /* Silence false potentially unused warning.  */
++      t1_hi = NULL_RTX;
++      new_value_hi = NULL_RTX;
++      required_value_hi = NULL_RTX;
++      old_value_hi = NULL_RTX;
++    }
++
+   if (required_value)
+     {
+-      rtx operands[2];
++      operands[0] = old_value_lo;
++      operands[1] = required_value_lo;
+ 
+-      operands[0] = old_value;
+-      operands[1] = required_value;
+       arm_output_asm_insn (emit, 0, operands, "cmp\t%%0, %%1");
++      if (is_di)
++        {
++          arm_output_it (emit, "", "eq");
++          arm_output_op2 (emit, "cmpeq", old_value_hi, required_value_hi);
++        }
+       arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYB%%=", LOCAL_LABEL_PREFIX);
+     }
+ 
+   switch (sync_op)
+     {
+     case SYNC_OP_ADD:
+-      arm_output_op3 (emit, "add", t1, old_value, new_value);
++      arm_output_op3 (emit, is_di ? "adds" : "add",
++		      t1_lo, old_value_lo, new_value_lo);
++      if (is_di)
++	arm_output_op3 (emit, "adc", t1_hi, old_value_hi, new_value_hi);
+       break;
+ 
+     case SYNC_OP_SUB:
+-      arm_output_op3 (emit, "sub", t1, old_value, new_value);
++      arm_output_op3 (emit, is_di ? "subs" : "sub",
++		      t1_lo, old_value_lo, new_value_lo);
++      if (is_di)
++	arm_output_op3 (emit, "sbc", t1_hi, old_value_hi, new_value_hi);
+       break;
+ 
+     case SYNC_OP_IOR:
+-      arm_output_op3 (emit, "orr", t1, old_value, new_value);
++      arm_output_op3 (emit, "orr", t1_lo, old_value_lo, new_value_lo);
++      if (is_di)
++	arm_output_op3 (emit, "orr", t1_hi, old_value_hi, new_value_hi);
+       break;
+ 
+     case SYNC_OP_XOR:
+-      arm_output_op3 (emit, "eor", t1, old_value, new_value);
++      arm_output_op3 (emit, "eor", t1_lo, old_value_lo, new_value_lo);
++      if (is_di)
++	arm_output_op3 (emit, "eor", t1_hi, old_value_hi, new_value_hi);
+       break;
+ 
+     case SYNC_OP_AND:
+-      arm_output_op3 (emit,"and", t1, old_value, new_value);
++      arm_output_op3 (emit,"and", t1_lo, old_value_lo, new_value_lo);
++      if (is_di)
++	arm_output_op3 (emit, "and", t1_hi, old_value_hi, new_value_hi);
+       break;
+ 
+     case SYNC_OP_NAND:
+-      arm_output_op3 (emit, "and", t1, old_value, new_value);
+-      arm_output_op2 (emit, "mvn", t1, t1);
++      arm_output_op3 (emit, "and", t1_lo, old_value_lo, new_value_lo);
++      if (is_di)
++	arm_output_op3 (emit, "and", t1_hi, old_value_hi, new_value_hi);
++      arm_output_op2 (emit, "mvn", t1_lo, t1_lo);
++      if (is_di)
++	arm_output_op2 (emit, "mvn", t1_hi, t1_hi);
+       break;
+ 
+     case SYNC_OP_NONE:
+       t1 = new_value;
++      t1_lo = new_value_lo;
++      if (is_di)
++	t1_hi = new_value_hi;
+       break;
+     }
+ 
++  /* Note that the result of strex is a 0/1 flag that's always 1 register.  */
+   if (t2)
+     {
+-       arm_output_strex (emit, mode, "", t2, t1, memory);
+-       operands[0] = t2;
+-       arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
+-       arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=",
+-			    LOCAL_LABEL_PREFIX);
++      arm_output_strex (emit, mode, "", t2, t1, memory);
++      operands[0] = t2;
++      arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
++      arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=",
++			   LOCAL_LABEL_PREFIX);
+     }
+   else
+     {
+       /* Use old_value for the return value because for some operations
+ 	 the old_value can easily be restored.  This saves one register.  */
+-      arm_output_strex (emit, mode, "", old_value, t1, memory);
+-      operands[0] = old_value;
++      arm_output_strex (emit, mode, "", old_value_lo, t1, memory);
++      operands[0] = old_value_lo;
+       arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
+       arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=",
+ 			   LOCAL_LABEL_PREFIX);
+ 
++      /* Note that we only used the _lo half of old_value as a temporary
++	 so in DI we don't have to restore the _hi part.  */
+       switch (sync_op)
+ 	{
+ 	case SYNC_OP_ADD:
+-	  arm_output_op3 (emit, "sub", old_value, t1, new_value);
++	  arm_output_op3 (emit, "sub", old_value_lo, t1_lo, new_value_lo);
+ 	  break;
+ 
+ 	case SYNC_OP_SUB:
+-	  arm_output_op3 (emit, "add", old_value, t1, new_value);
++	  arm_output_op3 (emit, "add", old_value_lo, t1_lo, new_value_lo);
+ 	  break;
+ 
+ 	case SYNC_OP_XOR:
+-	  arm_output_op3 (emit, "eor", old_value, t1, new_value);
++	  arm_output_op3 (emit, "eor", old_value_lo, t1_lo, new_value_lo);
+ 	  break;
+ 
+ 	case SYNC_OP_NONE:
+-	  arm_output_op2 (emit, "mov", old_value, required_value);
++	  arm_output_op2 (emit, "mov", old_value_lo, required_value_lo);
+ 	  break;
+ 
+ 	default:
+@@ -23422,8 +24698,11 @@
+ 	}
+     }
+ 
+-  arm_process_output_memory_barrier (emit, NULL);
++  /* Note: label is before barrier so that in cmp failure case we still get
++     a barrier to stop subsequent loads floating upwards past the ldrex
++     PR target/48126.  */
+   arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
++  arm_process_output_memory_barrier (emit, NULL);
+ }
+ 
+ static rtx
+@@ -23517,7 +24796,7 @@
+     target = gen_reg_rtx (mode);
+ 
+   memory = arm_legitimize_sync_memory (memory);
+-  if (mode != SImode)
++  if (mode != SImode && mode != DImode)
+     {
+       rtx load_temp = gen_reg_rtx (SImode);
+ 
+@@ -23536,6 +24815,24 @@
+     }
+ }
+ 
++/* The AAPCS sets the maximum alignment of a vector to 64 bits.  */
++static HOST_WIDE_INT
++arm_vector_alignment (const_tree type)
++{
++  HOST_WIDE_INT align = tree_low_cst (TYPE_SIZE (type), 0);
++
++  if (TARGET_AAPCS_BASED)
++    align = MIN (align, 64);
++
++  return align;
++}
++
++static unsigned int
++arm_autovectorize_vector_sizes (void)
++{
++  return TARGET_NEON_VECTORIZE_DOUBLE ? 0 : (16 | 8);
++}
++
+ static bool
+ arm_vector_alignment_reachable (const_tree type, bool is_packed)
+ {
+@@ -23689,4 +24986,53 @@
+     return NO_REGS;
+ }
+ 
++/* Compute the atrribute "length" of insn "*push_multi".
++   So this function MUST be kept in sync with that insn pattern.  */
++int
++arm_attr_length_push_multi(rtx parallel_op, rtx first_op)
++{
++  int i, regno, hi_reg;
++  int num_saves = XVECLEN (parallel_op, 0);
++
++  /* ARM mode.  */
++  if (TARGET_ARM)
++    return 4;
++
++  /* Thumb2 mode.  */
++  regno = REGNO (first_op);
++  hi_reg = (REGNO_REG_CLASS (regno) == HI_REGS) && (regno != LR_REGNUM);
++  for (i = 1; i < num_saves && !hi_reg; i++)
++    {
++      regno = REGNO (XEXP (XVECEXP (parallel_op, 0, i), 0));
++      hi_reg |= (REGNO_REG_CLASS (regno) == HI_REGS) && (regno != LR_REGNUM);
++    }
++
++  if (!hi_reg)
++    return 2;
++  return 4;
++}
++
++int
++vfp3_const_double_for_fract_bits (rtx operand)
++{
++  REAL_VALUE_TYPE r0;
++  
++  if (GET_CODE (operand) != CONST_DOUBLE)
++    return 0;
++  
++  REAL_VALUE_FROM_CONST_DOUBLE (r0, operand);
++  if (exact_real_inverse (DFmode, &r0))
++    {
++      if (exact_real_truncate (DFmode, &r0))
++	{
++	  HOST_WIDE_INT value = real_to_integer (&r0);
++	  value = value & 0xffffffff;
++	  if ((value != 0) && ( (value & (value - 1)) == 0))
++	    return int_log2 (value);
++	}
++    }
++  return 0;
++}
++
+ #include "gt-arm.h"
++
+--- a/src/gcc/config/arm/arm-cores.def
++++ b/src/gcc/config/arm/arm-cores.def
+@@ -70,10 +70,10 @@
+ /* V4 Architecture Processors */
+ ARM_CORE("arm8",          arm8,		4,	             FL_MODE26 | FL_LDSCHED, fastmul)
+ ARM_CORE("arm810",        arm810,	4,	             FL_MODE26 | FL_LDSCHED, fastmul)
+-ARM_CORE("strongarm",     strongarm,	4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
+-ARM_CORE("strongarm110",  strongarm110,	4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
+-ARM_CORE("strongarm1100", strongarm1100, 4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
+-ARM_CORE("strongarm1110", strongarm1110, 4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, fastmul)
++ARM_CORE("strongarm",     strongarm,	4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm)
++ARM_CORE("strongarm110",  strongarm110,	4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm)
++ARM_CORE("strongarm1100", strongarm1100, 4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm)
++ARM_CORE("strongarm1110", strongarm1110, 4,	             FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm)
+ ARM_CORE("fa526",         fa526,        4,                               FL_LDSCHED, fastmul)
+ ARM_CORE("fa626",         fa626,        4,                               FL_LDSCHED, fastmul)
+ 
+@@ -122,15 +122,19 @@
+ ARM_CORE("arm1176jzf-s",  arm1176jzfs,	6ZK,				 FL_LDSCHED | FL_VFPV2, 9e)
+ ARM_CORE("mpcorenovfp",	  mpcorenovfp,	6K,				 FL_LDSCHED, 9e)
+ ARM_CORE("mpcore",	  mpcore,	6K,				 FL_LDSCHED | FL_VFPV2, 9e)
+-ARM_CORE("arm1156t2-s",	  arm1156t2s,	6T2,				 FL_LDSCHED, 9e)
+-ARM_CORE("arm1156t2f-s",  arm1156t2fs,  6T2,				 FL_LDSCHED | FL_VFPV2, 9e)
+-ARM_CORE("cortex-a5",	  cortexa5,	7A,				 FL_LDSCHED, 9e)
+-ARM_CORE("cortex-a8",	  cortexa8,	7A,				 FL_LDSCHED, 9e)
++ARM_CORE("arm1156t2-s",	  arm1156t2s,	6T2,				 FL_LDSCHED, v6t2)
++ARM_CORE("arm1156t2f-s",  arm1156t2fs,  6T2,				 FL_LDSCHED | FL_VFPV2, v6t2)
++ARM_CORE("generic-armv7-a", genericv7a,	7A,				 FL_LDSCHED, cortex)
++ARM_CORE("cortex-a5",	  cortexa5,	7A,				 FL_LDSCHED, cortex_a5)
++ARM_CORE("cortex-a7",	  cortexa7,	7A,				 FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex)
++ARM_CORE("cortex-a8",	  cortexa8,	7A,				 FL_LDSCHED, cortex)
+ ARM_CORE("cortex-a9",	  cortexa9,	7A,				 FL_LDSCHED, cortex_a9)
+-ARM_CORE("cortex-a15",	  cortexa15,	7A,				 FL_LDSCHED, 9e)
+-ARM_CORE("cortex-r4",	  cortexr4,	7R,				 FL_LDSCHED, 9e)
+-ARM_CORE("cortex-r4f",	  cortexr4f,	7R,				 FL_LDSCHED, 9e)
+-ARM_CORE("cortex-m4",	  cortexm4,	7EM,				 FL_LDSCHED, 9e)
+-ARM_CORE("cortex-m3",	  cortexm3,	7M,				 FL_LDSCHED, 9e)
+-ARM_CORE("cortex-m1",	  cortexm1,	6M,				 FL_LDSCHED, 9e)
+-ARM_CORE("cortex-m0",	  cortexm0,	6M,				 FL_LDSCHED, 9e)
++ARM_CORE("cortex-a15",	  cortexa15,	7A,				 FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex)
++ARM_CORE("cortex-r4",	  cortexr4,	7R,				 FL_LDSCHED, cortex)
++ARM_CORE("cortex-r4f",	  cortexr4f,	7R,				 FL_LDSCHED, cortex)
++ARM_CORE("cortex-r5",	  cortexr5,	7R,				 FL_LDSCHED | FL_ARM_DIV, cortex)
++ARM_CORE("cortex-m4",	  cortexm4,	7EM,				 FL_LDSCHED, cortex)
++ARM_CORE("cortex-m3",	  cortexm3,	7M,				 FL_LDSCHED, cortex)
++ARM_CORE("cortex-m1",	  cortexm1,	6M,				 FL_LDSCHED, cortex)
++ARM_CORE("cortex-m0",	  cortexm0,	6M,				 FL_LDSCHED, cortex)
++
+--- a/src/gcc/config/arm/arm.h
++++ b/src/gcc/config/arm/arm.h
+@@ -47,6 +47,8 @@
+     {							\
+ 	if (TARGET_DSP_MULTIPLY)			\
+ 	   builtin_define ("__ARM_FEATURE_DSP");	\
++	if (unaligned_access)				\
++	  builtin_define ("__ARM_FEATURE_UNALIGNED");	\
+ 	/* Define __arm__ even when in thumb mode, for	\
+ 	   consistency with armcc.  */			\
+ 	builtin_define ("__arm__");			\
+@@ -103,6 +105,8 @@
+ 	      builtin_define ("__ARM_PCS");		\
+ 	    builtin_define ("__ARM_EABI__");		\
+ 	  }						\
++	if (TARGET_IDIV)				\
++	  builtin_define ("__ARM_ARCH_EXT_IDIV__");	\
+     } while (0)
+ 
+ /* The various ARM cores.  */
+@@ -196,6 +200,7 @@
+    Do not define this macro if it does not need to do anything.  */
+ #define EXTRA_SPECS						\
+   { "subtarget_cpp_spec",	SUBTARGET_CPP_SPEC },           \
++  { "asm_cpu_spec",		ASM_CPU_SPEC },			\
+   SUBTARGET_EXTRA_SPECS
+ 
+ #ifndef SUBTARGET_EXTRA_SPECS
+@@ -284,7 +289,8 @@
+   (TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7em))
+ 
+ /* Should MOVW/MOVT be used in preference to a constant pool.  */
+-#define TARGET_USE_MOVT (arm_arch_thumb2 && !optimize_size)
++#define TARGET_USE_MOVT \
++  (arm_arch_thumb2 && !optimize_size && !current_tune->prefer_constant_pool)
+ 
+ /* We could use unified syntax for arm mode, but for now we just use it
+    for Thumb-2.  */
+@@ -294,7 +300,8 @@
+ #define TARGET_HAVE_DMB		(arm_arch7)
+ 
+ /* Nonzero if this chip implements a memory barrier via CP15.  */
+-#define TARGET_HAVE_DMB_MCR	(arm_arch6k && ! TARGET_HAVE_DMB)
++#define TARGET_HAVE_DMB_MCR	(arm_arch6 && ! TARGET_HAVE_DMB \
++				 && ! TARGET_THUMB1)
+ 
+ /* Nonzero if this chip implements a memory barrier instruction.  */
+ #define TARGET_HAVE_MEMORY_BARRIER (TARGET_HAVE_DMB || TARGET_HAVE_DMB_MCR)
+@@ -302,8 +309,16 @@
+ /* Nonzero if this chip supports ldrex and strex */
+ #define TARGET_HAVE_LDREX	((arm_arch6 && TARGET_ARM) || arm_arch7)
+ 
+-/* Nonzero if this chip supports ldrex{bhd} and strex{bhd}.  */
+-#define TARGET_HAVE_LDREXBHD	((arm_arch6k && TARGET_ARM) || arm_arch7)
++/* Nonzero if this chip supports ldrex{bh} and strex{bh}.  */
++#define TARGET_HAVE_LDREXBH	((arm_arch6k && TARGET_ARM) || arm_arch7)
++
++/* Nonzero if this chip supports ldrexd and strexd.  */
++#define TARGET_HAVE_LDREXD	(((arm_arch6k && TARGET_ARM) || arm_arch7) \
++				 && arm_arch_notm)
++
++/* Nonzero if integer division instructions supported.  */
++#define TARGET_IDIV		((TARGET_ARM && arm_arch_arm_hwdiv) \
++				 || (TARGET_THUMB2 && arm_arch_thumb_hwdiv))
+ 
+ /* True iff the full BPABI is being used.  If TARGET_BPABI is true,
+    then TARGET_AAPCS_BASED must be true -- but the converse does not
+@@ -489,8 +504,11 @@
+ /* Nonzero if chip supports Thumb 2.  */
+ extern int arm_arch_thumb2;
+ 
+-/* Nonzero if chip supports integer division instruction.  */
+-extern int arm_arch_hwdiv;
++/* Nonzero if chip supports integer division instruction in ARM mode.  */
++extern int arm_arch_arm_hwdiv;
++
++/* Nonzero if chip supports integer division instruction in Thumb mode.  */
++extern int arm_arch_thumb_hwdiv;
+ 
+ #ifndef TARGET_DEFAULT
+ #define TARGET_DEFAULT  (MASK_APCS_FRAME)
+@@ -1171,12 +1189,12 @@
+ }
+ 
+ /* FPA registers can't do subreg as all values are reformatted to internal
+-   precision.  VFP registers may only be accessed in the mode they
+-   were set.  */
+-#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS)	\
+-  (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO)		\
+-   ? reg_classes_intersect_p (FPA_REGS, (CLASS))	\
+-     || reg_classes_intersect_p (VFP_REGS, (CLASS))	\
++   precision.  In VFPv1, VFP registers could only be accessed in the mode
++   they were set, so subregs would be invalid there too.  However, we don't
++   support VFPv1 at the moment, and the restriction was lifted in VFPv2.  */
++#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS)		\
++  (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO)			\
++   ? reg_classes_intersect_p (FPA_REGS, (CLASS))		\
+    : 0)
+ 
+ /* The class value for index registers, and the one for base regs.  */
+@@ -1187,7 +1205,7 @@
+    when addressing quantities in QI or HI mode; if we don't know the
+    mode, then we must be conservative.  */
+ #define MODE_BASE_REG_CLASS(MODE)					\
+-    (TARGET_32BIT ? CORE_REGS :					\
++    (TARGET_ARM || (TARGET_THUMB2 && !optimize_size) ? CORE_REGS :      \
+      (((MODE) == SImode) ? BASE_REGS : LO_REGS))
+ 
+ /* For Thumb we can not support SP+reg addressing, so we return LO_REGS
+@@ -1777,27 +1795,6 @@
+ #define TARGET_DEFAULT_WORD_RELOCATIONS 0
+ #endif
+ 
+-/* Nonzero if the constant value X is a legitimate general operand.
+-   It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE.
+-
+-   On the ARM, allow any integer (invalid ones are removed later by insn
+-   patterns), nice doubles and symbol_refs which refer to the function's
+-   constant pool XXX.
+-
+-   When generating pic allow anything.  */
+-#define ARM_LEGITIMATE_CONSTANT_P(X)	(flag_pic || ! label_mentioned_p (X))
+-
+-#define THUMB_LEGITIMATE_CONSTANT_P(X)	\
+- (   GET_CODE (X) == CONST_INT		\
+-  || GET_CODE (X) == CONST_DOUBLE	\
+-  || CONSTANT_ADDRESS_P (X)		\
+-  || flag_pic)
+-
+-#define LEGITIMATE_CONSTANT_P(X)			\
+-  (!arm_cannot_force_const_mem (X)			\
+-   && (TARGET_32BIT ? ARM_LEGITIMATE_CONSTANT_P (X)	\
+-		    : THUMB_LEGITIMATE_CONSTANT_P (X)))
+-
+ #ifndef SUBTARGET_NAME_ENCODING_LENGTHS
+ #define SUBTARGET_NAME_ENCODING_LENGTHS
+ #endif
+@@ -1972,7 +1969,7 @@
+       : min >= -4096 && max < 4096					\
+       ? (ADDR_DIFF_VEC_FLAGS (body).offset_unsigned = 0, HImode)	\
+       : SImode)								\
+-   : ((min < 0 || max >= 0x2000 || !TARGET_THUMB2) ? SImode		\
++   : ((min < 0 || max >= 0x20000 || !TARGET_THUMB2) ? SImode		\
+       : (max >= 0x200) ? HImode						\
+       : QImode))
+ 
+@@ -2041,7 +2038,8 @@
+ /* Try to generate sequences that don't involve branches, we can then use
+    conditional instructions */
+ #define BRANCH_COST(speed_p, predictable_p) \
+-  (TARGET_32BIT ? 4 : (optimize > 0 ? 2 : 0))
++  (current_tune->branch_cost (speed_p, predictable_p))
++
+ 
+ /* Position Independent Code.  */
+ /* We decide which register to use based on the compilation options and
+@@ -2279,178 +2277,6 @@
+    : arm_gen_return_addr_mask ())
+ 
+ 
+-/* Neon defines builtins from ARM_BUILTIN_MAX upwards, though they don't have
+-   symbolic names defined here (which would require too much duplication).
+-   FIXME?  */
+-enum arm_builtins
+-{
+-  ARM_BUILTIN_GETWCX,
+-  ARM_BUILTIN_SETWCX,
+-
+-  ARM_BUILTIN_WZERO,
+-
+-  ARM_BUILTIN_WAVG2BR,
+-  ARM_BUILTIN_WAVG2HR,
+-  ARM_BUILTIN_WAVG2B,
+-  ARM_BUILTIN_WAVG2H,
+-
+-  ARM_BUILTIN_WACCB,
+-  ARM_BUILTIN_WACCH,
+-  ARM_BUILTIN_WACCW,
+-
+-  ARM_BUILTIN_WMACS,
+-  ARM_BUILTIN_WMACSZ,
+-  ARM_BUILTIN_WMACU,
+-  ARM_BUILTIN_WMACUZ,
+-
+-  ARM_BUILTIN_WSADB,
+-  ARM_BUILTIN_WSADBZ,
+-  ARM_BUILTIN_WSADH,
+-  ARM_BUILTIN_WSADHZ,
+-
+-  ARM_BUILTIN_WALIGN,
+-
+-  ARM_BUILTIN_TMIA,
+-  ARM_BUILTIN_TMIAPH,
+-  ARM_BUILTIN_TMIABB,
+-  ARM_BUILTIN_TMIABT,
+-  ARM_BUILTIN_TMIATB,
+-  ARM_BUILTIN_TMIATT,
+-
+-  ARM_BUILTIN_TMOVMSKB,
+-  ARM_BUILTIN_TMOVMSKH,
+-  ARM_BUILTIN_TMOVMSKW,
+-
+-  ARM_BUILTIN_TBCSTB,
+-  ARM_BUILTIN_TBCSTH,
+-  ARM_BUILTIN_TBCSTW,
+-
+-  ARM_BUILTIN_WMADDS,
+-  ARM_BUILTIN_WMADDU,
+-
+-  ARM_BUILTIN_WPACKHSS,
+-  ARM_BUILTIN_WPACKWSS,
+-  ARM_BUILTIN_WPACKDSS,
+-  ARM_BUILTIN_WPACKHUS,
+-  ARM_BUILTIN_WPACKWUS,
+-  ARM_BUILTIN_WPACKDUS,
+-
+-  ARM_BUILTIN_WADDB,
+-  ARM_BUILTIN_WADDH,
+-  ARM_BUILTIN_WADDW,
+-  ARM_BUILTIN_WADDSSB,
+-  ARM_BUILTIN_WADDSSH,
+-  ARM_BUILTIN_WADDSSW,
+-  ARM_BUILTIN_WADDUSB,
+-  ARM_BUILTIN_WADDUSH,
+-  ARM_BUILTIN_WADDUSW,
+-  ARM_BUILTIN_WSUBB,
+-  ARM_BUILTIN_WSUBH,
+-  ARM_BUILTIN_WSUBW,
+-  ARM_BUILTIN_WSUBSSB,
+-  ARM_BUILTIN_WSUBSSH,
+-  ARM_BUILTIN_WSUBSSW,
+-  ARM_BUILTIN_WSUBUSB,
+-  ARM_BUILTIN_WSUBUSH,
+-  ARM_BUILTIN_WSUBUSW,
+-
+-  ARM_BUILTIN_WAND,
+-  ARM_BUILTIN_WANDN,
+-  ARM_BUILTIN_WOR,
+-  ARM_BUILTIN_WXOR,
+-
+-  ARM_BUILTIN_WCMPEQB,
+-  ARM_BUILTIN_WCMPEQH,
+-  ARM_BUILTIN_WCMPEQW,
+-  ARM_BUILTIN_WCMPGTUB,
+-  ARM_BUILTIN_WCMPGTUH,
+-  ARM_BUILTIN_WCMPGTUW,
+-  ARM_BUILTIN_WCMPGTSB,
+-  ARM_BUILTIN_WCMPGTSH,
+-  ARM_BUILTIN_WCMPGTSW,
+-
+-  ARM_BUILTIN_TEXTRMSB,
+-  ARM_BUILTIN_TEXTRMSH,
+-  ARM_BUILTIN_TEXTRMSW,
+-  ARM_BUILTIN_TEXTRMUB,
+-  ARM_BUILTIN_TEXTRMUH,
+-  ARM_BUILTIN_TEXTRMUW,
+-  ARM_BUILTIN_TINSRB,
+-  ARM_BUILTIN_TINSRH,
+-  ARM_BUILTIN_TINSRW,
+-
+-  ARM_BUILTIN_WMAXSW,
+-  ARM_BUILTIN_WMAXSH,
+-  ARM_BUILTIN_WMAXSB,
+-  ARM_BUILTIN_WMAXUW,
+-  ARM_BUILTIN_WMAXUH,
+-  ARM_BUILTIN_WMAXUB,
+-  ARM_BUILTIN_WMINSW,
+-  ARM_BUILTIN_WMINSH,
+-  ARM_BUILTIN_WMINSB,
+-  ARM_BUILTIN_WMINUW,
+-  ARM_BUILTIN_WMINUH,
+-  ARM_BUILTIN_WMINUB,
+-
+-  ARM_BUILTIN_WMULUM,
+-  ARM_BUILTIN_WMULSM,
+-  ARM_BUILTIN_WMULUL,
+-
+-  ARM_BUILTIN_PSADBH,
+-  ARM_BUILTIN_WSHUFH,
+-
+-  ARM_BUILTIN_WSLLH,
+-  ARM_BUILTIN_WSLLW,
+-  ARM_BUILTIN_WSLLD,
+-  ARM_BUILTIN_WSRAH,
+-  ARM_BUILTIN_WSRAW,
+-  ARM_BUILTIN_WSRAD,
+-  ARM_BUILTIN_WSRLH,
+-  ARM_BUILTIN_WSRLW,
+-  ARM_BUILTIN_WSRLD,
+-  ARM_BUILTIN_WRORH,
+-  ARM_BUILTIN_WRORW,
+-  ARM_BUILTIN_WRORD,
+-  ARM_BUILTIN_WSLLHI,
+-  ARM_BUILTIN_WSLLWI,
+-  ARM_BUILTIN_WSLLDI,
+-  ARM_BUILTIN_WSRAHI,
+-  ARM_BUILTIN_WSRAWI,
+-  ARM_BUILTIN_WSRADI,
+-  ARM_BUILTIN_WSRLHI,
+-  ARM_BUILTIN_WSRLWI,
+-  ARM_BUILTIN_WSRLDI,
+-  ARM_BUILTIN_WRORHI,
+-  ARM_BUILTIN_WRORWI,
+-  ARM_BUILTIN_WRORDI,
+-
+-  ARM_BUILTIN_WUNPCKIHB,
+-  ARM_BUILTIN_WUNPCKIHH,
+-  ARM_BUILTIN_WUNPCKIHW,
+-  ARM_BUILTIN_WUNPCKILB,
+-  ARM_BUILTIN_WUNPCKILH,
+-  ARM_BUILTIN_WUNPCKILW,
+-
+-  ARM_BUILTIN_WUNPCKEHSB,
+-  ARM_BUILTIN_WUNPCKEHSH,
+-  ARM_BUILTIN_WUNPCKEHSW,
+-  ARM_BUILTIN_WUNPCKEHUB,
+-  ARM_BUILTIN_WUNPCKEHUH,
+-  ARM_BUILTIN_WUNPCKEHUW,
+-  ARM_BUILTIN_WUNPCKELSB,
+-  ARM_BUILTIN_WUNPCKELSH,
+-  ARM_BUILTIN_WUNPCKELSW,
+-  ARM_BUILTIN_WUNPCKELUB,
+-  ARM_BUILTIN_WUNPCKELUH,
+-  ARM_BUILTIN_WUNPCKELUW,
+-
+-  ARM_BUILTIN_THREAD_POINTER,
+-
+-  ARM_BUILTIN_NEON_BASE,
+-
+-  ARM_BUILTIN_MAX = ARM_BUILTIN_NEON_BASE  /* FIXME: Wrong!  */
+-};
+-
+ /* Do not emit .note.GNU-stack by default.  */
+ #ifndef NEED_INDICATE_EXEC_STACK
+ #define NEED_INDICATE_EXEC_STACK	0
+@@ -2460,4 +2286,25 @@
+    instruction.  */
+ #define MAX_LDM_STM_OPS 4
+ 
++#define ASM_CPU_SPEC \
++   " %{mcpu=generic-*:-march=%*;"				\
++   "   :%{mcpu=*:-mcpu=%*} %{march=*:-march=%*}}"
++
++/* -mcpu=native handling only makes sense with compiler running on
++   an ARM chip.  */
++#if defined(__arm__)
++extern const char *host_detect_local_cpu (int argc, const char **argv);
++# define EXTRA_SPEC_FUNCTIONS						\
++  { "local_cpu_detect", host_detect_local_cpu },
++
++# define MCPU_MTUNE_NATIVE_SPECS					\
++   " %{march=native:%<march=native %:local_cpu_detect(arch)}"		\
++   " %{mcpu=native:%<mcpu=native %:local_cpu_detect(cpu)}"		\
++   " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
++#else
++# define MCPU_MTUNE_NATIVE_SPECS ""
++#endif
++
++#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
++
+ #endif /* ! GCC_ARM_H */
+--- a/src/gcc/config/arm/arm.md
++++ b/src/gcc/config/arm/arm.md
+@@ -48,6 +48,15 @@
+    (DOM_CC_X_OR_Y   2)
+   ]
+ )
++;; conditional compare combination
++(define_constants
++  [(CMP_CMP 0)
++   (CMN_CMP 1)
++   (CMP_CMN 2)
++   (CMN_CMN 3)
++   (NUM_OF_COND_CMP 4)
++  ]
++)
+ 
+ ;; UNSPEC Usage:
+ ;; Note: sin and cos are no-longer used.
+@@ -105,6 +114,10 @@
+                              ; another symbolic address.
+    (UNSPEC_MEMORY_BARRIER 28) ; Represent a memory barrier.
+    (UNSPEC_PIC_UNIFIED 29)  ; Create a common pic addressing form.
++   (UNSPEC_UNALIGNED_LOAD 30)  ; Used to represent ldr/ldrh instructions that access
++                               ; unaligned locations, on architectures which support
++                               ; that.
++   (UNSPEC_UNALIGNED_STORE 31) ; Same for str/strh.
+   ]
+ )
+ 
+@@ -144,6 +157,7 @@
+    (VUNSPEC_SYNC_OP               23)	; Represent a sync_<op>
+    (VUNSPEC_SYNC_NEW_OP           24)	; Represent a sync_new_<op>
+    (VUNSPEC_SYNC_OLD_OP           25)	; Represent a sync_old_<op>
++   (VUNSPEC_SYNC_RELEASE 	  26)	; Represent a sync_lock_release.
+   ]
+ )
+ 
+@@ -272,7 +286,7 @@
+ ;; scheduling information.
+ 
+ (define_attr "insn"
+-        "mov,mvn,smulxy,smlaxy,smlalxy,smulwy,smlawx,mul,muls,mla,mlas,umull,umulls,umlal,umlals,smull,smulls,smlal,smlals,smlawy,smuad,smuadx,smlad,smladx,smusd,smusdx,smlsd,smlsdx,smmul,smmulr,smmla,umaal,smlald,smlsld,clz,mrs,msr,xtab,sdiv,udiv,other"
++        "mov,mvn,smulxy,smlaxy,smlalxy,smulwy,smlawx,mul,muls,mla,mlas,umull,umulls,umlal,umlals,smull,smulls,smlal,smlals,smlawy,smuad,smuadx,smlad,smladx,smusd,smusdx,smlsd,smlsdx,smmul,smmulr,smmla,umaal,smlald,smlsld,clz,mrs,msr,xtab,sdiv,udiv,sat,other"
+         (const_string "other"))
+ 
+ ; TYPE attribute is used to detect floating point instructions which, if
+@@ -333,6 +347,13 @@
+ 	 (const_string "mult")
+ 	 (const_string "alu")))
+ 
++; Is this an (integer side) multiply with a 64-bit result?
++(define_attr "mul64" "no,yes"
++	     (if_then_else
++	       (eq_attr "insn" "smlalxy,umull,umulls,umlal,umlals,smull,smulls,smlal,smlals")
++	       (const_string "yes")
++	       (const_string "no")))
++
+ ; Load scheduling, set from the arm_ld_sched variable
+ ; initialized by arm_option_override()
+ (define_attr "ldsched" "no,yes" (const (symbol_ref "arm_ld_sched")))
+@@ -491,7 +512,7 @@
+ 
+ (define_attr "tune_cortexr4" "yes,no"
+   (const (if_then_else
+-	  (eq_attr "tune" "cortexr4,cortexr4f")
++	  (eq_attr "tune" "cortexr4,cortexr4f,cortexr5")
+ 	  (const_string "yes")
+ 	  (const_string "no"))))
+ 
+@@ -499,7 +520,7 @@
+ 
+ (define_attr "generic_sched" "yes,no"
+   (const (if_then_else
+-          (ior (eq_attr "tune" "fa526,fa626,fa606te,fa626te,fmp626,fa726te,arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa8,cortexa9,cortexm4")
++          (ior (eq_attr "tune" "fa526,fa626,fa606te,fa626te,fmp626,fa726te,arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa8,cortexa9,cortexa15,cortexm4")
+ 	       (eq_attr "tune_cortexr4" "yes"))
+           (const_string "no")
+           (const_string "yes"))))
+@@ -525,6 +546,7 @@
+ (include "cortex-a5.md")
+ (include "cortex-a8.md")
+ (include "cortex-a9.md")
++(include "cortex-a15.md")
+ (include "cortex-r4.md")
+ (include "cortex-r4f.md")
+ (include "cortex-m4.md")
+@@ -702,21 +724,24 @@
+ ;;  (plus (reg rN) (reg sp)) into (reg rN).  In this case reload will
+ ;; put the duplicated register first, and not try the commutative version.
+ (define_insn_and_split "*arm_addsi3"
+-  [(set (match_operand:SI          0 "s_register_operand" "=r, k,r,r, k,r")
+-	(plus:SI (match_operand:SI 1 "s_register_operand" "%rk,k,r,rk,k,rk")
+-		 (match_operand:SI 2 "reg_or_int_operand" "rI,rI,k,L, L,?n")))]
++  [(set (match_operand:SI          0 "s_register_operand" "=r, k,r,r, k, r, k,r, k, r")
++	(plus:SI (match_operand:SI 1 "s_register_operand" "%rk,k,r,rk,k, rk,k,rk,k, rk")
++		 (match_operand:SI 2 "reg_or_int_operand" "rI,rI,k,Pj,Pj,L, L,PJ,PJ,?n")))]
+   "TARGET_32BIT"
+   "@
+    add%?\\t%0, %1, %2
+    add%?\\t%0, %1, %2
+    add%?\\t%0, %2, %1
++   addw%?\\t%0, %1, %2
++   addw%?\\t%0, %1, %2
+    sub%?\\t%0, %1, #%n2
+    sub%?\\t%0, %1, #%n2
++   subw%?\\t%0, %1, #%n2
++   subw%?\\t%0, %1, #%n2
+    #"
+   "TARGET_32BIT
+    && GET_CODE (operands[2]) == CONST_INT
+-   && !(const_ok_for_arm (INTVAL (operands[2]))
+-        || const_ok_for_arm (-INTVAL (operands[2])))
++   && !const_ok_for_op (INTVAL (operands[2]), PLUS)
+    && (reload_completed || !arm_eliminable_register (operands[1]))"
+   [(clobber (const_int 0))]
+   "
+@@ -725,8 +750,9 @@
+ 		      operands[1], 0);
+   DONE;
+   "
+-  [(set_attr "length" "4,4,4,4,4,16")
+-   (set_attr "predicable" "yes")]
++  [(set_attr "length" "4,4,4,4,4,4,4,4,4,16")
++   (set_attr "predicable" "yes")
++   (set_attr "arch" "*,*,*,t2,t2,*,*,t2,t2,*")]
+ )
+ 
+ (define_insn_and_split "*thumb1_addsi3"
+@@ -792,7 +818,7 @@
+   ""
+ )
+ 
+-(define_insn "*addsi3_compare0"
++(define_insn "addsi3_compare0"
+   [(set (reg:CC_NOOV CC_REGNUM)
+ 	(compare:CC_NOOV
+ 	 (plus:SI (match_operand:SI 1 "s_register_operand" "r, r")
+@@ -1807,7 +1833,37 @@
+    (set_attr "predicable" "yes")]
+ )
+ 
+-(define_insn "*maddhidi4"
++;; Note: there is no maddhisi4ibt because this one is canonical form
++(define_insn "*maddhisi4tb"
++  [(set (match_operand:SI 0 "s_register_operand" "=r")
++	(plus:SI (mult:SI (ashiftrt:SI
++			   (match_operand:SI 1 "s_register_operand" "r")
++			   (const_int 16))
++			  (sign_extend:SI
++			   (match_operand:HI 2 "s_register_operand" "r")))
++		 (match_operand:SI 3 "s_register_operand" "r")))]
++  "TARGET_DSP_MULTIPLY"
++  "smlatb%?\\t%0, %1, %2, %3"
++  [(set_attr "insn" "smlaxy")
++   (set_attr "predicable" "yes")]
++)
++
++(define_insn "*maddhisi4tt"
++  [(set (match_operand:SI 0 "s_register_operand" "=r")
++	(plus:SI (mult:SI (ashiftrt:SI
++			   (match_operand:SI 1 "s_register_operand" "r")
++			   (const_int 16))
++			  (ashiftrt:SI
++			   (match_operand:SI 2 "s_register_operand" "r")
++			   (const_int 16)))
++		 (match_operand:SI 3 "s_register_operand" "r")))]
++  "TARGET_DSP_MULTIPLY"
++  "smlatt%?\\t%0, %1, %2, %3"
++  [(set_attr "insn" "smlaxy")
++   (set_attr "predicable" "yes")]
++)
++
++(define_insn "maddhidi4"
+   [(set (match_operand:DI 0 "s_register_operand" "=r")
+ 	(plus:DI
+ 	  (mult:DI (sign_extend:DI
+@@ -1820,6 +1876,39 @@
+   [(set_attr "insn" "smlalxy")
+    (set_attr "predicable" "yes")])
+ 
++;; Note: there is no maddhidi4ibt because this one is canonical form
++(define_insn "*maddhidi4tb"
++  [(set (match_operand:DI 0 "s_register_operand" "=r")
++	(plus:DI
++	  (mult:DI (sign_extend:DI
++		    (ashiftrt:SI
++		     (match_operand:SI 1 "s_register_operand" "r")
++		     (const_int 16)))
++		   (sign_extend:DI
++		    (match_operand:HI 2 "s_register_operand" "r")))
++	  (match_operand:DI 3 "s_register_operand" "0")))]
++  "TARGET_DSP_MULTIPLY"
++  "smlaltb%?\\t%Q0, %R0, %1, %2"
++  [(set_attr "insn" "smlalxy")
++   (set_attr "predicable" "yes")])
++
++(define_insn "*maddhidi4tt"
++  [(set (match_operand:DI 0 "s_register_operand" "=r")
++	(plus:DI
++	  (mult:DI (sign_extend:DI
++		    (ashiftrt:SI
++		     (match_operand:SI 1 "s_register_operand" "r")
++		     (const_int 16)))
++		   (sign_extend:DI
++		    (ashiftrt:SI
++		     (match_operand:SI 2 "s_register_operand" "r")
++		     (const_int 16))))
++	  (match_operand:DI 3 "s_register_operand" "0")))]
++  "TARGET_DSP_MULTIPLY"
++  "smlaltt%?\\t%Q0, %R0, %1, %2"
++  [(set_attr "insn" "smlalxy")
++   (set_attr "predicable" "yes")])
++
+ (define_expand "mulsf3"
+   [(set (match_operand:SF          0 "s_register_operand" "")
+ 	(mult:SF (match_operand:SF 1 "s_register_operand" "")
+@@ -2385,10 +2474,10 @@
+ ;;; this insv pattern, so this pattern needs to be reevalutated.
+ 
+ (define_expand "insv"
+-  [(set (zero_extract:SI (match_operand:SI 0 "s_register_operand" "")
+-                         (match_operand:SI 1 "general_operand" "")
+-                         (match_operand:SI 2 "general_operand" ""))
+-        (match_operand:SI 3 "reg_or_int_operand" ""))]
++  [(set (zero_extract (match_operand 0 "nonimmediate_operand" "")
++                      (match_operand 1 "general_operand" "")
++                      (match_operand 2 "general_operand" ""))
++        (match_operand 3 "reg_or_int_operand" ""))]
+   "TARGET_ARM || arm_arch_thumb2"
+   "
+   {
+@@ -2399,35 +2488,70 @@
+ 
+     if (arm_arch_thumb2)
+       {
+-	bool use_bfi = TRUE;
+-
+-	if (GET_CODE (operands[3]) == CONST_INT)
++        if (unaligned_access && MEM_P (operands[0])
++	    && s_register_operand (operands[3], GET_MODE (operands[3]))
++	    && (width == 16 || width == 32) && (start_bit % BITS_PER_UNIT) == 0)
+ 	  {
+-	    HOST_WIDE_INT val = INTVAL (operands[3]) & mask;
++	    rtx base_addr;
++
++	    if (BYTES_BIG_ENDIAN)
++	      start_bit = GET_MODE_BITSIZE (GET_MODE (operands[3])) - width
++			  - start_bit;
+ 
+-	    if (val == 0)
++	    if (width == 32)
+ 	      {
+-		emit_insn (gen_insv_zero (operands[0], operands[1],
+-					  operands[2]));
+-		DONE;
++	        base_addr = adjust_address (operands[0], SImode,
++					    start_bit / BITS_PER_UNIT);
++		emit_insn (gen_unaligned_storesi (base_addr, operands[3]));
+ 	      }
++	    else
++	      {
++	        rtx tmp = gen_reg_rtx (HImode);
+ 
+-	    /* See if the set can be done with a single orr instruction.  */
+-	    if (val == mask && const_ok_for_arm (val << start_bit))
+-	      use_bfi = FALSE;
++	        base_addr = adjust_address (operands[0], HImode,
++					    start_bit / BITS_PER_UNIT);
++		emit_move_insn (tmp, gen_lowpart (HImode, operands[3]));
++		emit_insn (gen_unaligned_storehi (base_addr, tmp));
++	      }
++	    DONE;
+ 	  }
+-	  
+-	if (use_bfi)
++	else if (s_register_operand (operands[0], GET_MODE (operands[0])))
+ 	  {
+-	    if (GET_CODE (operands[3]) != REG)
+-	      operands[3] = force_reg (SImode, operands[3]);
++	    bool use_bfi = TRUE;
+ 
+-	    emit_insn (gen_insv_t2 (operands[0], operands[1], operands[2],
+-				    operands[3]));
+-	    DONE;
++	    if (GET_CODE (operands[3]) == CONST_INT)
++	      {
++		HOST_WIDE_INT val = INTVAL (operands[3]) & mask;
++
++		if (val == 0)
++		  {
++		    emit_insn (gen_insv_zero (operands[0], operands[1],
++					      operands[2]));
++		    DONE;
++		  }
++
++		/* See if the set can be done with a single orr instruction.  */
++		if (val == mask && const_ok_for_arm (val << start_bit))
++		  use_bfi = FALSE;
++	      }
++
++	    if (use_bfi)
++	      {
++		if (GET_CODE (operands[3]) != REG)
++		  operands[3] = force_reg (SImode, operands[3]);
++
++		emit_insn (gen_insv_t2 (operands[0], operands[1], operands[2],
++					operands[3]));
++		DONE;
++	      }
+ 	  }
++	else
++	  FAIL;
+       }
+ 
++    if (!s_register_operand (operands[0], GET_MODE (operands[0])))
++      FAIL;
++
+     target = copy_rtx (operands[0]);
+     /* Avoid using a subreg as a subtarget, and avoid writing a paradoxical 
+        subreg as the final target.  */
+@@ -3300,6 +3424,60 @@
+ 		      (const_int 12)))]
+ )
+ 
++(define_code_iterator SAT [smin smax])
++(define_code_iterator SATrev [smin smax])
++(define_code_attr SATlo [(smin "1") (smax "2")])
++(define_code_attr SAThi [(smin "2") (smax "1")])
++
++(define_insn "*satsi_<SAT:code>"
++  [(set (match_operand:SI 0 "s_register_operand" "=r")
++        (SAT:SI (SATrev:SI (match_operand:SI 3 "s_register_operand" "r")
++                           (match_operand:SI 1 "const_int_operand" "i"))
++                (match_operand:SI 2 "const_int_operand" "i")))]
++  "TARGET_32BIT && arm_arch6 && <SAT:CODE> != <SATrev:CODE>
++   && arm_sat_operator_match (operands[<SAT:SATlo>], operands[<SAT:SAThi>], NULL, NULL)"
++{
++  int mask;
++  bool signed_sat;
++  if (!arm_sat_operator_match (operands[<SAT:SATlo>], operands[<SAT:SAThi>],
++                               &mask, &signed_sat))
++    gcc_unreachable ();
++
++  operands[1] = GEN_INT (mask);
++  if (signed_sat)
++    return "ssat%?\t%0, %1, %3";
++  else
++    return "usat%?\t%0, %1, %3";
++}
++  [(set_attr "predicable" "yes")
++   (set_attr "insn" "sat")])
++
++(define_insn "*satsi_<SAT:code>_shift"
++  [(set (match_operand:SI 0 "s_register_operand" "=r")
++        (SAT:SI (SATrev:SI (match_operator:SI 3 "sat_shift_operator"
++                             [(match_operand:SI 4 "s_register_operand" "r")
++                              (match_operand:SI 5 "const_int_operand" "i")])
++                           (match_operand:SI 1 "const_int_operand" "i"))
++                (match_operand:SI 2 "const_int_operand" "i")))]
++  "TARGET_32BIT && arm_arch6 && <SAT:CODE> != <SATrev:CODE>
++   && arm_sat_operator_match (operands[<SAT:SATlo>], operands[<SAT:SAThi>], NULL, NULL)"
++{
++  int mask;
++  bool signed_sat;
++  if (!arm_sat_operator_match (operands[<SAT:SATlo>], operands[<SAT:SAThi>],
++                               &mask, &signed_sat))
++    gcc_unreachable ();
++
++  operands[1] = GEN_INT (mask);
++  if (signed_sat)
++    return "ssat%?\t%0, %1, %4%S3";
++  else
++    return "usat%?\t%0, %1, %4%S3";
++}
++  [(set_attr "predicable" "yes")
++   (set_attr "insn" "sat")
++   (set_attr "shift" "3")
++   (set_attr "type" "alu_shift")])
+ 
+ ;; Shift and rotation insns
+ 
+@@ -3619,12 +3797,10 @@
+ ;; to reduce register pressure later on.
+ 
+ (define_expand "extzv"
+-  [(set (match_dup 4)
+-	(ashift:SI (match_operand:SI   1 "register_operand" "")
+-		   (match_operand:SI   2 "const_int_operand" "")))
+-   (set (match_operand:SI              0 "register_operand" "")
+-	(lshiftrt:SI (match_dup 4)
+-		     (match_operand:SI 3 "const_int_operand" "")))]
++  [(set (match_operand 0 "s_register_operand" "")
++	(zero_extract (match_operand 1 "nonimmediate_operand" "")
++		      (match_operand 2 "const_int_operand" "")
++		      (match_operand 3 "const_int_operand" "")))]
+   "TARGET_THUMB1 || arm_arch_thumb2"
+   "
+   {
+@@ -3633,10 +3809,57 @@
+     
+     if (arm_arch_thumb2)
+       {
+-	emit_insn (gen_extzv_t2 (operands[0], operands[1], operands[2],
+-				 operands[3]));
+-	DONE;
++	HOST_WIDE_INT width = INTVAL (operands[2]);
++	HOST_WIDE_INT bitpos = INTVAL (operands[3]);
++
++	if (unaligned_access && MEM_P (operands[1])
++	    && (width == 16 || width == 32) && (bitpos % BITS_PER_UNIT) == 0)
++	  {
++	    rtx base_addr;
++
++	    if (BYTES_BIG_ENDIAN)
++	      bitpos = GET_MODE_BITSIZE (GET_MODE (operands[0])) - width
++		       - bitpos;
++
++	    if (width == 32)
++              {
++		base_addr = adjust_address (operands[1], SImode,
++					    bitpos / BITS_PER_UNIT);
++		emit_insn (gen_unaligned_loadsi (operands[0], base_addr));
++              }
++	    else
++              {
++		rtx dest = operands[0];
++		rtx tmp = gen_reg_rtx (SImode);
++
++		/* We may get a paradoxical subreg here.  Strip it off.  */
++		if (GET_CODE (dest) == SUBREG
++		    && GET_MODE (dest) == SImode
++		    && GET_MODE (SUBREG_REG (dest)) == HImode)
++		  dest = SUBREG_REG (dest);
++
++		if (GET_MODE_BITSIZE (GET_MODE (dest)) != width)
++		  FAIL;
++
++		base_addr = adjust_address (operands[1], HImode,
++					    bitpos / BITS_PER_UNIT);
++		emit_insn (gen_unaligned_loadhiu (tmp, base_addr));
++		emit_move_insn (gen_lowpart (SImode, dest), tmp);
++	      }
++	    DONE;
++	  }
++	else if (s_register_operand (operands[1], GET_MODE (operands[1])))
++	  {
++	    emit_insn (gen_extzv_t2 (operands[0], operands[1], operands[2],
++				     operands[3]));
++	    DONE;
++	  }
++	else
++	  FAIL;
+       }
++    
++    if (!s_register_operand (operands[1], GET_MODE (operands[1])))
++      FAIL;
+ 
+     operands[3] = GEN_INT (rshift);
+     
+@@ -3646,12 +3869,154 @@
+         DONE;
+       }
+       
+-    operands[2] = GEN_INT (lshift);
+-    operands[4] = gen_reg_rtx (SImode);
++    emit_insn (gen_extzv_t1 (operands[0], operands[1], GEN_INT (lshift),
++			     operands[3], gen_reg_rtx (SImode)));
++    DONE;
+   }"
+ )
+ 
+-(define_insn "extv"
++;; Helper for extzv, for the Thumb-1 register-shifts case.
++
++(define_expand "extzv_t1"
++  [(set (match_operand:SI 4 "s_register_operand" "")
++	(ashift:SI (match_operand:SI 1 "nonimmediate_operand" "")
++		   (match_operand:SI 2 "const_int_operand" "")))
++   (set (match_operand:SI 0 "s_register_operand" "")
++	(lshiftrt:SI (match_dup 4)
++		     (match_operand:SI 3 "const_int_operand" "")))]
++  "TARGET_THUMB1"
++  "")
++
++(define_expand "extv"
++  [(set (match_operand 0 "s_register_operand" "")
++	(sign_extract (match_operand 1 "nonimmediate_operand" "")
++		      (match_operand 2 "const_int_operand" "")
++		      (match_operand 3 "const_int_operand" "")))]
++  "arm_arch_thumb2"
++{
++  HOST_WIDE_INT width = INTVAL (operands[2]);
++  HOST_WIDE_INT bitpos = INTVAL (operands[3]);
++
++  if (unaligned_access && MEM_P (operands[1]) && (width == 16 || width == 32)
++      && (bitpos % BITS_PER_UNIT)  == 0)
++    {
++      rtx base_addr;
++      
++      if (BYTES_BIG_ENDIAN)
++	bitpos = GET_MODE_BITSIZE (GET_MODE (operands[0])) - width - bitpos;
++      
++      if (width == 32)
++        {
++	  base_addr = adjust_address (operands[1], SImode,
++				      bitpos / BITS_PER_UNIT);
++	  emit_insn (gen_unaligned_loadsi (operands[0], base_addr));
++        }
++      else
++        {
++	  rtx dest = operands[0];
++	  rtx tmp = gen_reg_rtx (SImode);
++	  
++	  /* We may get a paradoxical subreg here.  Strip it off.  */
++	  if (GET_CODE (dest) == SUBREG
++	      && GET_MODE (dest) == SImode
++	      && GET_MODE (SUBREG_REG (dest)) == HImode)
++	    dest = SUBREG_REG (dest);
++	  
++	  if (GET_MODE_BITSIZE (GET_MODE (dest)) != width)
++	    FAIL;
++	  
++	  base_addr = adjust_address (operands[1], HImode,
++				      bitpos / BITS_PER_UNIT);
++	  emit_insn (gen_unaligned_loadhis (tmp, base_addr));
++	  emit_move_insn (gen_lowpart (SImode, dest), tmp);
++	}
++
++      DONE;
++    }
++  else if (!s_register_operand (operands[1], GET_MODE (operands[1])))
++    FAIL;
++  else if (GET_MODE (operands[0]) == SImode
++	   && GET_MODE (operands[1]) == SImode)
++    {
++      emit_insn (gen_extv_regsi (operands[0], operands[1], operands[2],
++				 operands[3]));
++      DONE;
++    }
++
++  FAIL;
++})
++
++; Helper to expand register forms of extv with the proper modes.
++
++(define_expand "extv_regsi"
++  [(set (match_operand:SI 0 "s_register_operand" "")
++	(sign_extract:SI (match_operand:SI 1 "s_register_operand" "")
++			 (match_operand 2 "const_int_operand" "")
++			 (match_operand 3 "const_int_operand" "")))]
++  ""
++{
++})
++
++; ARMv6+ unaligned load/store instructions (used for packed structure accesses).
++
++(define_insn "unaligned_loadsi"
++  [(set (match_operand:SI 0 "s_register_operand" "=l,r")
++	(unspec:SI [(match_operand:SI 1 "memory_operand" "Uw,m")]
++		   UNSPEC_UNALIGNED_LOAD))]
++  "unaligned_access && TARGET_32BIT"
++  "ldr%?\t%0, %1\t@ unaligned"
++  [(set_attr "arch" "t2,any")
++   (set_attr "length" "2,4")
++   (set_attr "predicable" "yes")
++   (set_attr "type" "load1")])
++
++(define_insn "unaligned_loadhis"
++  [(set (match_operand:SI 0 "s_register_operand" "=l,r")
++	(sign_extend:SI
++	  (unspec:HI [(match_operand:HI 1 "memory_operand" "Uw,m")]
++		     UNSPEC_UNALIGNED_LOAD)))]
++  "unaligned_access && TARGET_32BIT"
++  "ldr%(sh%)\t%0, %1\t@ unaligned"
++  [(set_attr "arch" "t2,any")
++   (set_attr "length" "2,4")
++   (set_attr "predicable" "yes")
++   (set_attr "type" "load_byte")])
++
++(define_insn "unaligned_loadhiu"
++  [(set (match_operand:SI 0 "s_register_operand" "=l,r")
++	(zero_extend:SI
++	  (unspec:HI [(match_operand:HI 1 "memory_operand" "Uw,m")]
++		     UNSPEC_UNALIGNED_LOAD)))]
++  "unaligned_access && TARGET_32BIT"
++  "ldr%(h%)\t%0, %1\t@ unaligned"
++  [(set_attr "arch" "t2,any")
++   (set_attr "length" "2,4")
++   (set_attr "predicable" "yes")
++   (set_attr "type" "load_byte")])
++
++(define_insn "unaligned_storesi"
++  [(set (match_operand:SI 0 "memory_operand" "=Uw,m")
++	(unspec:SI [(match_operand:SI 1 "s_register_operand" "l,r")]
++		   UNSPEC_UNALIGNED_STORE))]
++  "unaligned_access && TARGET_32BIT"
++  "str%?\t%1, %0\t@ unaligned"
++  [(set_attr "arch" "t2,any")
++   (set_attr "length" "2,4")
++   (set_attr "predicable" "yes")
++   (set_attr "type" "store1")])
++
++(define_insn "unaligned_storehi"
++  [(set (match_operand:HI 0 "memory_operand" "=Uw,m")
++	(unspec:HI [(match_operand:HI 1 "s_register_operand" "l,r")]
++		   UNSPEC_UNALIGNED_STORE))]
++  "unaligned_access && TARGET_32BIT"
++  "str%(h%)\t%1, %0\t@ unaligned"
++  [(set_attr "arch" "t2,any")
++   (set_attr "length" "2,4")
++   (set_attr "predicable" "yes")
++   (set_attr "type" "store1")])
++
++(define_insn "*extv_reg"
+   [(set (match_operand:SI 0 "s_register_operand" "=r")
+ 	(sign_extract:SI (match_operand:SI 1 "s_register_operand" "r")
+                          (match_operand:SI 2 "const_int_operand" "M")
+@@ -3673,6 +4038,28 @@
+    (set_attr "predicable" "yes")]
+ )
+ 
++
++;; Division instructions
++(define_insn "divsi3"
++  [(set (match_operand:SI	  0 "s_register_operand" "=r")
++	(div:SI (match_operand:SI 1 "s_register_operand"  "r")
++		(match_operand:SI 2 "s_register_operand"  "r")))]
++  "TARGET_IDIV"
++  "sdiv%?\t%0, %1, %2"
++  [(set_attr "predicable" "yes")
++   (set_attr "insn" "sdiv")]
++)
++
++(define_insn "udivsi3"
++  [(set (match_operand:SI	   0 "s_register_operand" "=r")
++	(udiv:SI (match_operand:SI 1 "s_register_operand"  "r")
++		 (match_operand:SI 2 "s_register_operand"  "r")))]
++  "TARGET_IDIV"
++  "udiv%?\t%0, %1, %2"
++  [(set_attr "predicable" "yes")
++   (set_attr "insn" "udiv")]
++)
++
+ 
+ ;; Unary arithmetic insns
+ 
+@@ -4045,8 +4432,8 @@
+ 
+ (define_insn "zero_extend<mode>di2"
+   [(set (match_operand:DI 0 "s_register_operand" "=r")
+-        (zero_extend:DI (match_operand:QHSI 1 "<qhs_extenddi_op>"
+-					    "<qhs_extenddi_cstr>")))]
++        (zero_extend:DI (match_operand:QHSI 1 "<qhs_zextenddi_op>"
++					    "<qhs_zextenddi_cstr>")))]
+   "TARGET_32BIT <qhs_zextenddi_cond>"
+   "#"
+   [(set_attr "length" "8")
+@@ -5963,8 +6350,8 @@
+ 
+ 
+ (define_insn "*arm_movqi_insn"
+-  [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,r,m")
+-	(match_operand:QI 1 "general_operand" "rI,K,m,r"))]
++  [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,l,Uu,r,m")
++	(match_operand:QI 1 "general_operand" "rI,K,Uu,l,m,r"))]
+   "TARGET_32BIT
+    && (   register_operand (operands[0], QImode)
+        || register_operand (operands[1], QImode))"
+@@ -5972,10 +6359,14 @@
+    mov%?\\t%0, %1
+    mvn%?\\t%0, #%B1
+    ldr%(b%)\\t%0, %1
++   str%(b%)\\t%1, %0
++   ldr%(b%)\\t%0, %1
+    str%(b%)\\t%1, %0"
+-  [(set_attr "type" "*,*,load1,store1")
+-   (set_attr "insn" "mov,mvn,*,*")
+-   (set_attr "predicable" "yes")]
++  [(set_attr "type" "*,*,load1,store1,load1,store1")
++   (set_attr "insn" "mov,mvn,*,*,*,*")
++   (set_attr "predicable" "yes")
++   (set_attr "arch" "any,any,t2,t2,any,any")
++   (set_attr "length" "4,4,2,2,4,4")]
+ )
+ 
+ (define_insn "*thumb1_movqi_insn"
+@@ -6205,7 +6596,7 @@
+   [(match_operand:DF 0 "arm_reload_memory_operand" "=o")
+    (match_operand:DF 1 "s_register_operand" "r")
+    (match_operand:SI 2 "s_register_operand" "=&r")]
+-  "TARGET_32BIT"
++  "TARGET_THUMB2"
+   "
+   {
+     enum rtx_code code = GET_CODE (XEXP (operands[0], 0));
+@@ -6468,7 +6859,7 @@
+ 
+ (define_expand "cbranchsi4"
+   [(set (pc) (if_then_else
+-	      (match_operator 0 "arm_comparison_operator"
++	      (match_operator 0 "expandable_comparison_operator"
+ 	       [(match_operand:SI 1 "s_register_operand" "")
+ 	        (match_operand:SI 2 "nonmemory_operand" "")])
+ 	      (label_ref (match_operand 3 "" ""))
+@@ -6519,7 +6910,7 @@
+ 
+ (define_expand "cbranchsf4"
+   [(set (pc) (if_then_else
+-	      (match_operator 0 "arm_comparison_operator"
++	      (match_operator 0 "expandable_comparison_operator"
+ 	       [(match_operand:SF 1 "s_register_operand" "")
+ 	        (match_operand:SF 2 "arm_float_compare_operand" "")])
+ 	      (label_ref (match_operand 3 "" ""))
+@@ -6531,7 +6922,7 @@
+ 
+ (define_expand "cbranchdf4"
+   [(set (pc) (if_then_else
+-	      (match_operator 0 "arm_comparison_operator"
++	      (match_operator 0 "expandable_comparison_operator"
+ 	       [(match_operand:DF 1 "s_register_operand" "")
+ 	        (match_operand:DF 2 "arm_float_compare_operand" "")])
+ 	      (label_ref (match_operand 3 "" ""))
+@@ -6543,7 +6934,7 @@
+ 
+ (define_expand "cbranchdi4"
+   [(set (pc) (if_then_else
+-	      (match_operator 0 "arm_comparison_operator"
++	      (match_operator 0 "expandable_comparison_operator"
+ 	       [(match_operand:DI 1 "cmpdi_operand" "")
+ 	        (match_operand:DI 2 "cmpdi_operand" "")])
+ 	      (label_ref (match_operand 3 "" ""))
+@@ -7132,13 +7523,17 @@
+ 
+ (define_insn "*arm_cmpsi_insn"
+   [(set (reg:CC CC_REGNUM)
+-	(compare:CC (match_operand:SI 0 "s_register_operand" "r,r")
+-		    (match_operand:SI 1 "arm_add_operand"    "rI,L")))]
++	(compare:CC (match_operand:SI 0 "s_register_operand" "l,r,r,r")
++		    (match_operand:SI 1 "arm_add_operand"    "Py,r,rI,L")))]
+   "TARGET_32BIT"
+   "@
+    cmp%?\\t%0, %1
++   cmp%?\\t%0, %1
++   cmp%?\\t%0, %1
+    cmn%?\\t%0, #%n1"
+-  [(set_attr "conds" "set")]
++  [(set_attr "conds" "set")
++   (set_attr "arch" "t2,t2,any,any")
++   (set_attr "length" "2,2,4,4")]
+ )
+ 
+ (define_insn "*cmpsi_shiftsi"
+@@ -7201,8 +7596,8 @@
+   [(set (reg:CC_CZ CC_REGNUM)
+ 	(compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r")
+ 		       (match_operand:DI 1 "arm_di_operand"	"rDi")))]
+-  "TARGET_ARM"
+-  "cmp%?\\t%R0, %R1\;cmpeq\\t%Q0, %Q1"
++  "TARGET_32BIT"
++  "cmp\\t%R0, %R1\;it eq\;cmpeq\\t%Q0, %Q1"
+   [(set_attr "conds" "set")
+    (set_attr "length" "8")]
+ )
+@@ -7309,7 +7704,14 @@
+   return \"b%d1\\t%l0\";
+   "
+   [(set_attr "conds" "use")
+-   (set_attr "type" "branch")]
++   (set_attr "type" "branch")
++   (set (attr "length")
++	(if_then_else
++	   (and (ne (symbol_ref "TARGET_THUMB2") (const_int 0))
++		(and (ge (minus (match_dup 0) (pc)) (const_int -250))
++		     (le (minus (match_dup 0) (pc)) (const_int 256))))
++	   (const_int 2)
++	   (const_int 4)))]
+ )
+ 
+ (define_insn "*arm_cond_branch_reversed"
+@@ -7328,7 +7730,14 @@
+   return \"b%D1\\t%l0\";
+   "
+   [(set_attr "conds" "use")
+-   (set_attr "type" "branch")]
++   (set_attr "type" "branch")
++   (set (attr "length")
++	(if_then_else
++	   (and (ne (symbol_ref "TARGET_THUMB2") (const_int 0))
++		(and (ge (minus (match_dup 0) (pc)) (const_int -250))
++		     (le (minus (match_dup 0) (pc)) (const_int 256))))
++	   (const_int 2)
++	   (const_int 4)))]
+ )
+ 
+ 
+@@ -7380,7 +7789,7 @@
+ 
+ (define_expand "cstoresi4"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(match_operator:SI 1 "arm_comparison_operator"
++	(match_operator:SI 1 "expandable_comparison_operator"
+ 	 [(match_operand:SI 2 "s_register_operand" "")
+ 	  (match_operand:SI 3 "reg_or_int_operand" "")]))]
+   "TARGET_32BIT || TARGET_THUMB1"
+@@ -7516,7 +7925,7 @@
+ 
+ (define_expand "cstoresf4"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(match_operator:SI 1 "arm_comparison_operator"
++	(match_operator:SI 1 "expandable_comparison_operator"
+ 	 [(match_operand:SF 2 "s_register_operand" "")
+ 	  (match_operand:SF 3 "arm_float_compare_operand" "")]))]
+   "TARGET_32BIT && TARGET_HARD_FLOAT"
+@@ -7526,7 +7935,7 @@
+ 
+ (define_expand "cstoredf4"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(match_operator:SI 1 "arm_comparison_operator"
++	(match_operator:SI 1 "expandable_comparison_operator"
+ 	 [(match_operand:DF 2 "s_register_operand" "")
+ 	  (match_operand:DF 3 "arm_float_compare_operand" "")]))]
+   "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
+@@ -7536,7 +7945,7 @@
+ 
+ (define_expand "cstoredi4"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(match_operator:SI 1 "arm_comparison_operator"
++	(match_operator:SI 1 "expandable_comparison_operator"
+ 	 [(match_operand:DI 2 "cmpdi_operand" "")
+ 	  (match_operand:DI 3 "cmpdi_operand" "")]))]
+   "TARGET_32BIT"
+@@ -7656,7 +8065,7 @@
+ 
+ (define_expand "movsicc"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(if_then_else:SI (match_operand 1 "arm_comparison_operator" "")
++	(if_then_else:SI (match_operand 1 "expandable_comparison_operator" "")
+ 			 (match_operand:SI 2 "arm_not_operand" "")
+ 			 (match_operand:SI 3 "arm_not_operand" "")))]
+   "TARGET_32BIT"
+@@ -7676,7 +8085,7 @@
+ 
+ (define_expand "movsfcc"
+   [(set (match_operand:SF 0 "s_register_operand" "")
+-	(if_then_else:SF (match_operand 1 "arm_comparison_operator" "")
++	(if_then_else:SF (match_operand 1 "expandable_comparison_operator" "")
+ 			 (match_operand:SF 2 "s_register_operand" "")
+ 			 (match_operand:SF 3 "nonmemory_operand" "")))]
+   "TARGET_32BIT && TARGET_HARD_FLOAT"
+@@ -7702,7 +8111,7 @@
+ 
+ (define_expand "movdfcc"
+   [(set (match_operand:DF 0 "s_register_operand" "")
+-	(if_then_else:DF (match_operand 1 "arm_comparison_operator" "")
++	(if_then_else:DF (match_operand 1 "expandable_comparison_operator" "")
+ 			 (match_operand:DF 2 "s_register_operand" "")
+ 			 (match_operand:DF 3 "arm_float_add_operand" "")))]
+   "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE)"
+@@ -7780,7 +8189,14 @@
+     return \"b%?\\t%l0\";
+   }
+   "
+-  [(set_attr "predicable" "yes")]
++  [(set_attr "predicable" "yes")
++   (set (attr "length")
++	(if_then_else
++	   (and (ne (symbol_ref "TARGET_THUMB2") (const_int 0))
++		(and (ge (minus (match_dup 0) (pc)) (const_int -2044))
++		     (le (minus (match_dup 0) (pc)) (const_int 2048))))
++	   (const_int 2)
++	   (const_int 4)))]
+ )
+ 
+ (define_insn "*thumb_jump"
+@@ -8865,40 +9281,85 @@
+    (set_attr "length" "8,12")]
+ )
+ 
+-;; ??? Is it worth using these conditional patterns in Thumb-2 mode?
+ (define_insn "*cmp_ite0"
+   [(set (match_operand 6 "dominant_cc_register" "")
+ 	(compare
+ 	 (if_then_else:SI
+ 	  (match_operator 4 "arm_comparison_operator"
+-	   [(match_operand:SI 0 "s_register_operand" "r,r,r,r")
+-	    (match_operand:SI 1 "arm_add_operand" "rI,L,rI,L")])
++	   [(match_operand:SI 0 "s_register_operand"
++	        "l,l,l,r,r,r,r,r,r")
++	    (match_operand:SI 1 "arm_add_operand"
++	        "lPy,lPy,lPy,rI,L,rI,L,rI,L")])
+ 	  (match_operator:SI 5 "arm_comparison_operator"
+-	   [(match_operand:SI 2 "s_register_operand" "r,r,r,r")
+-	    (match_operand:SI 3 "arm_add_operand" "rI,rI,L,L")])
++	   [(match_operand:SI 2 "s_register_operand"
++	        "l,r,r,l,l,r,r,r,r")
++	    (match_operand:SI 3 "arm_add_operand"
++	        "lPy,rI,L,lPy,lPy,rI,rI,L,L")])
+ 	  (const_int 0))
+ 	 (const_int 0)))]
+-  "TARGET_ARM"
++  "TARGET_32BIT"
+   "*
+   {
+-    static const char * const opcodes[4][2] =
++    static const char * const cmp1[NUM_OF_COND_CMP][2] =
++    {
++      {\"cmp%d5\\t%0, %1\",
++       \"cmp%d4\\t%2, %3\"},
++      {\"cmn%d5\\t%0, #%n1\",
++       \"cmp%d4\\t%2, %3\"},
++      {\"cmp%d5\\t%0, %1\",
++       \"cmn%d4\\t%2, #%n3\"},
++      {\"cmn%d5\\t%0, #%n1\",
++       \"cmn%d4\\t%2, #%n3\"}
++    };
++    static const char * const cmp2[NUM_OF_COND_CMP][2] =
++    {
++      {\"cmp\\t%2, %3\",
++       \"cmp\\t%0, %1\"},
++      {\"cmp\\t%2, %3\",
++       \"cmn\\t%0, #%n1\"},
++      {\"cmn\\t%2, #%n3\",
++       \"cmp\\t%0, %1\"},
++      {\"cmn\\t%2, #%n3\",
++       \"cmn\\t%0, #%n1\"}
++    };
++    static const char * const ite[2] =
+     {
+-      {\"cmp\\t%2, %3\;cmp%d5\\t%0, %1\",
+-       \"cmp\\t%0, %1\;cmp%d4\\t%2, %3\"},
+-      {\"cmp\\t%2, %3\;cmn%d5\\t%0, #%n1\",
+-       \"cmn\\t%0, #%n1\;cmp%d4\\t%2, %3\"},
+-      {\"cmn\\t%2, #%n3\;cmp%d5\\t%0, %1\",
+-       \"cmp\\t%0, %1\;cmn%d4\\t%2, #%n3\"},
+-      {\"cmn\\t%2, #%n3\;cmn%d5\\t%0, #%n1\",
+-       \"cmn\\t%0, #%n1\;cmn%d4\\t%2, #%n3\"}
++      \"it\\t%d5\",
++      \"it\\t%d4\"
+     };
++    static const int cmp_idx[9] = {CMP_CMP, CMP_CMP, CMP_CMN,
++                                   CMP_CMP, CMN_CMP, CMP_CMP,
++                                   CMN_CMP, CMP_CMN, CMN_CMN};
+     int swap =
+       comparison_dominates_p (GET_CODE (operands[5]), GET_CODE (operands[4]));
+ 
+-    return opcodes[which_alternative][swap];
++    output_asm_insn (cmp2[cmp_idx[which_alternative]][swap], operands);
++    if (TARGET_THUMB2) {
++      output_asm_insn (ite[swap], operands);
++    }
++    output_asm_insn (cmp1[cmp_idx[which_alternative]][swap], operands);
++    return \"\";
+   }"
+   [(set_attr "conds" "set")
+-   (set_attr "length" "8")]
++   (set_attr "arch" "t2,t2,t2,t2,t2,any,any,any,any")
++   (set_attr_alternative "length"
++      [(const_int 6)
++       (const_int 8)
++       (const_int 8)
++       (const_int 8)
++       (const_int 8)
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))])]
+ )
+ 
+ (define_insn "*cmp_ite1"
+@@ -8906,35 +9367,81 @@
+ 	(compare
+ 	 (if_then_else:SI
+ 	  (match_operator 4 "arm_comparison_operator"
+-	   [(match_operand:SI 0 "s_register_operand" "r,r,r,r")
+-	    (match_operand:SI 1 "arm_add_operand" "rI,L,rI,L")])
++	   [(match_operand:SI 0 "s_register_operand"
++	        "l,l,l,r,r,r,r,r,r")
++	    (match_operand:SI 1 "arm_add_operand"
++	        "lPy,lPy,lPy,rI,L,rI,L,rI,L")])
+ 	  (match_operator:SI 5 "arm_comparison_operator"
+-	   [(match_operand:SI 2 "s_register_operand" "r,r,r,r")
+-	    (match_operand:SI 3 "arm_add_operand" "rI,rI,L,L")])
++	   [(match_operand:SI 2 "s_register_operand"
++	        "l,r,r,l,l,r,r,r,r")
++	    (match_operand:SI 3 "arm_add_operand"
++	        "lPy,rI,L,lPy,lPy,rI,rI,L,L")])
+ 	  (const_int 1))
+ 	 (const_int 0)))]
+-  "TARGET_ARM"
++  "TARGET_32BIT"
+   "*
+   {
+-    static const char * const opcodes[4][2] =
++    static const char * const cmp1[NUM_OF_COND_CMP][2] =
++    {
++      {\"cmp\\t%0, %1\",
++       \"cmp\\t%2, %3\"},
++      {\"cmn\\t%0, #%n1\",
++       \"cmp\\t%2, %3\"},
++      {\"cmp\\t%0, %1\",
++       \"cmn\\t%2, #%n3\"},
++      {\"cmn\\t%0, #%n1\",
++       \"cmn\\t%2, #%n3\"}
++    };
++    static const char * const cmp2[NUM_OF_COND_CMP][2] =
+     {
+-      {\"cmp\\t%0, %1\;cmp%d4\\t%2, %3\",
+-       \"cmp\\t%2, %3\;cmp%D5\\t%0, %1\"},
+-      {\"cmn\\t%0, #%n1\;cmp%d4\\t%2, %3\",
+-       \"cmp\\t%2, %3\;cmn%D5\\t%0, #%n1\"},
+-      {\"cmp\\t%0, %1\;cmn%d4\\t%2, #%n3\",
+-       \"cmn\\t%2, #%n3\;cmp%D5\\t%0, %1\"},
+-      {\"cmn\\t%0, #%n1\;cmn%d4\\t%2, #%n3\",
+-       \"cmn\\t%2, #%n3\;cmn%D5\\t%0, #%n1\"}
++      {\"cmp%d4\\t%2, %3\",
++       \"cmp%D5\\t%0, %1\"},
++      {\"cmp%d4\\t%2, %3\",
++       \"cmn%D5\\t%0, #%n1\"},
++      {\"cmn%d4\\t%2, #%n3\",
++       \"cmp%D5\\t%0, %1\"},
++      {\"cmn%d4\\t%2, #%n3\",
++       \"cmn%D5\\t%0, #%n1\"}
+     };
++    static const char * const ite[2] =
++    {
++      \"it\\t%d4\",
++      \"it\\t%D5\"
++    };
++    static const int cmp_idx[9] = {CMP_CMP, CMP_CMP, CMP_CMN,
++                                   CMP_CMP, CMN_CMP, CMP_CMP,
++                                   CMN_CMP, CMP_CMN, CMN_CMN};
+     int swap =
+       comparison_dominates_p (GET_CODE (operands[5]),
+ 			      reverse_condition (GET_CODE (operands[4])));
+ 
+-    return opcodes[which_alternative][swap];
++    output_asm_insn (cmp1[cmp_idx[which_alternative]][swap], operands);
++    if (TARGET_THUMB2) {
++      output_asm_insn (ite[swap], operands);
++    }
++    output_asm_insn (cmp2[cmp_idx[which_alternative]][swap], operands);
++    return \"\";
+   }"
+   [(set_attr "conds" "set")
+-   (set_attr "length" "8")]
++   (set_attr "arch" "t2,t2,t2,t2,t2,any,any,any,any")
++   (set_attr_alternative "length"
++      [(const_int 6)
++       (const_int 8)
++       (const_int 8)
++       (const_int 8)
++       (const_int 8)
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))])]
+ )
+ 
+ (define_insn "*cmp_and"
+@@ -8942,34 +9449,80 @@
+ 	(compare
+ 	 (and:SI
+ 	  (match_operator 4 "arm_comparison_operator"
+-	   [(match_operand:SI 0 "s_register_operand" "r,r,r,r")
+-	    (match_operand:SI 1 "arm_add_operand" "rI,L,rI,L")])
++	   [(match_operand:SI 0 "s_register_operand" 
++	        "l,l,l,r,r,r,r,r,r")
++	    (match_operand:SI 1 "arm_add_operand" 
++	        "lPy,lPy,lPy,rI,L,rI,L,rI,L")])
+ 	  (match_operator:SI 5 "arm_comparison_operator"
+-	   [(match_operand:SI 2 "s_register_operand" "r,r,r,r")
+-	    (match_operand:SI 3 "arm_add_operand" "rI,rI,L,L")]))
++	   [(match_operand:SI 2 "s_register_operand" 
++	        "l,r,r,l,l,r,r,r,r")
++	    (match_operand:SI 3 "arm_add_operand" 
++	        "lPy,rI,L,lPy,lPy,rI,rI,L,L")]))
+ 	 (const_int 0)))]
+-  "TARGET_ARM"
++  "TARGET_32BIT"
+   "*
+   {
+-    static const char *const opcodes[4][2] =
++    static const char *const cmp1[NUM_OF_COND_CMP][2] =
+     {
+-      {\"cmp\\t%2, %3\;cmp%d5\\t%0, %1\",
+-       \"cmp\\t%0, %1\;cmp%d4\\t%2, %3\"},
+-      {\"cmp\\t%2, %3\;cmn%d5\\t%0, #%n1\",
+-       \"cmn\\t%0, #%n1\;cmp%d4\\t%2, %3\"},
+-      {\"cmn\\t%2, #%n3\;cmp%d5\\t%0, %1\",
+-       \"cmp\\t%0, %1\;cmn%d4\\t%2, #%n3\"},
+-      {\"cmn\\t%2, #%n3\;cmn%d5\\t%0, #%n1\",
+-       \"cmn\\t%0, #%n1\;cmn%d4\\t%2, #%n3\"}
++      {\"cmp%d5\\t%0, %1\",
++       \"cmp%d4\\t%2, %3\"},
++      {\"cmn%d5\\t%0, #%n1\",
++       \"cmp%d4\\t%2, %3\"},
++      {\"cmp%d5\\t%0, %1\",
++       \"cmn%d4\\t%2, #%n3\"},
++      {\"cmn%d5\\t%0, #%n1\",
++       \"cmn%d4\\t%2, #%n3\"}
+     };
++    static const char *const cmp2[NUM_OF_COND_CMP][2] =
++    {
++      {\"cmp\\t%2, %3\",
++       \"cmp\\t%0, %1\"},
++      {\"cmp\\t%2, %3\",
++       \"cmn\\t%0, #%n1\"},
++      {\"cmn\\t%2, #%n3\",
++       \"cmp\\t%0, %1\"},
++      {\"cmn\\t%2, #%n3\",
++       \"cmn\\t%0, #%n1\"}
++    };
++    static const char *const ite[2] =
++    {
++      \"it\\t%d5\",
++      \"it\\t%d4\"
++    };
++    static const int cmp_idx[9] = {CMP_CMP, CMP_CMP, CMP_CMN,
++                                   CMP_CMP, CMN_CMP, CMP_CMP,
++                                   CMN_CMP, CMP_CMN, CMN_CMN};
+     int swap =
+       comparison_dominates_p (GET_CODE (operands[5]), GET_CODE (operands[4]));
+ 
+-    return opcodes[which_alternative][swap];
++    output_asm_insn (cmp2[cmp_idx[which_alternative]][swap], operands);
++    if (TARGET_THUMB2) {
++      output_asm_insn (ite[swap], operands);
++    }
++    output_asm_insn (cmp1[cmp_idx[which_alternative]][swap], operands);
++    return \"\";
+   }"
+   [(set_attr "conds" "set")
+    (set_attr "predicable" "no")
+-   (set_attr "length" "8")]
++   (set_attr "arch" "t2,t2,t2,t2,t2,any,any,any,any")
++   (set_attr_alternative "length"
++      [(const_int 6)
++       (const_int 8)
++       (const_int 8)
++       (const_int 8)
++       (const_int 8)
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))])]
+ )
+ 
+ (define_insn "*cmp_ior"
+@@ -8977,34 +9530,80 @@
+ 	(compare
+ 	 (ior:SI
+ 	  (match_operator 4 "arm_comparison_operator"
+-	   [(match_operand:SI 0 "s_register_operand" "r,r,r,r")
+-	    (match_operand:SI 1 "arm_add_operand" "rI,L,rI,L")])
++	   [(match_operand:SI 0 "s_register_operand"
++	        "l,l,l,r,r,r,r,r,r")
++	    (match_operand:SI 1 "arm_add_operand"
++	        "lPy,lPy,lPy,rI,L,rI,L,rI,L")])
+ 	  (match_operator:SI 5 "arm_comparison_operator"
+-	   [(match_operand:SI 2 "s_register_operand" "r,r,r,r")
+-	    (match_operand:SI 3 "arm_add_operand" "rI,rI,L,L")]))
++	   [(match_operand:SI 2 "s_register_operand"
++	        "l,r,r,l,l,r,r,r,r")
++	    (match_operand:SI 3 "arm_add_operand"
++	        "lPy,rI,L,lPy,lPy,rI,rI,L,L")]))
+ 	 (const_int 0)))]
+-  "TARGET_ARM"
++  "TARGET_32BIT"
+   "*
+-{
+-  static const char *const opcodes[4][2] =
+   {
+-    {\"cmp\\t%0, %1\;cmp%D4\\t%2, %3\",
+-     \"cmp\\t%2, %3\;cmp%D5\\t%0, %1\"},
+-    {\"cmn\\t%0, #%n1\;cmp%D4\\t%2, %3\",
+-     \"cmp\\t%2, %3\;cmn%D5\\t%0, #%n1\"},
+-    {\"cmp\\t%0, %1\;cmn%D4\\t%2, #%n3\",
+-     \"cmn\\t%2, #%n3\;cmp%D5\\t%0, %1\"},
+-    {\"cmn\\t%0, #%n1\;cmn%D4\\t%2, #%n3\",
+-     \"cmn\\t%2, #%n3\;cmn%D5\\t%0, #%n1\"}
+-  };
+-  int swap =
+-    comparison_dominates_p (GET_CODE (operands[5]), GET_CODE (operands[4]));
++    static const char *const cmp1[NUM_OF_COND_CMP][2] =
++    {
++      {\"cmp\\t%0, %1\",
++       \"cmp\\t%2, %3\"},
++      {\"cmn\\t%0, #%n1\",
++       \"cmp\\t%2, %3\"},
++      {\"cmp\\t%0, %1\",
++       \"cmn\\t%2, #%n3\"},
++      {\"cmn\\t%0, #%n1\",
++       \"cmn\\t%2, #%n3\"}
++    };
++    static const char *const cmp2[NUM_OF_COND_CMP][2] =
++    {
++      {\"cmp%D4\\t%2, %3\",
++       \"cmp%D5\\t%0, %1\"},
++      {\"cmp%D4\\t%2, %3\",
++       \"cmn%D5\\t%0, #%n1\"},
++      {\"cmn%D4\\t%2, #%n3\",
++       \"cmp%D5\\t%0, %1\"},
++      {\"cmn%D4\\t%2, #%n3\",
++       \"cmn%D5\\t%0, #%n1\"}
++    };
++    static const char *const ite[2] =
++    {
++      \"it\\t%D4\",
++      \"it\\t%D5\"
++    };
++    static const int cmp_idx[9] = {CMP_CMP, CMP_CMP, CMP_CMN,
++                                   CMP_CMP, CMN_CMP, CMP_CMP,
++                                   CMN_CMP, CMP_CMN, CMN_CMN};
++    int swap =
++      comparison_dominates_p (GET_CODE (operands[5]), GET_CODE (operands[4]));
+ 
+-  return opcodes[which_alternative][swap];
+-}
+-"
++    output_asm_insn (cmp1[cmp_idx[which_alternative]][swap], operands);
++    if (TARGET_THUMB2) {
++      output_asm_insn (ite[swap], operands);
++    }
++    output_asm_insn (cmp2[cmp_idx[which_alternative]][swap], operands);
++    return \"\";
++  }
++  "
+   [(set_attr "conds" "set")
+-   (set_attr "length" "8")]
++   (set_attr "arch" "t2,t2,t2,t2,t2,any,any,any,any")
++   (set_attr_alternative "length"
++      [(const_int 6)
++       (const_int 8)
++       (const_int 8)
++       (const_int 8)
++       (const_int 8)
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))
++       (if_then_else (eq_attr "is_thumb" "no")
++           (const_int 8)
++           (const_int 10))])]
+ )
+ 
+ (define_insn_and_split "*ior_scc_scc"
+@@ -9016,11 +9615,11 @@
+ 		 [(match_operand:SI 4 "s_register_operand" "r")
+ 		  (match_operand:SI 5 "arm_add_operand" "rIL")])))
+    (clobber (reg:CC CC_REGNUM))]
+-  "TARGET_ARM
++  "TARGET_32BIT
+    && (arm_select_dominance_cc_mode (operands[3], operands[6], DOM_CC_X_OR_Y)
+        != CCmode)"
+   "#"
+-  "TARGET_ARM && reload_completed"
++  "TARGET_32BIT && reload_completed"
+   [(set (match_dup 7)
+ 	(compare
+ 	 (ior:SI
+@@ -9049,9 +9648,9 @@
+    (set (match_operand:SI 7 "s_register_operand" "=r")
+ 	(ior:SI (match_op_dup 3 [(match_dup 1) (match_dup 2)])
+ 		(match_op_dup 6 [(match_dup 4) (match_dup 5)])))]
+-  "TARGET_ARM"
++  "TARGET_32BIT"
+   "#"
+-  "TARGET_ARM && reload_completed"
++  "TARGET_32BIT && reload_completed"
+   [(set (match_dup 0)
+ 	(compare
+ 	 (ior:SI
+@@ -9072,11 +9671,11 @@
+ 		 [(match_operand:SI 4 "s_register_operand" "r")
+ 		  (match_operand:SI 5 "arm_add_operand" "rIL")])))
+    (clobber (reg:CC CC_REGNUM))]
+-  "TARGET_ARM
++  "TARGET_32BIT
+    && (arm_select_dominance_cc_mode (operands[3], operands[6], DOM_CC_X_AND_Y)
+        != CCmode)"
+   "#"
+-  "TARGET_ARM && reload_completed
++  "TARGET_32BIT && reload_completed
+    && (arm_select_dominance_cc_mode (operands[3], operands[6], DOM_CC_X_AND_Y)
+        != CCmode)"
+   [(set (match_dup 7)
+@@ -9107,9 +9706,9 @@
+    (set (match_operand:SI 7 "s_register_operand" "=r")
+ 	(and:SI (match_op_dup 3 [(match_dup 1) (match_dup 2)])
+ 		(match_op_dup 6 [(match_dup 4) (match_dup 5)])))]
+-  "TARGET_ARM"
++  "TARGET_32BIT"
+   "#"
+-  "TARGET_ARM && reload_completed"
++  "TARGET_32BIT && reload_completed"
+   [(set (match_dup 0)
+ 	(compare
+ 	 (and:SI
+@@ -9134,11 +9733,11 @@
+ 		 [(match_operand:SI 4 "s_register_operand" "r,r,r")
+ 		  (match_operand:SI 5 "arm_add_operand" "rIL,rIL,rIL")])))
+    (clobber (reg:CC CC_REGNUM))]
+-  "TARGET_ARM
++  "TARGET_32BIT
+    && (arm_select_dominance_cc_mode (operands[3], operands[6], DOM_CC_X_AND_Y)
+        == CCmode)"
+   "#"
+-  "TARGET_ARM && reload_completed"
++  "TARGET_32BIT && reload_completed"
+   [(parallel [(set (match_dup 0)
+ 		   (match_op_dup 3 [(match_dup 1) (match_dup 2)]))
+ 	      (clobber (reg:CC CC_REGNUM))])
+@@ -10248,6 +10847,8 @@
+ ;; Push multiple registers to the stack.  Registers are in parallel (use ...)
+ ;; expressions.  For simplicity, the first register is also in the unspec
+ ;; part.
++;; To avoid the usage of GNU extension, the length attribute is computed
++;; in a C function arm_attr_length_push_multi.
+ (define_insn "*push_multi"
+   [(match_parallel 2 "multi_register_push"
+     [(set (match_operand:BLK 0 "memory_operand" "=m")
+@@ -10287,7 +10888,9 @@
+ 
+     return \"\";
+   }"
+-  [(set_attr "type" "store4")]
++  [(set_attr "type" "store4")
++   (set (attr "length")
++	(symbol_ref "arm_attr_length_push_multi (operands[2], operands[1])"))]
+ )
+ 
+ (define_insn "stack_tie"
+--- a/src/gcc/config/arm/arm.opt
++++ b/src/gcc/config/arm/arm.opt
+@@ -48,6 +48,11 @@
+ Target RejectNegative Joined
+ Specify the name of the target architecture
+ 
++; Other arm_arch values are loaded from arm-tables.opt
++; but that is a generated file and this is an odd-one-out.
++EnumValue
++Enum(arm_arch) String(native) Value(-1) DriverOnly
++
+ marm
+ Target RejectNegative InverseMask(THUMB) Undocumented
+ 
+@@ -153,14 +158,23 @@
+ Target RejectNegative Joined
+ Tune code for the given processor
+ 
++; Other processor_type values are loaded from arm-tables.opt
++; but that is a generated file and this is an odd-one-out.
++EnumValue
++Enum(processor_type) String(native) Value(-1) DriverOnly
++
+ mwords-little-endian
+ Target Report RejectNegative Mask(LITTLE_WORDS)
+ Assume big endian bytes, little endian words
+ 
+ mvectorize-with-neon-quad
+-Target Report Mask(NEON_VECTORIZE_QUAD)
++Target Report RejectNegative InverseMask(NEON_VECTORIZE_DOUBLE)
+ Use Neon quad-word (rather than double-word) registers for vectorization
+ 
++mvectorize-with-neon-double
++Target Report RejectNegative Mask(NEON_VECTORIZE_DOUBLE)
++Use Neon double-word (rather than quad-word) registers for vectorization
++
+ mword-relocations
+ Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
+ Only generate absolute relocations on word sized values.
+@@ -169,3 +183,7 @@
+ Target Report Var(fix_cm3_ldrd) Init(2)
+ Avoid overlapping destination and address registers on LDRD instructions
+ that may trigger Cortex-M3 errata.
++
++munaligned-access
++Target Report Var(unaligned_access) Init(2)
++Enable unaligned word and halfword accesses to packed data.
+--- a/src/gcc/config/arm/arm-protos.h
++++ b/src/gcc/config/arm/arm-protos.h
+@@ -46,6 +46,7 @@
+ extern bool arm_small_register_classes_for_mode_p (enum machine_mode);
+ extern int arm_hard_regno_mode_ok (unsigned int, enum machine_mode);
+ extern int const_ok_for_arm (HOST_WIDE_INT);
++extern int const_ok_for_op (HOST_WIDE_INT, enum rtx_code);
+ extern int arm_split_constant (RTX_CODE, enum machine_mode, rtx,
+ 			       HOST_WIDE_INT, rtx, rtx, int);
+ extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, rtx *, rtx *);
+@@ -58,14 +59,19 @@
+ 					   int);
+ extern rtx thumb_legitimize_reload_address (rtx *, enum machine_mode, int, int,
+ 					    int);
++extern int thumb1_legitimate_address_p (enum machine_mode, rtx, int);
+ extern int arm_const_double_rtx (rtx);
+ extern int neg_const_double_rtx_ok_for_fpa (rtx);
+ extern int vfp3_const_double_rtx (rtx);
+ extern int neon_immediate_valid_for_move (rtx, enum machine_mode, rtx *, int *);
+ extern int neon_immediate_valid_for_logic (rtx, enum machine_mode, int, rtx *,
+ 					   int *);
++extern int neon_immediate_valid_for_shift (rtx, enum machine_mode, rtx *,
++					   int *, bool);
+ extern char *neon_output_logic_immediate (const char *, rtx *,
+ 					  enum machine_mode, int, int);
++extern char *neon_output_shift_immediate (const char *, char, rtx *,
++					  enum machine_mode, int, bool);
+ extern void neon_pairwise_reduce (rtx, rtx, enum machine_mode,
+ 				  rtx (*) (rtx, rtx, rtx));
+ extern rtx neon_make_constant (rtx);
+@@ -81,7 +87,6 @@
+ extern enum reg_class coproc_secondary_reload_class (enum machine_mode, rtx,
+ 						     bool);
+ extern bool arm_tls_referenced_p (rtx);
+-extern bool arm_cannot_force_const_mem (rtx);
+ 
+ extern int cirrus_memory_offset (rtx);
+ extern int arm_coproc_mem_operand (rtx, bool);
+@@ -99,6 +104,7 @@
+ extern int symbol_mentioned_p (rtx);
+ extern int label_mentioned_p (rtx);
+ extern RTX_CODE minmax_code (rtx);
++extern bool arm_sat_operator_match (rtx, rtx, int *, bool *);
+ extern int adjacent_mem_locations (rtx, rtx);
+ extern bool gen_ldm_seq (rtx *, int, bool);
+ extern bool gen_stm_seq (rtx *, int);
+@@ -152,6 +158,7 @@
+ extern const char *arm_output_memory_barrier (rtx *);
+ extern const char *arm_output_sync_insn (rtx, rtx *);
+ extern unsigned int arm_sync_loop_insns (rtx , rtx *);
++extern int arm_attr_length_push_multi(rtx, rtx);
+ 
+ #if defined TREE_CODE
+ extern void arm_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
+@@ -175,6 +182,7 @@
+ #endif
+ extern int thumb_shiftable_const (unsigned HOST_WIDE_INT);
+ #ifdef RTX_CODE
++extern enum arm_cond_code maybe_get_arm_condition_code (rtx);
+ extern void thumb1_final_prescan_insn (rtx);
+ extern void thumb2_final_prescan_insn (rtx);
+ extern const char *thumb_load_double_from_address (rtx *);
+@@ -220,12 +228,18 @@
+   bool (*rtx_costs) (rtx, RTX_CODE, RTX_CODE, int *, bool);
+   bool (*sched_adjust_cost) (rtx, rtx, rtx, int *);
+   int constant_limit;
++  /* Maximum number of instructions to conditionalise in
++     arm_final_prescan_insn.  */
++  int max_insns_skipped;
+   int num_prefetch_slots;
+   int l1_cache_size;
+   int l1_cache_line_size;
++  bool prefer_constant_pool;
++  int (*branch_cost) (bool, bool);
+ };
+ 
+ extern const struct tune_params *current_tune;
++extern int vfp3_const_double_for_fract_bits (rtx);
+ #endif /* RTX_CODE */
+ 
+ #endif /* ! GCC_ARM_PROTOS_H */
+--- a/src/gcc/config/arm/arm-tune.md
++++ b/src/gcc/config/arm/arm-tune.md
+@@ -1,5 +1,5 @@
+ ;; -*- buffer-read-only: t -*-
+ ;; Generated automatically by gentune.sh from arm-cores.def
+ (define_attr "tune"
+-	"arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,fa526,fa626,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,fa606te,fa626te,fmp626,fa726te,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,arm1156t2fs,cortexa5,cortexa8,cortexa9,cortexa15,cortexr4,cortexr4f,cortexm4,cortexm3,cortexm1,cortexm0"
++	"arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,fa526,fa626,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,fa606te,fa626te,fmp626,fa726te,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,arm1156t2fs,genericv7a,cortexa5,cortexa7,cortexa8,cortexa9,cortexa15,cortexr4,cortexr4f,cortexr5,cortexm4,cortexm3,cortexm1,cortexm0"
+ 	(const (symbol_ref "((enum attr_tune) arm_tune)")))
+--- a/src/gcc/config/arm/bpabi.h
++++ b/src/gcc/config/arm/bpabi.h
+@@ -56,7 +56,9 @@
+   "|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx}"
+ 
+ #define BE8_LINK_SPEC " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5"\
+-  "|mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15:%{!r:--be8}}}"
++  "|mcpu=cortex-a7"\
++  "|mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15|mcpu=generic-armv7-a"\
++  ":%{!r:--be8}}}"
+ 
+ /* Tell the assembler to build BPABI binaries.  */
+ #undef  SUBTARGET_EXTRA_ASM_SPEC
+--- a/src/gcc/config/arm/constraints.md
++++ b/src/gcc/config/arm/constraints.md
+@@ -29,13 +29,14 @@
+ ;; in Thumb-1 state: I, J, K, L, M, N, O
+ 
+ ;; The following multi-letter normal constraints have been used:
+-;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy, Di, Dz
++;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy, Di, Dt, Dz
+ ;; in Thumb-1 state: Pa, Pb, Pc, Pd
+-;; in Thumb-2 state: Ps, Pt, Pu, Pv, Pw, Px
++;; in Thumb-2 state: Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py
+ 
+ ;; The following memory constraints have been used:
+ ;; in ARM/Thumb-2 state: Q, Ut, Uv, Uy, Un, Um, Us
+ ;; in ARM state: Uq
++;; in Thumb state: Uu, Uw
+ 
+ 
+ (define_register_constraint "f" "TARGET_ARM ? FPA_REGS : NO_REGS"
+@@ -74,6 +75,18 @@
+ 	   (and (match_code "const_int")
+                 (match_test "(ival & 0xffff0000) == 0")))))
+ 
++(define_constraint "Pj"
++ "@internal A 12-bit constant suitable for an ADDW or SUBW instruction. (Thumb-2)"
++ (and (match_code "const_int")
++      (and (match_test "TARGET_THUMB2")
++	   (match_test "(ival & 0xfffff000) == 0"))))
++
++(define_constraint "PJ"
++ "@internal A constant that satisfies the Pj constrant if negated."
++ (and (match_code "const_int")
++      (and (match_test "TARGET_THUMB2")
++	   (match_test "((-ival) & 0xfffff000) == 0"))))
++
+ (define_register_constraint "k" "STACK_REG"
+  "@internal The stack register.")
+ 
+@@ -189,6 +202,11 @@
+   (and (match_code "const_int")
+        (match_test "TARGET_THUMB2 && ival >= -7 && ival <= -1")))
+ 
++(define_constraint "Py"
++  "@internal In Thumb-2 state a constant in the range 0 to 255"
++  (and (match_code "const_int")
++       (match_test "TARGET_THUMB2 && ival >= 0 && ival <= 255")))
++
+ (define_constraint "G"
+  "In ARM/Thumb-2 state a valid FPA immediate constant."
+  (and (match_code "const_double")
+@@ -273,6 +291,12 @@
+  (and (match_code "const_double")
+       (match_test "TARGET_32BIT && TARGET_VFP_DOUBLE && vfp3_const_double_rtx (op)")))
+ 
++(define_constraint "Dt" 
++ "@internal
++  In ARM/ Thumb2 a const_double which can be used with a vcvt.f32.s32 with fract bits operation"
++  (and (match_code "const_double")
++       (match_test "TARGET_32BIT && TARGET_VFP && vfp3_const_double_for_fract_bits (op)")))
++
+ (define_memory_constraint "Ut"
+  "@internal
+   In ARM/Thumb-2 state an address valid for loading/storing opaque structure
+@@ -327,6 +351,27 @@
+  (and (match_code "mem")
+       (match_test "REG_P (XEXP (op, 0))")))
+ 
++(define_memory_constraint "Uu"
++ "@internal
++  In Thumb state an address that is valid in 16bit encoding."
++ (and (match_code "mem")
++      (match_test "TARGET_THUMB
++		   && thumb1_legitimate_address_p (GET_MODE (op), XEXP (op, 0),
++						   0)")))
++
++; The 16-bit post-increment LDR/STR accepted by thumb1_legitimate_address_p
++; are actually LDM/STM instructions, so cannot be used to access unaligned
++; data.
++(define_memory_constraint "Uw"
++ "@internal
++  In Thumb state an address that is valid in 16bit encoding, and that can be
++  used for unaligned accesses."
++ (and (match_code "mem")
++      (match_test "TARGET_THUMB
++		   && thumb1_legitimate_address_p (GET_MODE (op), XEXP (op, 0),
++						   0)
++		   && GET_CODE (XEXP (op, 0)) != POST_INC")))
++
+ ;; We used to have constraint letters for S and R in ARM state, but
+ ;; all uses of these now appear to have been removed.
+ 
+--- a/src/gcc/config/arm/cortex-a15.md
++++ b/src/gcc/config/arm/cortex-a15.md
+@@ -0,0 +1,186 @@
++;; ARM Cortex-A15 pipeline description
++;; Copyright (C) 2011 Free Software Foundation, Inc.
++;;
++;; Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
++
++;; 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/>.
++
++(define_automaton "cortex_a15")
++
++;; The Cortex-A15 core is modelled as a triple issue pipeline that has
++;; the following dispatch units.
++;; 1. Two pipelines for simple integer operations: SX1, SX2
++;; 2. Two pipelines for Neon and FP data-processing operations: CX1, CX2
++;; 3. One pipeline for branch operations: BX
++;; 4. One pipeline for integer multiply and divide operations: MX
++;; 5. Two pipelines for load and store operations: LS1, LS2
++;;
++;; We can issue into three pipelines per-cycle.
++;;
++;; We assume that where we have unit pairs xx1 is always filled before xx2.
++
++;; The three issue units
++(define_cpu_unit "ca15_i0, ca15_i1, ca15_i2" "cortex_a15")
++
++(define_reservation "ca15_issue1" "(ca15_i0|ca15_i1|ca15_i2)")
++(define_reservation "ca15_issue2" "((ca15_i0+ca15_i1)|(ca15_i1+ca15_i2))")
++(define_reservation "ca15_issue3" "(ca15_i0+ca15_i1+ca15_i2)")
++(final_presence_set "ca15_i1" "ca15_i0")
++(final_presence_set "ca15_i2" "ca15_i1")
++
++;; The main dispatch units
++(define_cpu_unit "ca15_sx1, ca15_sx2" "cortex_a15")
++(define_cpu_unit "ca15_cx1, ca15_cx2" "cortex_a15")
++(define_cpu_unit "ca15_ls1, ca15_ls2" "cortex_a15")
++(define_cpu_unit "ca15_bx, ca15_mx" "cortex_a15")
++
++(define_reservation "ca15_ls" "(ca15_ls1|ca15_ls2)")
++
++;; The extended load-store pipeline
++(define_cpu_unit "ca15_ldr, ca15_str" "cortex_a15")
++
++;; The extended ALU pipeline
++(define_cpu_unit "ca15_sx1_alu, ca15_sx1_shf, ca15_sx1_sat" "cortex_a15")
++(define_cpu_unit "ca15_sx2_alu, ca15_sx2_shf, ca15_sx2_sat" "cortex_a15")
++
++;; Simple Execution Unit:
++;;
++;; Simple ALU without shift
++(define_insn_reservation "cortex_a15_alu" 2
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "alu")
++            (eq_attr "neon_type" "none")))
++  "ca15_issue1,(ca15_sx1,ca15_sx1_alu)|(ca15_sx2,ca15_sx2_alu)")
++
++;; ALU ops with immediate shift
++(define_insn_reservation "cortex_a15_alu_shift" 3
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "alu_shift")
++            (eq_attr "neon_type" "none")))
++  "ca15_issue1,(ca15_sx1,ca15_sx1+ca15_sx1_shf,ca15_sx1_alu)\
++	       |(ca15_sx2,ca15_sx2+ca15_sx2_shf,ca15_sx2_alu)")
++
++;; ALU ops with register controlled shift
++(define_insn_reservation "cortex_a15_alu_shift_reg" 3
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "alu_shift_reg")
++	    (eq_attr "neon_type" "none")))
++  "(ca15_issue2,ca15_sx1+ca15_sx2,ca15_sx1_shf,ca15_sx2_alu)\
++   |(ca15_issue1,(ca15_issue1+ca15_sx2,ca15_sx1+ca15_sx2_shf)\
++   |(ca15_issue1+ca15_sx1,ca15_sx1+ca15_sx1_shf),ca15_sx1_alu)")
++
++;; Multiply Execution Unit:
++;;
++;; 32-bit multiplies
++(define_insn_reservation "cortex_a15_mult32" 3
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "mult")
++	    (and (eq_attr "neon_type" "none")
++		 (eq_attr "mul64" "no"))))
++  "ca15_issue1,ca15_mx")
++
++;; 64-bit multiplies
++(define_insn_reservation "cortex_a15_mult64" 4
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "mult")
++	    (and (eq_attr "neon_type" "none")
++		 (eq_attr "mul64" "yes"))))
++  "ca15_issue1,ca15_mx*2")
++
++;; Integer divide
++(define_insn_reservation "cortex_a15_udiv" 9
++  (and (eq_attr "tune" "cortexa15")
++       (eq_attr "insn" "udiv"))
++  "ca15_issue1,ca15_mx")
++
++(define_insn_reservation "cortex_a15_sdiv" 10
++  (and (eq_attr "tune" "cortexa15")
++       (eq_attr "insn" "sdiv"))
++  "ca15_issue1,ca15_mx")
++
++;; Block all issue pipes for a cycle
++(define_insn_reservation "cortex_a15_block" 1
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "block")
++	    (eq_attr "neon_type" "none")))
++  "ca15_issue3")
++
++;; Branch execution Unit
++;;
++;; Branches take one issue slot.
++;; No latency as there is no result
++(define_insn_reservation "cortex_a15_branch" 0
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "branch")
++	    (eq_attr "neon_type" "none")))
++  "ca15_issue1,ca15_bx")
++
++
++;; We lie with calls.  They take up all issue slots, and form a block in the
++;; pipeline.  The result however is available the next cycle.
++;;
++;; Addition of new units requires this to be updated.
++(define_insn_reservation "cortex_a15_call" 1
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "call")
++	    (eq_attr "neon_type" "none")))
++  "ca15_issue3,\
++   ca15_sx1+ca15_sx2+ca15_bx+ca15_mx+ca15_cx1+ca15_cx2+ca15_ls1+ca15_ls2,\
++   ca15_sx1_alu+ca15_sx1_shf+ca15_sx1_sat+ca15_sx2_alu+ca15_sx2_shf\
++    +ca15_sx2_sat+ca15_ldr+ca15_str")
++
++;; Load-store execution Unit
++;;
++;; Loads of up to two words.
++(define_insn_reservation "cortex_a15_load1" 4
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "load_byte,load1,load2")
++	    (eq_attr "neon_type" "none")))
++  "ca15_issue1,ca15_ls,ca15_ldr,nothing")
++
++;; Loads of three or four words.
++(define_insn_reservation "cortex_a15_load3" 5
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "load3,load4")
++	    (eq_attr "neon_type" "none")))
++  "ca15_issue2,ca15_ls1+ca15_ls2,ca15_ldr,ca15_ldr,nothing")
++
++;; Stores of up to two words.
++(define_insn_reservation "cortex_a15_store1" 0
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "store1,store2")
++	    (eq_attr "neon_type" "none")))
++  "ca15_issue1,ca15_ls,ca15_str")
++
++;; Stores of three or four words.
++(define_insn_reservation "cortex_a15_store3" 0
++  (and (eq_attr "tune" "cortexa15")
++       (and (eq_attr "type" "store3,store4")
++	    (eq_attr "neon_type" "none")))
++  "ca15_issue2,ca15_ls1+ca15_ls2,ca15_str,ca15_str")
++
++;; Simple execution unit bypasses
++(define_bypass 1 "cortex_a15_alu"
++	       "cortex_a15_alu,cortex_a15_alu_shift,cortex_a15_alu_shift_reg")
++(define_bypass 2 "cortex_a15_alu_shift"
++	       "cortex_a15_alu,cortex_a15_alu_shift,cortex_a15_alu_shift_reg")
++(define_bypass 2 "cortex_a15_alu_shift_reg"
++	       "cortex_a15_alu,cortex_a15_alu_shift,cortex_a15_alu_shift_reg")
++(define_bypass 1 "cortex_a15_alu" "cortex_a15_load1,cortex_a15_load3")
++(define_bypass 2 "cortex_a15_alu_shift" "cortex_a15_load1,cortex_a15_load3")
++(define_bypass 2 "cortex_a15_alu_shift_reg"
++	       "cortex_a15_load1,cortex_a15_load3")
+--- a/src/gcc/config/arm/cortex-a9.md
++++ b/src/gcc/config/arm/cortex-a9.md
+@@ -68,7 +68,8 @@
+   "cortex_a9_mac_m1*2, cortex_a9_mac_m2, cortex_a9_p0_wb")
+ (define_reservation "cortex_a9_mac"
+   "cortex_a9_multcycle1*2 ,cortex_a9_mac_m2, cortex_a9_p0_wb")
+-
++(define_reservation "cortex_a9_mult_long"
++  "cortex_a9_mac_m1*3, cortex_a9_mac_m2, cortex_a9_p0_wb")
+ 
+ ;; Issue at the same time along the load store pipeline and
+ ;; the VFP / Neon pipeline is not possible.
+@@ -139,29 +140,35 @@
+        (eq_attr "insn" "smlaxy"))
+   "cortex_a9_mac16")
+ 
+-
+ (define_insn_reservation "cortex_a9_multiply" 4
+   (and (eq_attr "tune" "cortexa9")
+-       (eq_attr "insn" "mul"))
++       (eq_attr "insn" "mul,smmul,smmulr"))
+        "cortex_a9_mult")
+ 
+ (define_insn_reservation "cortex_a9_mac" 4
+   (and (eq_attr "tune" "cortexa9")
+-       (eq_attr "insn" "mla"))
++       (eq_attr "insn" "mla,smmla"))
+        "cortex_a9_mac")
+ 
++(define_insn_reservation "cortex_a9_multiply_long" 5
++  (and (eq_attr "tune" "cortexa9")
++       (eq_attr "insn" "smull,umull,smulls,umulls,smlal,smlals,umlal,umlals"))
++       "cortex_a9_mult_long")
++
+ ;; An instruction with a result in E2 can be forwarded
+ ;; to E2 or E1 or M1 or the load store unit in the next cycle.
+ 
+ (define_bypass 1 "cortex_a9_dp"
+                  "cortex_a9_dp_shift, cortex_a9_multiply,
+  cortex_a9_load1_2, cortex_a9_dp, cortex_a9_store1_2,
+- cortex_a9_mult16, cortex_a9_mac16, cortex_a9_mac, cortex_a9_store3_4, cortex_a9_load3_4")
++ cortex_a9_mult16, cortex_a9_mac16, cortex_a9_mac, cortex_a9_store3_4, cortex_a9_load3_4, 
++ cortex_a9_multiply_long")
+ 
+ (define_bypass 2 "cortex_a9_dp_shift"
+                  "cortex_a9_dp_shift, cortex_a9_multiply,
+  cortex_a9_load1_2, cortex_a9_dp, cortex_a9_store1_2,
+- cortex_a9_mult16, cortex_a9_mac16, cortex_a9_mac, cortex_a9_store3_4, cortex_a9_load3_4")
++ cortex_a9_mult16, cortex_a9_mac16, cortex_a9_mac, cortex_a9_store3_4, cortex_a9_load3_4,
++ cortex_a9_multiply_long")
+ 
+ ;; An instruction in the load store pipeline can provide
+ ;; read access to a DP instruction in the P0 default pipeline
+@@ -212,7 +219,7 @@
+ 
+ (define_bypass 1
+   "cortex_a9_fps"
+-  "cortex_a9_fadd, cortex_a9_fps, cortex_a9_fcmp, cortex_a9_dp, cortex_a9_dp_shift, cortex_a9_multiply")
++  "cortex_a9_fadd, cortex_a9_fps, cortex_a9_fcmp, cortex_a9_dp, cortex_a9_dp_shift, cortex_a9_multiply, cortex_a9_multiply_long")
+ 
+ ;; Scheduling on the FP_ADD pipeline.
+ (define_reservation "ca9fp_add" "ca9_issue_vfp_neon + ca9fp_add1, ca9fp_add2, ca9fp_add3, ca9fp_add4")
+--- a/src/gcc/config/arm/driver-arm.c
++++ b/src/gcc/config/arm/driver-arm.c
+@@ -0,0 +1,149 @@
++/* Subroutines for the gcc driver.
++   Copyright (C) 2011 Free Software Foundation, Inc.
++
++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/>.  */
++
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "tm.h"
++#include "configargs.h"
++
++struct vendor_cpu {
++  const char *part_no;
++  const char *arch_name;
++  const char *cpu_name;
++};
++
++static struct vendor_cpu arm_cpu_table[] = {
++    {"0x926", "armv5te", "arm926ej-s"},
++    {"0xa26", "armv5te", "arm1026ej-s"},
++    {"0xb02", "armv6k", "mpcore"},
++    {"0xb36", "armv6j", "arm1136j-s"},
++    {"0xb56", "armv6t2", "arm1156t2-s"},
++    {"0xb76", "armv6zk", "arm1176jz-s"},
++    {"0xc05", "armv7-a", "cortex-a5"},
++    {"0xc08", "armv7-a", "cortex-a8"},
++    {"0xc09", "armv7-a", "cortex-a9"},
++    {"0xc0f", "armv7-a", "cortex-a15"},
++    {"0xc14", "armv7-r", "cortex-r4"},
++    {"0xc15", "armv7-r", "cortex-r5"},
++    {"0xc20", "armv6-m", "cortex-m0"},
++    {"0xc21", "armv6-m", "cortex-m1"},
++    {"0xc23", "armv7-m", "cortex-m3"},
++    {"0xc24", "armv7e-m", "cortex-m4"},
++    {NULL, NULL, NULL}
++};
++
++static struct {
++  const char *vendor_no;
++  const struct vendor_cpu *vendor_parts;
++} vendors[] = {
++    {"0x41", arm_cpu_table},
++    {NULL, NULL}
++};
++
++/* This will be called by the spec parser in gcc.c when it sees
++   a %:local_cpu_detect(args) construct.  Currently it will be called
++   with either "arch", "cpu" or "tune" as argument depending on if
++   -march=native, -mcpu=native or -mtune=native is to be substituted.
++
++   It returns a string containing new command line parameters to be
++   put at the place of the above two options, depending on what CPU
++   this is executed.  E.g. "-march=armv7-a" on a Cortex-A8 for
++   -march=native.  If the routine can't detect a known processor,
++   the -march or -mtune option is discarded.
++
++   ARGC and ARGV are set depending on the actual arguments given
++   in the spec.  */
++const char *
++host_detect_local_cpu (int argc, const char **argv)
++{
++  const char *val = NULL;
++  char buf[128];
++  FILE *f = NULL;
++  bool arch;
++  const struct vendor_cpu *cpu_table = NULL;
++
++  if (argc < 1)
++    goto not_found;
++
++  arch = strcmp (argv[0], "arch") == 0;
++  if (!arch && strcmp (argv[0], "cpu") != 0 && strcmp (argv[0], "tune"))
++    goto not_found;
++
++  f = fopen ("/proc/cpuinfo", "r");
++  if (f == NULL)
++    goto not_found;
++
++  while (fgets (buf, sizeof (buf), f) != NULL)
++    {
++      /* Ensure that CPU implementer is ARM (0x41).  */
++      if (strncmp (buf, "CPU implementer", sizeof ("CPU implementer") - 1) == 0)
++	{
++	  int i;
++	  for (i = 0; vendors[i].vendor_no != NULL; i++)
++	    if (strstr (buf, vendors[i].vendor_no) != NULL)
++	      {
++		cpu_table = vendors[i].vendor_parts;
++		break;
++	      }
++	}
++
++      /* Detect arch/cpu.  */
++      if (strncmp (buf, "CPU part", sizeof ("CPU part") - 1) == 0)
++	{
++	  int i;
++
++	  if (cpu_table == NULL)
++	    goto not_found;
++
++	  for (i = 0; cpu_table[i].part_no != NULL; i++)
++	    if (strstr (buf, cpu_table[i].part_no) != NULL)
++	      {
++		val = arch ? cpu_table[i].arch_name : cpu_table[i].cpu_name;
++		break;
++	      }
++	  break;
++	}
++    }
++
++  fclose (f);
++
++  if (val == NULL)
++    goto not_found;
++
++  return concat ("-m", argv[0], "=", val, NULL);
++
++not_found:
++  {
++    unsigned int i;
++    unsigned int opt;
++    const char *search[] = {NULL, "arch"};
++
++    if (f)
++      fclose (f);
++
++    search[0] = argv[0];
++    for (opt = 0; opt < ARRAY_SIZE (search); opt++)
++      for (i = 0; i < ARRAY_SIZE (configure_default_options); i++)
++	if (strcmp (configure_default_options[i].name, search[opt]) == 0)
++	  return concat ("-m", search[opt], "=",
++			 configure_default_options[i].value, NULL);
++    return NULL;
++  }
++}
+--- a/src/gcc/config/arm/elf.h
++++ b/src/gcc/config/arm/elf.h
+@@ -56,8 +56,7 @@
+ #define ASM_SPEC "\
+ %{mbig-endian:-EB} \
+ %{mlittle-endian:-EL} \
+-%{mcpu=*:-mcpu=%*} \
+-%{march=*:-march=%*} \
++%(asm_cpu_spec) \
+ %{mapcs-*:-mapcs-%*} \
+ %(subtarget_asm_float_spec) \
+ %{mthumb-interwork:-mthumb-interwork} \
+--- a/src/gcc/config/arm/iterators.md
++++ b/src/gcc/config/arm/iterators.md
+@@ -33,6 +33,15 @@
+ ;; A list of integer modes that are up to one word long
+ (define_mode_iterator QHSI [QI HI SI])
+ 
++;; A list of integer modes that are less than a word
++(define_mode_iterator NARROW [QI HI])
++
++;; A list of all the integer modes upto 64bit
++(define_mode_iterator QHSD [QI HI SI DI])
++
++;; A list of the 32bit and 64bit integer modes
++(define_mode_iterator SIDI [SI DI])
++
+ ;; Integer element sizes implemented by IWMMXT.
+ (define_mode_iterator VMMX [V2SI V4HI V8QI])
+ 
+@@ -194,24 +203,22 @@
+ 
+ ;; Mode of pair of elements for each vector mode, to define transfer
+ ;; size for structure lane/dup loads and stores.
+-(define_mode_attr V_two_elem [(V8QI "HI") (V16QI "HI")
+-                  (V4HI "SI") (V8HI "SI")
++(define_mode_attr V_two_elem [(V8QI "HI")   (V16QI "HI")
++                              (V4HI "SI")   (V8HI "SI")
+                               (V2SI "V2SI") (V4SI "V2SI")
+                               (V2SF "V2SF") (V4SF "V2SF")
+                               (DI "V2DI")   (V2DI "V2DI")])
+ 
+ ;; Similar, for three elements.
+-;; ??? Should we define extra modes so that sizes of all three-element
+-;; accesses can be accurately represented?
+-(define_mode_attr V_three_elem [(V8QI "SI")   (V16QI "SI")
+-                    (V4HI "V4HI") (V8HI "V4HI")
+-                                (V2SI "V4SI") (V4SI "V4SI")
+-                                (V2SF "V4SF") (V4SF "V4SF")
+-                                (DI "EI")     (V2DI "EI")])
++(define_mode_attr V_three_elem [(V8QI "BLK") (V16QI "BLK")
++                                (V4HI "BLK") (V8HI "BLK")
++                                (V2SI "BLK") (V4SI "BLK")
++                                (V2SF "BLK") (V4SF "BLK")
++                                (DI "EI")    (V2DI "EI")])
+ 
+ ;; Similar, for four elements.
+ (define_mode_attr V_four_elem [(V8QI "SI")   (V16QI "SI")
+-                   (V4HI "V4HI") (V8HI "V4HI")
++                               (V4HI "V4HI") (V8HI "V4HI")
+                                (V2SI "V4SI") (V4SI "V4SI")
+                                (V2SF "V4SF") (V4SF "V4SF")
+                                (DI "OI")     (V2DI "OI")])
+@@ -381,10 +388,17 @@
+ (define_mode_attr qhs_zextenddi_cond [(SI "") (HI "&& arm_arch6") (QI "")])
+ (define_mode_attr qhs_sextenddi_cond [(SI "") (HI "&& arm_arch6")
+ 				      (QI "&& arm_arch6")])
+-(define_mode_attr qhs_extenddi_op [(SI "s_register_operand")
++(define_mode_attr qhs_zextenddi_op [(SI "s_register_operand")
+ 				   (HI "nonimmediate_operand")
+ 				   (QI "nonimmediate_operand")])
+-(define_mode_attr qhs_extenddi_cstr [(SI "r") (HI "rm") (QI "rm")])
++(define_mode_attr qhs_extenddi_op [(SI "s_register_operand")
++				   (HI "nonimmediate_operand")
++				   (QI "arm_reg_or_extendqisi_mem_op")])
++(define_mode_attr qhs_extenddi_cstr [(SI "r") (HI "rm") (QI "rUq")])
++(define_mode_attr qhs_zextenddi_cstr [(SI "r") (HI "rm") (QI "rm")])
++
++;; Mode attribute for vshll.
++(define_mode_attr V_innermode [(V8QI "QI") (V4HI "HI") (V2SI "SI")])
+ 
+ ;;----------------------------------------------------------------------------
+ ;; Code attributes
+--- a/src/gcc/config/arm/linux-atomic-64bit.c
++++ b/src/gcc/config/arm/linux-atomic-64bit.c
+@@ -0,0 +1,166 @@
++/* 64bit Linux-specific atomic operations for ARM EABI.
++   Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
++   Based on linux-atomic.c
++
++   64 bit additions david.gilbert@linaro.org
++
++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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
++
++/* 64bit helper functions for atomic operations; the compiler will
++   call these when the code is compiled for a CPU without ldrexd/strexd.
++   (If the CPU had those then the compiler inlines the operation).
++
++   These helpers require a kernel helper that's only present on newer
++   kernels; we check for that in an init section and bail out rather
++   unceremoneously.  */
++
++extern unsigned int __write (int fd, const void *buf, unsigned int count);
++extern void abort (void);
++
++/* Kernel helper for compare-and-exchange.  */
++typedef int (__kernel_cmpxchg64_t) (const long long* oldval,
++					const long long* newval,
++					long long *ptr);
++#define __kernel_cmpxchg64 (*(__kernel_cmpxchg64_t *) 0xffff0f60)
++
++/* Kernel helper page version number.  */
++#define __kernel_helper_version (*(unsigned int *)0xffff0ffc)
++
++/* Check that the kernel has a new enough version at load.  */
++static void __check_for_sync8_kernelhelper (void)
++{
++  if (__kernel_helper_version < 5)
++    {
++      const char err[] = "A newer kernel is required to run this binary. "
++				"(__kernel_cmpxchg64 helper)\n";
++      /* At this point we need a way to crash with some information
++	 for the user - I'm not sure I can rely on much else being
++	 available at this point, so do the same as generic-morestack.c
++	 write () and abort ().  */
++      __write (2 /* stderr.  */, err, sizeof (err));
++      abort ();
++    }
++};
++
++static void (*__sync8_kernelhelper_inithook[]) (void)
++		__attribute__ ((used, section (".init_array"))) = {
++  &__check_for_sync8_kernelhelper
++};
++
++#define HIDDEN __attribute__ ((visibility ("hidden")))
++
++#define FETCH_AND_OP_WORD64(OP, PFX_OP, INF_OP)			\
++  long long HIDDEN						\
++  __sync_fetch_and_##OP##_8 (long long *ptr, long long val)	\
++  {								\
++    int failure;						\
++    long long tmp,tmp2;						\
++								\
++    do {							\
++      tmp = *ptr;						\
++      tmp2 = PFX_OP (tmp INF_OP val);				\
++      failure = __kernel_cmpxchg64 (&tmp, &tmp2, ptr);		\
++    } while (failure != 0);					\
++								\
++    return tmp;							\
++  }
++
++FETCH_AND_OP_WORD64 (add,   , +)
++FETCH_AND_OP_WORD64 (sub,   , -)
++FETCH_AND_OP_WORD64 (or,    , |)
++FETCH_AND_OP_WORD64 (and,   , &)
++FETCH_AND_OP_WORD64 (xor,   , ^)
++FETCH_AND_OP_WORD64 (nand, ~, &)
++
++#define NAME_oldval(OP, WIDTH) __sync_fetch_and_##OP##_##WIDTH
++#define NAME_newval(OP, WIDTH) __sync_##OP##_and_fetch_##WIDTH
++
++/* Implement both __sync_<op>_and_fetch and __sync_fetch_and_<op> for
++   subword-sized quantities.  */
++
++#define OP_AND_FETCH_WORD64(OP, PFX_OP, INF_OP)			\
++  long long HIDDEN						\
++  __sync_##OP##_and_fetch_8 (long long *ptr, long long val)	\
++  {								\
++    int failure;						\
++    long long tmp,tmp2;						\
++								\
++    do {							\
++      tmp = *ptr;						\
++      tmp2 = PFX_OP (tmp INF_OP val);				\
++      failure = __kernel_cmpxchg64 (&tmp, &tmp2, ptr);		\
++    } while (failure != 0);					\
++								\
++    return tmp2;						\
++  }
++
++OP_AND_FETCH_WORD64 (add,   , +)
++OP_AND_FETCH_WORD64 (sub,   , -)
++OP_AND_FETCH_WORD64 (or,    , |)
++OP_AND_FETCH_WORD64 (and,   , &)
++OP_AND_FETCH_WORD64 (xor,   , ^)
++OP_AND_FETCH_WORD64 (nand, ~, &)
++
++long long HIDDEN
++__sync_val_compare_and_swap_8 (long long *ptr, long long oldval,
++				long long newval)
++{
++  int failure;
++  long long actual_oldval;
++
++  while (1)
++    {
++      actual_oldval = *ptr;
++
++      if (__builtin_expect (oldval != actual_oldval, 0))
++	return actual_oldval;
++
++      failure = __kernel_cmpxchg64 (&actual_oldval, &newval, ptr);
++
++      if (__builtin_expect (!failure, 1))
++	return oldval;
++    }
++}
++
++typedef unsigned char bool;
++
++bool HIDDEN
++__sync_bool_compare_and_swap_8 (long long *ptr, long long oldval,
++				 long long newval)
++{
++  int failure = __kernel_cmpxchg64 (&oldval, &newval, ptr);
++  return (failure == 0);
++}
++
++long long HIDDEN
++__sync_lock_test_and_set_8 (long long *ptr, long long val)
++{
++  int failure;
++  long long oldval;
++
++  do {
++    oldval = *ptr;
++    failure = __kernel_cmpxchg64 (&oldval, &val, ptr);
++  } while (failure != 0);
++
++  return oldval;
++}
+--- a/src/gcc/config/arm/linux-atomic.c
++++ b/src/gcc/config/arm/linux-atomic.c
+@@ -32,8 +32,8 @@
+ #define __kernel_dmb (*(__kernel_dmb_t *) 0xffff0fa0)
+ 
+ /* Note: we implement byte, short and int versions of atomic operations using
+-   the above kernel helpers, but there is no support for "long long" (64-bit)
+-   operations as yet.  */
++   the above kernel helpers; see linux-atomic-64bit.c for "long long" (64-bit)
++   operations.  */
+ 
+ #define HIDDEN __attribute__ ((visibility ("hidden")))
+ 
+@@ -273,6 +273,7 @@
+     *ptr = 0;								\
+   }
+ 
++SYNC_LOCK_RELEASE (long long,   8)
+ SYNC_LOCK_RELEASE (int,   4)
+ SYNC_LOCK_RELEASE (short, 2)
+ SYNC_LOCK_RELEASE (char,  1)
+--- a/src/gcc/config/arm/linux-eabi.h
++++ b/src/gcc/config/arm/linux-eabi.h
+@@ -32,7 +32,8 @@
+   while (false)
+ 
+ /* We default to a soft-float ABI so that binaries can run on all
+-   target hardware.  */
++   target hardware.  If you override this to use the hard-float ABI then
++   change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well.  */
+ #undef  TARGET_DEFAULT_FLOAT_ABI
+ #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
+ 
+@@ -59,10 +60,23 @@
+ #undef  SUBTARGET_EXTRA_LINK_SPEC
+ #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
+ 
+-/* Use ld-linux.so.3 so that it will be possible to run "classic"
+-   GNU/Linux binaries on an EABI system.  */
++/* GNU/Linux on ARM currently supports three dynamic linkers:
++   - ld-linux.so.2 - for the legacy ABI
++   - ld-linux.so.3 - for the EABI-derived soft-float ABI
++   - ld-linux-armhf.so.3 - for the EABI-derived hard-float ABI.
++   All the dynamic linkers live in /lib.
++   We default to soft-float, but this can be overridden by changing both
++   GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
++
+ #undef  GLIBC_DYNAMIC_LINKER
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
++#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
++
++#define GLIBC_DYNAMIC_LINKER \
++   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
++    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
++    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
+ 
+ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
+    use the GNU/Linux version, not the generic BPABI version.  */
+--- a/src/gcc/config/arm/neon.md
++++ b/src/gcc/config/arm/neon.md
+@@ -783,30 +783,57 @@
+ 
+ (define_insn "orn<mode>3_neon"
+   [(set (match_operand:VDQ 0 "s_register_operand" "=w")
+-	(ior:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
+-		 (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w"))))]
++	(ior:VDQ (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w"))
++		 (match_operand:VDQ 1 "s_register_operand" "w")))]
+   "TARGET_NEON"
+   "vorn\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+   [(set_attr "neon_type" "neon_int_1")]
+ )
+ 
+-(define_insn "orndi3_neon"
+-  [(set (match_operand:DI 0 "s_register_operand" "=w,?=&r,?&r")
+-	(ior:DI (match_operand:DI 1 "s_register_operand" "w,r,0")
+-	         (not:DI (match_operand:DI 2 "s_register_operand" "w,0,r"))))]
++;; TODO: investigate whether we should disable 
++;; this and bicdi3_neon for the A8 in line with the other
++;; changes above. 
++(define_insn_and_split "orndi3_neon"
++  [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?&r")
++	(ior:DI (not:DI (match_operand:DI 2 "s_register_operand" "w,0,0,r"))
++		(match_operand:DI 1 "s_register_operand" "w,r,r,0")))]
+   "TARGET_NEON"
+   "@
+    vorn\t%P0, %P1, %P2
+    #
++   #
+    #"
+-  [(set_attr "neon_type" "neon_int_1,*,*")
+-   (set_attr "length" "*,8,8")]
++  "reload_completed && 
++   (TARGET_NEON && !(IS_VFP_REGNUM (REGNO (operands[0]))))"
++  [(set (match_dup 0) (ior:SI (not:SI (match_dup 2)) (match_dup 1)))
++   (set (match_dup 3) (ior:SI (not:SI (match_dup 4)) (match_dup 5)))]
++  "
++  {
++    if (TARGET_THUMB2)
++      {
++        operands[3] = gen_highpart (SImode, operands[0]);
++        operands[0] = gen_lowpart (SImode, operands[0]);
++        operands[4] = gen_highpart (SImode, operands[2]);
++        operands[2] = gen_lowpart (SImode, operands[2]);
++        operands[5] = gen_highpart (SImode, operands[1]);
++        operands[1] = gen_lowpart (SImode, operands[1]);
++      }
++    else
++      {
++        emit_insn (gen_one_cmpldi2 (operands[0], operands[2]));
++        emit_insn (gen_iordi3 (operands[0], operands[1], operands[0]));
++        DONE;
++      }
++  }"
++  [(set_attr "neon_type" "neon_int_1,*,*,*")
++   (set_attr "length" "*,16,8,8")
++   (set_attr "arch" "any,a,t2,t2")]
+ )
+ 
+ (define_insn "bic<mode>3_neon"
+   [(set (match_operand:VDQ 0 "s_register_operand" "=w")
+-	(and:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
+-		  (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w"))))]
++	(and:VDQ (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w"))
++		 (match_operand:VDQ 1 "s_register_operand" "w")))]
+   "TARGET_NEON"
+   "vbic\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+   [(set_attr "neon_type" "neon_int_1")]
+@@ -929,17 +956,59 @@
+ ; SImode elements.
+ 
+ (define_insn "vashl<mode>3"
++  [(set (match_operand:VDQIW 0 "s_register_operand" "=w,w")
++	(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w,w")
++		      (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dn")))]
++  "TARGET_NEON"
++  {
++    switch (which_alternative)
++      {
++        case 0: return "vshl.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2";
++        case 1: return neon_output_shift_immediate ("vshl", 'i', &operands[2],
++                         			    <MODE>mode,
++						    VALID_NEON_QREG_MODE (<MODE>mode),
++						    true);
++        default: gcc_unreachable ();
++      }
++  }
++  [(set (attr "neon_type")
++      (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
++                    (const_string "neon_vshl_ddd")
++                    (const_string "neon_shift_3")))]
++)
++
++(define_insn "vashr<mode>3_imm"
+   [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
+-	(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")
+-		      (match_operand:VDQIW 2 "s_register_operand" "w")))]
++	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")
++			(match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dn")))]
+   "TARGET_NEON"
+-  "vshl.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
++  {
++    return neon_output_shift_immediate ("vshr", 's', &operands[2],
++					<MODE>mode, VALID_NEON_QREG_MODE (<MODE>mode),
++					false);
++  }
+   [(set (attr "neon_type")
+       (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
+                     (const_string "neon_vshl_ddd")
+                     (const_string "neon_shift_3")))]
+ )
+ 
++(define_insn "vlshr<mode>3_imm"
++  [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
++	(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")
++			(match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dn")))]
++  "TARGET_NEON"
++  {
++    return neon_output_shift_immediate ("vshr", 'u', &operands[2],
++					<MODE>mode, VALID_NEON_QREG_MODE (<MODE>mode),
++					false);
++  }              
++  [(set (attr "neon_type")
++	(if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
++		      (const_string "neon_vshl_ddd")
++		      (const_string "neon_shift_3")))]
++)
++
+ ; Used for implementing logical shift-right, which is a left-shift by a negative
+ ; amount, with signed operands. This is essentially the same as ashl<mode>3
+ ; above, but using an unspec in case GCC tries anything tricky with negative
+@@ -977,28 +1046,34 @@
+ (define_expand "vashr<mode>3"
+   [(set (match_operand:VDQIW 0 "s_register_operand" "")
+ 	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "")
+-			(match_operand:VDQIW 2 "s_register_operand" "")))]
++			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon" "")))]
+   "TARGET_NEON"
+ {
+   rtx neg = gen_reg_rtx (<MODE>mode);
+-
+-  emit_insn (gen_neg<mode>2 (neg, operands[2]));
+-  emit_insn (gen_ashl<mode>3_signed (operands[0], operands[1], neg));
+-
++  if (REG_P (operands[2]))
++    {
++      emit_insn (gen_neg<mode>2 (neg, operands[2]));
++      emit_insn (gen_ashl<mode>3_signed (operands[0], operands[1], neg));
++    }
++  else
++    emit_insn (gen_vashr<mode>3_imm (operands[0], operands[1], operands[2]));
+   DONE;
+ })
+ 
+ (define_expand "vlshr<mode>3"
+   [(set (match_operand:VDQIW 0 "s_register_operand" "")
+ 	(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "")
+-			(match_operand:VDQIW 2 "s_register_operand" "")))]
++			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon" "")))]
+   "TARGET_NEON"
+ {
+   rtx neg = gen_reg_rtx (<MODE>mode);
+-
+-  emit_insn (gen_neg<mode>2 (neg, operands[2]));
+-  emit_insn (gen_ashl<mode>3_unsigned (operands[0], operands[1], neg));
+-
++  if (REG_P (operands[2]))
++    {
++      emit_insn (gen_neg<mode>2 (neg, operands[2]));
++      emit_insn (gen_ashl<mode>3_unsigned (operands[0], operands[1], neg));
++    }
++  else
++    emit_insn (gen_vlshr<mode>3_imm (operands[0], operands[1], operands[2]));
+   DONE;
+ })
+ 
+@@ -1160,66 +1235,14 @@
+                     (const_string "neon_int_1") (const_string "neon_int_5")))]
+ )
+ 
+-; FIXME: We wouldn't need the following insns if we could write subregs of
+-; vector registers. Make an attempt at removing unnecessary moves, though
+-; we're really at the mercy of the register allocator.
+-
+-(define_insn "neon_move_lo_quad_<mode>"
+-  [(set (match_operand:ANY128 0 "s_register_operand" "+w")
+-        (vec_concat:ANY128
+-          (match_operand:<V_HALF> 1 "s_register_operand" "w")
+-          (vec_select:<V_HALF> 
+-		(match_dup 0)
+-	        (match_operand:ANY128 2 "vect_par_constant_high" ""))))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src)
+-    return "vmov\t%e0, %P1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_move_hi_quad_<mode>"
+-  [(set (match_operand:ANY128 0 "s_register_operand" "+w")
+-        (vec_concat:ANY128
+-          (vec_select:<V_HALF>
+-		(match_dup 0)
+-	        (match_operand:ANY128 2 "vect_par_constant_low" ""))
+-          (match_operand:<V_HALF> 1 "s_register_operand" "w")))]
+-	   
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src)
+-    return "vmov\t%f0, %P1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+ (define_expand "move_hi_quad_<mode>"
+  [(match_operand:ANY128 0 "s_register_operand" "")
+   (match_operand:<V_HALF> 1 "s_register_operand" "")]
+  "TARGET_NEON"
+ {
+-  rtvec v = rtvec_alloc (<V_mode_nunits>/2);
+-  rtx t1;
+-  int i;
+-
+-  for (i=0; i < (<V_mode_nunits>/2); i++)
+-     RTVEC_ELT (v, i) = GEN_INT (i);
+-
+-  t1 = gen_rtx_PARALLEL (<MODE>mode, v);
+-  emit_insn (gen_neon_move_hi_quad_<mode> (operands[0], operands[1], t1));
+-
++  emit_move_insn (simplify_gen_subreg (<V_HALF>mode, operands[0], <MODE>mode,
++				       GET_MODE_SIZE (<V_HALF>mode)),
++		  operands[1]);
+   DONE;
+ })
+ 
+@@ -1228,16 +1251,9 @@
+   (match_operand:<V_HALF> 1 "s_register_operand" "")]
+  "TARGET_NEON"
+ {
+-  rtvec v = rtvec_alloc (<V_mode_nunits>/2);
+-  rtx t1;
+-  int i;
+-
+-  for (i=0; i < (<V_mode_nunits>/2); i++)
+-     RTVEC_ELT (v, i) = GEN_INT ((<V_mode_nunits>/2) + i);
+-
+-  t1 = gen_rtx_PARALLEL (<MODE>mode, v);
+-  emit_insn (gen_neon_move_lo_quad_<mode> (operands[0], operands[1], t1));
+-
++  emit_move_insn (simplify_gen_subreg (<V_HALF>mode, operands[0],
++				       <MODE>mode, 0),
++		  operands[1]);
+   DONE;
+ })
+ 
+@@ -2875,183 +2891,27 @@
+    (set_attr "neon_type" "neon_bp_simple")]
+ )
+ 
+-(define_insn "neon_vget_highv16qi"
+-  [(set (match_operand:V8QI 0 "s_register_operand" "=w")
+-	(vec_select:V8QI (match_operand:V16QI 1 "s_register_operand" "w")
+-                         (parallel [(const_int 8) (const_int 9)
+-			            (const_int 10) (const_int 11)
+-				    (const_int 12) (const_int 13)
+-				    (const_int 14) (const_int 15)])))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src + 2)
+-    return "vmov\t%P0, %f1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_vget_highv8hi"
+-  [(set (match_operand:V4HI 0 "s_register_operand" "=w")
+-	(vec_select:V4HI (match_operand:V8HI 1 "s_register_operand" "w")
+-	                 (parallel [(const_int 4) (const_int 5)
+-			            (const_int 6) (const_int 7)])))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src + 2)
+-    return "vmov\t%P0, %f1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_vget_highv4si"
+-  [(set (match_operand:V2SI 0 "s_register_operand" "=w")
+-	(vec_select:V2SI (match_operand:V4SI 1 "s_register_operand" "w")
+-	                 (parallel [(const_int 2) (const_int 3)])))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src + 2)
+-    return "vmov\t%P0, %f1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_vget_highv4sf"
+-  [(set (match_operand:V2SF 0 "s_register_operand" "=w")
+-	(vec_select:V2SF (match_operand:V4SF 1 "s_register_operand" "w")
+-	                 (parallel [(const_int 2) (const_int 3)])))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src + 2)
+-    return "vmov\t%P0, %f1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_vget_highv2di"
+-  [(set (match_operand:DI 0 "s_register_operand" "=w")
+-	(vec_select:DI (match_operand:V2DI 1 "s_register_operand" "w")
+-	               (parallel [(const_int 1)])))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src + 2)
+-    return "vmov\t%P0, %f1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_vget_lowv16qi"
+-  [(set (match_operand:V8QI 0 "s_register_operand" "=w")
+-	(vec_select:V8QI (match_operand:V16QI 1 "s_register_operand" "w")
+-                         (parallel [(const_int 0) (const_int 1)
+-			            (const_int 2) (const_int 3)
+-				    (const_int 4) (const_int 5)
+-				    (const_int 6) (const_int 7)])))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src)
+-    return "vmov\t%P0, %e1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_vget_lowv8hi"
+-  [(set (match_operand:V4HI 0 "s_register_operand" "=w")
+-	(vec_select:V4HI (match_operand:V8HI 1 "s_register_operand" "w")
+-	                 (parallel [(const_int 0) (const_int 1)
+-			            (const_int 2) (const_int 3)])))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src)
+-    return "vmov\t%P0, %e1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_vget_lowv4si"
+-  [(set (match_operand:V2SI 0 "s_register_operand" "=w")
+-	(vec_select:V2SI (match_operand:V4SI 1 "s_register_operand" "w")
+-	                 (parallel [(const_int 0) (const_int 1)])))]
+-  "TARGET_NEON"
+-{
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src)
+-    return "vmov\t%P0, %e1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
+-
+-(define_insn "neon_vget_lowv4sf"
+-  [(set (match_operand:V2SF 0 "s_register_operand" "=w")
+-	(vec_select:V2SF (match_operand:V4SF 1 "s_register_operand" "w")
+-	                 (parallel [(const_int 0) (const_int 1)])))]
++(define_expand "neon_vget_high<mode>"
++  [(match_operand:<V_HALF> 0 "s_register_operand")
++   (match_operand:VQX 1 "s_register_operand")]
+   "TARGET_NEON"
+ {
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src)
+-    return "vmov\t%P0, %e1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
++  emit_move_insn (operands[0],
++		  simplify_gen_subreg (<V_HALF>mode, operands[1], <MODE>mode,
++				       GET_MODE_SIZE (<V_HALF>mode)));
++  DONE;
++})
+ 
+-(define_insn "neon_vget_lowv2di"
+-  [(set (match_operand:DI 0 "s_register_operand" "=w")
+-	(vec_select:DI (match_operand:V2DI 1 "s_register_operand" "w")
+-	               (parallel [(const_int 0)])))]
++(define_expand "neon_vget_low<mode>"
++  [(match_operand:<V_HALF> 0 "s_register_operand")
++   (match_operand:VQX 1 "s_register_operand")]
+   "TARGET_NEON"
+ {
+-  int dest = REGNO (operands[0]);
+-  int src = REGNO (operands[1]);
+-
+-  if (dest != src)
+-    return "vmov\t%P0, %e1";
+-  else
+-    return "";
+-}
+-  [(set_attr "neon_type" "neon_bp_simple")]
+-)
++  emit_move_insn (operands[0],
++		  simplify_gen_subreg (<V_HALF>mode, operands[1],
++				       <MODE>mode, 0));
++  DONE;
++})
+ 
+ (define_insn "neon_vcvt<mode>"
+   [(set (match_operand:<V_CVTTO> 0 "s_register_operand" "=w")
+@@ -4248,18 +4108,24 @@
+   DONE;
+ })
+ 
++(define_expand "vec_load_lanes<mode><mode>"
++  [(set (match_operand:VDQX 0 "s_register_operand")
++        (unspec:VDQX [(match_operand:VDQX 1 "neon_struct_operand")]
++                     UNSPEC_VLD1))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vld1<mode>"
+   [(set (match_operand:VDQX 0 "s_register_operand" "=w")
+-        (unspec:VDQX [(mem:VDQX (match_operand:SI 1 "s_register_operand" "r"))]
++        (unspec:VDQX [(match_operand:VDQX 1 "neon_struct_operand" "Um")]
+                     UNSPEC_VLD1))]
+   "TARGET_NEON"
+-  "vld1.<V_sz_elem>\t%h0, [%1]"
++  "vld1.<V_sz_elem>\t%h0, %A1"
+   [(set_attr "neon_type" "neon_vld1_1_2_regs")]
+ )
+ 
+ (define_insn "neon_vld1_lane<mode>"
+   [(set (match_operand:VDX 0 "s_register_operand" "=w")
+-        (unspec:VDX [(mem:<V_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:VDX [(match_operand:<V_elem> 1 "neon_struct_operand" "Um")
+                      (match_operand:VDX 2 "s_register_operand" "0")
+                      (match_operand:SI 3 "immediate_operand" "i")]
+                     UNSPEC_VLD1_LANE))]
+@@ -4270,9 +4136,9 @@
+   if (lane < 0 || lane >= max)
+     error ("lane out of range");
+   if (max == 1)
+-    return "vld1.<V_sz_elem>\t%P0, [%1]";
++    return "vld1.<V_sz_elem>\t%P0, %A1";
+   else
+-    return "vld1.<V_sz_elem>\t{%P0[%c3]}, [%1]";
++    return "vld1.<V_sz_elem>\t{%P0[%c3]}, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_mode_nunits>") (const_int 2))
+@@ -4282,7 +4148,7 @@
+ 
+ (define_insn "neon_vld1_lane<mode>"
+   [(set (match_operand:VQX 0 "s_register_operand" "=w")
+-        (unspec:VQX [(mem:<V_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:VQX [(match_operand:<V_elem> 1 "neon_struct_operand" "Um")
+                      (match_operand:VQX 2 "s_register_operand" "0")
+                      (match_operand:SI 3 "immediate_operand" "i")]
+                     UNSPEC_VLD1_LANE))]
+@@ -4301,9 +4167,9 @@
+     }
+   operands[0] = gen_rtx_REG (<V_HALF>mode, regno);
+   if (max == 2)
+-    return "vld1.<V_sz_elem>\t%P0, [%1]";
++    return "vld1.<V_sz_elem>\t%P0, %A1";
+   else
+-    return "vld1.<V_sz_elem>\t{%P0[%c3]}, [%1]";
++    return "vld1.<V_sz_elem>\t{%P0[%c3]}, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_mode_nunits>") (const_int 2))
+@@ -4313,14 +4179,14 @@
+ 
+ (define_insn "neon_vld1_dup<mode>"
+   [(set (match_operand:VDX 0 "s_register_operand" "=w")
+-        (unspec:VDX [(mem:<V_elem> (match_operand:SI 1 "s_register_operand" "r"))]
++        (unspec:VDX [(match_operand:<V_elem> 1 "neon_struct_operand" "Um")]
+                     UNSPEC_VLD1_DUP))]
+   "TARGET_NEON"
+ {
+   if (GET_MODE_NUNITS (<MODE>mode) > 1)
+-    return "vld1.<V_sz_elem>\t{%P0[]}, [%1]";
++    return "vld1.<V_sz_elem>\t{%P0[]}, %A1";
+   else
+-    return "vld1.<V_sz_elem>\t%h0, [%1]";
++    return "vld1.<V_sz_elem>\t%h0, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1"))
+@@ -4330,14 +4196,14 @@
+ 
+ (define_insn "neon_vld1_dup<mode>"
+   [(set (match_operand:VQX 0 "s_register_operand" "=w")
+-        (unspec:VQX [(mem:<V_elem> (match_operand:SI 1 "s_register_operand" "r"))]
++        (unspec:VQX [(match_operand:<V_elem> 1 "neon_struct_operand" "Um")]
+                     UNSPEC_VLD1_DUP))]
+   "TARGET_NEON"
+ {
+   if (GET_MODE_NUNITS (<MODE>mode) > 2)
+-    return "vld1.<V_sz_elem>\t{%e0[], %f0[]}, [%1]";
++    return "vld1.<V_sz_elem>\t{%e0[], %f0[]}, %A1";
+   else
+-    return "vld1.<V_sz_elem>\t%h0, [%1]";
++    return "vld1.<V_sz_elem>\t%h0, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1"))
+@@ -4345,16 +4211,22 @@
+                     (const_string "neon_vld1_1_2_regs")))]
+ )
+ 
++(define_expand "vec_store_lanes<mode><mode>"
++  [(set (match_operand:VDQX 0 "neon_struct_operand")
++	(unspec:VDQX [(match_operand:VDQX 1 "s_register_operand")]
++		     UNSPEC_VST1))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vst1<mode>"
+-  [(set (mem:VDQX (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:VDQX 0 "neon_struct_operand" "=Um")
+ 	(unspec:VDQX [(match_operand:VDQX 1 "s_register_operand" "w")]
+ 		     UNSPEC_VST1))]
+   "TARGET_NEON"
+-  "vst1.<V_sz_elem>\t%h1, [%0]"
++  "vst1.<V_sz_elem>\t%h1, %A0"
+   [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
+ 
+ (define_insn "neon_vst1_lane<mode>"
+-  [(set (mem:<V_elem> (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:<V_elem> 0 "neon_struct_operand" "=Um")
+ 	(vec_select:<V_elem>
+ 	  (match_operand:VDX 1 "s_register_operand" "w")
+ 	  (parallel [(match_operand:SI 2 "neon_lane_number" "i")])))]
+@@ -4365,9 +4237,9 @@
+   if (lane < 0 || lane >= max)
+     error ("lane out of range");
+   if (max == 1)
+-    return "vst1.<V_sz_elem>\t{%P1}, [%0]";
++    return "vst1.<V_sz_elem>\t{%P1}, %A0";
+   else
+-    return "vst1.<V_sz_elem>\t{%P1[%c2]}, [%0]";
++    return "vst1.<V_sz_elem>\t{%P1[%c2]}, %A0";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_mode_nunits>") (const_int 1))
+@@ -4375,7 +4247,7 @@
+                     (const_string "neon_vst1_vst2_lane")))])
+ 
+ (define_insn "neon_vst1_lane<mode>"
+-  [(set (mem:<V_elem> (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:<V_elem> 0 "neon_struct_operand" "=Um")
+         (vec_select:<V_elem>
+            (match_operand:VQX 1 "s_register_operand" "w")
+            (parallel [(match_operand:SI 2 "neon_lane_number" "i")])))]
+@@ -4394,24 +4266,31 @@
+     }
+   operands[1] = gen_rtx_REG (<V_HALF>mode, regno);
+   if (max == 2)
+-    return "vst1.<V_sz_elem>\t{%P1}, [%0]";
++    return "vst1.<V_sz_elem>\t{%P1}, %A0";
+   else
+-    return "vst1.<V_sz_elem>\t{%P1[%c2]}, [%0]";
++    return "vst1.<V_sz_elem>\t{%P1[%c2]}, %A0";
+ }
+   [(set_attr "neon_type" "neon_vst1_vst2_lane")]
+ )
+ 
++(define_expand "vec_load_lanesti<mode>"
++  [(set (match_operand:TI 0 "s_register_operand")
++        (unspec:TI [(match_operand:TI 1 "neon_struct_operand")
++                    (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++		   UNSPEC_VLD2))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vld2<mode>"
+   [(set (match_operand:TI 0 "s_register_operand" "=w")
+-        (unspec:TI [(mem:TI (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:TI [(match_operand:TI 1 "neon_struct_operand" "Um")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD2))]
+   "TARGET_NEON"
+ {
+   if (<V_sz_elem> == 64)
+-    return "vld1.64\t%h0, [%1]";
++    return "vld1.64\t%h0, %A1";
+   else
+-    return "vld2.<V_sz_elem>\t%h0, [%1]";
++    return "vld2.<V_sz_elem>\t%h0, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
+@@ -4419,18 +4298,25 @@
+                     (const_string "neon_vld2_2_regs_vld1_vld2_all_lanes")))]
+ )
+ 
++(define_expand "vec_load_lanesoi<mode>"
++  [(set (match_operand:OI 0 "s_register_operand")
++        (unspec:OI [(match_operand:OI 1 "neon_struct_operand")
++                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++		   UNSPEC_VLD2))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vld2<mode>"
+   [(set (match_operand:OI 0 "s_register_operand" "=w")
+-        (unspec:OI [(mem:OI (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:OI [(match_operand:OI 1 "neon_struct_operand" "Um")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD2))]
+   "TARGET_NEON"
+-  "vld2.<V_sz_elem>\t%h0, [%1]"
++  "vld2.<V_sz_elem>\t%h0, %A1"
+   [(set_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes")])
+ 
+ (define_insn "neon_vld2_lane<mode>"
+   [(set (match_operand:TI 0 "s_register_operand" "=w")
+-        (unspec:TI [(mem:<V_two_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:TI [(match_operand:<V_two_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:TI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+                     (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+@@ -4447,7 +4333,7 @@
+   ops[1] = gen_rtx_REG (DImode, regno + 2);
+   ops[2] = operands[1];
+   ops[3] = operands[3];
+-  output_asm_insn ("vld2.<V_sz_elem>\t{%P0[%c3], %P1[%c3]}, [%2]", ops);
++  output_asm_insn ("vld2.<V_sz_elem>\t{%P0[%c3], %P1[%c3]}, %A2", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vld1_vld2_lane")]
+@@ -4455,7 +4341,7 @@
+ 
+ (define_insn "neon_vld2_lane<mode>"
+   [(set (match_operand:OI 0 "s_register_operand" "=w")
+-        (unspec:OI [(mem:<V_two_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:OI [(match_operand:<V_two_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:OI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+                     (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+@@ -4477,7 +4363,7 @@
+   ops[1] = gen_rtx_REG (DImode, regno + 4);
+   ops[2] = operands[1];
+   ops[3] = GEN_INT (lane);
+-  output_asm_insn ("vld2.<V_sz_elem>\t{%P0[%c3], %P1[%c3]}, [%2]", ops);
++  output_asm_insn ("vld2.<V_sz_elem>\t{%P0[%c3], %P1[%c3]}, %A2", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vld1_vld2_lane")]
+@@ -4485,15 +4371,15 @@
+ 
+ (define_insn "neon_vld2_dup<mode>"
+   [(set (match_operand:TI 0 "s_register_operand" "=w")
+-        (unspec:TI [(mem:<V_two_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:TI [(match_operand:<V_two_elem> 1 "neon_struct_operand" "Um")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD2_DUP))]
+   "TARGET_NEON"
+ {
+   if (GET_MODE_NUNITS (<MODE>mode) > 1)
+-    return "vld2.<V_sz_elem>\t{%e0[], %f0[]}, [%1]";
++    return "vld2.<V_sz_elem>\t{%e0[], %f0[]}, %A1";
+   else
+-    return "vld1.<V_sz_elem>\t%h0, [%1]";
++    return "vld1.<V_sz_elem>\t%h0, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1"))
+@@ -4501,17 +4387,24 @@
+                     (const_string "neon_vld1_1_2_regs")))]
+ )
+ 
++(define_expand "vec_store_lanesti<mode>"
++  [(set (match_operand:TI 0 "neon_struct_operand")
++	(unspec:TI [(match_operand:TI 1 "s_register_operand")
++                    (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                   UNSPEC_VST2))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vst2<mode>"
+-  [(set (mem:TI (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:TI 0 "neon_struct_operand" "=Um")
+         (unspec:TI [(match_operand:TI 1 "s_register_operand" "w")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VST2))]
+   "TARGET_NEON"
+ {
+   if (<V_sz_elem> == 64)
+-    return "vst1.64\t%h1, [%0]";
++    return "vst1.64\t%h1, %A0";
+   else
+-    return "vst2.<V_sz_elem>\t%h1, [%0]";
++    return "vst2.<V_sz_elem>\t%h1, %A0";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
+@@ -4519,18 +4412,25 @@
+                     (const_string "neon_vst1_1_2_regs_vst2_2_regs")))]
+ )
+ 
++(define_expand "vec_store_lanesoi<mode>"
++  [(set (match_operand:OI 0 "neon_struct_operand")
++	(unspec:OI [(match_operand:OI 1 "s_register_operand")
++                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                   UNSPEC_VST2))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vst2<mode>"
+-  [(set (mem:OI (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:OI 0 "neon_struct_operand" "=Um")
+ 	(unspec:OI [(match_operand:OI 1 "s_register_operand" "w")
+ 		    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+ 		   UNSPEC_VST2))]
+   "TARGET_NEON"
+-  "vst2.<V_sz_elem>\t%h1, [%0]"
++  "vst2.<V_sz_elem>\t%h1, %A0"
+   [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")]
+ )
+ 
+ (define_insn "neon_vst2_lane<mode>"
+-  [(set (mem:<V_two_elem> (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:<V_two_elem> 0 "neon_struct_operand" "=Um")
+ 	(unspec:<V_two_elem>
+ 	  [(match_operand:TI 1 "s_register_operand" "w")
+ 	   (match_operand:SI 2 "immediate_operand" "i")
+@@ -4548,14 +4448,14 @@
+   ops[1] = gen_rtx_REG (DImode, regno);
+   ops[2] = gen_rtx_REG (DImode, regno + 2);
+   ops[3] = operands[2];
+-  output_asm_insn ("vst2.<V_sz_elem>\t{%P1[%c3], %P2[%c3]}, [%0]", ops);
++  output_asm_insn ("vst2.<V_sz_elem>\t{%P1[%c3], %P2[%c3]}, %A0", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vst1_vst2_lane")]
+ )
+ 
+ (define_insn "neon_vst2_lane<mode>"
+-  [(set (mem:<V_two_elem> (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:<V_two_elem> 0 "neon_struct_operand" "=Um")
+         (unspec:<V_two_elem>
+            [(match_operand:OI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+@@ -4578,23 +4478,30 @@
+   ops[1] = gen_rtx_REG (DImode, regno);
+   ops[2] = gen_rtx_REG (DImode, regno + 4);
+   ops[3] = GEN_INT (lane);
+-  output_asm_insn ("vst2.<V_sz_elem>\t{%P1[%c3], %P2[%c3]}, [%0]", ops);
++  output_asm_insn ("vst2.<V_sz_elem>\t{%P1[%c3], %P2[%c3]}, %A0", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vst1_vst2_lane")]
+ )
+ 
++(define_expand "vec_load_lanesei<mode>"
++  [(set (match_operand:EI 0 "s_register_operand")
++        (unspec:EI [(match_operand:EI 1 "neon_struct_operand")
++                    (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++		   UNSPEC_VLD3))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vld3<mode>"
+   [(set (match_operand:EI 0 "s_register_operand" "=w")
+-        (unspec:EI [(mem:EI (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:EI [(match_operand:EI 1 "neon_struct_operand" "Um")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD3))]
+   "TARGET_NEON"
+ {
+   if (<V_sz_elem> == 64)
+-    return "vld1.64\t%h0, [%1]";
++    return "vld1.64\t%h0, %A1";
+   else
+-    return "vld3.<V_sz_elem>\t%h0, [%1]";
++    return "vld3.<V_sz_elem>\t%h0, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
+@@ -4602,28 +4509,36 @@
+                     (const_string "neon_vld3_vld4")))]
+ )
+ 
++(define_expand "vec_load_lanesci<mode>"
++  [(match_operand:CI 0 "s_register_operand")
++   (match_operand:CI 1 "neon_struct_operand")
++   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++  "TARGET_NEON"
++{
++  emit_insn (gen_neon_vld3<mode> (operands[0], operands[1]));
++  DONE;
++})
++
+ (define_expand "neon_vld3<mode>"
+-  [(match_operand:CI 0 "s_register_operand" "=w")
+-   (match_operand:SI 1 "s_register_operand" "+r")
++  [(match_operand:CI 0 "s_register_operand")
++   (match_operand:CI 1 "neon_struct_operand")
+    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+-  emit_insn (gen_neon_vld3qa<mode> (operands[0], operands[0],
+-                                    operands[1], operands[1]));
+-  emit_insn (gen_neon_vld3qb<mode> (operands[0], operands[0],
+-                                    operands[1], operands[1]));
++  rtx mem;
++
++  mem = adjust_address (operands[1], EImode, 0);
++  emit_insn (gen_neon_vld3qa<mode> (operands[0], mem));
++  mem = adjust_address (mem, EImode, GET_MODE_SIZE (EImode));
++  emit_insn (gen_neon_vld3qb<mode> (operands[0], mem, operands[0]));
+   DONE;
+ })
+ 
+ (define_insn "neon_vld3qa<mode>"
+   [(set (match_operand:CI 0 "s_register_operand" "=w")
+-        (unspec:CI [(mem:CI (match_operand:SI 3 "s_register_operand" "2"))
+-                    (match_operand:CI 1 "s_register_operand" "0")
++        (unspec:CI [(match_operand:EI 1 "neon_struct_operand" "Um")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-                   UNSPEC_VLD3A))
+-   (set (match_operand:SI 2 "s_register_operand" "=r")
+-        (plus:SI (match_dup 3)
+-		 (const_int 24)))]
++                   UNSPEC_VLD3A))]
+   "TARGET_NEON"
+ {
+   int regno = REGNO (operands[0]);
+@@ -4631,8 +4546,8 @@
+   ops[0] = gen_rtx_REG (DImode, regno);
+   ops[1] = gen_rtx_REG (DImode, regno + 4);
+   ops[2] = gen_rtx_REG (DImode, regno + 8);
+-  ops[3] = operands[2];
+-  output_asm_insn ("vld3.<V_sz_elem>\t{%P0, %P1, %P2}, [%3]!", ops);
++  ops[3] = operands[1];
++  output_asm_insn ("vld3.<V_sz_elem>\t{%P0, %P1, %P2}, %A3", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vld3_vld4")]
+@@ -4640,13 +4555,10 @@
+ 
+ (define_insn "neon_vld3qb<mode>"
+   [(set (match_operand:CI 0 "s_register_operand" "=w")
+-        (unspec:CI [(mem:CI (match_operand:SI 3 "s_register_operand" "2"))
+-                    (match_operand:CI 1 "s_register_operand" "0")
++        (unspec:CI [(match_operand:EI 1 "neon_struct_operand" "Um")
++                    (match_operand:CI 2 "s_register_operand" "0")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-                   UNSPEC_VLD3B))
+-   (set (match_operand:SI 2 "s_register_operand" "=r")
+-        (plus:SI (match_dup 3)
+-		 (const_int 24)))]
++                   UNSPEC_VLD3B))]
+   "TARGET_NEON"
+ {
+   int regno = REGNO (operands[0]);
+@@ -4654,8 +4566,8 @@
+   ops[0] = gen_rtx_REG (DImode, regno + 2);
+   ops[1] = gen_rtx_REG (DImode, regno + 6);
+   ops[2] = gen_rtx_REG (DImode, regno + 10);
+-  ops[3] = operands[2];
+-  output_asm_insn ("vld3.<V_sz_elem>\t{%P0, %P1, %P2}, [%3]!", ops);
++  ops[3] = operands[1];
++  output_asm_insn ("vld3.<V_sz_elem>\t{%P0, %P1, %P2}, %A3", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vld3_vld4")]
+@@ -4663,7 +4575,7 @@
+ 
+ (define_insn "neon_vld3_lane<mode>"
+   [(set (match_operand:EI 0 "s_register_operand" "=w")
+-        (unspec:EI [(mem:<V_three_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:EI [(match_operand:<V_three_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:EI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+                     (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+@@ -4681,7 +4593,7 @@
+   ops[2] = gen_rtx_REG (DImode, regno + 4);
+   ops[3] = operands[1];
+   ops[4] = operands[3];
+-  output_asm_insn ("vld3.<V_sz_elem>\t{%P0[%c4], %P1[%c4], %P2[%c4]}, [%3]",
++  output_asm_insn ("vld3.<V_sz_elem>\t{%P0[%c4], %P1[%c4], %P2[%c4]}, %A3",
+                    ops);
+   return "";
+ }
+@@ -4690,7 +4602,7 @@
+ 
+ (define_insn "neon_vld3_lane<mode>"
+   [(set (match_operand:CI 0 "s_register_operand" "=w")
+-        (unspec:CI [(mem:<V_three_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:CI [(match_operand:<V_three_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:CI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+                     (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+@@ -4713,7 +4625,7 @@
+   ops[2] = gen_rtx_REG (DImode, regno + 8);
+   ops[3] = operands[1];
+   ops[4] = GEN_INT (lane);
+-  output_asm_insn ("vld3.<V_sz_elem>\t{%P0[%c4], %P1[%c4], %P2[%c4]}, [%3]",
++  output_asm_insn ("vld3.<V_sz_elem>\t{%P0[%c4], %P1[%c4], %P2[%c4]}, %A3",
+                    ops);
+   return "";
+ }
+@@ -4722,7 +4634,7 @@
+ 
+ (define_insn "neon_vld3_dup<mode>"
+   [(set (match_operand:EI 0 "s_register_operand" "=w")
+-        (unspec:EI [(mem:<V_three_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:EI [(match_operand:<V_three_elem> 1 "neon_struct_operand" "Um")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD3_DUP))]
+   "TARGET_NEON"
+@@ -4735,91 +4647,106 @@
+       ops[1] = gen_rtx_REG (DImode, regno + 2);
+       ops[2] = gen_rtx_REG (DImode, regno + 4);
+       ops[3] = operands[1];
+-      output_asm_insn ("vld3.<V_sz_elem>\t{%P0[], %P1[], %P2[]}, [%3]", ops);
++      output_asm_insn ("vld3.<V_sz_elem>\t{%P0[], %P1[], %P2[]}, %A3", ops);
+       return "";
+     }
+   else
+-    return "vld1.<V_sz_elem>\t%h0, [%1]";
++    return "vld1.<V_sz_elem>\t%h0, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1"))
+                     (const_string "neon_vld3_vld4_all_lanes")
+                     (const_string "neon_vld1_1_2_regs")))])
+ 
++(define_expand "vec_store_lanesei<mode>"
++  [(set (match_operand:EI 0 "neon_struct_operand")
++	(unspec:EI [(match_operand:EI 1 "s_register_operand")
++                    (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                   UNSPEC_VST3))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vst3<mode>"
+-  [(set (mem:EI (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:EI 0 "neon_struct_operand" "=Um")
+         (unspec:EI [(match_operand:EI 1 "s_register_operand" "w")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VST3))]
+   "TARGET_NEON"
+ {
+   if (<V_sz_elem> == 64)
+-    return "vst1.64\t%h1, [%0]";
++    return "vst1.64\t%h1, %A0";
+   else
+-    return "vst3.<V_sz_elem>\t%h1, [%0]";
++    return "vst3.<V_sz_elem>\t%h1, %A0";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
+                     (const_string "neon_vst1_1_2_regs_vst2_2_regs")
+                     (const_string "neon_vst2_4_regs_vst3_vst4")))])
+ 
++(define_expand "vec_store_lanesci<mode>"
++  [(match_operand:CI 0 "neon_struct_operand")
++   (match_operand:CI 1 "s_register_operand")
++   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++  "TARGET_NEON"
++{
++  emit_insn (gen_neon_vst3<mode> (operands[0], operands[1]));
++  DONE;
++})
++
+ (define_expand "neon_vst3<mode>"
+-  [(match_operand:SI 0 "s_register_operand" "+r")
+-   (match_operand:CI 1 "s_register_operand" "w")
++  [(match_operand:CI 0 "neon_struct_operand")
++   (match_operand:CI 1 "s_register_operand")
+    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+-  emit_insn (gen_neon_vst3qa<mode> (operands[0], operands[0], operands[1]));
+-  emit_insn (gen_neon_vst3qb<mode> (operands[0], operands[0], operands[1]));
++  rtx mem;
++
++  mem = adjust_address (operands[0], EImode, 0);
++  emit_insn (gen_neon_vst3qa<mode> (mem, operands[1]));
++  mem = adjust_address (mem, EImode, GET_MODE_SIZE (EImode));
++  emit_insn (gen_neon_vst3qb<mode> (mem, operands[1]));
+   DONE;
+ })
+ 
+ (define_insn "neon_vst3qa<mode>"
+-  [(set (mem:EI (match_operand:SI 1 "s_register_operand" "0"))
+-        (unspec:EI [(match_operand:CI 2 "s_register_operand" "w")
++  [(set (match_operand:EI 0 "neon_struct_operand" "=Um")
++        (unspec:EI [(match_operand:CI 1 "s_register_operand" "w")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-                   UNSPEC_VST3A))
+-   (set (match_operand:SI 0 "s_register_operand" "=r")
+-        (plus:SI (match_dup 1)
+-		 (const_int 24)))]
++                   UNSPEC_VST3A))]
+   "TARGET_NEON"
+ {
+-  int regno = REGNO (operands[2]);
++  int regno = REGNO (operands[1]);
+   rtx ops[4];
+   ops[0] = operands[0];
+   ops[1] = gen_rtx_REG (DImode, regno);
+   ops[2] = gen_rtx_REG (DImode, regno + 4);
+   ops[3] = gen_rtx_REG (DImode, regno + 8);
+-  output_asm_insn ("vst3.<V_sz_elem>\t{%P1, %P2, %P3}, [%0]!", ops);
++  output_asm_insn ("vst3.<V_sz_elem>\t{%P1, %P2, %P3}, %A0", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vst2_4_regs_vst3_vst4")]
+ )
+ 
+ (define_insn "neon_vst3qb<mode>"
+-  [(set (mem:EI (match_operand:SI 1 "s_register_operand" "0"))
+-        (unspec:EI [(match_operand:CI 2 "s_register_operand" "w")
++  [(set (match_operand:EI 0 "neon_struct_operand" "=Um")
++        (unspec:EI [(match_operand:CI 1 "s_register_operand" "w")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-                   UNSPEC_VST3B))
+-   (set (match_operand:SI 0 "s_register_operand" "=r")
+-        (plus:SI (match_dup 1)
+-		 (const_int 24)))]
++                   UNSPEC_VST3B))]
+   "TARGET_NEON"
+ {
+-  int regno = REGNO (operands[2]);
++  int regno = REGNO (operands[1]);
+   rtx ops[4];
+   ops[0] = operands[0];
+   ops[1] = gen_rtx_REG (DImode, regno + 2);
+   ops[2] = gen_rtx_REG (DImode, regno + 6);
+   ops[3] = gen_rtx_REG (DImode, regno + 10);
+-  output_asm_insn ("vst3.<V_sz_elem>\t{%P1, %P2, %P3}, [%0]!", ops);
++  output_asm_insn ("vst3.<V_sz_elem>\t{%P1, %P2, %P3}, %A0", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vst2_4_regs_vst3_vst4")]
+ )
+ 
+ (define_insn "neon_vst3_lane<mode>"
+-  [(set (mem:<V_three_elem> (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:<V_three_elem> 0 "neon_struct_operand" "=Um")
+         (unspec:<V_three_elem>
+            [(match_operand:EI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+@@ -4838,7 +4765,7 @@
+   ops[2] = gen_rtx_REG (DImode, regno + 2);
+   ops[3] = gen_rtx_REG (DImode, regno + 4);
+   ops[4] = operands[2];
+-  output_asm_insn ("vst3.<V_sz_elem>\t{%P1[%c4], %P2[%c4], %P3[%c4]}, [%0]",
++  output_asm_insn ("vst3.<V_sz_elem>\t{%P1[%c4], %P2[%c4], %P3[%c4]}, %A0",
+                    ops);
+   return "";
+ }
+@@ -4846,7 +4773,7 @@
+ )
+ 
+ (define_insn "neon_vst3_lane<mode>"
+-  [(set (mem:<V_three_elem> (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:<V_three_elem> 0 "neon_struct_operand" "=Um")
+         (unspec:<V_three_elem>
+            [(match_operand:CI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+@@ -4870,23 +4797,30 @@
+   ops[2] = gen_rtx_REG (DImode, regno + 4);
+   ops[3] = gen_rtx_REG (DImode, regno + 8);
+   ops[4] = GEN_INT (lane);
+-  output_asm_insn ("vst3.<V_sz_elem>\t{%P1[%c4], %P2[%c4], %P3[%c4]}, [%0]",
++  output_asm_insn ("vst3.<V_sz_elem>\t{%P1[%c4], %P2[%c4], %P3[%c4]}, %A0",
+                    ops);
+   return "";
+ }
+ [(set_attr "neon_type" "neon_vst3_vst4_lane")])
+ 
++(define_expand "vec_load_lanesoi<mode>"
++  [(set (match_operand:OI 0 "s_register_operand")
++        (unspec:OI [(match_operand:OI 1 "neon_struct_operand")
++                    (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++		   UNSPEC_VLD4))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vld4<mode>"
+   [(set (match_operand:OI 0 "s_register_operand" "=w")
+-        (unspec:OI [(mem:OI (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:OI [(match_operand:OI 1 "neon_struct_operand" "Um")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD4))]
+   "TARGET_NEON"
+ {
+   if (<V_sz_elem> == 64)
+-    return "vld1.64\t%h0, [%1]";
++    return "vld1.64\t%h0, %A1";
+   else
+-    return "vld4.<V_sz_elem>\t%h0, [%1]";
++    return "vld4.<V_sz_elem>\t%h0, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
+@@ -4894,28 +4828,36 @@
+                     (const_string "neon_vld3_vld4")))]
+ )
+ 
++(define_expand "vec_load_lanesxi<mode>"
++  [(match_operand:XI 0 "s_register_operand")
++   (match_operand:XI 1 "neon_struct_operand")
++   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++  "TARGET_NEON"
++{
++  emit_insn (gen_neon_vld4<mode> (operands[0], operands[1]));
++  DONE;
++})
++
+ (define_expand "neon_vld4<mode>"
+-  [(match_operand:XI 0 "s_register_operand" "=w")
+-   (match_operand:SI 1 "s_register_operand" "+r")
++  [(match_operand:XI 0 "s_register_operand")
++   (match_operand:XI 1 "neon_struct_operand")
+    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+-  emit_insn (gen_neon_vld4qa<mode> (operands[0], operands[0],
+-                                    operands[1], operands[1]));
+-  emit_insn (gen_neon_vld4qb<mode> (operands[0], operands[0],
+-                                    operands[1], operands[1]));
++  rtx mem;
++
++  mem = adjust_address (operands[1], OImode, 0);
++  emit_insn (gen_neon_vld4qa<mode> (operands[0], mem));
++  mem = adjust_address (mem, OImode, GET_MODE_SIZE (OImode));
++  emit_insn (gen_neon_vld4qb<mode> (operands[0], mem, operands[0]));
+   DONE;
+ })
+ 
+ (define_insn "neon_vld4qa<mode>"
+   [(set (match_operand:XI 0 "s_register_operand" "=w")
+-        (unspec:XI [(mem:XI (match_operand:SI 3 "s_register_operand" "2"))
+-                    (match_operand:XI 1 "s_register_operand" "0")
++        (unspec:XI [(match_operand:OI 1 "neon_struct_operand" "Um")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-                   UNSPEC_VLD4A))
+-   (set (match_operand:SI 2 "s_register_operand" "=r")
+-        (plus:SI (match_dup 3)
+-		 (const_int 32)))]
++                   UNSPEC_VLD4A))]
+   "TARGET_NEON"
+ {
+   int regno = REGNO (operands[0]);
+@@ -4924,8 +4866,8 @@
+   ops[1] = gen_rtx_REG (DImode, regno + 4);
+   ops[2] = gen_rtx_REG (DImode, regno + 8);
+   ops[3] = gen_rtx_REG (DImode, regno + 12);
+-  ops[4] = operands[2];
+-  output_asm_insn ("vld4.<V_sz_elem>\t{%P0, %P1, %P2, %P3}, [%4]!", ops);
++  ops[4] = operands[1];
++  output_asm_insn ("vld4.<V_sz_elem>\t{%P0, %P1, %P2, %P3}, %A4", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vld3_vld4")]
+@@ -4933,13 +4875,10 @@
+ 
+ (define_insn "neon_vld4qb<mode>"
+   [(set (match_operand:XI 0 "s_register_operand" "=w")
+-        (unspec:XI [(mem:XI (match_operand:SI 3 "s_register_operand" "2"))
+-                    (match_operand:XI 1 "s_register_operand" "0")
++        (unspec:XI [(match_operand:OI 1 "neon_struct_operand" "Um")
++                    (match_operand:XI 2 "s_register_operand" "0")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-                   UNSPEC_VLD4B))
+-   (set (match_operand:SI 2 "s_register_operand" "=r")
+-        (plus:SI (match_dup 3)
+-		 (const_int 32)))]
++                   UNSPEC_VLD4B))]
+   "TARGET_NEON"
+ {
+   int regno = REGNO (operands[0]);
+@@ -4948,8 +4887,8 @@
+   ops[1] = gen_rtx_REG (DImode, regno + 6);
+   ops[2] = gen_rtx_REG (DImode, regno + 10);
+   ops[3] = gen_rtx_REG (DImode, regno + 14);
+-  ops[4] = operands[2];
+-  output_asm_insn ("vld4.<V_sz_elem>\t{%P0, %P1, %P2, %P3}, [%4]!", ops);
++  ops[4] = operands[1];
++  output_asm_insn ("vld4.<V_sz_elem>\t{%P0, %P1, %P2, %P3}, %A4", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vld3_vld4")]
+@@ -4957,7 +4896,7 @@
+ 
+ (define_insn "neon_vld4_lane<mode>"
+   [(set (match_operand:OI 0 "s_register_operand" "=w")
+-        (unspec:OI [(mem:<V_four_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:OI [(match_operand:<V_four_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:OI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+                     (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+@@ -4976,7 +4915,7 @@
+   ops[3] = gen_rtx_REG (DImode, regno + 6);
+   ops[4] = operands[1];
+   ops[5] = operands[3];
+-  output_asm_insn ("vld4.<V_sz_elem>\t{%P0[%c5], %P1[%c5], %P2[%c5], %P3[%c5]}, [%4]",
++  output_asm_insn ("vld4.<V_sz_elem>\t{%P0[%c5], %P1[%c5], %P2[%c5], %P3[%c5]}, %A4",
+                    ops);
+   return "";
+ }
+@@ -4985,7 +4924,7 @@
+ 
+ (define_insn "neon_vld4_lane<mode>"
+   [(set (match_operand:XI 0 "s_register_operand" "=w")
+-        (unspec:XI [(mem:<V_four_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:XI [(match_operand:<V_four_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:XI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+                     (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+@@ -5009,7 +4948,7 @@
+   ops[3] = gen_rtx_REG (DImode, regno + 12);
+   ops[4] = operands[1];
+   ops[5] = GEN_INT (lane);
+-  output_asm_insn ("vld4.<V_sz_elem>\t{%P0[%c5], %P1[%c5], %P2[%c5], %P3[%c5]}, [%4]",
++  output_asm_insn ("vld4.<V_sz_elem>\t{%P0[%c5], %P1[%c5], %P2[%c5], %P3[%c5]}, %A4",
+                    ops);
+   return "";
+ }
+@@ -5018,7 +4957,7 @@
+ 
+ (define_insn "neon_vld4_dup<mode>"
+   [(set (match_operand:OI 0 "s_register_operand" "=w")
+-        (unspec:OI [(mem:<V_four_elem> (match_operand:SI 1 "s_register_operand" "r"))
++        (unspec:OI [(match_operand:<V_four_elem> 1 "neon_struct_operand" "Um")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD4_DUP))]
+   "TARGET_NEON"
+@@ -5032,12 +4971,12 @@
+       ops[2] = gen_rtx_REG (DImode, regno + 4);
+       ops[3] = gen_rtx_REG (DImode, regno + 6);
+       ops[4] = operands[1];
+-      output_asm_insn ("vld4.<V_sz_elem>\t{%P0[], %P1[], %P2[], %P3[]}, [%4]",
++      output_asm_insn ("vld4.<V_sz_elem>\t{%P0[], %P1[], %P2[], %P3[]}, %A4",
+                        ops);
+       return "";
+     }
+   else
+-    return "vld1.<V_sz_elem>\t%h0, [%1]";
++    return "vld1.<V_sz_elem>\t%h0, %A1";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1"))
+@@ -5045,17 +4984,24 @@
+                     (const_string "neon_vld1_1_2_regs")))]
+ )
+ 
++(define_expand "vec_store_lanesoi<mode>"
++  [(set (match_operand:OI 0 "neon_struct_operand")
++	(unspec:OI [(match_operand:OI 1 "s_register_operand")
++                    (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                   UNSPEC_VST4))]
++  "TARGET_NEON")
++
+ (define_insn "neon_vst4<mode>"
+-  [(set (mem:OI (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:OI 0 "neon_struct_operand" "=Um")
+         (unspec:OI [(match_operand:OI 1 "s_register_operand" "w")
+                     (unspec:VDX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VST4))]
+   "TARGET_NEON"
+ {
+   if (<V_sz_elem> == 64)
+-    return "vst1.64\t%h1, [%0]";
++    return "vst1.64\t%h1, %A0";
+   else
+-    return "vst4.<V_sz_elem>\t%h1, [%0]";
++    return "vst4.<V_sz_elem>\t%h1, %A0";
+ }
+   [(set (attr "neon_type")
+       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
+@@ -5063,65 +5009,73 @@
+                     (const_string "neon_vst2_4_regs_vst3_vst4")))]
+ )
+ 
++(define_expand "vec_store_lanesxi<mode>"
++  [(match_operand:XI 0 "neon_struct_operand")
++   (match_operand:XI 1 "s_register_operand")
++   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++  "TARGET_NEON"
++{
++  emit_insn (gen_neon_vst4<mode> (operands[0], operands[1]));
++  DONE;
++})
++
+ (define_expand "neon_vst4<mode>"
+-  [(match_operand:SI 0 "s_register_operand" "+r")
+-   (match_operand:XI 1 "s_register_operand" "w")
++  [(match_operand:XI 0 "neon_struct_operand")
++   (match_operand:XI 1 "s_register_operand")
+    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+-  emit_insn (gen_neon_vst4qa<mode> (operands[0], operands[0], operands[1]));
+-  emit_insn (gen_neon_vst4qb<mode> (operands[0], operands[0], operands[1]));
++  rtx mem;
++
++  mem = adjust_address (operands[0], OImode, 0);
++  emit_insn (gen_neon_vst4qa<mode> (mem, operands[1]));
++  mem = adjust_address (mem, OImode, GET_MODE_SIZE (OImode));
++  emit_insn (gen_neon_vst4qb<mode> (mem, operands[1]));
+   DONE;
+ })
+ 
+ (define_insn "neon_vst4qa<mode>"
+-  [(set (mem:OI (match_operand:SI 1 "s_register_operand" "0"))
+-        (unspec:OI [(match_operand:XI 2 "s_register_operand" "w")
++  [(set (match_operand:OI 0 "neon_struct_operand" "=Um")
++        (unspec:OI [(match_operand:XI 1 "s_register_operand" "w")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-                   UNSPEC_VST4A))
+-   (set (match_operand:SI 0 "s_register_operand" "=r")
+-        (plus:SI (match_dup 1)
+-		 (const_int 32)))]
++                   UNSPEC_VST4A))]
+   "TARGET_NEON"
+ {
+-  int regno = REGNO (operands[2]);
++  int regno = REGNO (operands[1]);
+   rtx ops[5];
+   ops[0] = operands[0];
+   ops[1] = gen_rtx_REG (DImode, regno);
+   ops[2] = gen_rtx_REG (DImode, regno + 4);
+   ops[3] = gen_rtx_REG (DImode, regno + 8);
+   ops[4] = gen_rtx_REG (DImode, regno + 12);
+-  output_asm_insn ("vst4.<V_sz_elem>\t{%P1, %P2, %P3, %P4}, [%0]!", ops);
++  output_asm_insn ("vst4.<V_sz_elem>\t{%P1, %P2, %P3, %P4}, %A0", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vst2_4_regs_vst3_vst4")]
+ )
+ 
+ (define_insn "neon_vst4qb<mode>"
+-  [(set (mem:OI (match_operand:SI 1 "s_register_operand" "0"))
+-        (unspec:OI [(match_operand:XI 2 "s_register_operand" "w")
++  [(set (match_operand:OI 0 "neon_struct_operand" "=Um")
++        (unspec:OI [(match_operand:XI 1 "s_register_operand" "w")
+                     (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-                   UNSPEC_VST4B))
+-   (set (match_operand:SI 0 "s_register_operand" "=r")
+-        (plus:SI (match_dup 1)
+-		 (const_int 32)))]
++                   UNSPEC_VST4B))]
+   "TARGET_NEON"
+ {
+-  int regno = REGNO (operands[2]);
++  int regno = REGNO (operands[1]);
+   rtx ops[5];
+   ops[0] = operands[0];
+   ops[1] = gen_rtx_REG (DImode, regno + 2);
+   ops[2] = gen_rtx_REG (DImode, regno + 6);
+   ops[3] = gen_rtx_REG (DImode, regno + 10);
+   ops[4] = gen_rtx_REG (DImode, regno + 14);
+-  output_asm_insn ("vst4.<V_sz_elem>\t{%P1, %P2, %P3, %P4}, [%0]!", ops);
++  output_asm_insn ("vst4.<V_sz_elem>\t{%P1, %P2, %P3, %P4}, %A0", ops);
+   return "";
+ }
+   [(set_attr "neon_type" "neon_vst2_4_regs_vst3_vst4")]
+ )
+ 
+ (define_insn "neon_vst4_lane<mode>"
+-  [(set (mem:<V_four_elem> (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:<V_four_elem> 0 "neon_struct_operand" "=Um")
+         (unspec:<V_four_elem>
+            [(match_operand:OI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+@@ -5141,7 +5095,7 @@
+   ops[3] = gen_rtx_REG (DImode, regno + 4);
+   ops[4] = gen_rtx_REG (DImode, regno + 6);
+   ops[5] = operands[2];
+-  output_asm_insn ("vst4.<V_sz_elem>\t{%P1[%c5], %P2[%c5], %P3[%c5], %P4[%c5]}, [%0]",
++  output_asm_insn ("vst4.<V_sz_elem>\t{%P1[%c5], %P2[%c5], %P3[%c5], %P4[%c5]}, %A0",
+                    ops);
+   return "";
+ }
+@@ -5149,7 +5103,7 @@
+ )
+ 
+ (define_insn "neon_vst4_lane<mode>"
+-  [(set (mem:<V_four_elem> (match_operand:SI 0 "s_register_operand" "r"))
++  [(set (match_operand:<V_four_elem> 0 "neon_struct_operand" "=Um")
+         (unspec:<V_four_elem>
+            [(match_operand:XI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+@@ -5174,7 +5128,7 @@
+   ops[3] = gen_rtx_REG (DImode, regno + 8);
+   ops[4] = gen_rtx_REG (DImode, regno + 12);
+   ops[5] = GEN_INT (lane);
+-  output_asm_insn ("vst4.<V_sz_elem>\t{%P1[%c5], %P2[%c5], %P3[%c5], %P4[%c5]}, [%0]",
++  output_asm_insn ("vst4.<V_sz_elem>\t{%P1[%c5], %P2[%c5], %P3[%c5], %P4[%c5]}, %A0",
+                    ops);
+   return "";
+ }
+@@ -5362,6 +5316,44 @@
+  }
+ )
+ 
++(define_insn "neon_vec_<US>shiftl_<mode>"
++ [(set (match_operand:<V_widen> 0 "register_operand" "=w")
++       (SE:<V_widen> (ashift:VW (match_operand:VW 1 "register_operand" "w")
++       (match_operand:<V_innermode> 2 "const_neon_scalar_shift_amount_operand" ""))))]
++  "TARGET_NEON"
++{
++  return "vshll.<US><V_sz_elem> %q0, %P1, %2";
++}
++  [(set_attr "neon_type" "neon_shift_1")]
++)
++
++(define_expand "vec_widen_<US>shiftl_lo_<mode>"
++  [(match_operand:<V_unpack> 0 "register_operand" "")
++   (SE:<V_unpack> (match_operand:VU 1 "register_operand" ""))
++   (match_operand:SI 2 "immediate_operand" "i")]
++ "TARGET_NEON && !BYTES_BIG_ENDIAN"
++ {
++  emit_insn (gen_neon_vec_<US>shiftl_<V_half> (operands[0],
++		simplify_gen_subreg (<V_HALF>mode, operands[1], <MODE>mode, 0),
++		operands[2]));
++   DONE;
++ }
++)
++
++(define_expand "vec_widen_<US>shiftl_hi_<mode>"
++  [(match_operand:<V_unpack> 0 "register_operand" "")
++   (SE:<V_unpack> (match_operand:VU 1 "register_operand" ""))
++   (match_operand:SI 2 "immediate_operand" "i")]
++ "TARGET_NEON && !BYTES_BIG_ENDIAN"
++ {
++  emit_insn (gen_neon_vec_<US>shiftl_<V_half> (operands[0],
++                simplify_gen_subreg (<V_HALF>mode, operands[1], <MODE>mode,
++				     GET_MODE_SIZE (<V_HALF>mode)),
++                operands[2]));
++   DONE;
++ }
++)
++
+ ;; Vectorize for non-neon-quad case
+ (define_insn "neon_unpack<US>_<mode>"
+  [(set (match_operand:<V_widen> 0 "register_operand" "=w")
+@@ -5438,6 +5430,34 @@
+  }
+ )
+ 
++(define_expand "vec_widen_<US>shiftl_hi_<mode>"
++ [(match_operand:<V_double_width> 0 "register_operand" "")
++   (SE:<V_double_width> (match_operand:VDI 1 "register_operand" ""))
++   (match_operand:SI 2 "immediate_operand" "i")]
++ "TARGET_NEON"
++ {
++   rtx tmpreg = gen_reg_rtx (<V_widen>mode);
++   emit_insn (gen_neon_vec_<US>shiftl_<mode> (tmpreg, operands[1], operands[2]));
++   emit_insn (gen_neon_vget_high<V_widen_l> (operands[0], tmpreg));
++
++   DONE;
++ }
++)
++
++(define_expand "vec_widen_<US>shiftl_lo_<mode>"
++  [(match_operand:<V_double_width> 0 "register_operand" "")
++   (SE:<V_double_width> (match_operand:VDI 1 "register_operand" ""))
++   (match_operand:SI 2 "immediate_operand" "i")]
++ "TARGET_NEON"
++ {
++   rtx tmpreg = gen_reg_rtx (<V_widen>mode);
++   emit_insn (gen_neon_vec_<US>shiftl_<mode> (tmpreg, operands[1], operands[2]));
++   emit_insn (gen_neon_vget_low<V_widen_l> (operands[0], tmpreg));
++
++   DONE;
++ }
++)
++
+ ;; The case when using all quad registers.
+ (define_insn "vec_pack_trunc_<mode>"
+  [(set (match_operand:<V_narrow_pack> 0 "register_operand" "=&w")
+@@ -5474,3 +5494,32 @@
+   emit_insn (gen_neon_vec_pack_trunc_<V_double> (operands[0], tempreg));
+   DONE;
+ })
++
++(define_insn "neon_vabd<mode>_2"
++ [(set (match_operand:VDQ 0 "s_register_operand" "=w")
++       (abs:VDQ (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
++                           (match_operand:VDQ 2 "s_register_operand" "w"))))]
++ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
++ "vabd.<V_s_elem> %<V_reg>0, %<V_reg>1, %<V_reg>2"
++ [(set (attr "neon_type")
++       (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
++                     (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
++                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
++                                   (const_string "neon_fp_vadd_qqq_vabs_qq"))
++                     (const_string "neon_int_5")))]
++)
++
++(define_insn "neon_vabd<mode>_3"
++ [(set (match_operand:VDQ 0 "s_register_operand" "=w")
++       (abs:VDQ (unspec:VDQ [(match_operand:VDQ 1 "s_register_operand" "w")
++                             (match_operand:VDQ 2 "s_register_operand" "w")]
++                 UNSPEC_VSUB)))]
++ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
++ "vabd.<V_if_elem> %<V_reg>0, %<V_reg>1, %<V_reg>2"
++ [(set (attr "neon_type")
++       (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
++                     (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
++                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
++                                   (const_string "neon_fp_vadd_qqq_vabs_qq"))
++                     (const_string "neon_int_5")))]
++)
+--- a/src/gcc/config/arm/neon-testgen.ml
++++ b/src/gcc/config/arm/neon-testgen.ml
+@@ -177,7 +177,7 @@
+       let alt2 = commas (fun x -> x) (n_things n elt_regexp) "" in
+         "\\\\\\{((" ^ alt1 ^ ")|(" ^ alt2 ^ "))\\\\\\}"
+     | (PtrTo elt | CstPtrTo elt) ->
+-      "\\\\\\[" ^ (analyze_shape_elt elt) ^ "\\\\\\]"
++      "\\\\\\[" ^ (analyze_shape_elt elt) ^ "\\(:\\[0-9\\]+\\)?\\\\\\]"
+     | Element_of_dreg -> (analyze_shape_elt Dreg) ^ "\\\\\\[\\[0-9\\]+\\\\\\]"
+     | Element_of_qreg -> (analyze_shape_elt Qreg) ^ "\\\\\\[\\[0-9\\]+\\\\\\]"
+     | All_elements_of_dreg -> (analyze_shape_elt Dreg) ^ "\\\\\\[\\\\\\]"
+--- a/src/gcc/config/arm/predicates.md
++++ b/src/gcc/config/arm/predicates.md
+@@ -129,11 +129,18 @@
+   (ior (match_operand 0 "arm_rhs_operand")
+        (match_operand 0 "memory_operand")))
+ 
++;; This doesn't have to do much because the constant is already checked
++;; in the shift_operator predicate.
+ (define_predicate "shift_amount_operand"
+   (ior (and (match_test "TARGET_ARM")
+ 	    (match_operand 0 "s_register_operand"))
+        (match_operand 0 "const_int_operand")))
+ 
++(define_predicate "const_neon_scalar_shift_amount_operand"
++  (and (match_code "const_int")
++       (match_test "((unsigned HOST_WIDE_INT) INTVAL (op)) <= GET_MODE_BITSIZE (mode)
++	&& ((unsigned HOST_WIDE_INT) INTVAL (op)) > 0")))
++
+ (define_predicate "arm_add_operand"
+   (ior (match_operand 0 "arm_rhs_operand")
+        (match_operand 0 "arm_neg_immediate_operand")))
+@@ -218,13 +225,29 @@
+        (match_test "mode == GET_MODE (op)")))
+ 
+ ;; True for shift operators.
++;; Notes:
++;;  * mult is only permitted with a constant shift amount
++;;  * patterns that permit register shift amounts only in ARM mode use
++;;    shift_amount_operand, patterns that always allow registers do not,
++;;    so we don't have to worry about that sort of thing here.
+ (define_special_predicate "shift_operator"
+   (and (ior (ior (and (match_code "mult")
+ 		      (match_test "power_of_two_operand (XEXP (op, 1), mode)"))
+ 		 (and (match_code "rotate")
+ 		      (match_test "GET_CODE (XEXP (op, 1)) == CONST_INT
+ 				   && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
+-	    (match_code "ashift,ashiftrt,lshiftrt,rotatert"))
++	    (and (match_code "ashift,ashiftrt,lshiftrt,rotatert")
++		 (match_test "GET_CODE (XEXP (op, 1)) != CONST_INT
++			      || ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
++       (match_test "mode == GET_MODE (op)")))
++
++;; True for shift operators which can be used with saturation instructions.
++(define_special_predicate "sat_shift_operator"
++  (and (ior (and (match_code "mult")
++                 (match_test "power_of_two_operand (XEXP (op, 1), mode)"))
++            (and (match_code "ashift,ashiftrt")
++                 (match_test "GET_CODE (XEXP (op, 1)) == CONST_INT
++                             && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1)) < 32)")))
+        (match_test "mode == GET_MODE (op)")))
+ 
+ ;; True for MULT, to identify which variant of shift_operator is in use.
+@@ -241,11 +264,15 @@
+ 
+ ;; True for integer comparisons and, if FP is active, for comparisons
+ ;; other than LTGT or UNEQ.
++(define_special_predicate "expandable_comparison_operator"
++  (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,
++	       unordered,ordered,unlt,unle,unge,ungt"))
++
++;; Likewise, but only accept comparisons that are directly supported
++;; by ARM condition codes.
+ (define_special_predicate "arm_comparison_operator"
+-  (ior (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu")
+-       (and (match_test "TARGET_32BIT && TARGET_HARD_FLOAT
+-			 && (TARGET_FPA || TARGET_VFP)")
+-            (match_code "unordered,ordered,unlt,unle,unge,ungt"))))
++  (and (match_operand 0 "expandable_comparison_operator")
++       (match_test "maybe_get_arm_condition_code (op) != ARM_NV")))
+ 
+ (define_special_predicate "lt_ge_comparison_operator"
+   (match_code "lt,ge"))
+@@ -289,8 +316,11 @@
+ 
+ (define_special_predicate "arm_extendqisi_mem_op"
+   (and (match_operand 0 "memory_operand")
+-       (match_test "arm_legitimate_address_outer_p (mode, XEXP (op, 0),
+-						    SIGN_EXTEND, 0)")))
++       (match_test "TARGET_ARM ? arm_legitimate_address_outer_p (mode,
++                                                                 XEXP (op, 0),
++						                 SIGN_EXTEND,
++								 0)
++                               : memory_address_p (QImode, XEXP (op, 0))")))
+ 
+ (define_special_predicate "arm_reg_or_extendqisi_mem_op"
+   (ior (match_operand 0 "arm_extendqisi_mem_op")
+@@ -585,6 +615,26 @@
+   return neon_immediate_valid_for_move (op, mode, NULL, NULL);
+ })
+ 
++(define_predicate "imm_for_neon_lshift_operand"
++  (match_code "const_vector")
++{
++  return neon_immediate_valid_for_shift (op, mode, NULL, NULL, true);
++})
++
++(define_predicate "imm_for_neon_rshift_operand"
++  (match_code "const_vector")
++{
++  return neon_immediate_valid_for_shift (op, mode, NULL, NULL, false);
++})
++
++(define_predicate "imm_lshift_or_reg_neon"
++  (ior (match_operand 0 "s_register_operand")
++       (match_operand 0 "imm_for_neon_lshift_operand")))
++
++(define_predicate "imm_rshift_or_reg_neon"
++  (ior (match_operand 0 "s_register_operand")
++       (match_operand 0 "imm_for_neon_rshift_operand")))
++
+ (define_predicate "imm_for_neon_logic_operand"
+   (match_code "const_vector")
+ {
+@@ -684,5 +734,14 @@
+   return true; 
+ })
+ 
++(define_predicate "const_double_vcvt_power_of_two_reciprocal"
++  (and (match_code "const_double")
++       (match_test "TARGET_32BIT && TARGET_VFP 
++       		    && vfp3_const_double_for_fract_bits (op)")))
++
++(define_special_predicate "neon_struct_operand"
++  (and (match_code "mem")
++       (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 2)")))
++
+ (define_special_predicate "add_operator"
+ 			 (match_code "plus"))
+--- a/src/gcc/config/arm/semi.h
++++ b/src/gcc/config/arm/semi.h
+@@ -65,8 +65,7 @@
+ #define ASM_SPEC "\
+ %{fpic|fpie: -k} %{fPIC|fPIE: -k} \
+ %{mbig-endian:-EB} \
+-%{mcpu=*:-mcpu=%*} \
+-%{march=*:-march=%*} \
++%(arm_cpu_spec) \
+ %{mapcs-float:-mfloat} \
+ %{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \
+ %{mfloat-abi=*} %{mfpu=*} \
+--- a/src/gcc/config/arm/sync.md
++++ b/src/gcc/config/arm/sync.md
+@@ -1,6 +1,7 @@
+ ;; Machine description for ARM processor synchronization primitives.
+ ;; Copyright (C) 2010 Free Software Foundation, Inc.
+ ;; Written by Marcus Shawcroft (marcus.shawcroft@arm.com)
++;; 64bit Atomics by Dave Gilbert (david.gilbert@linaro.org)
+ ;;
+ ;; This file is part of GCC.
+ ;;
+@@ -33,31 +34,24 @@
+   MEM_VOLATILE_P (operands[0]) = 1;
+ })
+ 
+-(define_expand "sync_compare_and_swapsi"
+-  [(set (match_operand:SI 0 "s_register_operand")
+-        (unspec_volatile:SI [(match_operand:SI 1 "memory_operand")
+-			     (match_operand:SI 2 "s_register_operand")
+-			     (match_operand:SI 3 "s_register_operand")]
+-			     VUNSPEC_SYNC_COMPARE_AND_SWAP))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
+-  {
+-    struct arm_sync_generator generator;
+-    generator.op = arm_sync_generator_omrn;
+-    generator.u.omrn = gen_arm_sync_compare_and_swapsi;
+-    arm_expand_sync (SImode, &generator, operands[0], operands[1], operands[2],
+-                     operands[3]);
+-    DONE;
+-  })
+ 
+-(define_mode_iterator NARROW [QI HI])
++(define_mode_attr sync_predtab [(SI "TARGET_HAVE_LDREX &&
++					TARGET_HAVE_MEMORY_BARRIER")
++				(QI "TARGET_HAVE_LDREXBH &&
++					TARGET_HAVE_MEMORY_BARRIER")
++				(HI "TARGET_HAVE_LDREXBH &&
++					TARGET_HAVE_MEMORY_BARRIER")
++				(DI "TARGET_HAVE_LDREXD &&
++					ARM_DOUBLEWORD_ALIGN &&
++					TARGET_HAVE_MEMORY_BARRIER")])
+ 
+ (define_expand "sync_compare_and_swap<mode>"
+-  [(set (match_operand:NARROW 0 "s_register_operand")
+-        (unspec_volatile:NARROW [(match_operand:NARROW 1 "memory_operand")
+-			     (match_operand:NARROW 2 "s_register_operand")
+-			     (match_operand:NARROW 3 "s_register_operand")]
++  [(set (match_operand:QHSD 0 "s_register_operand")
++        (unspec_volatile:QHSD [(match_operand:QHSD 1 "memory_operand")
++			     (match_operand:QHSD 2 "s_register_operand")
++			     (match_operand:QHSD 3 "s_register_operand")]
+ 			     VUNSPEC_SYNC_COMPARE_AND_SWAP))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     struct arm_sync_generator generator;
+     generator.op = arm_sync_generator_omrn;
+@@ -67,25 +61,11 @@
+     DONE;
+   })
+ 
+-(define_expand "sync_lock_test_and_setsi"
+-  [(match_operand:SI 0 "s_register_operand")
+-   (match_operand:SI 1 "memory_operand")
+-   (match_operand:SI 2 "s_register_operand")]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
+-  {
+-    struct arm_sync_generator generator;
+-    generator.op = arm_sync_generator_omn;
+-    generator.u.omn = gen_arm_sync_lock_test_and_setsi;
+-    arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
+-                     operands[2]);
+-    DONE;
+-  })
+-
+ (define_expand "sync_lock_test_and_set<mode>"
+-  [(match_operand:NARROW 0 "s_register_operand")
+-   (match_operand:NARROW 1 "memory_operand")
+-   (match_operand:NARROW 2 "s_register_operand")]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  [(match_operand:QHSD 0 "s_register_operand")
++   (match_operand:QHSD 1 "memory_operand")
++   (match_operand:QHSD 2 "s_register_operand")]
++  "<sync_predtab>"
+   {
+     struct arm_sync_generator generator;
+     generator.op = arm_sync_generator_omn;
+@@ -115,51 +95,25 @@
+ 				(plus "*")
+ 				(minus "*")])
+ 
+-(define_expand "sync_<sync_optab>si"
+-  [(match_operand:SI 0 "memory_operand")
+-   (match_operand:SI 1 "s_register_operand")
+-   (syncop:SI (match_dup 0) (match_dup 1))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
+-  {
+-    struct arm_sync_generator generator;
+-    generator.op = arm_sync_generator_omn;
+-    generator.u.omn = gen_arm_sync_new_<sync_optab>si;
+-    arm_expand_sync (SImode, &generator, NULL, operands[0], NULL, operands[1]);
+-    DONE;
+-  })
+-
+-(define_expand "sync_nandsi"
+-  [(match_operand:SI 0 "memory_operand")
+-   (match_operand:SI 1 "s_register_operand")
+-   (not:SI (and:SI (match_dup 0) (match_dup 1)))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
+-  {
+-    struct arm_sync_generator generator;
+-    generator.op = arm_sync_generator_omn;
+-    generator.u.omn = gen_arm_sync_new_nandsi;
+-    arm_expand_sync (SImode, &generator, NULL, operands[0], NULL, operands[1]);
+-    DONE;
+-  })
+-
+ (define_expand "sync_<sync_optab><mode>"
+-  [(match_operand:NARROW 0 "memory_operand")
+-   (match_operand:NARROW 1 "s_register_operand")
+-   (syncop:NARROW (match_dup 0) (match_dup 1))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  [(match_operand:QHSD 0 "memory_operand")
++   (match_operand:QHSD 1 "s_register_operand")
++   (syncop:QHSD (match_dup 0) (match_dup 1))]
++  "<sync_predtab>"
+   {
+     struct arm_sync_generator generator;
+     generator.op = arm_sync_generator_omn;
+     generator.u.omn = gen_arm_sync_new_<sync_optab><mode>;
+     arm_expand_sync (<MODE>mode, &generator, NULL, operands[0], NULL,
+-    		     operands[1]);
++		     operands[1]);
+     DONE;
+   })
+ 
+ (define_expand "sync_nand<mode>"
+-  [(match_operand:NARROW 0 "memory_operand")
+-   (match_operand:NARROW 1 "s_register_operand")
+-   (not:NARROW (and:NARROW (match_dup 0) (match_dup 1)))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  [(match_operand:QHSD 0 "memory_operand")
++   (match_operand:QHSD 1 "s_register_operand")
++   (not:QHSD (and:QHSD (match_dup 0) (match_dup 1)))]
++  "<sync_predtab>"
+   {
+     struct arm_sync_generator generator;
+     generator.op = arm_sync_generator_omn;
+@@ -169,57 +123,27 @@
+     DONE;
+   })
+ 
+-(define_expand "sync_new_<sync_optab>si"
+-  [(match_operand:SI 0 "s_register_operand")
+-   (match_operand:SI 1 "memory_operand")
+-   (match_operand:SI 2 "s_register_operand")
+-   (syncop:SI (match_dup 1) (match_dup 2))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
+-  {
+-    struct arm_sync_generator generator;
+-    generator.op = arm_sync_generator_omn;
+-    generator.u.omn = gen_arm_sync_new_<sync_optab>si;
+-    arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
+-                     operands[2]);
+-    DONE;
+-  })
+-
+-(define_expand "sync_new_nandsi"
+-  [(match_operand:SI 0 "s_register_operand")
+-   (match_operand:SI 1 "memory_operand")
+-   (match_operand:SI 2 "s_register_operand")
+-   (not:SI (and:SI (match_dup 1) (match_dup 2)))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
+-  {
+-    struct arm_sync_generator generator;
+-    generator.op = arm_sync_generator_omn;
+-    generator.u.omn = gen_arm_sync_new_nandsi;
+-    arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
+-    		     operands[2]);
+-    DONE;
+-  })
+-
+ (define_expand "sync_new_<sync_optab><mode>"
+-  [(match_operand:NARROW 0 "s_register_operand")
+-   (match_operand:NARROW 1 "memory_operand")
+-   (match_operand:NARROW 2 "s_register_operand")
+-   (syncop:NARROW (match_dup 1) (match_dup 2))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  [(match_operand:QHSD 0 "s_register_operand")
++   (match_operand:QHSD 1 "memory_operand")
++   (match_operand:QHSD 2 "s_register_operand")
++   (syncop:QHSD (match_dup 1) (match_dup 2))]
++  "<sync_predtab>"
+   {
+     struct arm_sync_generator generator;
+     generator.op = arm_sync_generator_omn;
+     generator.u.omn = gen_arm_sync_new_<sync_optab><mode>;
+     arm_expand_sync (<MODE>mode, &generator, operands[0], operands[1],
+-    		     NULL, operands[2]);
++		     NULL, operands[2]);
+     DONE;
+   })
+ 
+ (define_expand "sync_new_nand<mode>"
+-  [(match_operand:NARROW 0 "s_register_operand")
+-   (match_operand:NARROW 1 "memory_operand")
+-   (match_operand:NARROW 2 "s_register_operand")
+-   (not:NARROW (and:NARROW (match_dup 1) (match_dup 2)))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  [(match_operand:QHSD 0 "s_register_operand")
++   (match_operand:QHSD 1 "memory_operand")
++   (match_operand:QHSD 2 "s_register_operand")
++   (not:QHSD (and:QHSD (match_dup 1) (match_dup 2)))]
++  "<sync_predtab>"
+   {
+     struct arm_sync_generator generator;
+     generator.op = arm_sync_generator_omn;
+@@ -229,57 +153,27 @@
+     DONE;
+   });
+ 
+-(define_expand "sync_old_<sync_optab>si"
+-  [(match_operand:SI 0 "s_register_operand")
+-   (match_operand:SI 1 "memory_operand")
+-   (match_operand:SI 2 "s_register_operand")
+-   (syncop:SI (match_dup 1) (match_dup 2))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
+-  {
+-    struct arm_sync_generator generator;
+-    generator.op = arm_sync_generator_omn;
+-    generator.u.omn = gen_arm_sync_old_<sync_optab>si;
+-    arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
+-                     operands[2]);
+-    DONE;
+-  })
+-
+-(define_expand "sync_old_nandsi"
+-  [(match_operand:SI 0 "s_register_operand")
+-   (match_operand:SI 1 "memory_operand")
+-   (match_operand:SI 2 "s_register_operand")
+-   (not:SI (and:SI (match_dup 1) (match_dup 2)))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
+-  {
+-    struct arm_sync_generator generator;
+-    generator.op = arm_sync_generator_omn;
+-    generator.u.omn = gen_arm_sync_old_nandsi;
+-    arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
+-                     operands[2]);
+-    DONE;
+-  })
+-
+ (define_expand "sync_old_<sync_optab><mode>"
+-  [(match_operand:NARROW 0 "s_register_operand")
+-   (match_operand:NARROW 1 "memory_operand")
+-   (match_operand:NARROW 2 "s_register_operand")
+-   (syncop:NARROW (match_dup 1) (match_dup 2))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  [(match_operand:QHSD 0 "s_register_operand")
++   (match_operand:QHSD 1 "memory_operand")
++   (match_operand:QHSD 2 "s_register_operand")
++   (syncop:QHSD (match_dup 1) (match_dup 2))]
++  "<sync_predtab>"
+   {
+     struct arm_sync_generator generator;
+     generator.op = arm_sync_generator_omn;
+     generator.u.omn = gen_arm_sync_old_<sync_optab><mode>;
+     arm_expand_sync (<MODE>mode, &generator, operands[0], operands[1],
+-    		     NULL, operands[2]);
++		     NULL, operands[2]);
+     DONE;
+   })
+ 
+ (define_expand "sync_old_nand<mode>"
+-  [(match_operand:NARROW 0 "s_register_operand")
+-   (match_operand:NARROW 1 "memory_operand")
+-   (match_operand:NARROW 2 "s_register_operand")
+-   (not:NARROW (and:NARROW (match_dup 1) (match_dup 2)))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  [(match_operand:QHSD 0 "s_register_operand")
++   (match_operand:QHSD 1 "memory_operand")
++   (match_operand:QHSD 2 "s_register_operand")
++   (not:QHSD (and:QHSD (match_dup 1) (match_dup 2)))]
++  "<sync_predtab>"
+   {
+     struct arm_sync_generator generator;
+     generator.op = arm_sync_generator_omn;
+@@ -289,22 +183,22 @@
+     DONE;
+   })
+ 
+-(define_insn "arm_sync_compare_and_swapsi"
+-  [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (unspec_volatile:SI
+-	  [(match_operand:SI 1 "arm_sync_memory_operand" "+Q")
+-   	   (match_operand:SI 2 "s_register_operand" "r")
+-	   (match_operand:SI 3 "s_register_operand" "r")]
+-	  VUNSPEC_SYNC_COMPARE_AND_SWAP))
+-   (set (match_dup 1) (unspec_volatile:SI [(match_dup 2)]
++(define_insn "arm_sync_compare_and_swap<mode>"
++  [(set (match_operand:SIDI 0 "s_register_operand" "=&r")
++        (unspec_volatile:SIDI
++	 [(match_operand:SIDI 1 "arm_sync_memory_operand" "+Q")
++	  (match_operand:SIDI 2 "s_register_operand" "r")
++	  (match_operand:SIDI 3 "s_register_operand" "r")]
++	 VUNSPEC_SYNC_COMPARE_AND_SWAP))
++   (set (match_dup 1) (unspec_volatile:SIDI [(match_dup 2)]
+                                           VUNSPEC_SYNC_COMPARE_AND_SWAP))
+    (set (reg:CC CC_REGNUM) (unspec_volatile:CC [(match_dup 1)]
+                                                 VUNSPEC_SYNC_COMPARE_AND_SWAP))
+    ]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+-  } 
++  }
+   [(set_attr "sync_result"          "0")
+    (set_attr "sync_memory"          "1")
+    (set_attr "sync_required_value"  "2")
+@@ -318,7 +212,7 @@
+         (zero_extend:SI
+ 	  (unspec_volatile:NARROW
+ 	    [(match_operand:NARROW 1 "arm_sync_memory_operand" "+Q")
+-   	     (match_operand:SI 2 "s_register_operand" "r")
++	     (match_operand:SI 2 "s_register_operand" "r")
+ 	     (match_operand:SI 3 "s_register_operand" "r")]
+ 	    VUNSPEC_SYNC_COMPARE_AND_SWAP)))
+    (set (match_dup 1) (unspec_volatile:NARROW [(match_dup 2)]
+@@ -326,10 +220,10 @@
+    (set (reg:CC CC_REGNUM) (unspec_volatile:CC [(match_dup 1)]
+                                                 VUNSPEC_SYNC_COMPARE_AND_SWAP))
+    ]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+-  } 
++  }
+   [(set_attr "sync_result"          "0")
+    (set_attr "sync_memory"          "1")
+    (set_attr "sync_required_value"  "2")
+@@ -338,18 +232,18 @@
+    (set_attr "conds" "clob")
+    (set_attr "predicable" "no")])
+ 
+-(define_insn "arm_sync_lock_test_and_setsi"
+-  [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (match_operand:SI 1 "arm_sync_memory_operand" "+Q"))
++(define_insn "arm_sync_lock_test_and_set<mode>"
++  [(set (match_operand:SIDI 0 "s_register_operand" "=&r")
++	(match_operand:SIDI 1 "arm_sync_memory_operand" "+Q"))
+    (set (match_dup 1)
+-        (unspec_volatile:SI [(match_operand:SI 2 "s_register_operand" "r")]
+-	                    VUNSPEC_SYNC_LOCK))
++	(unspec_volatile:SIDI [(match_operand:SIDI 2 "s_register_operand" "r")]
++	VUNSPEC_SYNC_LOCK))
+    (clobber (reg:CC CC_REGNUM))
+    (clobber (match_scratch:SI 3 "=&r"))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+-  } 
++  }
+   [(set_attr "sync_release_barrier" "no")
+    (set_attr "sync_result"          "0")
+    (set_attr "sync_memory"          "1")
+@@ -364,10 +258,10 @@
+         (zero_extend:SI (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q")))
+    (set (match_dup 1)
+         (unspec_volatile:NARROW [(match_operand:SI 2 "s_register_operand" "r")]
+-	                        VUNSPEC_SYNC_LOCK))
++				VUNSPEC_SYNC_LOCK))
+    (clobber (reg:CC CC_REGNUM))
+    (clobber (match_scratch:SI 3 "=&r"))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+   } 
+@@ -380,22 +274,22 @@
+    (set_attr "conds" "clob")
+    (set_attr "predicable" "no")])
+ 
+-(define_insn "arm_sync_new_<sync_optab>si"
+-  [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (unspec_volatile:SI [(syncop:SI
+-                               (match_operand:SI 1 "arm_sync_memory_operand" "+Q")
+-                               (match_operand:SI 2 "s_register_operand" "r"))
+-	                    ]
+-	                    VUNSPEC_SYNC_NEW_OP))
++(define_insn "arm_sync_new_<sync_optab><mode>"
++  [(set (match_operand:SIDI 0 "s_register_operand" "=&r")
++        (unspec_volatile:SIDI [(syncop:SIDI
++			       (match_operand:SIDI 1 "arm_sync_memory_operand" "+Q")
++			       (match_operand:SIDI 2 "s_register_operand" "r"))
++			    ]
++			    VUNSPEC_SYNC_NEW_OP))
+    (set (match_dup 1)
+-        (unspec_volatile:SI [(match_dup 1) (match_dup 2)]
+-	                    VUNSPEC_SYNC_NEW_OP))
++	(unspec_volatile:SIDI [(match_dup 1) (match_dup 2)]
++			    VUNSPEC_SYNC_NEW_OP))
+    (clobber (reg:CC CC_REGNUM))
+    (clobber (match_scratch:SI 3 "=&r"))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+-  } 
++  }
+   [(set_attr "sync_result"          "0")
+    (set_attr "sync_memory"          "1")
+    (set_attr "sync_new_value"       "2")
+@@ -405,54 +299,54 @@
+    (set_attr "conds" "clob")
+    (set_attr "predicable" "no")])
+ 
+-(define_insn "arm_sync_new_nandsi"
++(define_insn "arm_sync_new_<sync_optab><mode>"
+   [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (unspec_volatile:SI [(not:SI (and:SI
+-                               (match_operand:SI 1 "arm_sync_memory_operand" "+Q")
+-                               (match_operand:SI 2 "s_register_operand" "r")))
+-	                    ]
+-	                    VUNSPEC_SYNC_NEW_OP))
++        (unspec_volatile:SI [(syncop:SI
++			       (zero_extend:SI
++				 (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
++			       (match_operand:SI 2 "s_register_operand" "r"))
++			    ]
++			    VUNSPEC_SYNC_NEW_OP))
+    (set (match_dup 1)
+-        (unspec_volatile:SI [(match_dup 1) (match_dup 2)]
+-	                    VUNSPEC_SYNC_NEW_OP))
++	(unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
++				VUNSPEC_SYNC_NEW_OP))
+    (clobber (reg:CC CC_REGNUM))
+    (clobber (match_scratch:SI 3 "=&r"))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+-  } 
++  }
+   [(set_attr "sync_result"          "0")
+    (set_attr "sync_memory"          "1")
+    (set_attr "sync_new_value"       "2")
+    (set_attr "sync_t1"              "0")
+    (set_attr "sync_t2"              "3")
+-   (set_attr "sync_op"              "nand")
++   (set_attr "sync_op"              "<sync_optab>")
+    (set_attr "conds" "clob")
+    (set_attr "predicable" "no")])
+ 
+-(define_insn "arm_sync_new_<sync_optab><mode>"
+-  [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (unspec_volatile:SI [(syncop:SI
+-                               (zero_extend:SI
+-			         (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
+-                               (match_operand:SI 2 "s_register_operand" "r"))
+-	                    ]
+-	                    VUNSPEC_SYNC_NEW_OP))
++(define_insn "arm_sync_new_nand<mode>"
++  [(set (match_operand:SIDI 0 "s_register_operand" "=&r")
++        (unspec_volatile:SIDI [(not:SIDI (and:SIDI
++			       (match_operand:SIDI 1 "arm_sync_memory_operand" "+Q")
++			       (match_operand:SIDI 2 "s_register_operand" "r")))
++			    ]
++			    VUNSPEC_SYNC_NEW_OP))
+    (set (match_dup 1)
+-        (unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
+-	                        VUNSPEC_SYNC_NEW_OP))
++	(unspec_volatile:SIDI [(match_dup 1) (match_dup 2)]
++			    VUNSPEC_SYNC_NEW_OP))
+    (clobber (reg:CC CC_REGNUM))
+    (clobber (match_scratch:SI 3 "=&r"))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+-  } 
++  }
+   [(set_attr "sync_result"          "0")
+    (set_attr "sync_memory"          "1")
+    (set_attr "sync_new_value"       "2")
+    (set_attr "sync_t1"              "0")
+    (set_attr "sync_t2"              "3")
+-   (set_attr "sync_op"              "<sync_optab>")
++   (set_attr "sync_op"              "nand")
+    (set_attr "conds" "clob")
+    (set_attr "predicable" "no")])
+ 
+@@ -461,19 +355,19 @@
+         (unspec_volatile:SI
+ 	  [(not:SI
+ 	     (and:SI
+-               (zero_extend:SI	  
+-	         (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
+-               (match_operand:SI 2 "s_register_operand" "r")))
++	       (zero_extend:SI
++		 (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
++	       (match_operand:SI 2 "s_register_operand" "r")))
+ 	  ] VUNSPEC_SYNC_NEW_OP))
+    (set (match_dup 1)
+         (unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
+-	                        VUNSPEC_SYNC_NEW_OP))
++				VUNSPEC_SYNC_NEW_OP))
+    (clobber (reg:CC CC_REGNUM))
+    (clobber (match_scratch:SI 3 "=&r"))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+-  } 
++  }
+   [(set_attr "sync_result"          "0")
+    (set_attr "sync_memory"          "1")
+    (set_attr "sync_new_value"       "2")
+@@ -483,20 +377,20 @@
+    (set_attr "conds" "clob")
+    (set_attr "predicable" "no")])
+ 
+-(define_insn "arm_sync_old_<sync_optab>si"
+-  [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (unspec_volatile:SI [(syncop:SI
+-                               (match_operand:SI 1 "arm_sync_memory_operand" "+Q")
+-                               (match_operand:SI 2 "s_register_operand" "r"))
+-	                    ]
+-	                    VUNSPEC_SYNC_OLD_OP))
++(define_insn "arm_sync_old_<sync_optab><mode>"
++  [(set (match_operand:SIDI 0 "s_register_operand" "=&r")
++	(unspec_volatile:SIDI [(syncop:SIDI
++			       (match_operand:SIDI 1 "arm_sync_memory_operand" "+Q")
++			       (match_operand:SIDI 2 "s_register_operand" "r"))
++			    ]
++			    VUNSPEC_SYNC_OLD_OP))
+    (set (match_dup 1)
+-        (unspec_volatile:SI [(match_dup 1) (match_dup 2)]
+-	                    VUNSPEC_SYNC_OLD_OP))
++        (unspec_volatile:SIDI [(match_dup 1) (match_dup 2)]
++			      VUNSPEC_SYNC_OLD_OP))
+    (clobber (reg:CC CC_REGNUM))
+-   (clobber (match_scratch:SI 3 "=&r"))
++   (clobber (match_scratch:SIDI 3 "=&r"))
+    (clobber (match_scratch:SI 4 "<sync_clobber>"))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+   } 
+@@ -509,20 +403,21 @@
+    (set_attr "conds" "clob")
+    (set_attr "predicable" "no")])
+ 
+-(define_insn "arm_sync_old_nandsi"
++(define_insn "arm_sync_old_<sync_optab><mode>"
+   [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (unspec_volatile:SI [(not:SI (and:SI
+-                               (match_operand:SI 1 "arm_sync_memory_operand" "+Q")
+-                               (match_operand:SI 2 "s_register_operand" "r")))
+-	                    ]
+-	                    VUNSPEC_SYNC_OLD_OP))
++        (unspec_volatile:SI [(syncop:SI
++			       (zero_extend:SI
++				 (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
++			       (match_operand:SI 2 "s_register_operand" "r"))
++			    ]
++			    VUNSPEC_SYNC_OLD_OP))
+    (set (match_dup 1)
+-        (unspec_volatile:SI [(match_dup 1) (match_dup 2)]
+-	                    VUNSPEC_SYNC_OLD_OP))
++	(unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
++			    VUNSPEC_SYNC_OLD_OP))
+    (clobber (reg:CC CC_REGNUM))
+    (clobber (match_scratch:SI 3 "=&r"))
+-   (clobber (match_scratch:SI 4 "=&r"))]
+-  "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
++   (clobber (match_scratch:SI 4 "<sync_clobber>"))]
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+   } 
+@@ -530,26 +425,25 @@
+    (set_attr "sync_memory"          "1")
+    (set_attr "sync_new_value"       "2")
+    (set_attr "sync_t1"              "3")
+-   (set_attr "sync_t2"              "4")
+-   (set_attr "sync_op"              "nand")
++   (set_attr "sync_t2"              "<sync_t2_reqd>")
++   (set_attr "sync_op"              "<sync_optab>")
+    (set_attr "conds" 		    "clob")
+    (set_attr "predicable" "no")])
+ 
+-(define_insn "arm_sync_old_<sync_optab><mode>"
+-  [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (unspec_volatile:SI [(syncop:SI
+-                               (zero_extend:SI
+-			         (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
+-                               (match_operand:SI 2 "s_register_operand" "r"))
+-	                    ]
+-	                    VUNSPEC_SYNC_OLD_OP))
++(define_insn "arm_sync_old_nand<mode>"
++  [(set (match_operand:SIDI 0 "s_register_operand" "=&r")
++	(unspec_volatile:SIDI [(not:SIDI (and:SIDI
++			       (match_operand:SIDI 1 "arm_sync_memory_operand" "+Q")
++			       (match_operand:SIDI 2 "s_register_operand" "r")))
++			    ]
++			    VUNSPEC_SYNC_OLD_OP))
+    (set (match_dup 1)
+-        (unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
++        (unspec_volatile:SIDI [(match_dup 1) (match_dup 2)]
+ 	                    VUNSPEC_SYNC_OLD_OP))
+    (clobber (reg:CC CC_REGNUM))
+-   (clobber (match_scratch:SI 3 "=&r"))
+-   (clobber (match_scratch:SI 4 "<sync_clobber>"))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++   (clobber (match_scratch:SIDI 3 "=&r"))
++   (clobber (match_scratch:SI 4 "=&r"))]
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+   } 
+@@ -557,26 +451,26 @@
+    (set_attr "sync_memory"          "1")
+    (set_attr "sync_new_value"       "2")
+    (set_attr "sync_t1"              "3")
+-   (set_attr "sync_t2"              "<sync_t2_reqd>")
+-   (set_attr "sync_op"              "<sync_optab>")
++   (set_attr "sync_t2"              "4")
++   (set_attr "sync_op"              "nand")
+    (set_attr "conds" 		    "clob")
+    (set_attr "predicable" "no")])
+ 
+ (define_insn "arm_sync_old_nand<mode>"
+   [(set (match_operand:SI 0 "s_register_operand" "=&r")
+-        (unspec_volatile:SI [(not:SI (and:SI
+-                               (zero_extend:SI
+-			         (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
+-                               (match_operand:SI 2 "s_register_operand" "r")))
+-	                    ]
+-	                    VUNSPEC_SYNC_OLD_OP))
++	(unspec_volatile:SI [(not:SI (and:SI
++			       (zero_extend:SI
++				 (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
++			       (match_operand:SI 2 "s_register_operand" "r")))
++			    ]
++			    VUNSPEC_SYNC_OLD_OP))
+    (set (match_dup 1)
+-        (unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
+-	                    VUNSPEC_SYNC_OLD_OP))
++	(unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
++			    VUNSPEC_SYNC_OLD_OP))
+    (clobber (reg:CC CC_REGNUM))
+    (clobber (match_scratch:SI 3 "=&r"))
+    (clobber (match_scratch:SI 4 "=&r"))]
+-  "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
++  "<sync_predtab>"
+   {
+     return arm_output_sync_insn (insn, operands);
+   } 
+@@ -600,3 +494,36 @@
+    (set_attr "conds" "unconditional")
+    (set_attr "predicable" "no")])
+ 
++(define_expand "sync_lock_releasedi"
++ [(match_operand:DI 0 "memory_operand")
++  (match_operand:DI 1 "s_register_operand")]
++ "TARGET_HAVE_LDREXD && ARM_DOUBLEWORD_ALIGN && TARGET_HAVE_MEMORY_BARRIER"
++ { 
++   struct arm_sync_generator generator;
++   rtx tmp1 = gen_reg_rtx (DImode);
++   generator.op = arm_sync_generator_omn;
++   generator.u.omn = gen_arm_sync_lock_releasedi;
++   arm_expand_sync (DImode, &generator, operands[1], operands[0], NULL, tmp1);
++   DONE;
++ }
++)
++
++(define_insn "arm_sync_lock_releasedi"
++ [(set (match_operand:DI 2 "s_register_operand" "=&r")
++       (unspec_volatile:DI [(match_operand:DI 1 "arm_sync_memory_operand" "+Q")
++       			    (match_operand:DI 0 "s_register_operand" "r")]
++			    VUNSPEC_SYNC_RELEASE))
++  (clobber (reg:CC CC_REGNUM))
++  (clobber (match_scratch:SI 3 "=&r"))]
++  "TARGET_HAVE_LDREXD && ARM_DOUBLEWORD_ALIGN && TARGET_HAVE_MEMORY_BARRIER"
++ {
++  return arm_output_sync_insn (insn, operands);
++ }
++ [(set_attr "sync_memory"          "1")
++  (set_attr "sync_result" 	   "2")
++  (set_attr "sync_t1" 		   "2")
++  (set_attr "sync_t2" 		   "3")
++  (set_attr "sync_new_value" 	   "0")
++  (set_attr "conds"             "clob")
++  (set_attr "predicable"          "no")]
++)
+--- a/src/gcc/config/arm/t-arm
++++ b/src/gcc/config/arm/t-arm
+@@ -31,6 +31,16 @@
+ 		$(srcdir)/config/arm/fmp626.md \
+ 		$(srcdir)/config/arm/fa726te.md \
+ 		$(srcdir)/config/arm/arm926ejs.md \
++		$(srcdir)/config/arm/cortex-a15.md \
++		$(srcdir)/config/arm/cortex-a5.md \
++		$(srcdir)/config/arm/cortex-a8.md \
++		$(srcdir)/config/arm/cortex-a8-neon.md \
++		$(srcdir)/config/arm/cortex-a9.md \
++		$(srcdir)/config/arm/cortex-a9-neon.md \
++		$(srcdir)/config/arm/cortex-m4-fpu.md \
++		$(srcdir)/config/arm/cortex-m4.md \
++		$(srcdir)/config/arm/cortex-r4f.md \
++		$(srcdir)/config/arm/cortex-r4.md \
+ 		$(srcdir)/config/arm/cirrus.md \
+ 		$(srcdir)/config/arm/fpa.md \
+ 		$(srcdir)/config/arm/vec-common.md \
+--- a/src/gcc/config/arm/thumb2.md
++++ b/src/gcc/config/arm/thumb2.md
+@@ -207,7 +207,9 @@
+ (define_insn "*thumb2_movhi_insn"
+   [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,r")
+ 	(match_operand:HI 1 "general_operand"      "rI,n,r,m"))]
+-  "TARGET_THUMB2"
++  "TARGET_THUMB2
++  && (register_operand (operands[0], HImode)
++     || register_operand (operands[1], HImode))"
+   "@
+    mov%?\\t%0, %1\\t%@ movhi
+    movw%?\\t%0, %L1\\t%@ movhi
+@@ -780,26 +782,6 @@
+    (set_attr "length" "2")]
+ )
+ 
+-(define_insn "divsi3"
+-  [(set (match_operand:SI	  0 "s_register_operand" "=r")
+-	(div:SI (match_operand:SI 1 "s_register_operand"  "r")
+-		(match_operand:SI 2 "s_register_operand"  "r")))]
+-  "TARGET_THUMB2 && arm_arch_hwdiv"
+-  "sdiv%?\t%0, %1, %2"
+-  [(set_attr "predicable" "yes")
+-   (set_attr "insn" "sdiv")]
+-)
+-
+-(define_insn "udivsi3"
+-  [(set (match_operand:SI	   0 "s_register_operand" "=r")
+-	(udiv:SI (match_operand:SI 1 "s_register_operand"  "r")
+-		 (match_operand:SI 2 "s_register_operand"  "r")))]
+-  "TARGET_THUMB2 && arm_arch_hwdiv"
+-  "udiv%?\t%0, %1, %2"
+-  [(set_attr "predicable" "yes")
+-   (set_attr "insn" "udiv")]
+-)
+-
+ (define_insn "*thumb2_subsi_short"
+   [(set (match_operand:SI 0 "low_register_operand" "=l")
+ 	(minus:SI (match_operand:SI 1 "low_register_operand" "l")
+@@ -837,7 +819,7 @@
+   "operands[4] = GEN_INT (- INTVAL (operands[2]));"
+ )
+ 
+-(define_insn "*thumb2_addsi3_compare0"
++(define_insn "thumb2_addsi3_compare0"
+   [(set (reg:CC_NOOV CC_REGNUM)
+ 	(compare:CC_NOOV
+ 	  (plus:SI (match_operand:SI 1 "s_register_operand" "l,  0, r")
+@@ -1119,3 +1101,54 @@
+   "
+   operands[2] = GEN_INT (32 - INTVAL (operands[2]));
+   ")
++
++;; Define the subtract-one-and-jump insns so loop.c
++;; knows what to generate.
++(define_expand "doloop_end"
++  [(use (match_operand 0 "" ""))      ; loop pseudo
++   (use (match_operand 1 "" ""))      ; iterations; zero if unknown
++   (use (match_operand 2 "" ""))      ; max iterations
++   (use (match_operand 3 "" ""))      ; loop level
++   (use (match_operand 4 "" ""))]     ; label
++  "TARGET_32BIT"
++  "
++ {
++   /* Currently SMS relies on the do-loop pattern to recognize loops
++      where (1) the control part consists of all insns defining and/or
++      using a certain 'count' register and (2) the loop count can be
++      adjusted by modifying this register prior to the loop.
++      ??? The possible introduction of a new block to initialize the
++      new IV can potentially affect branch optimizations.  */
++   if (optimize > 0 && flag_modulo_sched)
++   {
++     rtx s0;
++     rtx bcomp;
++     rtx loc_ref;
++     rtx cc_reg;
++     rtx insn;
++     rtx cmp;
++
++    /* Only use this on innermost loops.  */
++     if (INTVAL (operands[3]) > 1)
++       FAIL;
++     if (GET_MODE (operands[0]) != SImode)
++       FAIL;
++
++     s0 = operands [0];
++     if (TARGET_THUMB2)
++       insn = emit_insn (gen_thumb2_addsi3_compare0 (s0, s0, GEN_INT (-1)));
++     else
++       insn = emit_insn (gen_addsi3_compare0 (s0, s0, GEN_INT (-1)));
++
++     cmp = XVECEXP (PATTERN (insn), 0, 0);
++     cc_reg = SET_DEST (cmp);
++     bcomp = gen_rtx_NE (VOIDmode, cc_reg, const0_rtx);
++     loc_ref = gen_rtx_LABEL_REF (VOIDmode, operands [4]);
++     emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx,
++                                  gen_rtx_IF_THEN_ELSE (VOIDmode, bcomp,
++                                                        loc_ref, pc_rtx)));
++     DONE;
++   }else
++      FAIL;
++}")
++
+--- a/src/gcc/config/arm/t-linux-eabi
++++ b/src/gcc/config/arm/t-linux-eabi
+@@ -36,3 +36,4 @@
+ EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
+ 
+ LIB2FUNCS_STATIC_EXTRA += $(srcdir)/config/arm/linux-atomic.c
++LIB2FUNCS_STATIC_EXTRA += $(srcdir)/config/arm/linux-atomic-64bit.c
+--- a/src/gcc/config/arm/unwind-arm.c
++++ b/src/gcc/config/arm/unwind-arm.c
+@@ -32,13 +32,18 @@
+ typedef unsigned char bool;
+ 
+ typedef struct _ZSt9type_info type_info; /* This names C++ type_info type */
++enum __cxa_type_match_result
++  {
++    ctm_failed = 0,
++    ctm_succeeded = 1,
++    ctm_succeeded_with_ptr_to_base = 2
++  };
+ 
+ void __attribute__((weak)) __cxa_call_unexpected(_Unwind_Control_Block *ucbp);
+ bool __attribute__((weak)) __cxa_begin_cleanup(_Unwind_Control_Block *ucbp);
+-bool __attribute__((weak)) __cxa_type_match(_Unwind_Control_Block *ucbp,
+-					    const type_info *rttip,
+-					    bool is_reference,
+-					    void **matched_object);
++enum __cxa_type_match_result __attribute__((weak)) __cxa_type_match
++  (_Unwind_Control_Block *ucbp, const type_info *rttip,
++   bool is_reference, void **matched_object);
+ 
+ _Unwind_Ptr __attribute__((weak))
+ __gnu_Unwind_Find_exidx (_Unwind_Ptr, int *);
+@@ -1107,6 +1112,7 @@
+ 		      _uw rtti;
+ 		      bool is_reference = (data[0] & uint32_highbit) != 0;
+ 		      void *matched;
++		      enum __cxa_type_match_result match_type;
+ 
+ 		      /* Check for no-throw areas.  */
+ 		      if (data[1] == (_uw) -2)
+@@ -1118,17 +1124,31 @@
+ 			{
+ 			  /* Match a catch specification.  */
+ 			  rtti = _Unwind_decode_target2 ((_uw) &data[1]);
+-			  if (!__cxa_type_match (ucbp, (type_info *) rtti,
+-						 is_reference,
+-						 &matched))
+-			    matched = (void *)0;
++			  match_type = __cxa_type_match (ucbp,
++							 (type_info *) rtti,
++							 is_reference,
++							 &matched);
+ 			}
++		      else
++			match_type = ctm_succeeded;
+ 
+-		      if (matched)
++		      if (match_type)
+ 			{
+ 			  ucbp->barrier_cache.sp =
+ 			    _Unwind_GetGR (context, R_SP);
+-			  ucbp->barrier_cache.bitpattern[0] = (_uw) matched;
++			  // ctm_succeeded_with_ptr_to_base really
++			  // means _c_t_m indirected the pointer
++			  // object.  We have to reconstruct the
++			  // additional pointer layer by using a temporary.
++			  if (match_type == ctm_succeeded_with_ptr_to_base)
++			    {
++			      ucbp->barrier_cache.bitpattern[2]
++				= (_uw) matched;
++			      ucbp->barrier_cache.bitpattern[0]
++				= (_uw) &ucbp->barrier_cache.bitpattern[2];
++			    }
++			  else
++			    ucbp->barrier_cache.bitpattern[0] = (_uw) matched;
+ 			  ucbp->barrier_cache.bitpattern[1] = (_uw) data;
+ 			  return _URC_HANDLER_FOUND;
+ 			}
+@@ -1196,8 +1216,6 @@
+ 		  ucbp->barrier_cache.bitpattern[4] = (_uw) &data[1];
+ 
+ 		  if (data[0] & uint32_highbit)
+-		    phase2_call_unexpected_after_unwind = 1;
+-		  else
+ 		    {
+ 		      data += rtti_count + 1;
+ 		      /* Setup for entry to the handler.  */
+@@ -1207,6 +1225,8 @@
+ 		      _Unwind_SetGR (context, 0, (_uw) ucbp);
+ 		      return _URC_INSTALL_CONTEXT;
+ 		    }
++		  else
++		    phase2_call_unexpected_after_unwind = 1;
+ 		}
+ 	      if (data[0] & uint32_highbit)
+ 		data++;
+--- a/src/gcc/config/arm/vfp.md
++++ b/src/gcc/config/arm/vfp.md
+@@ -401,8 +401,8 @@
+ ;; DFmode moves
+ 
+ (define_insn "*movdf_vfp"
+-  [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w  ,Uv,w,r")
+-	(match_operand:DF 1 "soft_df_operand"		   " ?r,w,Dy,mF,r,UvF,w, w,r"))]
++  [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,w  ,Uv,r, m,w,r")
++	(match_operand:DF 1 "soft_df_operand"		   " ?r,w,Dy,UvF,w ,mF,r,w,r"))]
+   "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
+    && (   register_operand (operands[0], DFmode)
+        || register_operand (operands[1], DFmode))"
+@@ -418,9 +418,9 @@
+ 	gcc_assert (TARGET_VFP_DOUBLE);
+         return \"fconstd%?\\t%P0, #%G1\";
+       case 3: case 4:
+-	return output_move_double (operands);
+-      case 5: case 6:
+ 	return output_move_vfp (operands);
++      case 5: case 6:
++	return output_move_double (operands);
+       case 7:
+ 	if (TARGET_VFP_SINGLE)
+ 	  return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\";
+@@ -435,7 +435,7 @@
+   "
+   [(set_attr "type"
+      "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
+-   (set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8)
++   (set (attr "length") (cond [(eq_attr "alternative" "5,6,8") (const_int 8)
+ 			       (eq_attr "alternative" "7")
+ 				(if_then_else
+ 				 (eq (symbol_ref "TARGET_VFP_SINGLE")
+@@ -449,8 +449,8 @@
+ )
+ 
+ (define_insn "*thumb2_movdf_vfp"
+-  [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w  ,Uv,w,r")
+-	(match_operand:DF 1 "soft_df_operand"		   " ?r,w,Dy,mF,r,UvF,w, w,r"))]
++  [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,w  ,Uv,r ,m,w,r")
++	(match_operand:DF 1 "soft_df_operand"		   " ?r,w,Dy,UvF,w, mF,r, w,r"))]
+   "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP"
+   "*
+   {
+@@ -463,10 +463,10 @@
+       case 2:
+ 	gcc_assert (TARGET_VFP_DOUBLE);
+ 	return \"fconstd%?\\t%P0, #%G1\";
+-      case 3: case 4: case 8:
+-	return output_move_double (operands);
+-      case 5: case 6:
++      case 3: case 4:
+ 	return output_move_vfp (operands);
++      case 5: case 6: case 8:
++	return output_move_double (operands);
+       case 7:
+ 	if (TARGET_VFP_SINGLE)
+ 	  return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\";
+@@ -478,8 +478,8 @@
+     }
+   "
+   [(set_attr "type"
+-     "r_2_f,f_2_r,fconstd,load2,store2,f_loadd,f_stored,ffarithd,*")
+-   (set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8)
++     "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
++   (set (attr "length") (cond [(eq_attr "alternative" "5,6,8") (const_int 8)
+ 			       (eq_attr "alternative" "7")
+ 				(if_then_else
+ 				 (eq (symbol_ref "TARGET_VFP_SINGLE")
+@@ -487,8 +487,8 @@
+ 				 (const_int 8)
+ 				 (const_int 4))]
+ 			      (const_int 4)))
+-   (set_attr "pool_range" "*,*,*,4096,*,1020,*,*,*")
+-   (set_attr "neg_pool_range" "*,*,*,0,*,1008,*,*,*")]
++   (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*")
++   (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")]
+ )
+ 
+ 
+@@ -1131,9 +1131,40 @@
+    (set_attr "type" "fcmpd")]
+ )
+ 
++;; Fixed point to floating point conversions. 
++(define_code_iterator FCVT [unsigned_float float])
++(define_code_attr FCVTI32typename [(unsigned_float "u32") (float "s32")])
++
++(define_insn "*combine_vcvt_f32_<FCVTI32typename>"
++  [(set (match_operand:SF 0 "s_register_operand" "=t")
++	(mult:SF (FCVT:SF (match_operand:SI 1 "s_register_operand" "0"))
++		 (match_operand 2 
++			"const_double_vcvt_power_of_two_reciprocal" "Dt")))]
++  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math"
++  "vcvt.f32.<FCVTI32typename>\\t%0, %1, %v2"
++ [(set_attr "predicable" "no")
++  (set_attr "type" "f_cvt")]
++)
++
++;; Not the ideal way of implementing this. Ideally we would be able to split
++;; this into a move to a DP register and then a vcvt.f64.i32
++(define_insn "*combine_vcvt_f64_<FCVTI32typename>"
++  [(set (match_operand:DF 0 "s_register_operand" "=x,x,w")
++	(mult:DF (FCVT:DF (match_operand:SI 1 "s_register_operand" "r,t,r"))
++		 (match_operand 2 
++		     "const_double_vcvt_power_of_two_reciprocal" "Dt,Dt,Dt")))]
++  "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math 
++  && !TARGET_VFP_SINGLE"
++  "@
++  vmov.f32\\t%0, %1\;vcvt.f64.<FCVTI32typename>\\t%P0, %P0, %v2
++  vmov.f32\\t%0, %1\;vcvt.f64.<FCVTI32typename>\\t%P0, %P0, %v2
++  vmov.f64\\t%P0, %1, %1\; vcvt.f64.<FCVTI32typename>\\t%P0, %P0, %v2"
++ [(set_attr "predicable" "no")
++  (set_attr "type" "f_cvt")
++  (set_attr "length" "8")]
++)
+ 
+ ;; Store multiple insn used in function prologue.
+-
+ (define_insn "*push_multi_vfp"
+   [(match_parallel 2 "multi_register_push"
+     [(set (match_operand:BLK 0 "memory_operand" "=m")
+--- a/src/gcc/config/arm/x-arm
++++ b/src/gcc/config/arm/x-arm
+@@ -0,0 +1,3 @@
++driver-arm.o: $(srcdir)/config/arm/driver-arm.c \
++  $(CONFIG_H) $(SYSTEM_H)
++	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
+--- a/src/gcc/config/avr/avr.c
++++ b/src/gcc/config/avr/avr.c
+@@ -1879,12 +1879,9 @@
+ 	    }
+ 	  else if (test_hard_reg_class (STACK_REG, src))
+ 	    {
+-              *l = 2;
+-              return AVR_HAVE_8BIT_SP
+-                ? (AS2 (in,%A0,__SP_L__) CR_TAB
+-                   AS1 (clr,%B0))
+-                : (AS2 (in,%A0,__SP_L__) CR_TAB
+-                   AS2 (in,%B0,__SP_H__));
++	      *l = 2;	
++	      return (AS2 (in,%A0,__SP_L__) CR_TAB
++		      AS2 (in,%B0,__SP_H__));
+ 	    }
+ 
+ 	  if (AVR_HAVE_MOVW)
+@@ -5177,10 +5174,9 @@
+ 
+   default_file_start ();
+ 
+-  fputs ("__SREG__ = 0x3f\n", asm_out_file);
+-  if (!AVR_HAVE_8BIT_SP)
+-    fputs ("__SP_H__ = 0x3e\n", asm_out_file);
+-  fputs ("__SP_L__ = 0x3d\n", asm_out_file);
++  fputs ("__SREG__ = 0x3f\n"
++	 "__SP_H__ = 0x3e\n"
++	 "__SP_L__ = 0x3d\n", asm_out_file);
+   
+   fputs ("__tmp_reg__ = 0\n" 
+          "__zero_reg__ = 1\n", asm_out_file);
+--- a/src/gcc/config/avr/avr.md
++++ b/src/gcc/config/avr/avr.md
+@@ -299,7 +299,7 @@
+   [(set (match_operand:HI 0 "stack_register_operand" "=q")
+         (unspec_volatile:HI [(match_operand:HI 1 "register_operand"  "r")] 
+ 			    UNSPECV_WRITE_SP_IRQ_OFF))]
+-  "!AVR_HAVE_8BIT_SP"
++  ""
+   "out __SP_H__, %B1
+ 	out __SP_L__, %A1"
+   [(set_attr "length" "2")
+@@ -309,7 +309,7 @@
+   [(set (match_operand:HI 0 "stack_register_operand" "=q")
+         (unspec_volatile:HI [(match_operand:HI 1 "register_operand"  "r")] 
+ 			    UNSPECV_WRITE_SP_IRQ_ON))]
+-  "!AVR_HAVE_8BIT_SP"
++  ""
+   "cli
+         out __SP_H__, %B1
+ 	sei
+--- a/src/gcc/config/avr/avr-stdint.h
++++ b/src/gcc/config/avr/avr-stdint.h
+@@ -0,0 +1,66 @@
++/* Definitions for <stdint.h> types on systems using newlib.
++   Copyright (C) 2012 Free Software Foundation, Inc.
++
++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/>.  */
++
++/*
++   The intention of this file is to supply definitions that work with
++   avr-gcc's -mint8 that sets int to an 8-bit type.
++
++   This file is intended to yield the same results as newlib-stdint.h,
++   but there are some differences to newlib-stdint.h:
++
++   - AVR is an 8-bit architecture that cannot access 16-bit values
++     atomically, this SIG_ATOMIC_TYPE is "char".
++
++   - For the same reason, [u]int_fast8_t is defined as 8-bit type.
++
++*/
++   
++#define SIG_ATOMIC_TYPE "char"
++
++#define INT8_TYPE "signed char"
++#define INT16_TYPE (INT_TYPE_SIZE == 16 ? "short int" : "long int")
++#define INT32_TYPE (INT_TYPE_SIZE == 16 ? "long int" : "long long int")
++#define INT64_TYPE (INT_TYPE_SIZE == 16 ? "long long int" : 0)
++#define UINT8_TYPE "unsigned char"
++#define UINT16_TYPE (INT_TYPE_SIZE == 16 ? "short unsigned int" : "long unsigned int")
++#define UINT32_TYPE (INT_TYPE_SIZE == 16 ? "long unsigned int" : "long long unsigned int")
++#define UINT64_TYPE (INT_TYPE_SIZE == 16 ? "long long unsigned int" : 0)
++
++#define INT_LEAST8_TYPE INT8_TYPE
++#define INT_LEAST16_TYPE INT16_TYPE
++#define INT_LEAST32_TYPE INT32_TYPE
++#define INT_LEAST64_TYPE INT64_TYPE
++#define UINT_LEAST8_TYPE UINT8_TYPE
++#define UINT_LEAST16_TYPE UINT16_TYPE
++#define UINT_LEAST32_TYPE UINT32_TYPE
++#define UINT_LEAST64_TYPE UINT64_TYPE
++
++#define INT_FAST8_TYPE INT8_TYPE
++#define INT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "int" : INT16_TYPE)
++#define INT_FAST32_TYPE INT32_TYPE
++#define INT_FAST64_TYPE INT64_TYPE
++#define UINT_FAST8_TYPE UINT8_TYPE
++#define UINT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "unsigned int" : UINT16_TYPE)
++#define UINT_FAST32_TYPE UINT32_TYPE
++#define UINT_FAST64_TYPE UINT64_TYPE
++
++#define INTPTR_TYPE PTRDIFF_TYPE
++#ifndef UINTPTR_TYPE
++#define UINTPTR_TYPE SIZE_TYPE
++#endif
+--- a/src/gcc/config/avr/libgcc.S
++++ b/src/gcc/config/avr/libgcc.S
+@@ -582,15 +582,6 @@
+ 	push r17
+ 	push r28
+ 	push r29
+-#if defined (__AVR_HAVE_8BIT_SP__)
+-;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
+-;;        so this lines are dead code.  To make it work, devices without
+-;;        SP_H must get their own multilib(s), see PR51345.
+-	in	r28,__SP_L__
+-	sub	r28,r26
+-	clr	r29
+-	out	__SP_L__,r28
+-#else
+ 	in	r28,__SP_L__
+ 	in	r29,__SP_H__
+ 	sub	r28,r26
+@@ -600,7 +591,6 @@
+ 	out	__SP_H__,r29
+ 	out	__SREG__,__tmp_reg__
+ 	out	__SP_L__,r28
+-#endif
+ #if defined (__AVR_HAVE_EIJMP_EICALL__)
+ 	eijmp
+ #else
+@@ -635,15 +625,6 @@
+ 	ldd	r16,Y+4
+ 	ldd	r17,Y+3
+ 	ldd	r26,Y+2
+-#if defined (__AVR_HAVE_8BIT_SP__)
+-;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
+-;;        so this lines are dead code.  To make it work, devices without
+-;;        SP_H must get their own multilib(s).
+-	ldd	r29,Y+1
+-	add	r28,r30
+-	out	__SP_L__,r28
+-	mov	r28, r26
+-#else
+ 	ldd	r27,Y+1
+ 	add	r28,r30
+ 	adc	r29,__zero_reg__
+@@ -654,7 +635,6 @@
+ 	out	__SP_L__,r28
+ 	mov_l	r28, r26
+ 	mov_h	r29, r27
+-#endif
+ 	ret
+ .endfunc
+ #endif /* defined (L_epilogue) */
+--- a/src/gcc/config/bfin/linux-unwind.h
++++ b/src/gcc/config/bfin/linux-unwind.h
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for Blackfin.
+-   Copyright (C) 2007, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -48,10 +48,10 @@
+     {
+       struct rt_sigframe {
+ 	int sig;
+-	struct siginfo *pinfo;
++	siginfo_t *pinfo;
+ 	void *puc;
+ 	char retcode[8];
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+ 
+--- a/src/gcc/config/h8300/h8300.c
++++ b/src/gcc/config/h8300/h8300.c
+@@ -416,7 +416,7 @@
+     }
+ 
+   /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0)
++  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ }
+ 
+--- a/src/gcc/config/host-linux.c
++++ b/src/gcc/config/host-linux.c
+@@ -84,6 +84,8 @@
+ # define TRY_EMPTY_VM_SPACE	0x60000000
+ #elif defined(__mc68000__)
+ # define TRY_EMPTY_VM_SPACE	0x40000000
++#elif defined(__ARM_EABI__)
++# define TRY_EMPTY_VM_SPACE	0x60000000
+ #else
+ # define TRY_EMPTY_VM_SPACE	0
+ #endif
+--- a/src/gcc/config/i386/driver-i386.c
++++ b/src/gcc/config/i386/driver-i386.c
+@@ -397,6 +397,7 @@
+   unsigned int has_pclmul = 0, has_abm = 0, has_lwp = 0;
+   unsigned int has_fma = 0, has_fma4 = 0, has_xop = 0;
+   unsigned int has_bmi = 0, has_tbm = 0;
++  unsigned int has_rdrnd = 0, has_f16c = 0, has_fsgsbase = 0;
+ 
+   bool arch;
+ 
+@@ -444,6 +445,8 @@
+   has_aes = ecx & bit_AES;
+   has_pclmul = ecx & bit_PCLMUL;
+   has_fma = ecx & bit_FMA;
++  has_f16c = ecx & bit_F16C;
++  has_rdrnd = ecx & bit_RDRND;
+ 
+   has_cmpxchg8b = edx & bit_CMPXCHG8B;
+   has_cmov = edx & bit_CMOV;
+@@ -451,6 +454,13 @@
+   has_sse = edx & bit_SSE;
+   has_sse2 = edx & bit_SSE2;
+ 
++  if (max_level >= 7)
++    {
++      __cpuid_count (7, 0, eax, ebx, ecx, edx);
++
++      has_fsgsbase = ebx & bit_FSGSBASE;
++    }
++
+   /* Check cpuid level of extended features.  */
+   __cpuid (0x80000000, ext_level, ebx, ecx, edx);
+ 
+@@ -711,10 +721,13 @@
+       const char *avx = has_avx ? " -mavx" : " -mno-avx";
+       const char *sse4_2 = has_sse4_2 ? " -msse4.2" : " -mno-sse4.2";
+       const char *sse4_1 = has_sse4_1 ? " -msse4.1" : " -mno-sse4.1";
++      const char *rdrnd = has_rdrnd ? " -mrdrnd" : " -mno-rdrnd";
++      const char *f16c = has_f16c ? " -mf16c" : " -mno-f16c";
++      const char *fsgsbase = has_fsgsbase ? " -mfsgsbase" : " -mno-fsgsbase";
+ 
+       options = concat (options, cx16, sahf, movbe, ase, pclmul,
+ 			popcnt, abm, lwp, fma, fma4, xop, bmi, tbm,
+-			avx, sse4_2, sse4_1, NULL);
++			avx, sse4_2, sse4_1, rdrnd, f16c, fsgsbase, NULL);
+     }
+ 
+ done:
+--- a/src/gcc/config/i386/i386.c
++++ b/src/gcc/config/i386/i386.c
+@@ -46,6 +46,7 @@
+ #include "target.h"
+ #include "target-def.h"
+ #include "langhooks.h"
++#include "reload.h"
+ #include "cgraph.h"
+ #include "gimple.h"
+ #include "dwarf2.h"
+@@ -2094,7 +2095,7 @@
+ /* Feature tests against the various architecture variations, used to create
+    ix86_arch_features based on the processor mask.  */
+ static unsigned int initial_ix86_arch_features[X86_ARCH_LAST] = {
+-  /* X86_ARCH_CMOVE: Conditional move was added for pentiumpro.  */
++  /* X86_ARCH_CMOV: Conditional move was added for pentiumpro.  */
+   ~(m_386 | m_486 | m_PENT | m_K6),
+ 
+   /* X86_ARCH_CMPXCHG: Compare and exchange was added for 80486.  */
+@@ -3811,7 +3812,7 @@
+ 	   -mtune (rather than -march) points us to a processor that has them.
+ 	   However, the VIA C3 gives a SIGILL, so we only do that for i686 and
+ 	   higher processors.  */
+-	if (TARGET_CMOVE
++	if (TARGET_CMOV
+ 	    && (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE)))
+ 	  x86_prefetch_sse = true;
+ 	break;
+@@ -4181,12 +4182,6 @@
+       target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
+     }
+ 
+-  /* For sane SSE instruction set generation we need fcomi instruction.
+-     It is safe to enable all CMOVE instructions.  Also, RDRAND intrinsic
+-     expands to a sequence that includes conditional move. */
+-  if (TARGET_SSE || TARGET_RDRND)
+-    TARGET_CMOVE = 1;
+-
+   /* Figure out what ASM_GENERATE_INTERNAL_LABEL builds as a prefix.  */
+   {
+     char *p;
+@@ -12168,6 +12163,64 @@
+   return false;
+ }
+ 
++/* Our implementation of LEGITIMIZE_RELOAD_ADDRESS.  Returns a value to
++   replace the input X, or the original X if no replacement is called for.
++   The output parameter *WIN is 1 if the calling macro should goto WIN,
++   0 if it should not.  */
++
++bool
++ix86_legitimize_reload_address (rtx x,
++				enum machine_mode mode ATTRIBUTE_UNUSED,
++				int opnum, int type,
++				int ind_levels ATTRIBUTE_UNUSED)
++{
++  /* Reload can generate:
++
++     (plus:DI (plus:DI (unspec:DI [(const_int 0 [0])] UNSPEC_TP)
++		       (reg:DI 97))
++	      (reg:DI 2 cx))
++
++     This RTX is rejected from ix86_legitimate_address_p due to
++     non-strictness of base register 97.  Following this rejection, 
++     reload pushes all three components into separate registers,
++     creating invalid memory address RTX.
++
++     Following code reloads only the invalid part of the
++     memory address RTX.  */
++
++  if (GET_CODE (x) == PLUS
++      && REG_P (XEXP (x, 1))
++      && GET_CODE (XEXP (x, 0)) == PLUS
++      && REG_P (XEXP (XEXP (x, 0), 1)))
++    {
++      rtx base, index;
++      bool something_reloaded = false;
++
++      base = XEXP (XEXP (x, 0), 1);      
++      if (!REG_OK_FOR_BASE_STRICT_P (base))
++	{
++	  push_reload (base, NULL_RTX, &XEXP (XEXP (x, 0), 1), NULL,
++		       BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
++		       opnum, (enum reload_type)type);
++	  something_reloaded = true;
++	}
++
++      index = XEXP (x, 1);
++      if (!REG_OK_FOR_INDEX_STRICT_P (index))
++	{
++	  push_reload (index, NULL_RTX, &XEXP (x, 1), NULL,
++		       INDEX_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
++		       opnum, (enum reload_type)type);
++	  something_reloaded = true;
++	}
++
++      gcc_assert (something_reloaded);
++      return true;
++    }
++
++  return false;
++}
++
+ /* Recognizes RTL expressions that are valid memory addresses for an
+    instruction.  The MODE argument is the machine mode for the MEM
+    expression that wants to use this address.
+@@ -27177,8 +27230,8 @@
+       arg_adjust = 0;
+       if (optimize
+ 	  || target == 0
+-	  || GET_MODE (target) != tmode
+-	  || !insn_p->operand[0].predicate (target, tmode))
++	  || !register_operand (target, tmode)
++	  || GET_MODE (target) != tmode)
+ 	target = gen_reg_rtx (tmode);
+     }
+ 
+@@ -31377,9 +31430,9 @@
+ 	  tmp = gen_reg_rtx (GET_MODE_INNER (mode));
+ 	  ix86_expand_vector_extract (true, tmp, target, 1 - elt);
+ 	  if (elt == 0)
+-	    tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
+-	  else
+ 	    tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
++	  else
++	    tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
+ 	  emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
+ 	  return;
+ 	}
+@@ -31393,9 +31446,9 @@
+       tmp = gen_reg_rtx (GET_MODE_INNER (mode));
+       ix86_expand_vector_extract (false, tmp, target, 1 - elt);
+       if (elt == 0)
+-	tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
+-      else
+ 	tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
++      else
++	tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
+       emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
+       return;
+ 
+@@ -32823,7 +32876,8 @@
+         return ix86_cost->cond_not_taken_branch_cost;
+ 
+       case vec_perm:
+-        return 1;
++      case vec_promote_demote:
++        return ix86_cost->vec_stmt_cost;
+ 
+       default:
+         gcc_unreachable ();
+--- a/src/gcc/config/i386/i386.h
++++ b/src/gcc/config/i386/i386.h
+@@ -424,7 +424,7 @@
+ 
+ /* Feature tests against the various architecture variations.  */
+ enum ix86_arch_indices {
+-  X86_ARCH_CMOVE,		/* || TARGET_SSE */
++  X86_ARCH_CMOV,
+   X86_ARCH_CMPXCHG,
+   X86_ARCH_CMPXCHG8B,
+   X86_ARCH_XADD,
+@@ -435,12 +435,17 @@
+ 
+ extern unsigned char ix86_arch_features[X86_ARCH_LAST];
+ 
+-#define TARGET_CMOVE		ix86_arch_features[X86_ARCH_CMOVE]
++#define TARGET_CMOV		ix86_arch_features[X86_ARCH_CMOV]
+ #define TARGET_CMPXCHG		ix86_arch_features[X86_ARCH_CMPXCHG]
+ #define TARGET_CMPXCHG8B	ix86_arch_features[X86_ARCH_CMPXCHG8B]
+ #define TARGET_XADD		ix86_arch_features[X86_ARCH_XADD]
+ #define TARGET_BSWAP		ix86_arch_features[X86_ARCH_BSWAP]
+ 
++/* For sane SSE instruction set generation we need fcomi instruction.
++   It is safe to enable all CMOVE instructions.  Also, RDRAND intrinsic
++   expands to a sequence that includes conditional move. */
++#define TARGET_CMOVE		(TARGET_CMOV || TARGET_SSE || TARGET_RDRND)
++
+ #define TARGET_FISTTP		(TARGET_SSE3 && TARGET_80387)
+ 
+ extern int x86_prefetch_sse;
+@@ -1668,6 +1673,17 @@
+ 
+ #define LEGITIMATE_CONSTANT_P(X)  legitimate_constant_p (X)
+ 
++/* Try a machine-dependent way of reloading an illegitimate address
++   operand.  If we find one, push the reload and jump to WIN.  This
++   macro is used in only one place: `find_reloads_address' in reload.c.  */
++
++#define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, INDL, WIN)	\
++do {									\
++  if (ix86_legitimize_reload_address ((X), (MODE), (OPNUM),		\
++				      (int)(TYPE), (INDL)))		\
++    goto WIN;								\
++} while (0)
++
+ /* If defined, a C expression to determine the base term of address X.
+    This macro is used in only one place: `find_base_term' in alias.c.
+ 
+--- a/src/gcc/config/i386/i386.md
++++ b/src/gcc/config/i386/i386.md
+@@ -233,9 +233,6 @@
+ 
+   ;; For BMI support
+   UNSPEC_BEXTR
+-
+-  ;; For RDRAND support
+-  UNSPEC_RDRAND
+ ])
+ 
+ (define_c_enum "unspecv" [
+@@ -270,6 +267,9 @@
+   UNSPECV_WRFSBASE
+   UNSPECV_WRGSBASE
+   UNSPECV_SPLIT_STACK_RETURN
++
++  ;; For RDRAND support
++  UNSPECV_RDRAND
+ ])
+ 
+ ;; Constants to represent pcomtrue/pcomfalse variants
+@@ -16349,7 +16349,8 @@
+ (define_insn "*x86_mov<mode>cc_0_m1_neg"
+   [(set (match_operand:SWI48 0 "register_operand" "=r")
+ 	(neg:SWI48 (match_operator 1 "ix86_carry_flag_operator"
+-		    [(reg FLAGS_REG) (const_int 0)])))]
++		    [(reg FLAGS_REG) (const_int 0)])))
++   (clobber (reg:CC FLAGS_REG))]
+   ""
+   "sbb{<imodesuffix>}\t%0, %0"
+   [(set_attr "type" "alu")
+@@ -18357,9 +18358,9 @@
+ 
+ (define_insn "rdrand<mode>_1"
+   [(set (match_operand:SWI248 0 "register_operand" "=r")
+-	(unspec:SWI248 [(const_int 0)] UNSPEC_RDRAND))
++	(unspec_volatile:SWI248 [(const_int 0)] UNSPECV_RDRAND))
+    (set (reg:CCC FLAGS_REG)
+-	(unspec:CCC [(const_int 0)] UNSPEC_RDRAND))]
++	(unspec_volatile:CCC [(const_int 0)] UNSPECV_RDRAND))]
+   "TARGET_RDRND"
+   "rdrand\t%0"
+   [(set_attr "type" "other")
+--- a/src/gcc/config/i386/i386-protos.h
++++ b/src/gcc/config/i386/i386-protos.h
+@@ -59,7 +59,8 @@
+ extern bool constant_address_p (rtx);
+ extern bool legitimate_pic_operand_p (rtx);
+ extern bool legitimate_pic_address_disp_p (rtx);
+-
++extern bool ix86_legitimize_reload_address (rtx, enum machine_mode,
++					    int, int, int);
+ extern void print_reg (rtx, int, FILE*);
+ extern void ix86_print_operand (FILE *, rtx, int);
+ 
+--- a/src/gcc/config/i386/linux-unwind.h
++++ b/src/gcc/config/i386/linux-unwind.h
+@@ -1,5 +1,6 @@
+ /* DWARF2 EH unwinding support for AMD x86-64 and x86.
+-   Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2006, 2009, 2010, 2012 Free Software Foundation,
++   Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -133,9 +134,9 @@
+     {
+       struct rt_sigframe {
+ 	int sig;
+-	struct siginfo *pinfo;
++	siginfo_t *pinfo;
+ 	void *puc;
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+--- a/src/gcc/config/i386/sse.md
++++ b/src/gcc/config/i386/sse.md
+@@ -392,18 +392,7 @@
+   DONE;
+ })
+ 
+-(define_expand "avx_movu<ssemodesuffix><avxmodesuffix>"
+-  [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "")
+-	(unspec:AVXMODEF2P
+-	  [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "")]
+-	  UNSPEC_MOVU))]
+-  "AVX_VEC_FLOAT_MODE_P (<MODE>mode)"
+-{
+-  if (MEM_P (operands[0]) && MEM_P (operands[1]))
+-    operands[1] = force_reg (<MODE>mode, operands[1]);
+-})
+-
+-(define_insn "*avx_movu<ssemodesuffix><avxmodesuffix>"
++(define_insn "avx_movu<ssemodesuffix><avxmodesuffix>"
+   [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "=x,m")
+ 	(unspec:AVXMODEF2P
+ 	  [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "xm,x")]
+@@ -429,18 +418,7 @@
+    (set_attr "prefix" "maybe_vex")
+    (set_attr "mode" "TI")])
+ 
+-(define_expand "<sse>_movu<ssemodesuffix>"
+-  [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "")
+-	(unspec:SSEMODEF2P
+-	  [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")]
+-	  UNSPEC_MOVU))]
+-  "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
+-{
+-  if (MEM_P (operands[0]) && MEM_P (operands[1]))
+-    operands[1] = force_reg (<MODE>mode, operands[1]);
+-})
+-
+-(define_insn "*<sse>_movu<ssemodesuffix>"
++(define_insn "<sse>_movu<ssemodesuffix>"
+   [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "=x,m")
+ 	(unspec:SSEMODEF2P
+ 	  [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm,x")]
+@@ -452,18 +430,7 @@
+    (set_attr "movu" "1")
+    (set_attr "mode" "<MODE>")])
+ 
+-(define_expand "avx_movdqu<avxmodesuffix>"
+-  [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "")
+-	(unspec:AVXMODEQI
+-	  [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "")]
+-	  UNSPEC_MOVU))]
+-  "TARGET_AVX"
+-{
+-  if (MEM_P (operands[0]) && MEM_P (operands[1]))
+-    operands[1] = force_reg (<MODE>mode, operands[1]);
+-})
+-
+-(define_insn "*avx_movdqu<avxmodesuffix>"
++(define_insn "avx_movdqu<avxmodesuffix>"
+   [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "=x,m")
+ 	(unspec:AVXMODEQI
+ 	  [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "xm,x")]
+@@ -475,17 +442,7 @@
+    (set_attr "prefix" "vex")
+    (set_attr "mode" "<avxvecmode>")])
+ 
+-(define_expand "sse2_movdqu"
+-  [(set (match_operand:V16QI 0 "nonimmediate_operand" "")
+-	(unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "")]
+-		      UNSPEC_MOVU))]
+-  "TARGET_SSE2"
+-{
+-  if (MEM_P (operands[0]) && MEM_P (operands[1]))
+-    operands[1] = force_reg (V16QImode, operands[1]);
+-})
+-
+-(define_insn "*sse2_movdqu"
++(define_insn "sse2_movdqu"
+   [(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m")
+ 	(unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "xm,x")]
+ 		      UNSPEC_MOVU))]
+@@ -1324,14 +1281,14 @@
+ 		(parallel [(const_int 0)]))
+ 	      (vec_select:DF (match_dup 1) (parallel [(const_int 1)])))
+ 	    (plusminus:DF
+-	      (vec_select:DF (match_dup 1) (parallel [(const_int 2)]))
+-	      (vec_select:DF (match_dup 1) (parallel [(const_int 3)]))))
+-	  (vec_concat:V2DF
+-	    (plusminus:DF
+ 	      (vec_select:DF
+ 		(match_operand:V4DF 2 "nonimmediate_operand" "xm")
+ 		(parallel [(const_int 0)]))
+-	      (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))
++	      (vec_select:DF (match_dup 2) (parallel [(const_int 1)]))))
++	  (vec_concat:V2DF
++	    (plusminus:DF
++	      (vec_select:DF (match_dup 1) (parallel [(const_int 2)]))
++	      (vec_select:DF (match_dup 1) (parallel [(const_int 3)])))
+ 	    (plusminus:DF
+ 	      (vec_select:DF (match_dup 2) (parallel [(const_int 2)]))
+ 	      (vec_select:DF (match_dup 2) (parallel [(const_int 3)]))))))]
+@@ -5058,7 +5015,7 @@
+ 	  (vec_select:DF (match_dup 0) (parallel [(const_int 1)]))))]
+   "TARGET_SSE2 && reload_completed"
+   [(set (match_dup 0) (match_dup 1))]
+-  "operands[0] = adjust_address (operands[0], DFmode, 8);")
++  "operands[0] = adjust_address (operands[0], DFmode, 0);")
+ 
+ ;; Not sure these two are ever used, but it doesn't hurt to have
+ ;; them. -aoliva
+@@ -12095,7 +12052,7 @@
+ 	  (unspec:V8SF [(match_operand:V8HI 1 "register_operand" "x")]
+ 		       UNSPEC_VCVTPH2PS)
+ 	  (parallel [(const_int 0) (const_int 1)
+-		     (const_int 1) (const_int 2)])))]
++		     (const_int 2) (const_int 3)])))]
+   "TARGET_F16C"
+   "vcvtph2ps\t{%1, %0|%0, %1}"
+   [(set_attr "type" "ssecvt")
+--- a/src/gcc/config/ia64/linux-unwind.h
++++ b/src/gcc/config/ia64/linux-unwind.h
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for IA64 Linux.
+-   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
+ 
+    This file is part of GCC.
+ 
+@@ -47,7 +47,7 @@
+       struct sigframe {
+ 	char scratch[16];
+ 	unsigned long sig_number;
+-	struct siginfo *info;
++	siginfo_t *info;
+ 	struct sigcontext *sc;
+       } *frame_ = (struct sigframe *)context->psp;
+       struct sigcontext *sc = frame_->sc;
+@@ -137,7 +137,7 @@
+       struct sigframe {
+ 	char scratch[16];
+ 	unsigned long sig_number;
+-	struct siginfo *info;
++	siginfo_t *info;
+ 	struct sigcontext *sc;
+       } *frame = (struct sigframe *)context->psp;
+       struct sigcontext *sc = frame->sc;
+--- a/src/gcc/config/m32c/m32c.c
++++ b/src/gcc/config/m32c/m32c.c
+@@ -447,7 +447,7 @@
+     flag_ivopts = 0;
+ 
+   /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0)
++  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ 
+   /* r8c/m16c have no 16-bit indirect call, so thunks are involved.
+--- a/src/gcc/config/mips/linux-unwind.h
++++ b/src/gcc/config/mips/linux-unwind.h
+@@ -1,5 +1,6 @@
+ /* DWARF2 EH unwinding support for MIPS Linux.
+-   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2012 Free Software
++   Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -75,7 +76,7 @@
+       struct rt_sigframe {
+ 	u_int32_t ass[4];  /* Argument save space for o32.  */
+ 	u_int32_t trampoline[2];
+-	struct siginfo info;
++	siginfo_t info;
+ 	_sig_ucontext_t uc;
+       } *rt_ = context->cfa;
+       sc = &rt_->uc.uc_mcontext;
+--- a/src/gcc/config/mn10300/mn10300.c
++++ b/src/gcc/config/mn10300/mn10300.c
+@@ -2505,12 +2505,15 @@
+    may access it using GOTOFF instead of GOT.  */
+ 
+ static void
+-mn10300_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
++mn10300_encode_section_info (tree decl, rtx rtl, int first)
+ {
+   rtx symbol;
+ 
++  default_encode_section_info (decl, rtl, first);
++
+   if (! MEM_P (rtl))
+     return;
++
+   symbol = XEXP (rtl, 0);
+   if (GET_CODE (symbol) != SYMBOL_REF)
+     return;
+--- a/src/gcc/config/pa/linux-unwind.h
++++ b/src/gcc/config/pa/linux-unwind.h
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for PA Linux.
+-   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -63,7 +63,7 @@
+   int i;
+   struct sigcontext *sc;
+   struct rt_sigframe {
+-    struct siginfo info;
++    siginfo_t info;
+     struct ucontext uc;
+   } *frame;
+ 
+--- a/src/gcc/config/pa/pa.c
++++ b/src/gcc/config/pa/pa.c
+@@ -185,6 +185,7 @@
+ static void pa_conditional_register_usage (void);
+ static enum machine_mode pa_c_mode_for_suffix (char);
+ static section *pa_function_section (tree, enum node_frequency, bool, bool);
++static unsigned int pa_section_type_flags (tree, const char *, int);
+ 
+ /* The following extra sections are only used for SOM.  */
+ static GTY(()) section *som_readonly_data_section;
+@@ -400,6 +401,9 @@
+ #undef TARGET_ASM_FUNCTION_SECTION
+ #define TARGET_ASM_FUNCTION_SECTION pa_function_section
+ 
++#undef TARGET_SECTION_TYPE_FLAGS
++#define TARGET_SECTION_TYPE_FLAGS pa_section_type_flags
++
+ struct gcc_target targetm = TARGET_INITIALIZER;
+ 
+ /* Parse the -mfixed-range= option string.  */
+@@ -4442,6 +4446,24 @@
+     }
+ }
+ 
++bool
++pa_can_use_return_insn (void)
++{
++  if (!reload_completed)
++    return false;
++
++  if (frame_pointer_needed)
++    return false;
++
++  if (df_regs_ever_live_p (2))
++    return false;
++
++  if (crtl->profile)
++    return false;
++
++  return compute_frame_size (get_frame_size (), 0) == 0;
++}
++
+ rtx
+ hppa_pic_save_rtx (void)
+ {
+@@ -4586,7 +4608,7 @@
+   rtx saved_rp;
+   rtx ins;
+ 
+-  /* Instruction stream at the normal return address for the export stub:
++  /* The instruction stream at the return address of a PA1.X export stub is:
+ 
+ 	0x4bc23fd1 | stub+8:   ldw -18(sr0,sp),rp
+ 	0x004010a1 | stub+12:  ldsid (sr0,rp),r1
+@@ -4594,10 +4616,16 @@
+ 	0xe0400002 | stub+20:  be,n 0(sr0,rp)
+ 
+      0xe0400002 must be specified as -532676606 so that it won't be
+-     rejected as an invalid immediate operand on 64-bit hosts.  */
++     rejected as an invalid immediate operand on 64-bit hosts.
+ 
+-  HOST_WIDE_INT insns[4] = {0x4bc23fd1, 0x004010a1, 0x00011820, -532676606};
+-  int i;
++     The instruction stream at the return address of a PA2.0 export stub is:
++
++	0x4bc23fd1 | stub+8:   ldw -18(sr0,sp),rp
++	0xe840d002 | stub+12:  bve,n (rp)
++  */
++
++  HOST_WIDE_INT insns[4];
++  int i, len;
+ 
+   if (count != 0)
+     return NULL_RTX;
+@@ -4620,11 +4648,26 @@
+   ins = copy_to_reg (gen_rtx_AND (Pmode, rp, MASK_RETURN_ADDR));
+   label = gen_label_rtx ();
+ 
++  if (TARGET_PA_20)
++    {
++      insns[0] = 0x4bc23fd1;
++      insns[1] = -398405630;
++      len = 2;
++    }
++  else
++    {
++      insns[0] = 0x4bc23fd1;
++      insns[1] = 0x004010a1;
++      insns[2] = 0x00011820;
++      insns[3] = -532676606;
++      len = 4;
++    }
++
+   /* Check the instruction stream at the normal return address for the
+      export stub.  If it is an export stub, than our return address is
+      really in -24[frameaddr].  */
+ 
+-  for (i = 0; i < 3; i++)
++  for (i = 0; i < len; i++)
+     {
+       rtx op0 = gen_rtx_MEM (SImode, plus_constant (ins, i * 4)); 
+       rtx op1 = GEN_INT (insns[i]);
+@@ -7501,7 +7544,7 @@
+     return 24;
+   else
+     {
+-      if (!TARGET_LONG_CALLS && distance < 240000)
++      if (!TARGET_LONG_CALLS && distance < MAX_PCREL17F_OFFSET)
+ 	return 8;
+ 
+       if (TARGET_LONG_ABS_CALL && !flag_pic)
+@@ -7714,7 +7757,7 @@
+   /* pc-relative branch.  */
+   if (!TARGET_LONG_CALLS
+       && ((TARGET_PA_20 && !sibcall && distance < 7600000)
+-	  || distance < 240000))
++	  || distance < MAX_PCREL17F_OFFSET))
+     length += 8;
+ 
+   /* 64-bit plabel sequence.  */
+@@ -8073,7 +8116,7 @@
+   if (TARGET_FAST_INDIRECT_CALLS
+       || (!TARGET_PORTABLE_RUNTIME
+ 	  && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000)
+-	      || distance < 240000)))
++	      || distance < MAX_PCREL17F_OFFSET)))
+     return 8;
+ 
+   if (flag_pic)
+@@ -10392,4 +10435,23 @@
+   return default_function_section (decl, freq, startup, exit);
+ }
+ 
++/* Implement TARGET_SECTION_TYPE_FLAGS.  */
++
++static unsigned int
++pa_section_type_flags (tree decl, const char *name, int reloc)
++{
++  unsigned int flags;
++
++  flags = default_section_type_flags (decl, name, reloc);
++
++  /* Function labels are placed in the constant pool.  This can
++     cause a section conflict if decls are put in ".data.rel.ro"
++     or ".data.rel.ro.local" using the __attribute__ construct.  */
++  if (strcmp (name, ".data.rel.ro") == 0
++      || strcmp (name, ".data.rel.ro.local") == 0)
++    flags |= SECTION_WRITE | SECTION_RELRO;
++
++  return flags;
++}
++
+ #include "gt-pa.h"
+--- a/src/gcc/config/pa/pa.h
++++ b/src/gcc/config/pa/pa.h
+@@ -1563,3 +1563,12 @@
+ #undef TARGET_HAVE_TLS
+ #define TARGET_HAVE_TLS true
+ #endif
++
++/* The maximum offset in bytes for a PA 1.X pc-relative call to the
++   head of the preceding stub table.  The selected offsets have been
++   chosen so that approximately one call stub is allocated for every
++   86.7 instructions.  A long branch stub is two instructions when
++   not generating PIC code.  For HP-UX and ELF targets, PIC stubs are
++   seven and four instructions, respectively.  */  
++#define MAX_PCREL17F_OFFSET \
++  (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000)
+--- a/src/gcc/config/pa/pa.md
++++ b/src/gcc/config/pa/pa.md
+@@ -6348,7 +6348,7 @@
+   ""
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  unsigned HOST_WIDE_INT x = UINTVAL (operands[1]);
+   operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1));
+   operands[1] = GEN_INT ((x & 0xf) - 0x10);
+   return \"{zvdepi %1,%2,%0|depwi,z %1,%%sar,%2,%0}\";
+@@ -6366,7 +6366,7 @@
+   "exact_log2 (INTVAL (operands[1]) + 1) > 0"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  HOST_WIDE_INT x = INTVAL (operands[1]);
+   operands[2] = GEN_INT (exact_log2 (x + 1));
+   return \"{vdepi -1,%2,%0|depwi -1,%%sar,%2,%0}\";
+ }"
+@@ -6383,7 +6383,7 @@
+   "INTVAL (operands[1]) == -2"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  HOST_WIDE_INT x = INTVAL (operands[1]);
+   operands[2] = GEN_INT (exact_log2 ((~x) + 1));
+   return \"{vdepi 0,%2,%0|depwi 0,%%sar,%2,%0}\";
+ }"
+@@ -6447,7 +6447,7 @@
+   "TARGET_64BIT"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  unsigned HOST_WIDE_INT x = UINTVAL (operands[1]);
+   operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1));
+   operands[1] = GEN_INT ((x & 0x1f) - 0x20);
+   return \"depdi,z %1,%%sar,%2,%0\";
+@@ -6465,7 +6465,7 @@
+   "TARGET_64BIT && exact_log2 (INTVAL (operands[1]) + 1) > 0"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  HOST_WIDE_INT x = INTVAL (operands[1]);
+   operands[2] = GEN_INT (exact_log2 (x + 1));
+   return \"depdi -1,%%sar,%2,%0\";
+ }"
+@@ -6482,7 +6482,7 @@
+   "TARGET_64BIT && INTVAL (operands[1]) == -2"
+   "*
+ {
+-  int x = INTVAL (operands[1]);
++  HOST_WIDE_INT x = INTVAL (operands[1]);
+   operands[2] = GEN_INT (exact_log2 ((~x) + 1));
+   return \"depdi 0,%%sar,%2,%0\";
+ }"
+@@ -6671,6 +6671,20 @@
+ 
+ ;; Unconditional and other jump instructions.
+ 
++;; Trivial return used when no epilogue is needed.
++(define_insn "return"
++  [(return)
++   (use (reg:SI 2))]
++  "pa_can_use_return_insn ()"
++  "*
++{
++  if (TARGET_PA_20)
++    return \"bve%* (%%r2)\";
++  return \"bv%* %%r0(%%r2)\";
++}"
++  [(set_attr "type" "branch")
++   (set_attr "length" "4")])
++
+ ;; This is used for most returns.
+ (define_insn "return_internal"
+   [(return)
+@@ -6719,11 +6733,8 @@
+   rtx x;
+ 
+   /* Try to use the trivial return first.  Else use the full epilogue.  */
+-  if (reload_completed
+-      && !frame_pointer_needed
+-      && !df_regs_ever_live_p (2)
+-      && (compute_frame_size (get_frame_size (), 0) ? 0 : 1))
+-    x = gen_return_internal ();
++  if (pa_can_use_return_insn ())
++    x = gen_return ();
+   else
+     {
+       hppa_expand_epilogue ();
+--- a/src/gcc/config/pa/pa-protos.h
++++ b/src/gcc/config/pa/pa-protos.h
+@@ -136,6 +136,7 @@
+ extern int cint_ok_for_move (HOST_WIDE_INT);
+ extern void hppa_expand_prologue (void);
+ extern void hppa_expand_epilogue (void);
++extern bool pa_can_use_return_insn (void);
+ extern int ior_mask_p (unsigned HOST_WIDE_INT);
+ extern void compute_zdepdi_operands (unsigned HOST_WIDE_INT,
+ 				     unsigned *);
+--- a/src/gcc/config/pa/predicates.md
++++ b/src/gcc/config/pa/predicates.md
+@@ -421,9 +421,9 @@
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "cint_ior_operand")))
+ 
+-;; True iff OP is a CONST_INT of the forms 0...0xxxx or
+-;; 0...01...1xxxx. Such values can be the left hand side x in (x <<
+-;; r), using the zvdepi instruction.
++;; True iff OP is a CONST_INT of the forms 0...0xxxx, 0...01...1xxxx,
++;; or 1...1xxxx. Such values can be the left hand side x in (x << r),
++;; using the zvdepi instruction.
+ 
+ (define_predicate "lhs_lshift_cint_operand"
+   (match_code "const_int")
+--- a/src/gcc/config/rs6000/altivec.md
++++ b/src/gcc/config/rs6000/altivec.md
+@@ -2394,8 +2394,8 @@
+ 
+ (define_insn "altivec_stvlx"
+   [(parallel
+-    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
+-	  (match_operand:V4SI 1 "register_operand" "v"))
++    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
++	  (match_operand:V16QI 1 "register_operand" "v"))
+      (unspec [(const_int 0)] UNSPEC_STVLX)])]
+   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
+   "stvlx %1,%y0"
+@@ -2403,8 +2403,8 @@
+ 
+ (define_insn "altivec_stvlxl"
+   [(parallel
+-    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
+-	  (match_operand:V4SI 1 "register_operand" "v"))
++    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
++	  (match_operand:V16QI 1 "register_operand" "v"))
+      (unspec [(const_int 0)] UNSPEC_STVLXL)])]
+   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
+   "stvlxl %1,%y0"
+@@ -2412,8 +2412,8 @@
+ 
+ (define_insn "altivec_stvrx"
+   [(parallel
+-    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
+-	  (match_operand:V4SI 1 "register_operand" "v"))
++    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
++	  (match_operand:V16QI 1 "register_operand" "v"))
+      (unspec [(const_int 0)] UNSPEC_STVRX)])]
+   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
+   "stvrx %1,%y0"
+@@ -2421,8 +2421,8 @@
+ 
+ (define_insn "altivec_stvrxl"
+   [(parallel
+-    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
+-	  (match_operand:V4SI 1 "register_operand" "v"))
++    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
++	  (match_operand:V16QI 1 "register_operand" "v"))
+      (unspec [(const_int 0)] UNSPEC_STVRXL)])]
+   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
+   "stvrxl %1,%y0"
+--- a/src/gcc/config/rs6000/rs6000.c
++++ b/src/gcc/config/rs6000/rs6000.c
+@@ -3695,12 +3695,23 @@
+       case vec_to_scalar:
+       case scalar_to_vec:
+       case cond_branch_not_taken:
+-      case vec_perm:
+         return 1;
+ 
+       case cond_branch_taken:
+         return 3;
+ 
++      case vec_perm:
++	if (TARGET_VSX)
++	  return 4;
++	else
++	  return 1;
++
++      case vec_promote_demote:
++	if (TARGET_VSX)
++	  return 5;
++	else
++	  return 1;
++
+       case unaligned_load:
+         if (TARGET_VSX && TARGET_ALLOW_MOVMISALIGN)
+           {
+@@ -5135,7 +5146,9 @@
+   for (i = 0; i < n_elts; ++i)
+     {
+       x = XVECEXP (vals, 0, i);
+-      if (!CONSTANT_P (x))
++      if (!(CONST_INT_P (x)
++	    || GET_CODE (x) == CONST_DOUBLE
++	    || GET_CODE (x) == CONST_FIXED))
+ 	++n_var;
+     }
+   if (n_var == 0)
+@@ -5287,7 +5300,9 @@
+   for (i = 0; i < n_elts; ++i)
+     {
+       x = XVECEXP (vals, 0, i);
+-      if (!CONSTANT_P (x))
++      if (!(CONST_INT_P (x)
++	    || GET_CODE (x) == CONST_DOUBLE
++	    || GET_CODE (x) == CONST_FIXED))
+ 	++n_var, one_var = i;
+       else if (x != CONST0_RTX (inner_mode))
+ 	all_const_zero = false;
+@@ -15811,7 +15826,6 @@
+ print_operand (FILE *file, rtx x, int code)
+ {
+   int i;
+-  HOST_WIDE_INT val;
+   unsigned HOST_WIDE_INT uval;
+ 
+   switch (code)
+@@ -16252,34 +16266,17 @@
+ 
+     case 'W':
+       /* MB value for a PowerPC64 rldic operand.  */
+-      val = (GET_CODE (x) == CONST_INT
+-	     ? INTVAL (x) : CONST_DOUBLE_HIGH (x));
+-
+-      if (val < 0)
+-	i = -1;
+-      else
+-	for (i = 0; i < HOST_BITS_PER_WIDE_INT; i++)
+-	  if ((val <<= 1) < 0)
+-	    break;
++      i = clz_hwi (GET_CODE (x) == CONST_INT
++		   ? INTVAL (x) : CONST_DOUBLE_HIGH (x));
+ 
+ #if HOST_BITS_PER_WIDE_INT == 32
+-      if (GET_CODE (x) == CONST_INT && i >= 0)
++      if (GET_CODE (x) == CONST_INT && i > 0)
+ 	i += 32;  /* zero-extend high-part was all 0's */
+       else if (GET_CODE (x) == CONST_DOUBLE && i == 32)
+-	{
+-	  val = CONST_DOUBLE_LOW (x);
+-
+-	  gcc_assert (val);
+-	  if (val < 0)
+-	    --i;
+-	  else
+-	    for ( ; i < 64; i++)
+-	      if ((val <<= 1) < 0)
+-		break;
+-	}
++	i = clz_hwi (CONST_DOUBLE_LOW (x)) + 32;
+ #endif
+ 
+-      fprintf (file, "%d", i + 1);
++      fprintf (file, "%d", i);
+       return;
+ 
+     case 'x':
+@@ -17229,6 +17226,10 @@
+     case EQ:
+     case GT:
+     case GTU:
++    case ORDERED:
++    case UNORDERED:
++    case UNEQ:
++    case LTGT:
+       mask = gen_reg_rtx (mode);
+       emit_insn (gen_rtx_SET (VOIDmode,
+ 			      mask,
+--- a/src/gcc/config/rs6000/rs6000.h
++++ b/src/gcc/config/rs6000/rs6000.h
+@@ -469,10 +469,11 @@
+ /* ISA 2.01 allowed FCFID to be done in 32-bit, previously it was 64-bit only.
+    Enable 32-bit fcfid's on any of the switches for newer ISA machines or
+    XILINX.  */
+-#define TARGET_FCFID	(TARGET_POWERPC64 \
+-			 || TARGET_POPCNTB	/* ISA 2.02 */ \
+-			 || TARGET_CMPB		/* ISA 2.05 */ \
+-			 || TARGET_POPCNTD	/* ISA 2.06 */ \
++#define TARGET_FCFID	(TARGET_POWERPC64				\
++			 || TARGET_PPC_GPOPT	/* 970/power4 */	\
++			 || TARGET_POPCNTB	/* ISA 2.02 */		\
++			 || TARGET_CMPB		/* ISA 2.05 */		\
++			 || TARGET_POPCNTD	/* ISA 2.06 */		\
+ 			 || TARGET_XILINX_FPU)
+ 
+ #define TARGET_FCTIDZ	TARGET_FCFID
+--- a/src/gcc/config/rs6000/rs6000.md
++++ b/src/gcc/config/rs6000/rs6000.md
+@@ -2524,7 +2524,18 @@
+   if (GET_CODE (addr1) == PLUS)
+     {
+       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
+-      addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
++      if (TARGET_AVOID_XFORM)
++	{
++	  emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
++	  addr2 = op2;
++	}
++      else
++	addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
++    }
++  else if (TARGET_AVOID_XFORM)
++    {
++      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
++      addr2 = op2;
+     }
+   else
+     {
+@@ -2574,7 +2585,18 @@
+   if (GET_CODE (addr1) == PLUS)
+     {
+       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
+-      addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
++      if (TARGET_AVOID_XFORM)
++	{
++	  emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
++	  addr2 = op2;
++	}
++      else
++	addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
++    }
++  else if (TARGET_AVOID_XFORM)
++    {
++      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
++      addr2 = op2;
+     }
+   else
+     {
+@@ -2655,7 +2677,18 @@
+   if (GET_CODE (addr1) == PLUS)
+     {
+       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
+-      addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
++      if (TARGET_AVOID_XFORM)
++	{
++	  emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
++	  addr2 = op2;
++	}
++      else
++	addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
++    }
++  else if (TARGET_AVOID_XFORM)
++    {
++      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
++      addr2 = op2;
+     }
+   else
+     {
+@@ -2700,7 +2733,18 @@
+   if (GET_CODE (addr1) == PLUS)
+     {
+       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
+-      addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
++      if (TARGET_AVOID_XFORM)
++	{
++	  emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
++	  addr2 = op2;
++	}
++      else
++	addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
++    }
++  else if (TARGET_AVOID_XFORM)
++    {
++      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
++      addr2 = op2;
+     }
+   else
+     {
+--- a/src/gcc/config/rs6000/vector.md
++++ b/src/gcc/config/rs6000/vector.md
+@@ -448,6 +448,94 @@
+   "VECTOR_UNIT_ALTIVEC_P (<MODE>mode)"
+   "")
+ 
++(define_insn_and_split "*vector_uneq<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++	(uneq:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++		    (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++	(gt:VEC_F (match_dup 1)
++		  (match_dup 2)))
++   (set (match_dup 4)
++	(gt:VEC_F (match_dup 2)
++		  (match_dup 1)))
++   (set (match_dup 0)
++	(not:VEC_F (ior:VEC_F (match_dup 3)
++			      (match_dup 4))))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_ltgt<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++	(ltgt:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++		    (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++	(gt:VEC_F (match_dup 1)
++		  (match_dup 2)))
++   (set (match_dup 4)
++	(gt:VEC_F (match_dup 2)
++		  (match_dup 1)))
++   (set (match_dup 0)
++	(ior:VEC_F (match_dup 3)
++		   (match_dup 4)))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_ordered<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++	(ordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++		       (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++	(ge:VEC_F (match_dup 1)
++		  (match_dup 2)))
++   (set (match_dup 4)
++	(ge:VEC_F (match_dup 2)
++		  (match_dup 1)))
++   (set (match_dup 0)
++	(ior:VEC_F (match_dup 3)
++		   (match_dup 4)))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_unordered<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++	(unordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++			 (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++	(ge:VEC_F (match_dup 1)
++		  (match_dup 2)))
++   (set (match_dup 4)
++	(ge:VEC_F (match_dup 2)
++		  (match_dup 1)))
++   (set (match_dup 0)
++	(not:VEC_F (ior:VEC_F (match_dup 3)
++			      (match_dup 4))))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
+ ;; Note the arguments for __builtin_altivec_vsel are op2, op1, mask
+ ;; which is in the reverse order that we want
+ (define_expand "vector_select_<mode>"
+--- a/src/gcc/config/rs6000/vsx.md
++++ b/src/gcc/config/rs6000/vsx.md
+@@ -1006,9 +1006,9 @@
+   "VECTOR_MEM_VSX_P (<MODE>mode)"
+ {
+   if (INTVAL (operands[3]) == 0)
+-    return \"xxpermdi %x0,%x1,%x2,1\";
++    return \"xxpermdi %x0,%x2,%x1,1\";
+   else if (INTVAL (operands[3]) == 1)
+-    return \"xxpermdi %x0,%x2,%x1,0\";
++    return \"xxpermdi %x0,%x1,%x2,0\";
+   else
+     gcc_unreachable ();
+ }
+--- a/src/gcc/config/rx/rx.c
++++ b/src/gcc/config/rx/rx.c
+@@ -2348,7 +2348,7 @@
+ rx_option_override (void)
+ {
+   /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0)
++  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ 
+   rx_override_options_after_change ();
+--- a/src/gcc/config/sh/linux-unwind.h
++++ b/src/gcc/config/sh/linux-unwind.h
+@@ -1,5 +1,6 @@
+ /* DWARF2 EH unwinding support for SH Linux.
+-   Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2004, 2005, 2006, 2007, 2009, 2012 Free Software Foundation,
++   Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -80,9 +81,9 @@
+ 	   && (*(unsigned long *) (pc+11)  == 0x6ff0fff0))
+     {
+       struct rt_sigframe {
+-	struct siginfo *pinfo;
++	siginfo_t *pinfo;
+ 	void *puc;
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+@@ -179,7 +180,7 @@
+ 		&& (*(unsigned short *) (pc+14)  == 0x00ad))))
+     {
+       struct rt_sigframe {
+-	struct siginfo info;
++	siginfo_t info;
+ 	struct ucontext uc;
+       } *rt_ = context->cfa;
+       /* The void * cast is necessary to avoid an aliasing warning.
+--- a/src/gcc/config/sh/sh.c
++++ b/src/gcc/config/sh/sh.c
+@@ -763,11 +763,6 @@
+   SUBTARGET_OVERRIDE_OPTIONS;
+   if (optimize > 1 && !optimize_size)
+     target_flags |= MASK_SAVE_ALL_TARGET_REGS;
+-  if (flag_finite_math_only == 2)
+-    flag_finite_math_only
+-      = !flag_signaling_nans && TARGET_SH2E && ! TARGET_IEEE;
+-  if (TARGET_SH2E && !flag_finite_math_only)
+-    target_flags |= MASK_IEEE;
+   sh_cpu = PROCESSOR_SH1;
+   assembler_dialect = 0;
+   if (TARGET_SH2)
+@@ -911,8 +906,6 @@
+     if (! VALID_REGISTER_P (ADDREGNAMES_REGNO (regno)))
+       sh_additional_register_names[regno][0] = '\0';
+ 
+-  flag_omit_frame_pointer = (PREFERRED_DEBUGGING_TYPE == DWARF2_DEBUG);
+-
+   if ((flag_pic && ! TARGET_PREFERGOT)
+       || (TARGET_SHMEDIA && !TARGET_PT_FIXED))
+     flag_no_function_cse = 1;
+@@ -944,22 +937,17 @@
+ 	flag_schedule_insns = 0;
+     }
+ 
+-    if ((target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) == 0)
+-       target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
+-
+   /* Unwind info is not correct around the CFG unless either a frame 
+      pointer is present or M_A_O_A is set.  Fixing this requires rewriting 
+      unwind info generation to be aware of the CFG and propagating states 
+      around edges.  */
+   if ((flag_unwind_tables || flag_asynchronous_unwind_tables
+        || flag_exceptions || flag_non_call_exceptions)   
+-      && flag_omit_frame_pointer
+-      && !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS))
++      && flag_omit_frame_pointer && !TARGET_ACCUMULATE_OUTGOING_ARGS)
+     {
+-      if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS)
+ 	warning (0, "unwind tables currently require either a frame pointer "
+ 		 "or -maccumulate-outgoing-args for correctness");
+-      target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
++	TARGET_ACCUMULATE_OUTGOING_ARGS = 1;
+     }
+ 
+   /* Unwinding with -freorder-blocks-and-partition does not work on this
+@@ -1014,11 +1002,16 @@
+ 	align_functions = min_align;
+     }
+ 
++  /* If the -mieee option was not explicitly set by the user, turn it on
++     unless -ffinite-math-only was specified.  See also PR 33135.  */
++  if (! global_options_set.x_TARGET_IEEE)
++    TARGET_IEEE = ! flag_finite_math_only;
++
+   if (sh_fixed_range_str)
+     sh_fix_range (sh_fixed_range_str);
+ 
+   /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0)
++  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ }
+ 
+--- a/src/gcc/config/sh/sh.opt
++++ b/src/gcc/config/sh/sh.opt
+@@ -202,7 +202,7 @@
+ Generate FPU-less SHcompact code
+ 
+ maccumulate-outgoing-args
+-Target Report Mask(ACCUMULATE_OUTGOING_ARGS)
++Target Report Var(TARGET_ACCUMULATE_OUTGOING_ARGS) Init(1)
+ Reserve space for outgoing arguments in the function prologue
+ 
+ madjust-unroll
+@@ -270,8 +270,8 @@
+ Follow Renesas (formerly Hitachi) / SuperH calling conventions
+ 
+ mieee
+-Target Report Mask(IEEE)
+-Increase the IEEE compliance for floating-point code
++Target Var(TARGET_IEEE)
++Increase the IEEE compliance for floating-point comparisons
+ 
+ mindexed-addressing
+ Target Report Mask(ALLOW_INDEXED_ADDRESS) Condition(SUPPORT_ANY_SH5_32MEDIA)
+--- a/src/gcc/config/sparc/sparc.c
++++ b/src/gcc/config/sparc/sparc.c
+@@ -3658,13 +3658,17 @@
+ {
+   x = delegitimize_mem_from_attrs (x);
+ 
+-  if (GET_CODE (x) == LO_SUM
+-      && GET_CODE (XEXP (x, 1)) == UNSPEC
+-      && XINT (XEXP (x, 1), 1) == UNSPEC_TLSLE)
+-    {
+-      x = XVECEXP (XEXP (x, 1), 0, 0);
+-      gcc_assert (GET_CODE (x) == SYMBOL_REF);
+-    }
++  if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 1)) == UNSPEC)
++    switch (XINT (XEXP (x, 1), 1))
++      {
++      case UNSPEC_MOVE_PIC:
++      case UNSPEC_TLSLE:
++	x = XVECEXP (XEXP (x, 1), 0, 0);
++	gcc_assert (GET_CODE (x) == SYMBOL_REF);
++	break;
++      default:
++	break;
++      }
+ 
+   return x;
+ }
+@@ -9634,6 +9638,7 @@
+ 						       void_list_node));
+ 	  DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL,
+ 					   NULL_TREE, void_type_node);
++	  TREE_PUBLIC (decl) = 1;
+ 	  TREE_STATIC (decl) = 1;
+ 	  make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl));
+ 	  DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
+--- a/src/gcc/config/spu/spu.c
++++ b/src/gcc/config/spu/spu.c
+@@ -6794,6 +6794,7 @@
+       case scalar_to_vec:
+       case cond_branch_not_taken:
+       case vec_perm:
++      case vec_promote_demote:
+         return 1;
+ 
+       case scalar_store:
+--- a/src/gcc/config/xtensa/linux-unwind.h
++++ b/src/gcc/config/xtensa/linux-unwind.h
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for Xtensa.
+-   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
++   Copyright (C) 2008, 2009, 2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -62,7 +62,7 @@
+   struct sigcontext *sc;
+ 
+   struct rt_sigframe {
+-    struct siginfo info;
++    siginfo_t info;
+     struct ucontext uc;
+   } *rt_;
+ 
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -177,7 +177,12 @@
+ #  configure_default_options
+ #			Set to an initializer for configure_default_options
+ #			in configargs.h, based on --with-cpu et cetera.
+-
++#
++#  target_type_format_char 
++#  			The default character to be used for formatting
++#			the attribute in a
++#			.type symbol_name, ${t_t_f_c}<property>
++#			directive.
+ # The following variables are used in each case-construct to build up the
+ # outgoing variables:
+ #
+@@ -219,6 +224,7 @@
+ target_gtfiles=
+ need_64bit_hwint=
+ need_64bit_isa=
++target_type_format_char='@'
+ 
+ # Don't carry these over build->host->target.  Please.
+ xm_file=
+@@ -312,6 +318,7 @@
+ arm*-*-*)
+ 	cpu_type=arm
+ 	extra_headers="mmintrin.h arm_neon.h"
++	target_type_format_char='%'
+ 	c_target_objs="arm-c.o"
+ 	cxx_target_objs="arm-c.o"
+ 	;;
+@@ -817,7 +824,7 @@
+ arm*-*-linux*)			# ARM GNU/Linux with ELF
+ 	tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
+ 	case $target in
+-	arm*b-*)
++	arm*b-*-linux*)
+ 		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
+ 		;;
+ 	esac
+@@ -925,7 +932,7 @@
+ 	extra_objs="avr-devices.o"
+ 	;;
+ avr-*-*)
+-	tm_file="avr/avr.h dbxelf.h newlib-stdint.h"
++	tm_file="avr/avr.h dbxelf.h avr/avr-stdint.h"
+ 	use_gcc_stdint=wrap
+ 	extra_gcc_objs="driver-avr.o avr-devices.o"
+ 	extra_objs="avr-devices.o"
+--- a/src/gcc/config.host
++++ b/src/gcc/config.host
+@@ -100,6 +100,14 @@
+ esac
+ 
+ case ${host} in
++  arm*-*-linux*)
++    case ${target} in
++      arm*-*-*)
++	host_extra_gcc_objs="driver-arm.o"
++	host_xmake_file="${host_xmake_file} arm/x-arm"
++	;;
++    esac
++    ;;
+   alpha*-*-linux*)
+     case ${target} in
+       alpha*-*-linux*)
+--- a/src/gcc/configure
++++ b/src/gcc/configure
+@@ -1647,7 +1647,8 @@
+                           use sysroot as the system root during the build
+   --with-sysroot=DIR Search for usr/lib, usr/include, et al, within DIR.
+   --with-specs=SPECS      add SPECS to driver command-line processing
+-  --with-pkgversion=PKG   Use PKG in the version string in place of "GCC"
++  --with-pkgversion=PKG   Use PKG in the version string in place of "Linaro
++                          GCC `cat $srcdir/LINARO-VERSION`"
+   --with-bugurl=URL       Direct users to URL to report a bug
+   --with-multilib-list    Select multilibs (SH only)
+   --with-gnu-ld           assume the C compiler uses GNU ld default=no
+@@ -4842,7 +4843,7 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5
+ $as_echo "$acx_cv_cc_gcc_supports_ada" >&6; }
+ 
+-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
++if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
+   have_gnat=yes
+ else
+   have_gnat=no
+@@ -7129,7 +7130,7 @@
+       *)   PKGVERSION="($withval) " ;;
+      esac
+ else
+-  PKGVERSION="(GCC) "
++  PKGVERSION="(Linaro GCC `cat $srcdir/LINARO-VERSION`) "
+ 
+ fi
+ 
+@@ -17495,7 +17496,7 @@
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 17498 "configure"
++#line 17499 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -17601,7 +17602,7 @@
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 17604 "configure"
++#line 17605 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -25227,7 +25228,7 @@
+   then gcc_cv_as_gnu_unique_object=yes
+ fi
+   elif test x$gcc_cv_as != x; then
+-    echo '.type foo, @gnu_unique_object' > conftest.s
++    echo '.type foo, '$target_type_format_char'gnu_unique_object' > conftest.s
+     if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
+   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+   (eval $ac_try) 2>&5
+@@ -25246,7 +25247,8 @@
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_gnu_unique_object" >&5
+ $as_echo "$gcc_cv_as_gnu_unique_object" >&6; }
+ if test $gcc_cv_as_gnu_unique_object = yes; then
+-  # Also check for ld.so support, i.e. glibc 2.11 or higher.
++  # We need to unquote above to to use the definition from config.gcc.
++# Also check for ld.so support, i.e. glibc 2.11 or higher.
+    if test x$host = x$build -a x$host = x$target &&
+        ldd --version 2>/dev/null &&
+        glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -760,7 +760,7 @@
+ )
+ AC_SUBST(CONFIGURE_SPECS)
+ 
+-ACX_PKGVERSION([GCC])
++ACX_PKGVERSION([Linaro GCC `cat $srcdir/LINARO-VERSION`])
+ ACX_BUGURL([http://gcc.gnu.org/bugs.html])
+ 
+ # Sanity check enable_languages in case someone does not run the toplevel
+@@ -3923,7 +3923,8 @@
+   esac],
+  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
+    [elf,2,19,52],,
+-   [.type foo, @gnu_unique_object],,
++   [.type foo, '$target_type_format_char'gnu_unique_object],,
++# We need to unquote above to to use the definition from config.gcc.
+ # Also check for ld.so support, i.e. glibc 2.11 or higher.
+    [[if test x$host = x$build -a x$host = x$target &&
+        ldd --version 2>/dev/null &&
+--- a/src/gcc/convert.c
++++ b/src/gcc/convert.c
+@@ -44,11 +44,6 @@
+   if (TREE_TYPE (expr) == type)
+     return expr;
+ 
+-  /* Propagate overflow to the NULL pointer.  */
+-  if (integer_zerop (expr))
+-    return force_fit_type_double (type, double_int_zero, 0,
+-				  TREE_OVERFLOW (expr));
+-
+   switch (TREE_CODE (TREE_TYPE (expr)))
+     {
+     case POINTER_TYPE:
+--- a/src/gcc/cp/ChangeLog
++++ b/src/gcc/cp/ChangeLog
+@@ -1,3 +1,20 @@
++2012-06-25  Jason Merrill  <jason@redhat.com>
++
++	PR c++/52988
++	* typeck.c (decay_conversion): Don't discard side-effects from
++	expressions of nullptr_t.
++
++2012-04-04  Steve Ellcey <sje@cup.hp.com>
++
++	Backported from mainline.
++	* decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
++
++2012-04-03  Jason Merrill  <jason@redhat.com>
++
++	PR c++/52796
++	* pt.c (tsubst_initializer_list): A pack expansion with no elements
++	means value-initialization.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/gcc/cp/decl.c
++++ b/src/gcc/cp/decl.c
+@@ -3636,7 +3636,7 @@
+     TYPE_SIZE_UNIT (nullptr_type_node) = size_int (GET_MODE_SIZE (ptr_mode));
+     TYPE_UNSIGNED (nullptr_type_node) = 1;
+     TYPE_PRECISION (nullptr_type_node) = GET_MODE_BITSIZE (ptr_mode);
+-    SET_TYPE_MODE (nullptr_type_node, Pmode);
++    SET_TYPE_MODE (nullptr_type_node, ptr_mode);
+     record_builtin_type (RID_MAX, "decltype(nullptr)", nullptr_type_node);
+     nullptr_node = build_int_cst (nullptr_type_node, 0);
+   }
+--- a/src/gcc/cp/pt.c
++++ b/src/gcc/cp/pt.c
+@@ -17785,6 +17785,7 @@
+             }
+           else
+             {
++	      tree tmp;
+               decl = tsubst_copy (TREE_PURPOSE (t), argvec, 
+                                   tf_warning_or_error, NULL_TREE);
+ 
+@@ -17793,10 +17794,17 @@
+                 in_base_initializer = 1;
+ 
+ 	      init = TREE_VALUE (t);
++	      tmp = init;
+ 	      if (init != void_type_node)
+ 		init = tsubst_expr (init, argvec,
+ 				    tf_warning_or_error, NULL_TREE,
+ 				    /*integral_constant_expression_p=*/false);
++	      if (init == NULL_TREE && tmp != NULL_TREE)
++		/* If we had an initializer but it instantiated to nothing,
++		   value-initialize the object.  This will only occur when
++		   the initializer was a pack expansion where the parameter
++		   packs used in that expansion were of length zero.  */
++		init = void_type_node;
+               in_base_initializer = 0;
+             }
+ 
+--- a/src/gcc/cp/semantics.c
++++ b/src/gcc/cp/semantics.c
+@@ -6763,7 +6763,6 @@
+ 
+   STRIP_NOPS (sub);
+   subtype = TREE_TYPE (sub);
+-  gcc_assert (POINTER_TYPE_P (subtype));
+ 
+   if (TREE_CODE (sub) == ADDR_EXPR)
+     {
+--- a/src/gcc/cp/typeck2.c
++++ b/src/gcc/cp/typeck2.c
+@@ -479,18 +479,20 @@
+ 
+ 
+ /* The recursive part of split_nonconstant_init.  DEST is an lvalue
+-   expression to which INIT should be assigned.  INIT is a CONSTRUCTOR.  */
++   expression to which INIT should be assigned.  INIT is a CONSTRUCTOR.
++   Return true if the whole of the value was initialized by the
++   generated statements.  */
+ 
+-static void
+-split_nonconstant_init_1 (tree dest, tree *initp)
++static bool
++split_nonconstant_init_1 (tree dest, tree init)
+ {
+   unsigned HOST_WIDE_INT idx;
+-  tree init = *initp;
+   tree field_index, value;
+   tree type = TREE_TYPE (dest);
+   tree inner_type = NULL;
+   bool array_type_p = false;
+-  HOST_WIDE_INT num_type_elements, num_initialized_elements;
++  bool complete_p = true;
++  HOST_WIDE_INT num_split_elts = 0;
+ 
+   switch (TREE_CODE (type))
+     {
+@@ -502,7 +504,6 @@
+     case RECORD_TYPE:
+     case UNION_TYPE:
+     case QUAL_UNION_TYPE:
+-      num_initialized_elements = 0;
+       FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (init), idx,
+ 				field_index, value)
+ 	{
+@@ -525,13 +526,14 @@
+ 		sub = build3 (COMPONENT_REF, inner_type, dest, field_index,
+ 			      NULL_TREE);
+ 
+-	      split_nonconstant_init_1 (sub, &value);
++	      if (!split_nonconstant_init_1 (sub, value))
++		complete_p = false;
++	      num_split_elts++;
+ 	    }
+ 	  else if (!initializer_constant_valid_p (value, inner_type))
+ 	    {
+ 	      tree code;
+ 	      tree sub;
+-	      HOST_WIDE_INT inner_elements;
+ 
+ 	      /* FIXME: Ordered removal is O(1) so the whole function is
+ 		 worst-case quadratic. This could be fixed using an aside
+@@ -555,21 +557,9 @@
+ 	      code = build_stmt (input_location, EXPR_STMT, code);
+ 	      add_stmt (code);
+ 
+-	      inner_elements = count_type_elements (inner_type, true);
+-	      if (inner_elements < 0)
+-		num_initialized_elements = -1;
+-	      else if (num_initialized_elements >= 0)
+-		num_initialized_elements += inner_elements;
+-	      continue;
++	      num_split_elts++;
+ 	    }
+ 	}
+-
+-      num_type_elements = count_type_elements (type, true);
+-      /* If all elements of the initializer are non-constant and
+-	 have been split out, we don't need the empty CONSTRUCTOR.  */
+-      if (num_type_elements > 0
+-	  && num_type_elements == num_initialized_elements)
+-	*initp = NULL;
+       break;
+ 
+     case VECTOR_TYPE:
+@@ -581,6 +571,7 @@
+ 	  code = build2 (MODIFY_EXPR, type, dest, cons);
+ 	  code = build_stmt (input_location, EXPR_STMT, code);
+ 	  add_stmt (code);
++	  num_split_elts += CONSTRUCTOR_NELTS (init);
+ 	}
+       break;
+ 
+@@ -590,6 +581,8 @@
+ 
+   /* The rest of the initializer is now a constant. */
+   TREE_CONSTANT (init) = 1;
++  return complete_p && complete_ctor_at_level_p (TREE_TYPE (init),
++						 num_split_elts, inner_type);
+ }
+ 
+ /* A subroutine of store_init_value.  Splits non-constant static
+@@ -605,7 +598,8 @@
+   if (TREE_CODE (init) == CONSTRUCTOR)
+     {
+       code = push_stmt_list ();
+-      split_nonconstant_init_1 (dest, &init);
++      if (split_nonconstant_init_1 (dest, init))
++	init = NULL_TREE;
+       code = pop_stmt_list (code);
+       DECL_INITIAL (dest) = init;
+       TREE_READONLY (dest) = 0;
+--- a/src/gcc/cp/typeck.c
++++ b/src/gcc/cp/typeck.c
+@@ -1822,7 +1822,7 @@
+   if (error_operand_p (exp))
+     return error_mark_node;
+ 
+-  if (NULLPTR_TYPE_P (type))
++  if (NULLPTR_TYPE_P (type) && !TREE_SIDE_EFFECTS (exp))
+     return nullptr_node;
+ 
+   /* build_c_cast puts on a NOP_EXPR to make the result not an lvalue.
+--- a/src/gcc/c-typeck.c
++++ b/src/gcc/c-typeck.c
+@@ -4315,6 +4315,11 @@
+     ret = fold_build3_loc (colon_loc, COND_EXPR, result_type, ifexp, op1, op2);
+   else
+     {
++      if (int_operands)
++	{
++	  op1 = remove_c_maybe_const_expr (op1);
++	  op2 = remove_c_maybe_const_expr (op2);
++	}
+       ret = build3 (COND_EXPR, result_type, ifexp, op1, op2);
+       if (int_operands)
+ 	ret = note_integer_operands (ret);
+--- a/src/gcc/DATESTAMP
++++ b/src/gcc/DATESTAMP
+@@ -1 +1 @@
+-20120301
++20120731
+--- a/src/gcc/ddg.c
++++ b/src/gcc/ddg.c
+@@ -145,6 +145,45 @@
+   return rtx_mem_access_p (PATTERN (insn));
+ }
+ 
++/* Return true if DEF_INSN contains address being auto-inc or auto-dec
++   which is used in USE_INSN.  Otherwise return false.  The result is
++   being used to decide whether to remove the edge between def_insn and
++   use_insn when -fmodulo-sched-allow-regmoves is set.  This function
++   doesn't need to consider the specific address register; no reg_moves
++   will be allowed for any life range defined by def_insn and used
++   by use_insn, if use_insn uses an address register auto-inc'ed by
++   def_insn.  */
++bool
++autoinc_var_is_used_p (rtx def_insn, rtx use_insn)
++{
++  rtx note;
++
++  for (note = REG_NOTES (def_insn); note; note = XEXP (note, 1))
++    if (REG_NOTE_KIND (note) == REG_INC
++	&& reg_referenced_p (XEXP (note, 0), PATTERN (use_insn)))
++      return true;
++
++  return false;
++}
++
++/* Return true if one of the definitions in INSN has MODE_CC.  Otherwise
++   return false.  */
++static bool
++def_has_ccmode_p (rtx insn)
++{
++  df_ref *def;
++
++  for (def = DF_INSN_DEFS (insn); *def; def++)
++    {
++      enum machine_mode mode = GET_MODE (DF_REF_REG (*def));
++
++      if (GET_MODE_CLASS (mode) == MODE_CC)
++	return true;
++    }
++
++  return false;
++}
++
+ /* Computes the dependence parameters (latency, distance etc.), creates
+    a ddg_edge and adds it to the given DDG.  */
+ static void
+@@ -173,10 +212,16 @@
+      compensate for that by generating reg-moves based on the life-range
+      analysis.  The anti-deps that will be deleted are the ones which
+      have true-deps edges in the opposite direction (in other words
+-     the kernel has only one def of the relevant register).  TODO:
+-     support the removal of all anti-deps edges, i.e. including those
++     the kernel has only one def of the relevant register).
++     If the address that is being auto-inc or auto-dec in DEST_NODE
++     is used in SRC_NODE then do not remove the edge to make sure
++     reg-moves will not be created for this address.  
++     TODO: support the removal of all anti-deps edges, i.e. including those
+      whose register has multiple defs in the loop.  */
+-  if (flag_modulo_sched_allow_regmoves && (t == ANTI_DEP && dt == REG_DEP))
++  if (flag_modulo_sched_allow_regmoves 
++      && (t == ANTI_DEP && dt == REG_DEP)
++      && !def_has_ccmode_p (dest_node->insn)
++      && !autoinc_var_is_used_p (dest_node->insn, src_node->insn))
+     {
+       rtx set;
+ 
+@@ -301,8 +346,16 @@
+ 
+ 	  gcc_assert (first_def_node);
+ 
++         /* Always create the edge if the use node is a branch in
++            order to prevent the creation of reg-moves.  
++            If the address that is being auto-inc or auto-dec in LAST_DEF
++            is used in USE_INSN then do not remove the edge to make sure
++            reg-moves will not be created for that address.  */
+           if (DF_REF_ID (last_def) != DF_REF_ID (first_def)
+-              || !flag_modulo_sched_allow_regmoves)
++              || !flag_modulo_sched_allow_regmoves
++	      || JUMP_P (use_node->insn)
++              || autoinc_var_is_used_p (DF_REF_INSN (last_def), use_insn)
++	      || def_has_ccmode_p (DF_REF_INSN (last_def)))
+             create_ddg_dep_no_link (g, use_node, first_def_node, ANTI_DEP,
+                                     REG_DEP, 1);
+ 
+@@ -385,6 +438,33 @@
+ 			 &PATTERN (insn2));
+ }
+ 
++/* Given two nodes, analyze their RTL insns and add intra-loop mem deps
++   to ddg G.  */
++static void
++add_intra_loop_mem_dep (ddg_ptr g, ddg_node_ptr from, ddg_node_ptr to)
++{
++
++  if ((from->cuid == to->cuid)
++      || !insns_may_alias_p (from->insn, to->insn))
++    /* Do not create edge if memory references have disjoint alias sets
++       or 'to' and 'from' are the same instruction.  */
++    return;
++
++  if (mem_write_insn_p (from->insn))
++    {
++      if (mem_read_insn_p (to->insn))
++	create_ddg_dep_no_link (g, from, to,
++				DEBUG_INSN_P (to->insn)
++				? ANTI_DEP : TRUE_DEP, MEM_DEP, 0);
++      else
++	create_ddg_dep_no_link (g, from, to,
++				DEBUG_INSN_P (to->insn)
++				? ANTI_DEP : OUTPUT_DEP, MEM_DEP, 0);
++    }
++  else if (!mem_read_insn_p (to->insn))
++    create_ddg_dep_no_link (g, from, to, ANTI_DEP, MEM_DEP, 0);
++}
++
+ /* Given two nodes, analyze their RTL insns and add inter-loop mem deps
+    to ddg G.  */
+ static void
+@@ -472,10 +552,22 @@
+ 	      if (DEBUG_INSN_P (j_node->insn))
+ 		continue;
+ 	      if (mem_access_insn_p (j_node->insn))
+- 		/* Don't bother calculating inter-loop dep if an intra-loop dep
+-		   already exists.  */
++		{
++		  /* Don't bother calculating inter-loop dep if an intra-loop dep
++		     already exists.  */
+ 	      	  if (! TEST_BIT (dest_node->successors, j))
+ 		    add_inter_loop_mem_dep (g, dest_node, j_node);
++		  /* If -fmodulo-sched-allow-regmoves
++		     is set certain anti-dep edges are not created.
++		     It might be that these anti-dep edges are on the
++		     path from one memory instruction to another such that
++		     removing these edges could cause a violation of the
++		     memory dependencies.  Thus we add intra edges between
++		     every two memory instructions in this case.  */
++		  if (flag_modulo_sched_allow_regmoves
++		      && !TEST_BIT (dest_node->predecessors, j))
++		    add_intra_loop_mem_dep (g, j_node, dest_node);
++		}
+             }
+         }
+     }
+@@ -1011,6 +1103,7 @@
+   for (i = 0; i < all_sccs->num_sccs; i++)
+     free_scc (all_sccs->sccs[i]);
+ 
++  free (all_sccs->sccs);
+   free (all_sccs);
+ }
+ 
+--- a/src/gcc/ddg.h
++++ b/src/gcc/ddg.h
+@@ -186,4 +186,6 @@
+ int find_nodes_on_paths (sbitmap result, ddg_ptr, sbitmap from, sbitmap to);
+ int longest_simple_path (ddg_ptr, int from, int to, sbitmap via);
+ 
++bool autoinc_var_is_used_p (rtx, rtx);
++
+ #endif /* GCC_DDG_H */
+--- a/src/gcc/df-problems.c
++++ b/src/gcc/df-problems.c
+@@ -3375,7 +3375,7 @@
+       while (*mws_rec)
+ 	{
+ 	  struct df_mw_hardreg *mws = *mws_rec;
+-	  if ((DF_MWS_REG_DEF_P (mws))
++	  if (DF_MWS_REG_USE_P (mws)
+ 	      && !df_ignore_stack_reg (mws->start_regno))
+ 	    {
+ 	      bool really_add_notes = debug_insn != 0;
+@@ -3956,6 +3956,19 @@
+   df_simulate_initialize_backwards (merge_bb, test_use);
+   for (insn = across_to; ; insn = next)
+     {
++      if (CALL_P (insn))
++	{
++	  if (RTL_CONST_OR_PURE_CALL_P (insn))
++	    /* Pure functions can read from memory.  Const functions can
++	       read from arguments that the ABI has forced onto the stack.
++	       Neither sort of read can be volatile.  */
++	    memrefs_in_across |= MEMREF_NORMAL;
++	  else
++	    {
++	      memrefs_in_across |= MEMREF_VOLATILE;
++	      mem_sets_in_across |= MEMREF_VOLATILE;
++	    }
++	}
+       if (NONDEBUG_INSN_P (insn))
+ 	{
+ 	  df_simulate_find_defs (insn, test_set);
+--- a/src/gcc/dojump.c
++++ b/src/gcc/dojump.c
+@@ -36,6 +36,7 @@
+ #include "ggc.h"
+ #include "basic-block.h"
+ #include "output.h"
++#include "tm_p.h"
+ 
+ static bool prefer_and_bit_test (enum machine_mode, int);
+ static void do_jump_by_parts_greater (tree, tree, int, rtx, rtx, int);
+--- a/src/gcc/expmed.c
++++ b/src/gcc/expmed.c
+@@ -657,6 +657,10 @@
+       && GET_MODE (value) != BLKmode
+       && bitsize > 0
+       && GET_MODE_BITSIZE (op_mode) >= bitsize
++      /* Do not use insv for volatile bitfields when
++         -fstrict-volatile-bitfields is in effect.  */
++      && !(MEM_P (op0) && MEM_VOLATILE_P (op0)
++	   && flag_strict_volatile_bitfields > 0)
+       && ! ((REG_P (op0) || GET_CODE (op0) == SUBREG)
+ 	    && (bitsize + bitpos > GET_MODE_BITSIZE (op_mode)))
+       && insn_data[CODE_FOR_insv].operand[1].predicate (GEN_INT (bitsize),
+@@ -700,19 +704,21 @@
+ 	  copy_back = true;
+ 	}
+ 
+-      /* On big-endian machines, we count bits from the most significant.
+-	 If the bit field insn does not, we must invert.  */
+-
+-      if (BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN)
+-	xbitpos = unit - bitsize - xbitpos;
+-
+       /* We have been counting XBITPOS within UNIT.
+ 	 Count instead within the size of the register.  */
+-      if (BITS_BIG_ENDIAN && !MEM_P (xop0))
++      if (BYTES_BIG_ENDIAN && !MEM_P (xop0))
+ 	xbitpos += GET_MODE_BITSIZE (op_mode) - unit;
+ 
+       unit = GET_MODE_BITSIZE (op_mode);
+ 
++      /* If BITS_BIG_ENDIAN is zero on a BYTES_BIG_ENDIAN machine, we count
++         "backwards" from the size of the unit we are inserting into.
++	 Otherwise, we count bits from the most significant on a
++	 BYTES/BITS_BIG_ENDIAN machine.  */
++
++      if (BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN)
++	xbitpos = unit - bitsize - xbitpos;
++
+       /* Convert VALUE to op_mode (which insv insn wants) in VALUE1.  */
+       value1 = value;
+       if (GET_MODE (value) != op_mode)
+@@ -1528,6 +1534,10 @@
+   if (ext_mode != MAX_MACHINE_MODE
+       && bitsize > 0
+       && GET_MODE_BITSIZE (ext_mode) >= bitsize
++      /* Do not use extv/extzv for volatile bitfields when
++         -fstrict-volatile-bitfields is in effect.  */
++      && !(MEM_P (op0) && MEM_VOLATILE_P (op0)
++	   && flag_strict_volatile_bitfields > 0)
+       /* If op0 is a register, we need it in EXT_MODE to make it
+ 	 acceptable to the format of ext(z)v.  */
+       && !(GET_CODE (op0) == SUBREG && GET_MODE (op0) != ext_mode)
+@@ -1552,17 +1562,20 @@
+ 	/* Get ref to first byte containing part of the field.  */
+ 	xop0 = adjust_address (xop0, byte_mode, xoffset);
+ 
+-      /* On big-endian machines, we count bits from the most significant.
+-	 If the bit field insn does not, we must invert.  */
+-      if (BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN)
+-	xbitpos = unit - bitsize - xbitpos;
+-
+       /* Now convert from counting within UNIT to counting in EXT_MODE.  */
+-      if (BITS_BIG_ENDIAN && !MEM_P (xop0))
++      if (BYTES_BIG_ENDIAN && !MEM_P (xop0))
+ 	xbitpos += GET_MODE_BITSIZE (ext_mode) - unit;
+ 
+       unit = GET_MODE_BITSIZE (ext_mode);
+ 
++      /* If BITS_BIG_ENDIAN is zero on a BYTES_BIG_ENDIAN machine, we count
++         "backwards" from the size of the unit we are extracting from.
++	 Otherwise, we count bits from the most significant on a
++	 BYTES/BITS_BIG_ENDIAN machine.  */
++
++      if (BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN)
++	xbitpos = unit - bitsize - xbitpos;
++
+       if (xtarget == 0)
+ 	xtarget = xspec_target = gen_reg_rtx (tmode);
+ 
+--- a/src/gcc/expr.c
++++ b/src/gcc/expr.c
+@@ -1497,7 +1497,7 @@
+   if (nregs == 0)
+     return;
+ 
+-  if (CONSTANT_P (x) && ! LEGITIMATE_CONSTANT_P (x))
++  if (CONSTANT_P (x) && !targetm.legitimate_constant_p (mode, x))
+     x = validize_mem (force_const_mem (mode, x));
+ 
+   /* See if the machine can do this with a load multiple insn.  */
+@@ -2413,7 +2413,7 @@
+ 		    offset -= size;
+ 
+ 		  cst = (*constfun) (constfundata, offset, mode);
+-		  if (!LEGITIMATE_CONSTANT_P (cst))
++		  if (!targetm.legitimate_constant_p (mode, cst))
+ 		    return 0;
+ 
+ 		  if (!reverse)
+@@ -3468,7 +3468,7 @@
+ 
+       y_cst = y;
+ 
+-      if (!LEGITIMATE_CONSTANT_P (y))
++      if (!targetm.legitimate_constant_p (mode, y))
+ 	{
+ 	  y = force_const_mem (mode, y);
+ 
+@@ -3524,7 +3524,7 @@
+ 
+   REAL_VALUE_FROM_CONST_DOUBLE (r, y);
+ 
+-  if (LEGITIMATE_CONSTANT_P (y))
++  if (targetm.legitimate_constant_p (dstmode, y))
+     oldcost = rtx_cost (y, SET, speed);
+   else
+     oldcost = rtx_cost (force_const_mem (dstmode, y), SET, speed);
+@@ -3547,7 +3547,7 @@
+ 
+       trunc_y = CONST_DOUBLE_FROM_REAL_VALUE (r, srcmode);
+ 
+-      if (LEGITIMATE_CONSTANT_P (trunc_y))
++      if (targetm.legitimate_constant_p (srcmode, trunc_y))
+ 	{
+ 	  /* Skip if the target needs extra instructions to perform
+ 	     the extension.  */
+@@ -3960,7 +3960,7 @@
+ 	 by setting SKIP to 0.  */
+       skip = (reg_parm_stack_space == 0) ? 0 : not_stack;
+ 
+-      if (CONSTANT_P (x) && ! LEGITIMATE_CONSTANT_P (x))
++      if (CONSTANT_P (x) && !targetm.legitimate_constant_p (mode, x))
+ 	x = validize_mem (force_const_mem (mode, x));
+ 
+       /* If X is a hard register in a non-integer mode, copy it into a pseudo;
+@@ -4976,16 +4976,136 @@
+   return NULL_RTX;
+ }
+ 
++/* Return true if field F of structure TYPE is a flexible array.  */
++
++static bool
++flexible_array_member_p (const_tree f, const_tree type)
++{
++  const_tree tf;
++
++  tf = TREE_TYPE (f);
++  return (DECL_CHAIN (f) == NULL
++	  && TREE_CODE (tf) == ARRAY_TYPE
++	  && TYPE_DOMAIN (tf)
++	  && TYPE_MIN_VALUE (TYPE_DOMAIN (tf))
++	  && integer_zerop (TYPE_MIN_VALUE (TYPE_DOMAIN (tf)))
++	  && !TYPE_MAX_VALUE (TYPE_DOMAIN (tf))
++	  && int_size_in_bytes (type) >= 0);
++}
++
++/* If FOR_CTOR_P, return the number of top-level elements that a constructor
++   must have in order for it to completely initialize a value of type TYPE.
++   Return -1 if the number isn't known.
++
++   If !FOR_CTOR_P, return an estimate of the number of scalars in TYPE.  */
++
++static HOST_WIDE_INT
++count_type_elements (const_tree type, bool for_ctor_p)
++{
++  switch (TREE_CODE (type))
++    {
++    case ARRAY_TYPE:
++      {
++	tree nelts;
++
++	nelts = array_type_nelts (type);
++	if (nelts && host_integerp (nelts, 1))
++	  {
++	    unsigned HOST_WIDE_INT n;
++
++	    n = tree_low_cst (nelts, 1) + 1;
++	    if (n == 0 || for_ctor_p)
++	      return n;
++	    else
++	      return n * count_type_elements (TREE_TYPE (type), false);
++	  }
++	return for_ctor_p ? -1 : 1;
++      }
++
++    case RECORD_TYPE:
++      {
++	unsigned HOST_WIDE_INT n;
++	tree f;
++
++	n = 0;
++	for (f = TYPE_FIELDS (type); f ; f = DECL_CHAIN (f))
++	  if (TREE_CODE (f) == FIELD_DECL)
++	    {
++	      if (!for_ctor_p)
++		n += count_type_elements (TREE_TYPE (f), false);
++	      else if (!flexible_array_member_p (f, type))
++		/* Don't count flexible arrays, which are not supposed
++		   to be initialized.  */
++		n += 1;
++	    }
++
++	return n;
++      }
++
++    case UNION_TYPE:
++    case QUAL_UNION_TYPE:
++      {
++	tree f;
++	HOST_WIDE_INT n, m;
++
++	gcc_assert (!for_ctor_p);
++	/* Estimate the number of scalars in each field and pick the
++	   maximum.  Other estimates would do instead; the idea is simply
++	   to make sure that the estimate is not sensitive to the ordering
++	   of the fields.  */
++	n = 1;
++	for (f = TYPE_FIELDS (type); f ; f = DECL_CHAIN (f))
++	  if (TREE_CODE (f) == FIELD_DECL)
++	    {
++	      m = count_type_elements (TREE_TYPE (f), false);
++	      /* If the field doesn't span the whole union, add an extra
++		 scalar for the rest.  */
++	      if (simple_cst_equal (TYPE_SIZE (TREE_TYPE (f)),
++				    TYPE_SIZE (type)) != 1)
++		m++;
++	      if (n < m)
++		n = m;
++	    }
++	return n;
++      }
++
++    case COMPLEX_TYPE:
++      return 2;
++
++    case VECTOR_TYPE:
++      return TYPE_VECTOR_SUBPARTS (type);
++
++    case INTEGER_TYPE:
++    case REAL_TYPE:
++    case FIXED_POINT_TYPE:
++    case ENUMERAL_TYPE:
++    case BOOLEAN_TYPE:
++    case POINTER_TYPE:
++    case OFFSET_TYPE:
++    case REFERENCE_TYPE:
++      return 1;
++
++    case ERROR_MARK:
++      return 0;
++
++    case VOID_TYPE:
++    case METHOD_TYPE:
++    case FUNCTION_TYPE:
++    case LANG_TYPE:
++    default:
++      gcc_unreachable ();
++    }
++}
++
+ /* Helper for categorize_ctor_elements.  Identical interface.  */
+ 
+ static bool
+ categorize_ctor_elements_1 (const_tree ctor, HOST_WIDE_INT *p_nz_elts,
+-			    HOST_WIDE_INT *p_elt_count,
+-			    bool *p_must_clear)
++			    HOST_WIDE_INT *p_init_elts, bool *p_complete)
+ {
+   unsigned HOST_WIDE_INT idx;
+-  HOST_WIDE_INT nz_elts, elt_count;
+-  tree value, purpose;
++  HOST_WIDE_INT nz_elts, init_elts, num_fields;
++  tree value, purpose, elt_type;
+ 
+   /* Whether CTOR is a valid constant initializer, in accordance with what
+      initializer_constant_valid_p does.  If inferred from the constructor
+@@ -4994,7 +5114,9 @@
+   bool const_p = const_from_elts_p ? true : TREE_STATIC (ctor);
+ 
+   nz_elts = 0;
+-  elt_count = 0;
++  init_elts = 0;
++  num_fields = 0;
++  elt_type = NULL_TREE;
+ 
+   FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (ctor), idx, purpose, value)
+     {
+@@ -5009,6 +5131,8 @@
+ 	    mult = (tree_low_cst (hi_index, 1)
+ 		    - tree_low_cst (lo_index, 1) + 1);
+ 	}
++      num_fields += mult;
++      elt_type = TREE_TYPE (value);
+ 
+       switch (TREE_CODE (value))
+ 	{
+@@ -5016,11 +5140,11 @@
+ 	  {
+ 	    HOST_WIDE_INT nz = 0, ic = 0;
+ 
+-	    bool const_elt_p
+-	      = categorize_ctor_elements_1 (value, &nz, &ic, p_must_clear);
++	    bool const_elt_p = categorize_ctor_elements_1 (value, &nz, &ic,
++							   p_complete);
+ 
+ 	    nz_elts += mult * nz;
+- 	    elt_count += mult * ic;
++ 	    init_elts += mult * ic;
+ 
+ 	    if (const_from_elts_p && const_p)
+ 	      const_p = const_elt_p;
+@@ -5032,12 +5156,12 @@
+ 	case FIXED_CST:
+ 	  if (!initializer_zerop (value))
+ 	    nz_elts += mult;
+-	  elt_count += mult;
++	  init_elts += mult;
+ 	  break;
+ 
+ 	case STRING_CST:
+ 	  nz_elts += mult * TREE_STRING_LENGTH (value);
+-	  elt_count += mult * TREE_STRING_LENGTH (value);
++	  init_elts += mult * TREE_STRING_LENGTH (value);
+ 	  break;
+ 
+ 	case COMPLEX_CST:
+@@ -5045,7 +5169,7 @@
+ 	    nz_elts += mult;
+ 	  if (!initializer_zerop (TREE_IMAGPART (value)))
+ 	    nz_elts += mult;
+-	  elt_count += mult;
++	  init_elts += mult;
+ 	  break;
+ 
+ 	case VECTOR_CST:
+@@ -5055,65 +5179,31 @@
+ 	      {
+ 		if (!initializer_zerop (TREE_VALUE (v)))
+ 		  nz_elts += mult;
+-		elt_count += mult;
++		init_elts += mult;
+ 	      }
+ 	  }
+ 	  break;
+ 
+ 	default:
+ 	  {
+-	    HOST_WIDE_INT tc = count_type_elements (TREE_TYPE (value), true);
+-	    if (tc < 1)
+-	      tc = 1;
++	    HOST_WIDE_INT tc = count_type_elements (elt_type, false);
+ 	    nz_elts += mult * tc;
+-	    elt_count += mult * tc;
++	    init_elts += mult * tc;
+ 
+ 	    if (const_from_elts_p && const_p)
+-	      const_p = initializer_constant_valid_p (value, TREE_TYPE (value))
++	      const_p = initializer_constant_valid_p (value, elt_type)
+ 			!= NULL_TREE;
+ 	  }
+ 	  break;
+ 	}
+     }
+ 
+-  if (!*p_must_clear
+-      && (TREE_CODE (TREE_TYPE (ctor)) == UNION_TYPE
+-	  || TREE_CODE (TREE_TYPE (ctor)) == QUAL_UNION_TYPE))
+-    {
+-      tree init_sub_type;
+-      bool clear_this = true;
+-
+-      if (!VEC_empty (constructor_elt, CONSTRUCTOR_ELTS (ctor)))
+-	{
+-	  /* We don't expect more than one element of the union to be
+-	     initialized.  Not sure what we should do otherwise... */
+-          gcc_assert (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (ctor))
+-		      == 1);
+-
+-          init_sub_type = TREE_TYPE (VEC_index (constructor_elt,
+-						CONSTRUCTOR_ELTS (ctor),
+-						0)->value);
+-
+-	  /* ??? We could look at each element of the union, and find the
+-	     largest element.  Which would avoid comparing the size of the
+-	     initialized element against any tail padding in the union.
+-	     Doesn't seem worth the effort...  */
+-	  if (simple_cst_equal (TYPE_SIZE (TREE_TYPE (ctor)),
+-				TYPE_SIZE (init_sub_type)) == 1)
+-	    {
+-	      /* And now we have to find out if the element itself is fully
+-		 constructed.  E.g. for union { struct { int a, b; } s; } u
+-		 = { .s = { .a = 1 } }.  */
+-	      if (elt_count == count_type_elements (init_sub_type, false))
+-		clear_this = false;
+-	    }
+-	}
+-
+-      *p_must_clear = clear_this;
+-    }
++  if (*p_complete && !complete_ctor_at_level_p (TREE_TYPE (ctor),
++						num_fields, elt_type))
++    *p_complete = false;
+ 
+   *p_nz_elts += nz_elts;
+-  *p_elt_count += elt_count;
++  *p_init_elts += init_elts;
+ 
+   return const_p;
+ }
+@@ -5123,111 +5213,50 @@
+      and place it in *P_NZ_ELTS;
+    * how many scalar fields in total are in CTOR,
+      and place it in *P_ELT_COUNT.
+-   * if a type is a union, and the initializer from the constructor
+-     is not the largest element in the union, then set *p_must_clear.
++   * whether the constructor is complete -- in the sense that every
++     meaningful byte is explicitly given a value --
++     and place it in *P_COMPLETE.
+ 
+    Return whether or not CTOR is a valid static constant initializer, the same
+    as "initializer_constant_valid_p (CTOR, TREE_TYPE (CTOR)) != 0".  */
+ 
+ bool
+ categorize_ctor_elements (const_tree ctor, HOST_WIDE_INT *p_nz_elts,
+-			  HOST_WIDE_INT *p_elt_count,
+-			  bool *p_must_clear)
++			  HOST_WIDE_INT *p_init_elts, bool *p_complete)
+ {
+   *p_nz_elts = 0;
+-  *p_elt_count = 0;
+-  *p_must_clear = false;
++  *p_init_elts = 0;
++  *p_complete = true;
+ 
+-  return
+-    categorize_ctor_elements_1 (ctor, p_nz_elts, p_elt_count, p_must_clear);
++  return categorize_ctor_elements_1 (ctor, p_nz_elts, p_init_elts, p_complete);
+ }
+ 
+-/* Count the number of scalars in TYPE.  Return -1 on overflow or
+-   variable-sized.  If ALLOW_FLEXARR is true, don't count flexible
+-   array member at the end of the structure.  */
++/* TYPE is initialized by a constructor with NUM_ELTS elements, the last
++   of which had type LAST_TYPE.  Each element was itself a complete
++   initializer, in the sense that every meaningful byte was explicitly
++   given a value.  Return true if the same is true for the constructor
++   as a whole.  */
+ 
+-HOST_WIDE_INT
+-count_type_elements (const_tree type, bool allow_flexarr)
++bool
++complete_ctor_at_level_p (const_tree type, HOST_WIDE_INT num_elts,
++			  const_tree last_type)
+ {
+-  const HOST_WIDE_INT max = ~((HOST_WIDE_INT)1 << (HOST_BITS_PER_WIDE_INT-1));
+-  switch (TREE_CODE (type))
++  if (TREE_CODE (type) == UNION_TYPE
++      || TREE_CODE (type) == QUAL_UNION_TYPE)
+     {
+-    case ARRAY_TYPE:
+-      {
+-	tree telts = array_type_nelts (type);
+-	if (telts && host_integerp (telts, 1))
+-	  {
+-	    HOST_WIDE_INT n = tree_low_cst (telts, 1) + 1;
+-	    HOST_WIDE_INT m = count_type_elements (TREE_TYPE (type), false);
+-	    if (n == 0)
+-	      return 0;
+-	    else if (max / n > m)
+-	      return n * m;
+-	  }
+-	return -1;
+-      }
+-
+-    case RECORD_TYPE:
+-      {
+-	HOST_WIDE_INT n = 0, t;
+-	tree f;
+-
+-	for (f = TYPE_FIELDS (type); f ; f = DECL_CHAIN (f))
+-	  if (TREE_CODE (f) == FIELD_DECL)
+-	    {
+-	      t = count_type_elements (TREE_TYPE (f), false);
+-	      if (t < 0)
+-		{
+-		  /* Check for structures with flexible array member.  */
+-		  tree tf = TREE_TYPE (f);
+-		  if (allow_flexarr
+-		      && DECL_CHAIN (f) == NULL
+-		      && TREE_CODE (tf) == ARRAY_TYPE
+-		      && TYPE_DOMAIN (tf)
+-		      && TYPE_MIN_VALUE (TYPE_DOMAIN (tf))
+-		      && integer_zerop (TYPE_MIN_VALUE (TYPE_DOMAIN (tf)))
+-		      && !TYPE_MAX_VALUE (TYPE_DOMAIN (tf))
+-		      && int_size_in_bytes (type) >= 0)
+-		    break;
+-
+-		  return -1;
+-		}
+-	      n += t;
+-	    }
+-
+-	return n;
+-      }
+-
+-    case UNION_TYPE:
+-    case QUAL_UNION_TYPE:
+-      return -1;
+-
+-    case COMPLEX_TYPE:
+-      return 2;
+-
+-    case VECTOR_TYPE:
+-      return TYPE_VECTOR_SUBPARTS (type);
+-
+-    case INTEGER_TYPE:
+-    case REAL_TYPE:
+-    case FIXED_POINT_TYPE:
+-    case ENUMERAL_TYPE:
+-    case BOOLEAN_TYPE:
+-    case POINTER_TYPE:
+-    case OFFSET_TYPE:
+-    case REFERENCE_TYPE:
+-      return 1;
++      if (num_elts == 0)
++	return false;
+ 
+-    case ERROR_MARK:
+-      return 0;
++      gcc_assert (num_elts == 1 && last_type);
+ 
+-    case VOID_TYPE:
+-    case METHOD_TYPE:
+-    case FUNCTION_TYPE:
+-    case LANG_TYPE:
+-    default:
+-      gcc_unreachable ();
++      /* ??? We could look at each element of the union, and find the
++	 largest element.  Which would avoid comparing the size of the
++	 initialized element against any tail padding in the union.
++	 Doesn't seem worth the effort...  */
++      return simple_cst_equal (TYPE_SIZE (type), TYPE_SIZE (last_type)) == 1;
+     }
++
++  return count_type_elements (type, true) == num_elts;
+ }
+ 
+ /* Return 1 if EXP contains mostly (3/4)  zeros.  */
+@@ -5236,18 +5265,12 @@
+ mostly_zeros_p (const_tree exp)
+ {
+   if (TREE_CODE (exp) == CONSTRUCTOR)
+-
+     {
+-      HOST_WIDE_INT nz_elts, count, elts;
+-      bool must_clear;
+-
+-      categorize_ctor_elements (exp, &nz_elts, &count, &must_clear);
+-      if (must_clear)
+-	return 1;
+-
+-      elts = count_type_elements (TREE_TYPE (exp), false);
++      HOST_WIDE_INT nz_elts, init_elts;
++      bool complete_p;
+ 
+-      return nz_elts < elts / 4;
++      categorize_ctor_elements (exp, &nz_elts, &init_elts, &complete_p);
++      return !complete_p || nz_elts < init_elts / 4;
+     }
+ 
+   return initializer_zerop (exp);
+@@ -5259,12 +5282,11 @@
+ all_zeros_p (const_tree exp)
+ {
+   if (TREE_CODE (exp) == CONSTRUCTOR)
+-
+     {
+-      HOST_WIDE_INT nz_elts, count;
+-      bool must_clear;
++      HOST_WIDE_INT nz_elts, init_elts;
++      bool complete_p;
+ 
+-      categorize_ctor_elements (exp, &nz_elts, &count, &must_clear);
++      categorize_ctor_elements (exp, &nz_elts, &init_elts, &complete_p);
+       return nz_elts == 0;
+     }
+ 
+@@ -5971,6 +5993,8 @@
+ 		|| bitpos % GET_MODE_ALIGNMENT (mode))
+ 	       && SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (target)))
+ 	      || (bitpos % BITS_PER_UNIT != 0)))
++      || (bitsize >= 0 && mode != BLKmode
++	  && GET_MODE_BITSIZE (mode) > bitsize)
+       /* If the RHS and field are a constant size and the size of the
+ 	 RHS isn't the same size as the bitfield, we must use bitfield
+ 	 operations.  */
+@@ -7803,18 +7827,16 @@
+ 	{
+ 	  enum machine_mode innermode = TYPE_MODE (TREE_TYPE (treeop0));
+ 	  this_optab = usmul_widen_optab;
+-	  if (mode == GET_MODE_2XWIDER_MODE (innermode))
++	  if (find_widening_optab_handler (this_optab, mode, innermode, 0)
++		!= CODE_FOR_nothing)
+ 	    {
+-	      if (optab_handler (this_optab, mode) != CODE_FOR_nothing)
+-		{
+-		  if (TYPE_UNSIGNED (TREE_TYPE (treeop0)))
+-		    expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1,
+-				     EXPAND_NORMAL);
+-		  else
+-		    expand_operands (treeop0, treeop1, NULL_RTX, &op1, &op0,
+-				     EXPAND_NORMAL);
+-		  goto binop3;
+-		}
++	      if (TYPE_UNSIGNED (TREE_TYPE (treeop0)))
++		expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1,
++				 EXPAND_NORMAL);
++	      else
++		expand_operands (treeop0, treeop1, NULL_RTX, &op1, &op0,
++				 EXPAND_NORMAL);
++	      goto binop3;
+ 	    }
+ 	}
+       /* Check for a multiplication with matching signedness.  */
+@@ -7829,10 +7851,10 @@
+ 	  optab other_optab = zextend_p ? smul_widen_optab : umul_widen_optab;
+ 	  this_optab = zextend_p ? umul_widen_optab : smul_widen_optab;
+ 
+-	  if (mode == GET_MODE_2XWIDER_MODE (innermode)
+-	      && TREE_CODE (treeop0) != INTEGER_CST)
++	  if (TREE_CODE (treeop0) != INTEGER_CST)
+ 	    {
+-	      if (optab_handler (this_optab, mode) != CODE_FOR_nothing)
++	      if (find_widening_optab_handler (this_optab, mode, innermode, 0)
++		    != CODE_FOR_nothing)
+ 		{
+ 		  expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1,
+ 				   EXPAND_NORMAL);
+@@ -7840,7 +7862,8 @@
+ 					       unsignedp, this_optab);
+ 		  return REDUCE_BIT_FIELD (temp);
+ 		}
+-	      if (optab_handler (other_optab, mode) != CODE_FOR_nothing
++	      if (find_widening_optab_handler (other_optab, mode, innermode, 0)
++		    != CODE_FOR_nothing
+ 		  && innermode == word_mode)
+ 		{
+ 		  rtx htem, hipart;
+@@ -8406,6 +8429,19 @@
+ 	return target;
+       }
+ 
++    case VEC_WIDEN_LSHIFT_HI_EXPR:
++    case VEC_WIDEN_LSHIFT_LO_EXPR:
++      {
++        tree oprnd0 = treeop0;
++        tree oprnd1 = treeop1;
++
++        expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, EXPAND_NORMAL);
++        target = expand_widen_pattern_expr (ops, op0, op1, NULL_RTX,
++                                            target, unsignedp);
++        gcc_assert (target);
++        return target;
++      }
++
+     case VEC_PACK_TRUNC_EXPR:
+     case VEC_PACK_SAT_EXPR:
+     case VEC_PACK_FIX_TRUNC_EXPR:
+@@ -8687,10 +8723,13 @@
+ 	  if (code == SSA_NAME
+ 	      && (g = SSA_NAME_DEF_STMT (ssa_name))
+ 	      && gimple_code (g) == GIMPLE_CALL)
+-	    pmode = promote_function_mode (type, mode, &unsignedp,
+-					   TREE_TYPE
+-					   (TREE_TYPE (gimple_call_fn (g))),
+-					   2);
++	    {
++	      gcc_assert (!gimple_call_internal_p (g));
++	      pmode = promote_function_mode (type, mode, &unsignedp,
++					     TREE_TYPE
++					     (TREE_TYPE (gimple_call_fn (g))),
++					     2);
++	    }
+ 	  else
+ 	    pmode = promote_decl_mode (exp, &unsignedp);
+ 	  gcc_assert (GET_MODE (decl_rtl) == pmode);
+@@ -9182,6 +9221,7 @@
+ 	orig_op0 = op0
+ 	  = expand_expr (tem,
+ 			 (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE
++			  && COMPLETE_TYPE_P (TREE_TYPE (tem))
+ 			  && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem)))
+ 			      != INTEGER_CST)
+ 			  && modifier != EXPAND_STACK_PARM
+@@ -9250,7 +9290,7 @@
+ 	   constant and we don't need a memory reference.  */
+ 	if (CONSTANT_P (op0)
+ 	    && mode2 != BLKmode
+-	    && LEGITIMATE_CONSTANT_P (op0)
++	    && targetm.legitimate_constant_p (mode2, op0)
+ 	    && !must_force_mem)
+ 	  op0 = force_reg (mode2, op0);
+ 
+--- a/src/gcc/flag-types.h
++++ b/src/gcc/flag-types.h
+@@ -106,6 +106,14 @@
+ };
+ #endif
+ 
++/* The algorithm used to implement -fsched-pressure.  */
++enum sched_pressure_algorithm
++{
++  SCHED_PRESSURE_NONE,
++  SCHED_PRESSURE_WEIGHTED,
++  SCHED_PRESSURE_MODEL
++};
++
+ /* The algorithm used for the integrated register allocator (IRA).  */
+ enum ira_algorithm
+ {
+--- a/src/gcc/fold-const.c
++++ b/src/gcc/fold-const.c
+@@ -9232,15 +9232,10 @@
+    0 <= N < M as is common.  In general, the precise value of P is unknown.
+    M is chosen as large as possible such that constant N can be determined.
+ 
+-   Returns M and sets *RESIDUE to N.
+-
+-   If ALLOW_FUNC_ALIGN is true, do take functions' DECL_ALIGN_UNIT into
+-   account.  This is not always possible due to PR 35705.
+- */
++   Returns M and sets *RESIDUE to N.  */
+ 
+ static unsigned HOST_WIDE_INT
+-get_pointer_modulus_and_residue (tree expr, unsigned HOST_WIDE_INT *residue,
+-				 bool allow_func_align)
++get_pointer_modulus_and_residue (tree expr, unsigned HOST_WIDE_INT *residue)
+ {
+   enum tree_code code;
+ 
+@@ -9270,9 +9265,8 @@
+ 	    }
+ 	}
+ 
+-      if (DECL_P (expr)
+-	  && (allow_func_align || TREE_CODE (expr) != FUNCTION_DECL))
+-	return DECL_ALIGN_UNIT (expr);
++      if (DECL_P (expr))
++	return get_object_alignment (expr, ~0U) / BITS_PER_UNIT;
+     }
+   else if (code == POINTER_PLUS_EXPR)
+     {
+@@ -9282,8 +9276,7 @@
+ 
+       op0 = TREE_OPERAND (expr, 0);
+       STRIP_NOPS (op0);
+-      modulus = get_pointer_modulus_and_residue (op0, residue,
+-						 allow_func_align);
++      modulus = get_pointer_modulus_and_residue (op0, residue);
+ 
+       op1 = TREE_OPERAND (expr, 1);
+       STRIP_NOPS (op1);
+@@ -11147,8 +11140,7 @@
+ 	  unsigned HOST_WIDE_INT modulus, residue;
+ 	  unsigned HOST_WIDE_INT low = TREE_INT_CST_LOW (arg1);
+ 
+-	  modulus = get_pointer_modulus_and_residue (arg0, &residue,
+-						     integer_onep (arg1));
++	  modulus = get_pointer_modulus_and_residue (arg0, &residue);
+ 
+ 	  /* This works because modulus is a power of 2.  If this weren't the
+ 	     case, we'd have to replace it by its greatest power-of-2
+--- a/src/gcc/fortran/ChangeLog
++++ b/src/gcc/fortran/ChangeLog
+@@ -1,3 +1,60 @@
++2012-07-14  Mikael Morin  <mikael@gcc.gnu.org>
++
++	Backport from trunk:
++	2012-01-09  Mikael Morin  <mikael@gcc.gnu.org>
++
++	PR fortran/51758
++	* trans-array.c (gfc_walk_elemental_function_args):
++	Skip over NULL() actual arguments.
++
++2012-06-14  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53597
++	* decl.c (match_attr_spec): Only mark module variables
++	as SAVE_IMPLICIT for Fortran 2008 and later.
++
++2012-06-05  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/50619
++	* resolve.c (build_default_init_expr): Don't initialize
++	ASSOCIATE names.
++
++2012-06-01  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53521
++	* trans.c (gfc_deallocate_scalar_with_status): Properly
++	handle the case size == 0.
++
++2012-05-23  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53389
++	* trans-array.c (gfc_add_loop_ss_code): Don't evaluate
++	expression, if ss->is_alloc_lhs is set.
++
++2012-05-02  Tobias Burnus  <burnus@net-b.de>
++
++	Backport from mainline
++	2012-04-12  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52864
++	* expr.c (gfc_check_vardef_context): Fix assignment check for
++	pointer components.
++
++2012-03-10  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52469
++	* trans-types.c (gfc_get_function_type): Handle backend_decl
++	of a procedure pointer.
++
++2012-03-06  Tobias Burnus  <burnus@net-b.de>
++
++	Backport from mainline
++	2012-03-02  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52452
++	* resolve.c (resolve_intrinsic): Don't search for a
++	function if we know that it is a subroutine.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/gcc/fortran/decl.c
++++ b/src/gcc/fortran/decl.c
+@@ -3623,8 +3623,9 @@
+ 	}
+     }
+ 
+-  /* Module variables implicitly have the SAVE attribute.  */
+-  if (gfc_current_state () == COMP_MODULE && !current_attr.save)
++  /* Since Fortran 2008 module variables implicitly have the SAVE attribute.  */
++  if (gfc_current_state () == COMP_MODULE && !current_attr.save
++      && (gfc_option.allow_std & GFC_STD_F2008) != 0)
+     current_attr.save = SAVE_IMPLICIT;
+ 
+   colon_seen = 1;
+--- a/src/gcc/fortran/expr.c
++++ b/src/gcc/fortran/expr.c
+@@ -4474,7 +4474,11 @@
+       if (ptr_component && ref->type == REF_COMPONENT)
+ 	check_intentin = false;
+       if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer)
+-	ptr_component = true;
++	{
++	  ptr_component = true;
++	  if (!pointer)
++	    check_intentin = false;
++	}
+     }
+   if (check_intentin && sym->attr.intent == INTENT_IN)
+     {
+--- a/src/gcc/fortran/resolve.c
++++ b/src/gcc/fortran/resolve.c
+@@ -1452,7 +1452,7 @@
+ 
+   if (sym->intmod_sym_id)
+     isym = gfc_intrinsic_function_by_id ((gfc_isym_id) sym->intmod_sym_id);
+-  else
++  else if (!sym->attr.subroutine)
+     isym = gfc_find_function (sym->name);
+ 
+   if (isym)
+@@ -9700,7 +9700,8 @@
+       || sym->attr.data
+       || sym->module
+       || sym->attr.cray_pointee
+-      || sym->attr.cray_pointer)
++      || sym->attr.cray_pointer
++      || sym->assoc)
+     return NULL;
+ 
+   /* Now we'll try to build an initializer expression.  */
+--- a/src/gcc/fortran/trans-array.c
++++ b/src/gcc/fortran/trans-array.c
+@@ -2056,6 +2056,11 @@
+   gfc_se se;
+   int n;
+ 
++  /* Don't evaluate the arguments for realloc_lhs_loop_for_fcn_call; otherwise,
++     arguments could get evaluated multiple times.  */
++  if (ss->is_alloc_lhs)
++    return;
++
+   /* TODO: This can generate bad code if there are ordering dependencies,
+      e.g., a callee allocated function and an unknown size constructor.  */
+   gcc_assert (ss != NULL);
+@@ -7548,7 +7553,7 @@
+   scalar = 1;
+   for (; arg; arg = arg->next)
+     {
+-      if (!arg->expr)
++      if (!arg->expr || arg->expr->expr_type == EXPR_NULL)
+ 	continue;
+ 
+       newss = gfc_walk_subexpr (head, arg->expr);
+--- a/src/gcc/fortran/trans.c
++++ b/src/gcc/fortran/trans.c
+@@ -1005,15 +1005,12 @@
+   if (!res && size != 0)
+     _gfortran_os_error ("Allocation would exceed memory limit");
+ 
+-  if (size == 0)
+-    return NULL;
+-
+   return res;
+ }  */
+ tree
+ gfc_call_realloc (stmtblock_t * block, tree mem, tree size)
+ {
+-  tree msg, res, nonzero, zero, null_result, tmp;
++  tree msg, res, nonzero, null_result, tmp;
+   tree type = TREE_TYPE (mem);
+ 
+   size = gfc_evaluate_now (size, block);
+@@ -1044,15 +1041,6 @@
+ 			 build_empty_stmt (input_location));
+   gfc_add_expr_to_block (block, tmp);
+ 
+-  /* if (size == 0) then the result is NULL.  */
+-  tmp = fold_build2_loc (input_location, MODIFY_EXPR, type, res,
+-			 build_int_cst (type, 0));
+-  zero = fold_build1_loc (input_location, TRUTH_NOT_EXPR, boolean_type_node,
+-			  nonzero);
+-  tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node, zero, tmp,
+-			 build_empty_stmt (input_location));
+-  gfc_add_expr_to_block (block, tmp);
+-
+   return res;
+ }
+ 
+--- a/src/gcc/fortran/trans-types.c
++++ b/src/gcc/fortran/trans-types.c
+@@ -2519,7 +2519,11 @@
+ 	      || sym->attr.flavor == FL_PROGRAM);
+ 
+   if (sym->backend_decl)
+-    return TREE_TYPE (sym->backend_decl);
++    {
++      if (sym->attr.proc_pointer)
++	return TREE_TYPE (TREE_TYPE (sym->backend_decl));
++      return TREE_TYPE (sym->backend_decl);
++    }
+ 
+   alternate_return = 0;
+   typelist = NULL_TREE;
+--- a/src/gcc/gcov-iov.c
++++ b/src/gcc/gcov-iov.c
+@@ -19,8 +19,8 @@
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+-#include <stdio.h>
+-#include <stdlib.h>
++#include "bconfig.h"
++#include "system.h"
+ 
+ /* Command line arguments are the base GCC version and the development
+    phase (the latter may be an empty string).  */
+@@ -48,8 +48,14 @@
+   if (*ptr == '.')
+     minor = strtoul (ptr + 1, 0, 10);
+ 
++  /* For releases the development phase is an empty string, for
++     prerelease versions on a release branch it is "prerelease".
++     Consider both equal as patch-level releases do not change
++     the GCOV version either.
++     On the trunk the development phase is "experimental".  */
+   phase = argv[2][0];
+-  if (phase == '\0')
++  if (phase == '\0'
++      || strcmp (argv[2], "prerelease") == 0)
+     phase = '*';
+ 
+   v[0] = (major < 10 ? '0' : 'A' - 10) + major;
+--- a/src/gcc/gengtype-lex.c
++++ b/src/gcc/gengtype-lex.c
+@@ -55,7 +55,6 @@
+ typedef unsigned char flex_uint8_t; 
+ typedef unsigned short int flex_uint16_t;
+ typedef unsigned int flex_uint32_t;
+-#endif /* ! C99 */
+ 
+ /* Limits of integral types. */
+ #ifndef INT8_MIN
+@@ -86,6 +85,8 @@
+ #define UINT32_MAX             (4294967295U)
+ #endif
+ 
++#endif /* ! C99 */
++
+ #endif /* ! FLEXINT_H */
+ 
+ #ifdef __cplusplus
+@@ -142,7 +143,15 @@
+ 
+ /* Size of default input buffer. */
+ #ifndef YY_BUF_SIZE
++#ifdef __ia64__
++/* On IA-64, the buffer size is 16k, not 8k.
++ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
++ * Ditto for the __ia64__ case accordingly.
++ */
++#define YY_BUF_SIZE 32768
++#else
+ #define YY_BUF_SIZE 16384
++#endif /* __ia64__ */
+ #endif
+ 
+ /* The state buf must be large enough to hold one state per character in the main buffer.
+@@ -942,7 +951,7 @@
+ #define YY_MORE_ADJ 0
+ #define YY_RESTORE_YY_MORE_OFFSET
+ char *yytext;
+-#line 1 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 1 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ /* -*- indented-text -*- */
+ /* Process source files and output type information.
+    Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+@@ -964,7 +973,7 @@
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ #define YY_NO_INPUT 1
+-#line 25 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 25 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ #include "bconfig.h"
+ #include "system.h"
+ 
+@@ -988,7 +997,7 @@
+ }
+ 
+ 
+-#line 991 "gengtype-lex.c"
++#line 1000 "gengtype-lex.c"
+ 
+ #define INITIAL 0
+ #define in_struct 1
+@@ -1070,7 +1079,12 @@
+ 
+ /* Amount of stuff to slurp up with each read. */
+ #ifndef YY_READ_BUF_SIZE
++#ifdef __ia64__
++/* On IA-64, the buffer size is 16k, not 8k */
++#define YY_READ_BUF_SIZE 16384
++#else
+ #define YY_READ_BUF_SIZE 8192
++#endif /* __ia64__ */
+ #endif
+ 
+ /* Copy whatever the last rule matched to the standard output. */
+@@ -1089,7 +1103,7 @@
+ 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ 		{ \
+ 		int c = '*'; \
+-		unsigned n; \
++		size_t n; \
+ 		for ( n = 0; n < max_size && \
+ 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ 			buf[n] = (char) c; \
+@@ -1174,7 +1188,7 @@
+ 	register char *yy_cp, *yy_bp;
+ 	register int yy_act;
+     
+-#line 59 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 59 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ 
+   /* Do this on entry to yylex():  */
+   *yylval = 0;
+@@ -1185,7 +1199,7 @@
+     }
+ 
+   /* Things we look for in skipping mode: */
+-#line 1188 "gengtype-lex.c"
++#line 1202 "gengtype-lex.c"
+ 
+ 	if ( !(yy_init) )
+ 		{
+@@ -1271,7 +1285,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 70 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 70 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   BEGIN(in_struct);
+   return TYPEDEF;
+@@ -1283,7 +1297,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 74 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 74 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   BEGIN(in_struct);
+   return STRUCT;
+@@ -1295,7 +1309,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 78 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 78 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   BEGIN(in_struct);
+   return UNION;
+@@ -1307,7 +1321,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 82 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 82 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   BEGIN(in_struct);
+   return EXTERN;
+@@ -1319,7 +1333,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 86 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 86 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   BEGIN(in_struct);
+   return STATIC;
+@@ -1331,7 +1345,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 91 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 91 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   BEGIN(in_struct);
+   return DEFVEC_OP;
+@@ -1343,7 +1357,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 95 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 95 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   BEGIN(in_struct);
+   return DEFVEC_I;
+@@ -1355,7 +1369,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 99 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 99 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   BEGIN(in_struct);
+   return DEFVEC_ALLOC;
+@@ -1365,19 +1379,19 @@
+ 
+ case 9:
+ YY_RULE_SETUP
+-#line 107 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 107 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { BEGIN(in_struct_comment); }
+ 	YY_BREAK
+ case 10:
+ /* rule 10 can match eol */
+ YY_RULE_SETUP
+-#line 109 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 109 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { update_lineno (yytext, yyleng); }
+ 	YY_BREAK
+ case 11:
+ /* rule 11 can match eol */
+ YY_RULE_SETUP
+-#line 110 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 110 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { lexer_line.line++; }
+ 	YY_BREAK
+ case 12:
+@@ -1386,7 +1400,7 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 5;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 112 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 112 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ /* don't care */
+ 	YY_BREAK
+ case 13:
+@@ -1395,7 +1409,7 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 3;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 113 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 113 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return GTY_TOKEN; }
+ 	YY_BREAK
+ case 14:
+@@ -1404,7 +1418,7 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 3;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 114 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 114 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return VEC_TOKEN; }
+ 	YY_BREAK
+ case 15:
+@@ -1413,7 +1427,7 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 5;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 115 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 115 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return UNION; }
+ 	YY_BREAK
+ case 16:
+@@ -1422,7 +1436,7 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 6;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 116 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 116 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return STRUCT; }
+ 	YY_BREAK
+ case 17:
+@@ -1431,7 +1445,7 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 4;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 117 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 117 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return ENUM; }
+ 	YY_BREAK
+ case 18:
+@@ -1440,7 +1454,7 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 9;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 118 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 118 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return PTR_ALIAS; }
+ 	YY_BREAK
+ case 19:
+@@ -1449,12 +1463,12 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 10;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 119 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 119 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return NESTED_PTR; }
+ 	YY_BREAK
+ case 20:
+ YY_RULE_SETUP
+-#line 120 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 120 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return NUM; }
+ 	YY_BREAK
+ case 21:
+@@ -1463,7 +1477,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 121 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 121 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
+   return PARAM_IS;
+@@ -1474,11 +1488,11 @@
+ *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+-#line 127 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 127 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ case 23:
+ /* rule 23 can match eol */
+ YY_RULE_SETUP
+-#line 127 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 127 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   size_t len;
+ 
+@@ -1496,7 +1510,7 @@
+ (yy_c_buf_p) = yy_cp -= 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 139 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 139 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
+   return ID;
+@@ -1505,7 +1519,7 @@
+ case 25:
+ /* rule 25 can match eol */
+ YY_RULE_SETUP
+-#line 144 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 144 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
+   return STRING;
+@@ -1515,7 +1529,7 @@
+ case 26:
+ /* rule 26 can match eol */
+ YY_RULE_SETUP
+-#line 149 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 149 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
+   return ARRAY;
+@@ -1524,7 +1538,7 @@
+ case 27:
+ /* rule 27 can match eol */
+ YY_RULE_SETUP
+-#line 153 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 153 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
+   return CHAR;
+@@ -1532,24 +1546,24 @@
+ 	YY_BREAK
+ case 28:
+ YY_RULE_SETUP
+-#line 158 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 158 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return ELLIPSIS; }
+ 	YY_BREAK
+ case 29:
+ YY_RULE_SETUP
+-#line 159 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 159 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { return yytext[0]; }
+ 	YY_BREAK
+ /* ignore pp-directives */
+ case 30:
+ /* rule 30 can match eol */
+ YY_RULE_SETUP
+-#line 162 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 162 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {lexer_line.line++;}
+ 	YY_BREAK
+ case 31:
+ YY_RULE_SETUP
+-#line 164 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 164 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   error_at_line (&lexer_line, "unexpected character `%s'", yytext);
+ }
+@@ -1557,30 +1571,30 @@
+ 
+ case 32:
+ YY_RULE_SETUP
+-#line 169 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 169 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { BEGIN(in_comment); }
+ 	YY_BREAK
+ case 33:
+ /* rule 33 can match eol */
+ YY_RULE_SETUP
+-#line 170 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 170 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { lexer_line.line++; }
+ 	YY_BREAK
+ case 34:
+-#line 172 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 172 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ case 35:
+ /* rule 35 can match eol */
+-#line 173 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 173 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ case 36:
+ /* rule 36 can match eol */
+ YY_RULE_SETUP
+-#line 173 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 173 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ /* do nothing */
+ 	YY_BREAK
+ case 37:
+ /* rule 37 can match eol */
+ YY_RULE_SETUP
+-#line 174 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 174 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { update_lineno (yytext, yyleng); }
+ 	YY_BREAK
+ case 38:
+@@ -1589,21 +1603,21 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 175 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 175 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ /* do nothing */
+ 	YY_BREAK
+ 
+ case 39:
+ /* rule 39 can match eol */
+ YY_RULE_SETUP
+-#line 178 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 178 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { lexer_line.line++; }
+ 	YY_BREAK
+ case 40:
+-#line 180 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 180 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ case 41:
+ YY_RULE_SETUP
+-#line 180 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 180 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ /* do nothing */
+ 	YY_BREAK
+ case 42:
+@@ -1612,25 +1626,25 @@
+ (yy_c_buf_p) = yy_cp = yy_bp + 1;
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ YY_RULE_SETUP
+-#line 181 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 181 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ /* do nothing */
+ 	YY_BREAK
+ 
+ case 43:
+ YY_RULE_SETUP
+-#line 183 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 183 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { BEGIN(INITIAL); } 
+ 	YY_BREAK
+ case 44:
+ YY_RULE_SETUP
+-#line 184 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 184 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ { BEGIN(in_struct); }
+ 	YY_BREAK
+ case 45:
+-#line 187 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 187 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ case 46:
+ YY_RULE_SETUP
+-#line 187 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 187 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ {
+   error_at_line (&lexer_line, 
+ 		 "unterminated comment or string; unexpected EOF");
+@@ -1639,15 +1653,15 @@
+ case 47:
+ /* rule 47 can match eol */
+ YY_RULE_SETUP
+-#line 192 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 192 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ /* do nothing */
+ 	YY_BREAK
+ case 48:
+ YY_RULE_SETUP
+-#line 194 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 194 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ YY_FATAL_ERROR( "flex scanner jammed" );
+ 	YY_BREAK
+-#line 1650 "gengtype-lex.c"
++#line 1664 "gengtype-lex.c"
+ case YY_STATE_EOF(INITIAL):
+ case YY_STATE_EOF(in_struct):
+ case YY_STATE_EOF(in_struct_comment):
+@@ -2371,8 +2385,8 @@
+ 
+ /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+  * scan from a @e copy of @a bytes.
+- * @param bytes the byte buffer to scan
+- * @param len the number of bytes in the buffer pointed to by @a bytes.
++ * @param yybytes the byte buffer to scan
++ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+  * 
+  * @return the newly allocated buffer state object.
+  */
+@@ -2611,7 +2625,7 @@
+ 
+ #define YYTABLES_NAME "yytables"
+ 
+-#line 194 "/d//gcc-4.6.3/gcc-4.6.3/gcc/gengtype-lex.l"
++#line 194 "/home/mgretton/devel/release/4.6-2012.08/gcc-linaro-4.6-2012.08/gcc/gengtype-lex.l"
+ 
+ 
+ 
+--- a/src/gcc/genopinit.c
++++ b/src/gcc/genopinit.c
+@@ -46,10 +46,12 @@
+    used.  $A and $B are replaced with the full name of the mode; $a and $b
+    are replaced with the short form of the name, as above.
+ 
+-   If $N is present in the pattern, it means the two modes must be consecutive
+-   widths in the same mode class (e.g, QImode and HImode).  $I means that
+-   only full integer modes should be considered for the next mode, and $F
+-   means that only float modes should be considered.
++   If $N is present in the pattern, it means the two modes must be in
++   the same mode class, and $b must be greater than $a (e.g, QImode
++   and HImode).
++
++   $I means that only full integer modes should be considered for the
++   next mode, and $F means that only float modes should be considered.
+    $P means that both full and partial integer modes should be considered.
+    $Q means that only fixed-point modes should be considered.
+ 
+@@ -74,6 +76,8 @@
+   "set_convert_optab_handler (fractuns_optab, $B, $A, CODE_FOR_$(fractuns$Q$a$I$b2$))",
+   "set_convert_optab_handler (satfract_optab, $B, $A, CODE_FOR_$(satfract$a$Q$b2$))",
+   "set_convert_optab_handler (satfractuns_optab, $B, $A, CODE_FOR_$(satfractuns$I$a$Q$b2$))",
++  "set_convert_optab_handler (vec_load_lanes_optab, $A, $B, CODE_FOR_$(vec_load_lanes$a$b$))",
++  "set_convert_optab_handler (vec_store_lanes_optab, $A, $B, CODE_FOR_$(vec_store_lanes$a$b$))",
+   "set_optab_handler (add_optab, $A, CODE_FOR_$(add$P$a3$))",
+   "set_optab_handler (addv_optab, $A, CODE_FOR_$(add$F$a3$)),\n\
+     set_optab_handler (add_optab, $A, CODE_FOR_$(add$F$a3$))",
+@@ -97,17 +101,17 @@
+   "set_optab_handler (smulv_optab, $A, CODE_FOR_$(mulv$I$a3$))",
+   "set_optab_handler (umul_highpart_optab, $A, CODE_FOR_$(umul$a3_highpart$))",
+   "set_optab_handler (smul_highpart_optab, $A, CODE_FOR_$(smul$a3_highpart$))",
+-  "set_optab_handler (smul_widen_optab, $B, CODE_FOR_$(mul$a$b3$)$N)",
+-  "set_optab_handler (umul_widen_optab, $B, CODE_FOR_$(umul$a$b3$)$N)",
+-  "set_optab_handler (usmul_widen_optab, $B, CODE_FOR_$(usmul$a$b3$)$N)",
+-  "set_optab_handler (smadd_widen_optab, $B, CODE_FOR_$(madd$a$b4$)$N)",
+-  "set_optab_handler (umadd_widen_optab, $B, CODE_FOR_$(umadd$a$b4$)$N)",
+-  "set_optab_handler (ssmadd_widen_optab, $B, CODE_FOR_$(ssmadd$a$b4$)$N)",
+-  "set_optab_handler (usmadd_widen_optab, $B, CODE_FOR_$(usmadd$a$b4$)$N)",
+-  "set_optab_handler (smsub_widen_optab, $B, CODE_FOR_$(msub$a$b4$)$N)",
+-  "set_optab_handler (umsub_widen_optab, $B, CODE_FOR_$(umsub$a$b4$)$N)",
+-  "set_optab_handler (ssmsub_widen_optab, $B, CODE_FOR_$(ssmsub$a$b4$)$N)",
+-  "set_optab_handler (usmsub_widen_optab, $B, CODE_FOR_$(usmsub$a$b4$)$N)",
++  "set_widening_optab_handler (smul_widen_optab, $B, $A, CODE_FOR_$(mul$a$b3$)$N)",
++  "set_widening_optab_handler (umul_widen_optab, $B, $A, CODE_FOR_$(umul$a$b3$)$N)",
++  "set_widening_optab_handler (usmul_widen_optab, $B, $A, CODE_FOR_$(usmul$a$b3$)$N)",
++  "set_widening_optab_handler (smadd_widen_optab, $B, $A, CODE_FOR_$(madd$a$b4$)$N)",
++  "set_widening_optab_handler (umadd_widen_optab, $B, $A, CODE_FOR_$(umadd$a$b4$)$N)",
++  "set_widening_optab_handler (ssmadd_widen_optab, $B, $A, CODE_FOR_$(ssmadd$a$b4$)$N)",
++  "set_widening_optab_handler (usmadd_widen_optab, $B, $A, CODE_FOR_$(usmadd$a$b4$)$N)",
++  "set_widening_optab_handler (smsub_widen_optab, $B, $A, CODE_FOR_$(msub$a$b4$)$N)",
++  "set_widening_optab_handler (umsub_widen_optab, $B, $A, CODE_FOR_$(umsub$a$b4$)$N)",
++  "set_widening_optab_handler (ssmsub_widen_optab, $B, $A, CODE_FOR_$(ssmsub$a$b4$)$N)",
++  "set_widening_optab_handler (usmsub_widen_optab, $B, $A, CODE_FOR_$(usmsub$a$b4$)$N)",
+   "set_optab_handler (sdiv_optab, $A, CODE_FOR_$(div$a3$))",
+   "set_optab_handler (ssdiv_optab, $A, CODE_FOR_$(ssdiv$Q$a3$))",
+   "set_optab_handler (sdivv_optab, $A, CODE_FOR_$(div$V$I$a3$))",
+@@ -264,6 +268,10 @@
+   "set_optab_handler (vec_widen_umult_lo_optab, $A, CODE_FOR_$(vec_widen_umult_lo_$a$))",
+   "set_optab_handler (vec_widen_smult_hi_optab, $A, CODE_FOR_$(vec_widen_smult_hi_$a$))",
+   "set_optab_handler (vec_widen_smult_lo_optab, $A, CODE_FOR_$(vec_widen_smult_lo_$a$))",
++  "set_optab_handler (vec_widen_ushiftl_hi_optab, $A, CODE_FOR_$(vec_widen_ushiftl_hi_$a$))",
++  "set_optab_handler (vec_widen_ushiftl_lo_optab, $A, CODE_FOR_$(vec_widen_ushiftl_lo_$a$))",
++  "set_optab_handler (vec_widen_sshiftl_hi_optab, $A, CODE_FOR_$(vec_widen_sshiftl_hi_$a$))",
++  "set_optab_handler (vec_widen_sshiftl_lo_optab, $A, CODE_FOR_$(vec_widen_sshiftl_lo_$a$))",
+   "set_optab_handler (vec_unpacks_hi_optab, $A, CODE_FOR_$(vec_unpacks_hi_$a$))",
+   "set_optab_handler (vec_unpacks_lo_optab, $A, CODE_FOR_$(vec_unpacks_lo_$a$))",
+   "set_optab_handler (vec_unpacku_hi_optab, $A, CODE_FOR_$(vec_unpacku_hi_$a$))",
+@@ -302,7 +310,7 @@
+     {
+       int force_float = 0, force_int = 0, force_partial_int = 0;
+       int force_fixed = 0;
+-      int force_consec = 0;
++      int force_wider = 0;
+       int matches = 1;
+ 
+       for (pp = optabs[pindex]; pp[0] != '$' || pp[1] != '('; pp++)
+@@ -320,7 +328,7 @@
+ 	    switch (*++pp)
+ 	      {
+ 	      case 'N':
+-		force_consec = 1;
++		force_wider = 1;
+ 		break;
+ 	      case 'I':
+ 		force_int = 1;
+@@ -389,7 +397,10 @@
+ 			    || mode_class[i] == MODE_VECTOR_FRACT
+ 			    || mode_class[i] == MODE_VECTOR_UFRACT
+ 			    || mode_class[i] == MODE_VECTOR_ACCUM
+-			    || mode_class[i] == MODE_VECTOR_UACCUM))
++			    || mode_class[i] == MODE_VECTOR_UACCUM)
++			&& (! force_wider
++			    || *pp == 'a'
++			    || m1 < i))
+ 		      break;
+ 		  }
+ 
+@@ -409,8 +420,7 @@
+ 	}
+ 
+       if (matches && pp[0] == '$' && pp[1] == ')'
+-	  && *np == 0
+-	  && (! force_consec || (int) GET_MODE_WIDER_MODE(m1) == m2))
++	  && *np == 0)
+ 	break;
+     }
+ 
+--- a/src/gcc/gimple.c
++++ b/src/gcc/gimple.c
+@@ -276,6 +276,59 @@
+ }
+ 
+ 
++/* Helper for gimple_build_call_internal and gimple_build_call_internal_vec.
++   Build the basic components of a GIMPLE_CALL statement to internal
++   function FN with NARGS arguments.  */
++
++static inline gimple
++gimple_build_call_internal_1 (enum internal_fn fn, unsigned nargs)
++{
++  gimple s = gimple_build_with_ops (GIMPLE_CALL, ERROR_MARK, nargs + 3);
++  s->gsbase.subcode |= GF_CALL_INTERNAL;
++  gimple_call_set_internal_fn (s, fn);
++  gimple_call_reset_alias_info (s);
++  return s;
++}
++
++
++/* Build a GIMPLE_CALL statement to internal function FN.  NARGS is
++   the number of arguments.  The ... are the arguments.  */
++
++gimple
++gimple_build_call_internal (enum internal_fn fn, unsigned nargs, ...)
++{
++  va_list ap;
++  gimple call;
++  unsigned i;
++
++  call = gimple_build_call_internal_1 (fn, nargs);
++  va_start (ap, nargs);
++  for (i = 0; i < nargs; i++)
++    gimple_call_set_arg (call, i, va_arg (ap, tree));
++  va_end (ap);
++
++  return call;
++}
++
++
++/* Build a GIMPLE_CALL statement to internal function FN with the arguments
++   specified in vector ARGS.  */
++
++gimple
++gimple_build_call_internal_vec (enum internal_fn fn, VEC(tree, heap) *args)
++{
++  unsigned i, nargs;
++  gimple call;
++
++  nargs = VEC_length (tree, args);
++  call = gimple_build_call_internal_1 (fn, nargs);
++  for (i = 0; i < nargs; i++)
++    gimple_call_set_arg (call, i, VEC_index (tree, args, i));
++
++  return call;
++}
++
++
+ /* Build a GIMPLE_CALL statement from CALL_EXPR T.  Note that T is
+    assumed to be in GIMPLE form already.  Minimal checking is done of
+    this fact.  */
+@@ -1774,6 +1827,20 @@
+   return (gimple_body (fndecl) || (fn && fn->cfg));
+ }
+ 
++/* Return true if calls C1 and C2 are known to go to the same function.  */
++
++bool
++gimple_call_same_target_p (const_gimple c1, const_gimple c2)
++{
++  if (gimple_call_internal_p (c1))
++    return (gimple_call_internal_p (c2)
++	    && gimple_call_internal_fn (c1) == gimple_call_internal_fn (c2));
++  else
++    return (gimple_call_fn (c1) == gimple_call_fn (c2)
++	    || (gimple_call_fndecl (c1)
++		&& gimple_call_fndecl (c1) == gimple_call_fndecl (c2)));
++}
++
+ /* Detect flags from a GIMPLE_CALL.  This is just like
+    call_expr_flags, but for gimple tuples.  */
+ 
+@@ -1786,6 +1853,8 @@
+ 
+   if (decl)
+     flags = flags_from_decl_or_type (decl);
++  else if (gimple_call_internal_p (stmt))
++    flags = internal_fn_flags (gimple_call_internal_fn (stmt));
+   else
+     {
+       t = TREE_TYPE (gimple_call_fn (stmt));
+@@ -1801,18 +1870,35 @@
+   return flags;
+ }
+ 
++/* Return the "fn spec" string for call STMT.  */
++
++static tree
++gimple_call_fnspec (const_gimple stmt)
++{
++  tree fn, type, attr;
++
++  fn = gimple_call_fn (stmt);
++  if (!fn)
++    return NULL_TREE;
++
++  type = TREE_TYPE (TREE_TYPE (fn));
++  if (!type)
++    return NULL_TREE;
++
++  attr = lookup_attribute ("fn spec", TYPE_ATTRIBUTES (type));
++  if (!attr)
++    return NULL_TREE;
++
++  return TREE_VALUE (TREE_VALUE (attr));
++}
++
+ /* Detects argument flags for argument number ARG on call STMT.  */
+ 
+ int
+ gimple_call_arg_flags (const_gimple stmt, unsigned arg)
+ {
+-  tree type = TREE_TYPE (TREE_TYPE (gimple_call_fn (stmt)));
+-  tree attr = lookup_attribute ("fn spec", TYPE_ATTRIBUTES (type));
+-  if (!attr)
+-    return 0;
+-
+-  attr = TREE_VALUE (TREE_VALUE (attr));
+-  if (1 + arg >= (unsigned) TREE_STRING_LENGTH (attr))
++  tree attr = gimple_call_fnspec (stmt);
++  if (!attr || 1 + arg >= (unsigned) TREE_STRING_LENGTH (attr))
+     return 0;
+ 
+   switch (TREE_STRING_POINTER (attr)[1 + arg])
+@@ -1850,13 +1936,8 @@
+   if (gimple_call_flags (stmt) & ECF_MALLOC)
+     return ERF_NOALIAS;
+ 
+-  type = TREE_TYPE (TREE_TYPE (gimple_call_fn (stmt)));
+-  attr = lookup_attribute ("fn spec", TYPE_ATTRIBUTES (type));
+-  if (!attr)
+-    return 0;
+-
+-  attr = TREE_VALUE (TREE_VALUE (attr));
+-  if (TREE_STRING_LENGTH (attr) < 1)
++  attr = gimple_call_fnspec (stmt);
++  if (!attr || TREE_STRING_LENGTH (attr) < 1)
+     return 0;
+ 
+   switch (TREE_STRING_POINTER (attr)[0])
+@@ -2275,8 +2356,6 @@
+ bool
+ gimple_has_side_effects (const_gimple s)
+ {
+-  unsigned i;
+-
+   if (is_gimple_debug (s))
+     return false;
+ 
+@@ -2292,45 +2371,15 @@
+ 
+   if (is_gimple_call (s))
+     {
+-      unsigned nargs = gimple_call_num_args (s);
++      int flags = gimple_call_flags (s);
+ 
+-      if (!(gimple_call_flags (s) & (ECF_CONST | ECF_PURE)))
+-        return true;
+-      else if (gimple_call_flags (s) & ECF_LOOPING_CONST_OR_PURE)
+-	/* An infinite loop is considered a side effect.  */
++      /* An infinite loop is considered a side effect.  */
++      if (!(flags & (ECF_CONST | ECF_PURE))
++	  || (flags & ECF_LOOPING_CONST_OR_PURE))
+ 	return true;
+ 
+-      if (gimple_call_lhs (s)
+-          && TREE_SIDE_EFFECTS (gimple_call_lhs (s)))
+-	{
+-	  gcc_checking_assert (gimple_has_volatile_ops (s));
+-	  return true;
+-	}
+-
+-      if (TREE_SIDE_EFFECTS (gimple_call_fn (s)))
+-        return true;
+-
+-      for (i = 0; i < nargs; i++)
+-        if (TREE_SIDE_EFFECTS (gimple_call_arg (s, i)))
+-	  {
+-	    gcc_checking_assert (gimple_has_volatile_ops (s));
+-	    return true;
+-	  }
+-
+       return false;
+     }
+-  else
+-    {
+-      for (i = 0; i < gimple_num_ops (s); i++)
+-	{
+-	  tree op = gimple_op (s, i);
+-	  if (op && TREE_SIDE_EFFECTS (op))
+-	    {
+-	      gcc_checking_assert (gimple_has_volatile_ops (s));
+-	      return true;
+-	    }
+-	}
+-    }
+ 
+   return false;
+ }
+@@ -2349,14 +2398,15 @@
+   if (is_gimple_call (s))
+     {
+       unsigned nargs = gimple_call_num_args (s);
++      tree fn;
+ 
+       if (!(gimple_call_flags (s) & (ECF_CONST | ECF_PURE)))
+         return true;
+ 
+       /* We cannot use gimple_has_volatile_ops here,
+          because we must ignore a volatile LHS.  */
+-      if (TREE_SIDE_EFFECTS (gimple_call_fn (s))
+-          || TREE_THIS_VOLATILE (gimple_call_fn (s)))
++      fn = gimple_call_fn (s);
++      if (fn && (TREE_SIDE_EFFECTS (fn) || TREE_THIS_VOLATILE (fn)))
+ 	{
+ 	  gcc_assert (gimple_has_volatile_ops (s));
+ 	  return true;
+@@ -3113,7 +3163,6 @@
+ gimple_call_copy_skip_args (gimple stmt, bitmap args_to_skip)
+ {
+   int i;
+-  tree fn = gimple_call_fn (stmt);
+   int nargs = gimple_call_num_args (stmt);
+   VEC(tree, heap) *vargs = VEC_alloc (tree, heap, nargs);
+   gimple new_stmt;
+@@ -3122,7 +3171,11 @@
+     if (!bitmap_bit_p (args_to_skip, i))
+       VEC_quick_push (tree, vargs, gimple_call_arg (stmt, i));
+ 
+-  new_stmt = gimple_build_call_vec (fn, vargs);
++  if (gimple_call_internal_p (stmt))
++    new_stmt = gimple_build_call_internal_vec (gimple_call_internal_fn (stmt),
++					       vargs);
++  else
++    new_stmt = gimple_build_call_vec (gimple_call_fn (stmt), vargs);
+   VEC_free (tree, heap, vargs);
+   if (gimple_call_lhs (stmt))
+     gimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));
+--- a/src/gcc/gimple.h
++++ b/src/gcc/gimple.h
+@@ -30,6 +30,7 @@
+ #include "basic-block.h"
+ #include "tree-ssa-operands.h"
+ #include "tree-ssa-alias.h"
++#include "internal-fn.h"
+ 
+ struct gimple_seq_node_d;
+ typedef struct gimple_seq_node_d *gimple_seq_node;
+@@ -82,6 +83,8 @@
+ 			   name, a _DECL, a _REF, etc.  */
+ };
+ 
++#define GF_CALL_INTERNAL_FN_SHIFT 8
++
+ /* Specific flags for individual GIMPLE statements.  These flags are
+    always stored in gimple_statement_base.subcode and they may only be
+    defined for statement codes that do not use sub-codes.
+@@ -102,6 +105,8 @@
+     GF_CALL_TAILCALL		= 1 << 3,
+     GF_CALL_VA_ARG_PACK		= 1 << 4,
+     GF_CALL_NOTHROW		= 1 << 5,
++    GF_CALL_INTERNAL		= 1 << 6,
++    GF_CALL_INTERNAL_FN		= 0xff << GF_CALL_INTERNAL_FN_SHIFT,
+     GF_OMP_PARALLEL_COMBINED	= 1 << 0,
+ 
+     /* True on an GIMPLE_OMP_RETURN statement if the return does not require
+@@ -817,6 +822,8 @@
+ 
+ gimple gimple_build_call_vec (tree, VEC(tree, heap) *);
+ gimple gimple_build_call (tree, unsigned, ...);
++gimple gimple_build_call_internal (enum internal_fn, unsigned, ...);
++gimple gimple_build_call_internal_vec (enum internal_fn, VEC(tree, heap) *);
+ gimple gimple_build_call_from_tree (tree);
+ gimple gimplify_assign (tree, tree, gimple_seq *);
+ gimple gimple_build_cond (enum tree_code, tree, tree, tree, tree);
+@@ -861,6 +868,7 @@
+ void gimple_seq_free (gimple_seq);
+ void gimple_seq_add_seq (gimple_seq *, gimple_seq);
+ gimple_seq gimple_seq_copy (gimple_seq);
++bool gimple_call_same_target_p (const_gimple, const_gimple);
+ int gimple_call_flags (const_gimple);
+ int gimple_call_return_flags (const_gimple);
+ int gimple_call_arg_flags (const_gimple, unsigned);
+@@ -2012,6 +2020,27 @@
+ }
+ 
+ 
++/* Return true if call GS calls an internal-only function, as enumerated
++   by internal_fn.  */
++
++static inline bool
++gimple_call_internal_p (const_gimple gs)
++{
++  GIMPLE_CHECK (gs, GIMPLE_CALL);
++  return (gs->gsbase.subcode & GF_CALL_INTERNAL) != 0;
++}
++
++
++/* Return the target of internal call GS.  */
++
++static inline enum internal_fn
++gimple_call_internal_fn (const_gimple gs)
++{
++  gcc_assert (gimple_call_internal_p (gs));
++  return (enum internal_fn) (gs->gsbase.subcode >> GF_CALL_INTERNAL_FN_SHIFT);
++}
++
++
+ /* Return a pointer to the tree node representing the function called by call
+    statement GS.  */
+ 
+@@ -2029,6 +2058,7 @@
+ gimple_call_set_fn (gimple gs, tree fn)
+ {
+   GIMPLE_CHECK (gs, GIMPLE_CALL);
++  gcc_assert (!gimple_call_internal_p (gs));
+   gimple_set_op (gs, 1, fn);
+ }
+ 
+@@ -2039,10 +2069,23 @@
+ gimple_call_set_fndecl (gimple gs, tree decl)
+ {
+   GIMPLE_CHECK (gs, GIMPLE_CALL);
++  gcc_assert (!gimple_call_internal_p (gs));
+   gimple_set_op (gs, 1, build_fold_addr_expr_loc (gimple_location (gs), decl));
+ }
+ 
+ 
++/* Set internal function FN to be the function called by call statement GS.  */
++
++static inline void
++gimple_call_set_internal_fn (gimple gs, enum internal_fn fn)
++{
++  GIMPLE_CHECK (gs, GIMPLE_CALL);
++  gcc_assert (gimple_call_internal_p (gs));
++  gs->gsbase.subcode &= ~GF_CALL_INTERNAL_FN;
++  gs->gsbase.subcode |= (int) fn << GF_CALL_INTERNAL_FN_SHIFT;
++}
++
++
+ /* If a given GIMPLE_CALL's callee is a FUNCTION_DECL, return it.
+    Otherwise return NULL.  This function is analogous to
+    get_callee_fndecl in tree land.  */
+@@ -2051,7 +2094,7 @@
+ gimple_call_fndecl (const_gimple gs)
+ {
+   tree addr = gimple_call_fn (gs);
+-  if (TREE_CODE (addr) == ADDR_EXPR)
++  if (addr && TREE_CODE (addr) == ADDR_EXPR)
+     {
+       tree fndecl = TREE_OPERAND (addr, 0);
+       if (TREE_CODE (fndecl) == MEM_REF)
+@@ -2073,8 +2116,13 @@
+ static inline tree
+ gimple_call_return_type (const_gimple gs)
+ {
+-  tree fn = gimple_call_fn (gs);
+-  tree type = TREE_TYPE (fn);
++  tree fn, type;
++
++  fn = gimple_call_fn (gs);
++  if (fn == NULL_TREE)
++    return TREE_TYPE (gimple_call_lhs (gs));
++
++  type = TREE_TYPE (fn);
+ 
+   /* See through the pointer.  */
+   type = TREE_TYPE (type);
+--- a/src/gcc/gimple-low.c
++++ b/src/gcc/gimple-low.c
+@@ -218,6 +218,10 @@
+   tree fndecl, parms, p;
+   unsigned int i, nargs;
+ 
++  /* Calls to internal functions always match their signature.  */
++  if (gimple_call_internal_p (stmt))
++    return true;
++
+   nargs = gimple_call_num_args (stmt);
+ 
+   /* Get argument types for verification.  */
+--- a/src/gcc/gimple-pretty-print.c
++++ b/src/gcc/gimple-pretty-print.c
+@@ -343,6 +343,8 @@
+     case VEC_EXTRACT_ODD_EXPR:
+     case VEC_INTERLEAVE_HIGH_EXPR:
+     case VEC_INTERLEAVE_LOW_EXPR:
++    case VEC_WIDEN_LSHIFT_HI_EXPR:
++    case VEC_WIDEN_LSHIFT_LO_EXPR:
+       for (p = tree_code_name [(int) code]; *p; p++)
+ 	pp_character (buffer, TOUPPER (*p));
+       pp_string (buffer, " <");
+@@ -596,8 +598,12 @@
+ 
+   if (flags & TDF_RAW)
+     {
+-      dump_gimple_fmt (buffer, spc, flags, "%G <%T, %T",
+-                     gs, gimple_call_fn (gs), lhs);
++      if (gimple_call_internal_p (gs))
++	dump_gimple_fmt (buffer, spc, flags, "%G <%s, %T", gs,
++			 internal_fn_name (gimple_call_internal_fn (gs)), lhs);
++      else
++	dump_gimple_fmt (buffer, spc, flags, "%G <%T, %T",
++			 gs, gimple_call_fn (gs), lhs);
+       if (gimple_call_num_args (gs) > 0)
+         {
+           pp_string (buffer, ", ");
+@@ -617,7 +623,10 @@
+ 
+ 	  pp_space (buffer);
+         }
+-      print_call_name (buffer, gimple_call_fn (gs), flags);
++      if (gimple_call_internal_p (gs))
++	pp_string (buffer, internal_fn_name (gimple_call_internal_fn (gs)));
++      else
++	print_call_name (buffer, gimple_call_fn (gs), flags);
+       pp_string (buffer, " (");
+       dump_gimple_call_args (buffer, gs, flags);
+       pp_character (buffer, ')');
+--- a/src/gcc/gimplify.c
++++ b/src/gcc/gimplify.c
+@@ -3711,9 +3711,8 @@
+     case ARRAY_TYPE:
+       {
+ 	struct gimplify_init_ctor_preeval_data preeval_data;
+-	HOST_WIDE_INT num_type_elements, num_ctor_elements;
+-	HOST_WIDE_INT num_nonzero_elements;
+-	bool cleared, valid_const_initializer;
++	HOST_WIDE_INT num_ctor_elements, num_nonzero_elements;
++	bool cleared, complete_p, valid_const_initializer;
+ 
+ 	/* Aggregate types must lower constructors to initialization of
+ 	   individual elements.  The exception is that a CONSTRUCTOR node
+@@ -3730,7 +3729,7 @@
+ 	   can only do so if it known to be a valid constant initializer.  */
+ 	valid_const_initializer
+ 	  = categorize_ctor_elements (ctor, &num_nonzero_elements,
+-				      &num_ctor_elements, &cleared);
++				      &num_ctor_elements, &complete_p);
+ 
+ 	/* If a const aggregate variable is being initialized, then it
+ 	   should never be a lose to promote the variable to be static.  */
+@@ -3768,26 +3767,29 @@
+ 	   parts in, then generate code for the non-constant parts.  */
+ 	/* TODO.  There's code in cp/typeck.c to do this.  */
+ 
+-	num_type_elements = count_type_elements (type, true);
+-
+-	/* If count_type_elements could not determine number of type elements
+-	   for a constant-sized object, assume clearing is needed.
+-	   Don't do this for variable-sized objects, as store_constructor
+-	   will ignore the clearing of variable-sized objects.  */
+-	if (num_type_elements < 0 && int_size_in_bytes (type) >= 0)
++	if (int_size_in_bytes (TREE_TYPE (ctor)) < 0)
++	  /* store_constructor will ignore the clearing of variable-sized
++	     objects.  Initializers for such objects must explicitly set
++	     every field that needs to be set.  */
++	  cleared = false;
++	else if (!complete_p)
++	  /* If the constructor isn't complete, clear the whole object
++	     beforehand.
++
++	     ??? This ought not to be needed.  For any element not present
++	     in the initializer, we should simply set them to zero.  Except
++	     we'd need to *find* the elements that are not present, and that
++	     requires trickery to avoid quadratic compile-time behavior in
++	     large cases or excessive memory use in small cases.  */
+ 	  cleared = true;
+-	/* If there are "lots" of zeros, then block clear the object first.  */
+-	else if (num_type_elements - num_nonzero_elements
++	else if (num_ctor_elements - num_nonzero_elements
+ 		 > CLEAR_RATIO (optimize_function_for_speed_p (cfun))
+-		 && num_nonzero_elements < num_type_elements/4)
+-	  cleared = true;
+-	/* ??? This bit ought not be needed.  For any element not present
+-	   in the initializer, we should simply set them to zero.  Except
+-	   we'd need to *find* the elements that are not present, and that
+-	   requires trickery to avoid quadratic compile-time behavior in
+-	   large cases or excessive memory use in small cases.  */
+-	else if (num_ctor_elements < num_type_elements)
++		 && num_nonzero_elements < num_ctor_elements / 4)
++	  /* If there are "lots" of zeros, it's more efficient to clear
++	     the memory and then set the nonzero elements.  */
+ 	  cleared = true;
++	else
++	  cleared = false;
+ 
+ 	/* If there are "lots" of initialized elements, and all of them
+ 	   are valid address constants, then the entire initializer can
+--- a/src/gcc/graphite-sese-to-poly.c
++++ b/src/gcc/graphite-sese-to-poly.c
+@@ -1721,7 +1721,7 @@
+ 
+   FOR_EACH_VEC_ELT (data_reference_p, drs, i, dr1)
+     for (j = i + 1; VEC_iterate (data_reference_p, drs, j, dr2); j++)
+-      if (dr_may_alias_p (dr1, dr2))
++      if (dr_may_alias_p (dr1, dr2, true))
+ 	edge_num++;
+ 
+   fprintf (file, "$\n");
+@@ -1733,7 +1733,7 @@
+ 
+   FOR_EACH_VEC_ELT (data_reference_p, drs, i, dr1)
+     for (j = i + 1; VEC_iterate (data_reference_p, drs, j, dr2); j++)
+-      if (dr_may_alias_p (dr1, dr2))
++      if (dr_may_alias_p (dr1, dr2, true))
+ 	fprintf (file, "e %d %d\n", i + 1, j + 1);
+ 
+   return true;
+@@ -1763,7 +1763,7 @@
+ 
+   FOR_EACH_VEC_ELT (data_reference_p, drs, i, dr1)
+     for (j = i + 1; VEC_iterate (data_reference_p, drs, j, dr2); j++)
+-      if (dr_may_alias_p (dr1, dr2))
++      if (dr_may_alias_p (dr1, dr2, true))
+ 	fprintf (file, "n%d n%d\n", i, j);
+ 
+   return true;
+@@ -1789,7 +1789,7 @@
+ 
+   FOR_EACH_VEC_ELT (data_reference_p, drs, i, dr1)
+     for (j = i + 1; VEC_iterate (data_reference_p, drs, j, dr2); j++)
+-      if (dr_may_alias_p (dr1, dr2))
++      if (dr_may_alias_p (dr1, dr2, true))
+ 	fprintf (file, "%d %d\n", i, j);
+ 
+   return true;
+@@ -1825,7 +1825,7 @@
+ 
+   FOR_EACH_VEC_ELT (data_reference_p, drs, i, dr1)
+     for (j = i+1; VEC_iterate (data_reference_p, drs, j, dr2); j++)
+-      if (dr_may_alias_p (dr1, dr2))
++      if (dr_may_alias_p (dr1, dr2, true))
+ 	{
+ 	  add_edge (g, i, j);
+ 	  add_edge (g, j, i);
+--- a/src/gcc/gthr-posix.h
++++ b/src/gcc/gthr-posix.h
+@@ -239,16 +239,15 @@
+ static inline int
+ __gthread_active_p (void)
+ {
+-  static void *const __gthread_active_ptr
+-    = __extension__ (void *) &__gthrw_(
+ /* Android's C library does not provide pthread_cancel, check for
+    `pthread_create' instead.  */
+ #ifndef __BIONIC__
+-				       pthread_cancel
++  static void *const __gthread_active_ptr
++    = __extension__ (void *) &__gthrw_(pthread_cancel);
+ #else
+-				       pthread_create
++  static void *const __gthread_active_ptr
++    = __extension__ (void *) &__gthrw_(pthread_create);
+ #endif
+-				       );
+   return __gthread_active_ptr != 0;
+ }
+ 
+--- a/src/gcc/haifa-sched.c
++++ b/src/gcc/haifa-sched.c
+@@ -348,6 +348,14 @@
+ /* Create empty basic block after the specified block.  */
+ basic_block (* sched_create_empty_bb) (basic_block);
+ 
++/* Return the number of cycles until INSN is expected to be ready.
++   Return zero if it already is.  */
++static int
++insn_delay (rtx insn)
++{
++  return MAX (INSN_TICK (insn) - clock_var, 0);
++}
++
+ static int
+ may_trap_exp (const_rtx x, int is_store)
+ {
+@@ -571,10 +579,10 @@
+ 
+ /* Do register pressure sensitive insn scheduling if the flag is set
+    up.  */
+-bool sched_pressure_p;
++enum sched_pressure_algorithm sched_pressure;
+ 
+ /* Map regno -> its cover class.  The map defined only when
+-   SCHED_PRESSURE_P is true.  */
++   SCHED_PRESSURE != SCHED_PRESSURE_NONE.  */
+ enum reg_class *sched_regno_cover_class;
+ 
+ /* The current register pressure.  Only elements corresponding cover
+@@ -602,10 +610,12 @@
+   bitmap_clear (region_ref_regs);
+ }
+ 
+-/* Update current register pressure related info after birth (if
+-   BIRTH_P) or death of register REGNO.  */
+-static void
+-mark_regno_birth_or_death (int regno, bool birth_p)
++/* PRESSURE[CL] describes the pressure on register class CL.  Update it
++   for the birth (if BIRTH_P) or death (if !BIRTH_P) of register REGNO.
++   LIVE tracks the set of live registers; if it is null, assume that
++   every birth or death is genuine.  */
++static inline void
++mark_regno_birth_or_death (bitmap live, int *pressure, int regno, bool birth_p)
+ {
+   enum reg_class cover_class;
+ 
+@@ -616,15 +626,17 @@
+ 	{
+ 	  if (birth_p)
+ 	    {
+-	      bitmap_set_bit (curr_reg_live, regno);
+-	      curr_reg_pressure[cover_class]
+-		+= ira_reg_class_nregs[cover_class][PSEUDO_REGNO_MODE (regno)];
++	      if (!live || bitmap_set_bit (live, regno))
++		pressure[cover_class]
++		  += (ira_reg_class_nregs
++		      [cover_class][PSEUDO_REGNO_MODE (regno)]);
+ 	    }
+ 	  else
+ 	    {
+-	      bitmap_clear_bit (curr_reg_live, regno);
+-	      curr_reg_pressure[cover_class]
+-		-= ira_reg_class_nregs[cover_class][PSEUDO_REGNO_MODE (regno)];
++	      if (!live || bitmap_clear_bit (live, regno))
++		pressure[cover_class]
++		  -= (ira_reg_class_nregs
++		      [cover_class][PSEUDO_REGNO_MODE (regno)]);
+ 	    }
+ 	}
+     }
+@@ -633,13 +645,13 @@
+     {
+       if (birth_p)
+ 	{
+-	  bitmap_set_bit (curr_reg_live, regno);
+-	  curr_reg_pressure[cover_class]++;
++	  if (!live || bitmap_set_bit (live, regno))
++	    pressure[cover_class]++;
+ 	}
+       else
+ 	{
+-	  bitmap_clear_bit (curr_reg_live, regno);
+-	  curr_reg_pressure[cover_class]--;
++	  if (!live || bitmap_clear_bit (live, regno))
++	    pressure[cover_class]--;
+ 	}
+     }
+ }
+@@ -657,8 +669,10 @@
+     curr_reg_pressure[ira_reg_class_cover[i]] = 0;
+   bitmap_clear (curr_reg_live);
+   EXECUTE_IF_SET_IN_BITMAP (live, 0, j, bi)
+-    if (current_nr_blocks == 1 || bitmap_bit_p (region_ref_regs, j))
+-      mark_regno_birth_or_death (j, true);
++    if (sched_pressure == SCHED_PRESSURE_MODEL
++	|| current_nr_blocks == 1
++	|| bitmap_bit_p (region_ref_regs, j))
++      mark_regno_birth_or_death (curr_reg_live, curr_reg_pressure, j, true);
+ }
+ 
+ /* Mark registers in X as mentioned in the current region.  */
+@@ -712,7 +726,8 @@
+ 	if (regno == INVALID_REGNUM)
+ 	  break;
+ 	if (! bitmap_bit_p (df_get_live_in (bb), regno))
+-	  mark_regno_birth_or_death (regno, true);
++	  mark_regno_birth_or_death (curr_reg_live, curr_reg_pressure,
++				     regno, true);
+       }
+ #endif
+ }
+@@ -956,19 +971,19 @@
+   return true;
+ }
+ 
+-/* Compute the number of nondebug forward deps of an insn.  */
++/* Compute the number of nondebug deps in list LIST for INSN.  */
+ 
+ static int
+-dep_list_size (rtx insn)
++dep_list_size (rtx insn, sd_list_types_def list)
+ {
+   sd_iterator_def sd_it;
+   dep_t dep;
+   int dbgcount = 0, nodbgcount = 0;
+ 
+   if (!MAY_HAVE_DEBUG_INSNS)
+-    return sd_lists_size (insn, SD_LIST_FORW);
++    return sd_lists_size (insn, list);
+ 
+-  FOR_EACH_DEP (insn, SD_LIST_FORW, sd_it, dep)
++  FOR_EACH_DEP (insn, list, sd_it, dep)
+     {
+       if (DEBUG_INSN_P (DEP_CON (dep)))
+ 	dbgcount++;
+@@ -976,7 +991,7 @@
+ 	nodbgcount++;
+     }
+ 
+-  gcc_assert (dbgcount + nodbgcount == sd_lists_size (insn, SD_LIST_FORW));
++  gcc_assert (dbgcount + nodbgcount == sd_lists_size (insn, list));
+ 
+   return nodbgcount;
+ }
+@@ -995,7 +1010,7 @@
+     {
+       int this_priority = -1;
+ 
+-      if (dep_list_size (insn) == 0)
++      if (dep_list_size (insn, SD_LIST_FORW) == 0)
+ 	/* ??? We should set INSN_PRIORITY to insn_cost when and insn has
+ 	   some forward deps but all of them are ignored by
+ 	   contributes_to_priority hook.  At the moment we set priority of
+@@ -1091,6 +1106,22 @@
+          qsort (READY, N_READY, sizeof (rtx), rank_for_schedule); }  \
+ while (0)
+ 
++/* For each cover class CL, set DEATH[CL] to the number of registers
++   in that class that die in INSN.  */
++
++static void
++calculate_reg_deaths (rtx insn, int *death)
++{
++  int i;
++  struct reg_use_data *use;
++
++  for (i = 0; i < ira_reg_class_cover_size; i++)
++    death[ira_reg_class_cover[i]] = 0;
++  for (use = INSN_REG_USE_LIST (insn); use != NULL; use = use->next_insn_use)
++    if (dying_use_p (use))
++      mark_regno_birth_or_death (0, death, use->regno, true);
++}
++
+ /* Setup info about the current register pressure impact of scheduling
+    INSN at the current scheduling point.  */
+ static void
+@@ -1102,23 +1133,12 @@
+   enum reg_class cl;
+   struct reg_pressure_data *pressure_info;
+   int *max_reg_pressure;
+-  struct reg_use_data *use;
+   static int death[N_REG_CLASSES];
+ 
+   gcc_checking_assert (!DEBUG_INSN_P (insn));
+ 
+   excess_cost_change = 0;
+-  for (i = 0; i < ira_reg_class_cover_size; i++)
+-    death[ira_reg_class_cover[i]] = 0;
+-  for (use = INSN_REG_USE_LIST (insn); use != NULL; use = use->next_insn_use)
+-    if (dying_use_p (use))
+-      {
+-	cl = sched_regno_cover_class[use->regno];
+-	if (use->regno < FIRST_PSEUDO_REGISTER)
+-	  death[cl]++;
+-	else
+-	  death[cl] += ira_reg_class_nregs[cl][PSEUDO_REGNO_MODE (use->regno)];
+-      }
++  calculate_reg_deaths (insn, death);
+   pressure_info = INSN_REG_PRESSURE (insn);
+   max_reg_pressure = INSN_MAX_REG_PRESSURE (insn);
+   gcc_assert (pressure_info != NULL && max_reg_pressure != NULL);
+@@ -1139,7 +1159,765 @@
+     }
+   INSN_REG_PRESSURE_EXCESS_COST_CHANGE (insn) = excess_cost_change;
+ }
++
++/* This is the first page of code related to SCHED_PRESSURE_MODEL.
++   It tries to make the scheduler take register pressure into account
++   without introducing too many unnecessary stalls.  It hooks into the
++   main scheduling algorithm at several points:
++
++    - Before scheduling starts, model_start_schedule constructs a
++      "model schedule" for the current block.  This model schedule is
++      chosen solely to keep register pressure down.  It does not take the
++      target's pipeline or the original instruction order into account,
++      except as a tie-breaker.  It also doesn't work to a particular
++      pressure limit.
++
++      This model schedule gives us an idea of what pressure can be
++      achieved for the block gives us an example of a schedule that
++      keeps to that pressure.  It also makes the final schedule less
++      dependent on the original instruction order.  This is important
++      because the original order can either be "wide" (many values live
++      at once, such as in user-scheduled code) or "narrow" (few values
++      live at once, such as after loop unrolling, where several
++      iterations are executed sequentially).
++
++      We do not apply this model schedule to the rtx stream.  We simply
++      record it in model_schedule.  We also compute the maximum pressure,
++      MP, that was seen during this schedule.
++
++    - Instructions are added to the ready queue even if they require
++      a stall.  The length of the stall is instead computed as:
++
++	 MAX (INSN_TICK (INSN) - clock_var, 0)
++
++      (= insn_delay).  This allows rank_for_schedule to choose between
++      introducing a deliberate stall or increasing pressure.
++
++    - Before sorting the ready queue, model_set_excess_costs assigns
++      a pressure-based cost to each ready instruction in the queue.
++      This is the instruction's INSN_REG_PRESSURE_EXCESS_COST_CHANGE
++      (ECC for short) and is effectively measured in cycles.
++
++    - rank_for_schedule ranks instructions based on:
++
++	ECC (insn) + insn_delay (insn)
++
++      then as:
++
++	insn_delay (insn)
++
++      So, for example, an instruction X1 with an ECC of 1 that can issue
++      now will win over an instruction X0 with an ECC of zero that would
++      introduce a stall of one cycle.  However, an instruction X2 with an
++      ECC of 2 that can issue now will lose to X0.
++
++    - When an instruction is scheduled, model_recompute updates the model
++      schedule with the new pressures (some of which might now exceed the
++      original maximum pressure MP).  model_update_limit_points then searches
++      for the new point of maximum pressure, if not already known.  */
++
++/* Used to separate high-verbosity debug information for SCHED_PRESSURE_MODEL
++   from surrounding debug information.  */
++#define MODEL_BAR \
++  ";;\t\t+------------------------------------------------------\n"
++
++/* Information about the pressure on a particular register class at a
++   particular point of the model schedule.  */
++struct model_pressure_data {
++  /* The pressure at this point of the model schedule, or -1 if the
++     point is associated with an instruction that has already been
++     scheduled.  */
++  int ref_pressure;
++
++  /* The maximum pressure during or after this point of the model schedule.  */
++  int max_pressure;
++};
++
++/* Per-instruction information that is used while building the model
++   schedule.  Here, "schedule" refers to the model schedule rather
++   than the main schedule.  */
++struct model_insn_info {
++  /* The instruction itself.  */
++  rtx insn;
++
++  /* If this instruction is in model_worklist, these fields link to the
++     previous (higher-priority) and next (lower-priority) instructions
++     in the list.  */
++  struct model_insn_info *prev;
++  struct model_insn_info *next;
++
++  /* While constructing the schedule, QUEUE_INDEX describes whether an
++     instruction has already been added to the schedule (QUEUE_SCHEDULED),
++     is in model_worklist (QUEUE_READY), or neither (QUEUE_NOWHERE).
++     old_queue records the value that QUEUE_INDEX had before scheduling
++     started, so that we can restore it once the schedule is complete.  */
++  int old_queue;
++
++  /* The relative importance of an unscheduled instruction.  Higher
++     values indicate greater importance.  */
++  unsigned int model_priority;
++
++  /* The length of the longest path of satisfied true dependencies
++     that leads to this instruction.  */
++  unsigned int depth;
++
++  /* The length of the longest path of dependencies of any kind
++     that leads from this instruction.  */
++  unsigned int alap;
++
++  /* The number of predecessor nodes that must still be scheduled.  */
++  int unscheduled_preds;
++};
++
++/* Information about the pressure limit for a particular register class.
++   This structure is used when applying a model schedule to the main
++   schedule.  */
++struct model_pressure_limit {
++  /* The maximum register pressure seen in the original model schedule.  */
++  int orig_pressure;
++
++  /* The maximum register pressure seen in the current model schedule
++     (which excludes instructions that have already been scheduled).  */
++  int pressure;
++
++  /* The point of the current model schedule at which PRESSURE is first
++     reached.  It is set to -1 if the value needs to be recomputed.  */
++  int point;
++};
++
++/* Describes a particular way of measuring register pressure.  */
++struct model_pressure_group {
++  /* Index CCI describes the maximum pressure on ira_reg_class_cover[CCI].  */
++  struct model_pressure_limit limits[N_REG_CLASSES];
++
++  /* Index (POINT * ira_num_pressure_classes + CCI) describes the pressure
++     on register class ira_reg_class_cover[CCI] at point POINT of the
++     current model schedule.  A POINT of model_num_insns describes the
++     pressure at the end of the schedule.  */
++  struct model_pressure_data *model;
++};
++
++/* Index POINT gives the instruction at point POINT of the model schedule.
++   This array doesn't change during main scheduling.  */
++static VEC (rtx, heap) *model_schedule;
++
++/* The list of instructions in the model worklist, sorted in order of
++   decreasing priority.  */
++static struct model_insn_info *model_worklist;
++
++/* Index I describes the instruction with INSN_LUID I.  */
++static struct model_insn_info *model_insns;
++
++/* The number of instructions in the model schedule.  */
++static int model_num_insns;
++
++/* The index of the first instruction in model_schedule that hasn't yet been
++   added to the main schedule, or model_num_insns if all of them have.  */
++static int model_curr_point;
++
++/* Describes the pressure before each instruction in the model schedule.  */
++static struct model_pressure_group model_before_pressure;
++
++/* The first unused model_priority value (as used in model_insn_info).  */
++static unsigned int model_next_priority;
++
++
++/* The model_pressure_data for ira_reg_class_cover[CCI] in GROUP
++   at point POINT of the model schedule.  */
++#define MODEL_PRESSURE_DATA(GROUP, POINT, CCI) \
++  (&(GROUP)->model[(POINT) * ira_reg_class_cover_size + (CCI)])
++
++/* The maximum pressure on ira_reg_class_cover[CCI] in GROUP at or
++   after point POINT of the model schedule.  */
++#define MODEL_MAX_PRESSURE(GROUP, POINT, CCI) \
++  (MODEL_PRESSURE_DATA (GROUP, POINT, CCI)->max_pressure)
++
++/* The pressure on ira_reg_class_cover[CCI] in GROUP at point POINT
++   of the model schedule.  */
++#define MODEL_REF_PRESSURE(GROUP, POINT, CCI) \
++  (MODEL_PRESSURE_DATA (GROUP, POINT, CCI)->ref_pressure)
++
++/* Information about INSN that is used when creating the model schedule.  */
++#define MODEL_INSN_INFO(INSN) \
++  (&model_insns[INSN_LUID (INSN)])
++
++/* The instruction at point POINT of the model schedule.  */
++#define MODEL_INSN(POINT) \
++  (VEC_index (rtx, model_schedule, POINT))
++
++
++/* Return INSN's index in the model schedule, or model_num_insns if it
++   doesn't belong to that schedule.  */
++
++static int
++model_index (rtx insn)
++{
++  if (INSN_MODEL_INDEX (insn) == 0)
++    return model_num_insns;
++  return INSN_MODEL_INDEX (insn) - 1;
++}
++
++/* Make sure that GROUP->limits is up-to-date for the current point
++   of the model schedule.  */
++
++static void
++model_update_limit_points_in_group (struct model_pressure_group *group)
++{
++  int cci, max_pressure, point;
++
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      /* We may have passed the final point at which the pressure in
++	 group->limits[cci].pressure was reached.  Update the limit if so.  */
++      max_pressure = MODEL_MAX_PRESSURE (group, model_curr_point, cci);
++      group->limits[cci].pressure = max_pressure;
++
++      /* Find the point at which MAX_PRESSURE is first reached.  We need
++	 to search in three cases:
++
++	 - We've already moved past the previous pressure point.
++	   In this case we search forward from model_curr_point.
++
++	 - We scheduled the previous point of maximum pressure ahead of
++	   its position in the model schedule, but doing so didn't bring
++	   the pressure point earlier.  In this case we search forward
++	   from that previous pressure point.
++
++	 - Scheduling an instruction early caused the maximum pressure
++	   to decrease.  In this case we will have set the pressure
++	   point to -1, and we search forward from model_curr_point.  */
++      point = MAX (group->limits[cci].point, model_curr_point);
++      while (point < model_num_insns
++	     && MODEL_REF_PRESSURE (group, point, cci) < max_pressure)
++	point++;
++      group->limits[cci].point = point;
++
++      gcc_assert (MODEL_REF_PRESSURE (group, point, cci) == max_pressure);
++      gcc_assert (MODEL_MAX_PRESSURE (group, point, cci) == max_pressure);
++    }
++}
++
++/* Make sure that all register-pressure limits are up-to-date for the
++   current position in the model schedule.  */
++
++static void
++model_update_limit_points (void)
++{
++  model_update_limit_points_in_group (&model_before_pressure);
++}
++
++/* Return the model_index of the last unscheduled use in chain USE
++   outside of USE's instruction.  Return -1 if there are no other uses,
++   or model_num_insns if the register is live at the end of the block.  */
++
++static int
++model_last_use_except (struct reg_use_data *use)
++{
++  struct reg_use_data *next;
++  int last, index;
++
++  last = -1;
++  for (next = use->next_regno_use; next != use; next = next->next_regno_use)
++    if (NONDEBUG_INSN_P (next->insn)
++	&& QUEUE_INDEX (next->insn) != QUEUE_SCHEDULED)
++      {
++	index = model_index (next->insn);
++	if (index == model_num_insns)
++	  return model_num_insns;
++	if (last < index)
++	  last = index;
++      }
++  return last;
++}
++
++/* An instruction with model_index POINT has just been scheduled, and it
++   adds DELTA to the pressure on ira_reg_class_cover[CCI] after POINT - 1.
++   Update MODEL_REF_PRESSURE (GROUP, POINT, CCI) and
++   MODEL_MAX_PRESSURE (GROUP, POINT, CCI) accordingly.  */
++
++static void
++model_start_update_pressure (struct model_pressure_group *group,
++			     int point, int cci, int delta)
++{
++  int next_max_pressure;
++
++  if (point == model_num_insns)
++    {
++      /* The instruction wasn't part of the model schedule; it was moved
++	 from a different block.  Update the pressure for the end of
++	 the model schedule.  */
++      MODEL_REF_PRESSURE (group, point, cci) += delta;
++      MODEL_MAX_PRESSURE (group, point, cci) += delta;
++    }
++  else
++    {
++      /* Record that this instruction has been scheduled.  Nothing now
++	 changes between POINT and POINT + 1, so get the maximum pressure
++	 from the latter.  If the maximum pressure decreases, the new
++	 pressure point may be before POINT.  */
++      MODEL_REF_PRESSURE (group, point, cci) = -1;
++      next_max_pressure = MODEL_MAX_PRESSURE (group, point + 1, cci);
++      if (MODEL_MAX_PRESSURE (group, point, cci) > next_max_pressure)
++	{
++	  MODEL_MAX_PRESSURE (group, point, cci) = next_max_pressure;
++	  if (group->limits[cci].point == point)
++	    group->limits[cci].point = -1;
++	}
++    }
++}
++
++/* Record that scheduling a later instruction has changed the pressure
++   at point POINT of the model schedule by DELTA (which might be 0).
++   Update GROUP accordingly.  Return nonzero if these changes might
++   trigger changes to previous points as well.  */
++
++static int
++model_update_pressure (struct model_pressure_group *group,
++		       int point, int cci, int delta)
++{
++  int ref_pressure, max_pressure, next_max_pressure;
++
++  /* If POINT hasn't yet been scheduled, update its pressure.  */
++  ref_pressure = MODEL_REF_PRESSURE (group, point, cci);
++  if (ref_pressure >= 0 && delta != 0)
++    {
++      ref_pressure += delta;
++      MODEL_REF_PRESSURE (group, point, cci) = ref_pressure;
++
++      /* Check whether the maximum pressure in the overall schedule
++	 has increased.  (This means that the MODEL_MAX_PRESSURE of
++	 every point <= POINT will need to increae too; see below.)  */
++      if (group->limits[cci].pressure < ref_pressure)
++	group->limits[cci].pressure = ref_pressure;
++
++      /* If we are at maximum pressure, and the maximum pressure
++	 point was previously unknown or later than POINT,
++	 bring it forward.  */
++      if (group->limits[cci].pressure == ref_pressure
++	  && !IN_RANGE (group->limits[cci].point, 0, point))
++	group->limits[cci].point = point;
++
++      /* If POINT used to be the point of maximum pressure, but isn't
++	 any longer, we need to recalculate it using a forward walk.  */
++      if (group->limits[cci].pressure > ref_pressure
++	  && group->limits[cci].point == point)
++	group->limits[cci].point = -1;
++    }
++
++  /* Update the maximum pressure at POINT.  Changes here might also
++     affect the maximum pressure at POINT - 1.  */
++  next_max_pressure = MODEL_MAX_PRESSURE (group, point + 1, cci);
++  max_pressure = MAX (ref_pressure, next_max_pressure);
++  if (MODEL_MAX_PRESSURE (group, point, cci) != max_pressure)
++    {
++      MODEL_MAX_PRESSURE (group, point, cci) = max_pressure;
++      return 1;
++    }
++  return 0;
++}
++
++/* INSN has just been scheduled.  Update the model schedule accordingly.  */
++
++static void
++model_recompute (rtx insn)
++{
++  struct {
++    int last_use;
++    int regno;
++  } uses[FIRST_PSEUDO_REGISTER + MAX_RECOG_OPERANDS];
++  struct reg_use_data *use;
++  struct reg_pressure_data *reg_pressure;
++  int delta[N_REG_CLASSES];
++  int cci, point, mix, new_last, cl, ref_pressure, queue;
++  unsigned int i, num_uses, num_pending_births;
++  bool print_p;
++
++  /* The destinations of INSN were previously live from POINT onwards, but are
++     now live from model_curr_point onwards.  Set up DELTA accordingly.  */
++  point = model_index (insn);
++  reg_pressure = INSN_REG_PRESSURE (insn);
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      cl = ira_reg_class_cover[cci];
++      delta[cl] = reg_pressure[cci].set_increase;
++    }
++
++  /* Record which registers previously died at POINT, but which now die
++     before POINT.  Adjust DELTA so that it represents the effect of
++     this change after POINT - 1.  Set NUM_PENDING_BIRTHS to the number of
++     registers that will be born in the range [model_curr_point, POINT).  */
++  num_uses = 0;
++  num_pending_births = 0;
++  for (use = INSN_REG_USE_LIST (insn); use != NULL; use = use->next_insn_use)
++    {
++      new_last = model_last_use_except (use);
++      if (new_last < point)
++	{
++	  gcc_assert (num_uses < ARRAY_SIZE (uses));
++	  uses[num_uses].last_use = new_last;
++	  uses[num_uses].regno = use->regno;
++	  /* This register is no longer live after POINT - 1.  */
++	  mark_regno_birth_or_death (NULL, delta, use->regno, false);
++	  num_uses++;
++	  if (new_last >= 0)
++	    num_pending_births++;
++	}
++    }
++
++  /* Update the MODEL_REF_PRESSURE and MODEL_MAX_PRESSURE for POINT.
++     Also set each group pressure limit for POINT.  */
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      cl = ira_reg_class_cover[cci];
++      model_start_update_pressure (&model_before_pressure,
++				   point, cci, delta[cl]);
++    }
++
++  /* Walk the model schedule backwards, starting immediately before POINT.  */
++  print_p = false;
++  if (point != model_curr_point)
++    do
++      {
++	point--;
++	insn = MODEL_INSN (point);
++	queue = QUEUE_INDEX (insn);
+ 
++	if (queue != QUEUE_SCHEDULED)
++	  {
++	    /* DELTA describes the effect of the move on the register pressure
++	       after POINT.  Make it describe the effect on the pressure
++	       before POINT.  */
++	    i = 0;
++	    while (i < num_uses)
++	      {
++		if (uses[i].last_use == point)
++		  {
++		    /* This register is now live again.  */
++		    mark_regno_birth_or_death (NULL, delta,
++					       uses[i].regno, true);
++
++		    /* Remove this use from the array.  */
++		    uses[i] = uses[num_uses - 1];
++		    num_uses--;
++		    num_pending_births--;
++		  }
++		else
++		  i++;
++	      }
++
++	    if (sched_verbose >= 5)
++	      {
++		char buf[2048];
++
++		if (!print_p)
++		  {
++		    fprintf (sched_dump, MODEL_BAR);
++		    fprintf (sched_dump, ";;\t\t| New pressure for model"
++			     " schedule\n");
++		    fprintf (sched_dump, MODEL_BAR);
++		    print_p = true;
++		  }
++
++		print_pattern (buf, PATTERN (insn), 0);
++		fprintf (sched_dump, ";;\t\t| %3d %4d %-30s ",
++			 point, INSN_UID (insn), buf);
++		for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++		  {
++		    cl = ira_reg_class_cover[cci];
++		    ref_pressure = MODEL_REF_PRESSURE (&model_before_pressure,
++						       point, cci);
++		    fprintf (sched_dump, " %s:[%d->%d]",
++			     reg_class_names[ira_reg_class_cover[cci]],
++			     ref_pressure, ref_pressure + delta[cl]);
++		  }
++		fprintf (sched_dump, "\n");
++	      }
++	  }
++
++	/* Adjust the pressure at POINT.  Set MIX to nonzero if POINT - 1
++	   might have changed as well.  */
++	mix = num_pending_births;
++	for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++	  {
++	    cl = ira_reg_class_cover[cci];
++	    mix |= delta[cl];
++	    mix |= model_update_pressure (&model_before_pressure,
++					  point, cci, delta[cl]);
++	  }
++      }
++    while (mix && point > model_curr_point);
++
++  if (print_p)
++    fprintf (sched_dump, MODEL_BAR);
++}
++
++/* model_spill_cost (CL, P, P') returns the cost of increasing the
++   pressure on CL from P to P'.  We use this to calculate a "base ECC",
++   baseECC (CL, X), for each cover class CL and each instruction X.
++   Supposing X changes the pressure on CL from P to P', and that the
++   maximum pressure on CL in the current model schedule is MP', then:
++
++   * if X occurs before or at the next point of maximum pressure in
++     the model schedule and P' > MP', then:
++
++       baseECC (CL, X) = model_spill_cost (CL, MP, P')
++
++     The idea is that the pressure after scheduling a fixed set of
++     instructions -- in this case, the set up to and including the
++     next maximum pressure point -- is going to be the same regardless
++     of the order; we simply want to keep the intermediate pressure
++     under control.  Thus X has a cost of zero unless scheduling it
++     now would exceed MP'.
++
++     If all increases in the set are by the same amount, no zero-cost
++     instruction will ever cause the pressure to exceed MP'.  However,
++     if X is instead moved past an instruction X' with pressure in the
++     range (MP' - (P' - P), MP'), the pressure at X' will increase
++     beyond MP'.  Since baseECC is very much a heuristic anyway,
++     it doesn't seem worth the overhead of tracking cases like these.
++
++     The cost of exceeding MP' is always based on the original maximum
++     pressure MP.  This is so that going 2 registers over the original
++     limit has the same cost regardless of whether it comes from two
++     separate +1 deltas or from a single +2 delta.
++
++   * if X occurs after the next point of maximum pressure in the model
++     schedule and P' > P, then:
++
++       baseECC (CL, X) = model_spill_cost (CL, MP, MP' + (P' - P))
++
++     That is, if we move X forward across a point of maximum pressure,
++     and if X increases the pressure by P' - P, then we conservatively
++     assume that scheduling X next would increase the maximum pressure
++     by P' - P.  Again, the cost of doing this is based on the original
++     maximum pressure MP, for the same reason as above.
++
++   * if P' < P, P > MP, and X occurs at or after the next point of
++     maximum pressure, then:
++
++       baseECC (CL, X) = -model_spill_cost (CL, MAX (MP, P'), P)
++
++     That is, if we have already exceeded the original maximum pressure MP,
++     and if X might reduce the maximum pressure again -- or at least push
++     it further back, and thus allow more scheduling freedom -- it is given
++     a negative cost to reflect the improvement.
++
++   * otherwise,
++
++       baseECC (CL, X) = 0
++
++     In this case, X is not expected to affect the maximum pressure MP',
++     so it has zero cost.
++
++   We then create a combined value baseECC (X) that is the sum of
++   baseECC (CL, X) for each cover class CL.
++
++   baseECC (X) could itself be used as the ECC value described above.
++   However, this is often too conservative, in the sense that it
++   tends to make high-priority instructions that increase pressure
++   wait too long in cases where introducing a spill would be better.
++   For this reason the final ECC is a priority-adjusted form of
++   baseECC (X).  Specifically, we calculate:
++
++     P (X) = INSN_PRIORITY (X) - insn_delay (X) - baseECC (X)
++     baseP = MAX { P (X) | baseECC (X) <= 0 }
++
++   Then:
++
++     ECC (X) = MAX (MIN (baseP - P (X), baseECC (X)), 0)
++
++   Thus an instruction's effect on pressure is ignored if it has a high
++   enough priority relative to the ones that don't increase pressure.
++   Negative values of baseECC (X) do not increase the priority of X
++   itself, but they do make it harder for other instructions to
++   increase the pressure further.
++
++   This pressure cost is deliberately timid.  The intention has been
++   to choose a heuristic that rarely interferes with the normal list
++   scheduler in cases where that scheduler would produce good code.
++   We simply want to curb some of its worst excesses.  */
++
++/* Return the cost of increasing the pressure in class CL from FROM to TO.
++
++   Here we use the very simplistic cost model that every register above
++   ira_available_class_regs[CL] has a spill cost of 1.  We could use other
++   measures instead, such as one based on MEMORY_MOVE_COST.  However:
++
++      (1) In order for an instruction to be scheduled, the higher cost
++	  would need to be justified in a single saving of that many stalls.
++	  This is overly pessimistic, because the benefit of spilling is
++	  often to avoid a sequence of several short stalls rather than
++	  a single long one.
++
++      (2) The cost is still arbitrary.  Because we are not allocating
++	  registers during scheduling, we have no way of knowing for
++	  sure how many memory accesses will be required by each spill,
++	  where the spills will be placed within the block, or even
++	  which block(s) will contain the spills.
++
++   So a higher cost than 1 is often too conservative in practice,
++   forcing blocks to contain unnecessary stalls instead of spill code.
++   The simple cost below seems to be the best compromise.  It reduces
++   the interference with the normal list scheduler, which helps make
++   it more suitable for a default-on option.  */
++
++static int
++model_spill_cost (int cl, int from, int to)
++{
++  from = MAX (from, ira_available_class_regs[cl]);
++  return MAX (to, from) - from;
++}
++
++/* Return baseECC (ira_reg_class_cover[CCI], POINT), given that
++   P = curr_reg_pressure[ira_reg_class_cover[CCI]] and that
++   P' = P + DELTA.  */
++
++static int
++model_excess_group_cost (struct model_pressure_group *group,
++			 int point, int cci, int delta)
++{
++  int pressure, cl;
++
++  cl = ira_reg_class_cover[cci];
++  if (delta < 0 && point >= group->limits[cci].point)
++    {
++      pressure = MAX (group->limits[cci].orig_pressure,
++		      curr_reg_pressure[cl] + delta);
++      return -model_spill_cost (cl, pressure, curr_reg_pressure[cl]);
++    }
++
++  if (delta > 0)
++    {
++      if (point > group->limits[cci].point)
++	pressure = group->limits[cci].pressure + delta;
++      else
++	pressure = curr_reg_pressure[cl] + delta;
++
++      if (pressure > group->limits[cci].pressure)
++	return model_spill_cost (cl, group->limits[cci].orig_pressure,
++				 pressure);
++    }
++
++  return 0;
++}
++
++/* Return baseECC (MODEL_INSN (INSN)).  Dump the costs to sched_dump
++   if PRINT_P.  */
++
++static int
++model_excess_cost (rtx insn, bool print_p)
++{
++  int point, cci, cl, cost, this_cost, delta;
++  struct reg_pressure_data *insn_reg_pressure;
++  int insn_death[N_REG_CLASSES];
++
++  calculate_reg_deaths (insn, insn_death);
++  point = model_index (insn);
++  insn_reg_pressure = INSN_REG_PRESSURE (insn);
++  cost = 0;
++
++  if (print_p)
++    fprintf (sched_dump, ";;\t\t| %3d %4d | %4d %+3d |", point,
++	     INSN_UID (insn), INSN_PRIORITY (insn), insn_delay (insn));
++
++  /* Sum up the individual costs for each register class.  */
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      cl = ira_reg_class_cover[cci];
++      delta = insn_reg_pressure[cci].set_increase - insn_death[cl];
++      this_cost = model_excess_group_cost (&model_before_pressure,
++					   point, cci, delta);
++      cost += this_cost;
++      if (print_p)
++	fprintf (sched_dump, " %s:[%d base cost %d]",
++		 reg_class_names[cl], delta, this_cost);
++    }
++
++  if (print_p)
++    fprintf (sched_dump, "\n");
++
++  return cost;
++}
++
++/* Dump the next points of maximum pressure for GROUP.  */
++
++static void
++model_dump_pressure_points (struct model_pressure_group *group)
++{
++  int cci, cl;
++
++  fprintf (sched_dump, ";;\t\t|  pressure points");
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      cl = ira_reg_class_cover[cci];
++      fprintf (sched_dump, " %s:[%d->%d at ", reg_class_names[cl],
++	       curr_reg_pressure[cl], group->limits[cci].pressure);
++      if (group->limits[cci].point < model_num_insns)
++	fprintf (sched_dump, "%d:%d]", group->limits[cci].point,
++		 INSN_UID (MODEL_INSN (group->limits[cci].point)));
++      else
++	fprintf (sched_dump, "end]");
++    }
++  fprintf (sched_dump, "\n");
++}
++
++/* Set INSN_REG_PRESSURE_EXCESS_COST_CHANGE for INSNS[0...COUNT-1].  */
++
++static void
++model_set_excess_costs (rtx *insns, int count)
++{
++  int i, cost, priority_base, priority;
++  bool print_p;
++
++  /* Record the baseECC value for each instruction in the model schedule,
++     except that negative costs are converted to zero ones now rather thatn
++     later.  Do not assign a cost to debug instructions, since they must
++     not change code-generation decisions.  Experiments suggest we also
++     get better results by not assigning a cost to instructions from
++     a different block.
++
++     Set PRIORITY_BASE to baseP in the block comment above.  This is the
++     maximum priority of the "cheap" instructions, which should always
++     include the next model instruction.  */
++  priority_base = 0;
++  print_p = false;
++  for (i = 0; i < count; i++)
++    if (INSN_MODEL_INDEX (insns[i]))
++      {
++	if (sched_verbose >= 6 && !print_p)
++	  {
++	    fprintf (sched_dump, MODEL_BAR);
++	    fprintf (sched_dump, ";;\t\t| Pressure costs for ready queue\n");
++	    model_dump_pressure_points (&model_before_pressure);
++	    fprintf (sched_dump, MODEL_BAR);
++	    print_p = true;
++	  }
++	cost = model_excess_cost (insns[i], print_p);
++	if (cost <= 0)
++	  {
++	    priority = INSN_PRIORITY (insns[i]) - insn_delay (insns[i]) - cost;
++	    priority_base = MAX (priority_base, priority);
++	    cost = 0;
++	  }
++	INSN_REG_PRESSURE_EXCESS_COST_CHANGE (insns[i]) = cost;
++      }
++  if (print_p)
++    fprintf (sched_dump, MODEL_BAR);
++
++  /* Use MAX (baseECC, 0) and baseP to calculcate ECC for each
++     instruction.  */
++  for (i = 0; i < count; i++)
++    {
++      cost = INSN_REG_PRESSURE_EXCESS_COST_CHANGE (insns[i]);
++      priority = INSN_PRIORITY (insns[i]) - insn_delay (insns[i]);
++      if (cost > 0 && priority > priority_base)
++	{
++	  cost += priority_base - priority;
++	  INSN_REG_PRESSURE_EXCESS_COST_CHANGE (insns[i]) = MAX (cost, 0);
++	}
++    }
++}
++
+ /* Returns a positive value if x is preferred; returns a negative value if
+    y is preferred.  Should never return 0, since that will make the sort
+    unstable.  */
+@@ -1170,23 +1948,20 @@
+   /* Make sure that priority of TMP and TMP2 are initialized.  */
+   gcc_assert (INSN_PRIORITY_KNOWN (tmp) && INSN_PRIORITY_KNOWN (tmp2));
+ 
+-  if (sched_pressure_p)
++  if (sched_pressure != SCHED_PRESSURE_NONE)
+     {
+       int diff;
+ 
+       /* Prefer insn whose scheduling results in the smallest register
+ 	 pressure excess.  */
+       if ((diff = (INSN_REG_PRESSURE_EXCESS_COST_CHANGE (tmp)
+-		   + (INSN_TICK (tmp) > clock_var
+-		      ? INSN_TICK (tmp) - clock_var : 0)
++		   + insn_delay (tmp)
+ 		   - INSN_REG_PRESSURE_EXCESS_COST_CHANGE (tmp2)
+-		   - (INSN_TICK (tmp2) > clock_var
+-		      ? INSN_TICK (tmp2) - clock_var : 0))) != 0)
++		   - insn_delay (tmp2))))
+ 	return diff;
+     }
+ 
+-
+-  if (sched_pressure_p
++  if (sched_pressure != SCHED_PRESSURE_NONE
+       && (INSN_TICK (tmp2) > clock_var || INSN_TICK (tmp) > clock_var))
+     {
+       if (INSN_TICK (tmp) <= clock_var)
+@@ -1277,11 +2052,22 @@
+ 	return val;
+     }
+ 
++  /* Prefer instructions that occur earlier in the model schedule.  */
++  if (sched_pressure == SCHED_PRESSURE_MODEL)
++    {
++      int diff;
++
++      diff = model_index (tmp) - model_index (tmp2);
++      if (diff != 0)
++	return diff;
++    }
++
+   /* Prefer the insn which has more later insns that depend on it.
+      This gives the scheduler more freedom when scheduling later
+      instructions at the expense of added register pressure.  */
+ 
+-  val = (dep_list_size (tmp2) - dep_list_size (tmp));
++  val = (dep_list_size (tmp2, SD_LIST_FORW)
++	 - dep_list_size (tmp, SD_LIST_FORW));
+ 
+   if (flag_sched_dep_count_heuristic && val != 0)
+     return val;
+@@ -1480,12 +2266,15 @@
+   int i;
+   rtx *first = ready_lastpos (ready);
+ 
+-  if (sched_pressure_p)
++  if (sched_pressure == SCHED_PRESSURE_WEIGHTED)
+     {
+       for (i = 0; i < ready->n_ready; i++)
+ 	if (!DEBUG_INSN_P (first[i]))
+ 	  setup_insn_reg_pressure_info (first[i]);
+     }
++  if (sched_pressure == SCHED_PRESSURE_MODEL
++      && model_curr_point < model_num_insns)
++    model_set_excess_costs (first, ready->n_ready);
+   SCHED_SORT (first, ready->n_ready);
+ }
+ 
+@@ -1551,10 +2340,12 @@
+   gcc_checking_assert (!DEBUG_INSN_P (insn));
+ 
+   for (use = INSN_REG_USE_LIST (insn); use != NULL; use = use->next_insn_use)
+-    if (dying_use_p (use) && bitmap_bit_p (curr_reg_live, use->regno))
+-      mark_regno_birth_or_death (use->regno, false);
++    if (dying_use_p (use))
++      mark_regno_birth_or_death (curr_reg_live, curr_reg_pressure,
++				 use->regno, false);
+   for (set = INSN_REG_SET_LIST (insn); set != NULL; set = set->next_insn_set)
+-    mark_regno_birth_or_death (set->regno, true);
++    mark_regno_birth_or_death (curr_reg_live, curr_reg_pressure,
++			       set->regno, true);
+ }
+ 
+ /* Set up or update (if UPDATE_P) max register pressure (see its
+@@ -1626,11 +2417,618 @@
+ void
+ sched_setup_bb_reg_pressure_info (basic_block bb, rtx after)
+ {
+-  gcc_assert (sched_pressure_p);
++  gcc_assert (sched_pressure == SCHED_PRESSURE_WEIGHTED);
+   initiate_bb_reg_pressure_info (bb);
+   setup_insn_max_reg_pressure (after, false);
+ }
++
++/* Return (in order):
++
++   - positive if INSN adversely affects the pressure on one
++     register class
++
++   - negative if INSN reduces the pressure on one register class
++
++   - 0 if INSN doesn't affect the pressure on any register class.  */
++
++static int
++model_classify_pressure (struct model_insn_info *insn)
++{
++  struct reg_pressure_data *reg_pressure;
++  int death[N_REG_CLASSES];
++  int cci, cl, sum;
++
++  calculate_reg_deaths (insn->insn, death);
++  reg_pressure = INSN_REG_PRESSURE (insn->insn);
++  sum = 0;
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      cl = ira_reg_class_cover[cci];
++      if (death[cl] < reg_pressure[cci].set_increase)
++	return 1;
++      sum += reg_pressure[cci].set_increase - death[cl];
++    }
++  return sum;
++}
++
++/* Return true if INSN1 should come before INSN2 in the model schedule.  */
++
++static int
++model_order_p (struct model_insn_info *insn1, struct model_insn_info *insn2)
++{
++  unsigned int height1, height2;
++  unsigned int priority1, priority2;
++
++  /* Prefer instructions with a higher model priority.  */
++  if (insn1->model_priority != insn2->model_priority)
++    return insn1->model_priority > insn2->model_priority;
++
++  /* Combine the length of the longest path of satisfied true dependencies
++     that leads to each instruction (depth) with the length of the longest
++     path of any dependencies that leads from the instruction (alap).
++     Prefer instructions with the greatest combined length.  If the combined
++     lengths are equal, prefer instructions with the greatest depth.
++
++     The idea is that, if we have a set S of "equal" instructions that each
++     have ALAP value X, and we pick one such instruction I, any true-dependent
++     successors of I that have ALAP value X - 1 should be preferred over S.
++     This encourages the schedule to be "narrow" rather than "wide".
++     However, if I is a low-priority instruction that we decided to
++     schedule because of its model_classify_pressure, and if there
++     is a set of higher-priority instructions T, the aforementioned
++     successors of I should not have the edge over T.  */
++  height1 = insn1->depth + insn1->alap;
++  height2 = insn2->depth + insn2->alap;
++  if (height1 != height2)
++    return height1 > height2;
++  if (insn1->depth != insn2->depth)
++    return insn1->depth > insn2->depth;
++
++  /* We have no real preference between INSN1 an INSN2 as far as attempts
++     to reduce pressure go.  Prefer instructions with higher priorities.  */
++  priority1 = INSN_PRIORITY (insn1->insn);
++  priority2 = INSN_PRIORITY (insn2->insn);
++  if (priority1 != priority2)
++    return priority1 > priority2;
++
++  /* Use the original rtl sequence as a tie-breaker.  */
++  return insn1 < insn2;
++}
++
++/* Add INSN to the model worklist immediately after PREV.  Add it to the
++   beginning of the list if PREV is null.  */
++
++static void
++model_add_to_worklist_at (struct model_insn_info *insn,
++			  struct model_insn_info *prev)
++{
++  gcc_assert (QUEUE_INDEX (insn->insn) == QUEUE_NOWHERE);
++  QUEUE_INDEX (insn->insn) = QUEUE_READY;
++
++  insn->prev = prev;
++  if (prev)
++    {
++      insn->next = prev->next;
++      prev->next = insn;
++    }
++  else
++    {
++      insn->next = model_worklist;
++      model_worklist = insn;
++    }
++  if (insn->next)
++    insn->next->prev = insn;
++}
++
++/* Remove INSN from the model worklist.  */
++
++static void
++model_remove_from_worklist (struct model_insn_info *insn)
++{
++  gcc_assert (QUEUE_INDEX (insn->insn) == QUEUE_READY);
++  QUEUE_INDEX (insn->insn) = QUEUE_NOWHERE;
++
++  if (insn->prev)
++    insn->prev->next = insn->next;
++  else
++    model_worklist = insn->next;
++  if (insn->next)
++    insn->next->prev = insn->prev;
++}
++
++/* Add INSN to the model worklist.  Start looking for a suitable position
++   between neighbors PREV and NEXT, testing at most MAX_SCHED_READY_INSNS
++   insns either side.  A null PREV indicates the beginning of the list and
++   a null NEXT indicates the end.  */
++
++static void
++model_add_to_worklist (struct model_insn_info *insn,
++		       struct model_insn_info *prev,
++		       struct model_insn_info *next)
++{
++  int count;
++
++  count = MAX_SCHED_READY_INSNS;
++  if (count > 0 && prev && model_order_p (insn, prev))
++    do
++      {
++	count--;
++	prev = prev->prev;
++      }
++    while (count > 0 && prev && model_order_p (insn, prev));
++  else
++    while (count > 0 && next && model_order_p (next, insn))
++      {
++	count--;
++	prev = next;
++	next = next->next;
++      }
++  model_add_to_worklist_at (insn, prev);
++}
++
++/* INSN may now have a higher priority (in the model_order_p sense)
++   than before.  Move it up the worklist if necessary.  */
++
++static void
++model_promote_insn (struct model_insn_info *insn)
++{
++  struct model_insn_info *prev;
++  int count;
++
++  prev = insn->prev;
++  count = MAX_SCHED_READY_INSNS;
++  while (count > 0 && prev && model_order_p (insn, prev))
++    {
++      count--;
++      prev = prev->prev;
++    }
++  if (prev != insn->prev)
++    {
++      model_remove_from_worklist (insn);
++      model_add_to_worklist_at (insn, prev);
++    }
++}
++
++/* Add INSN to the end of the model schedule.  */
++
++static void
++model_add_to_schedule (rtx insn)
++{
++  unsigned int point;
++
++  gcc_assert (QUEUE_INDEX (insn) == QUEUE_NOWHERE);
++  QUEUE_INDEX (insn) = QUEUE_SCHEDULED;
++
++  point = VEC_length (rtx, model_schedule);
++  VEC_quick_push (rtx, model_schedule, insn);
++  INSN_MODEL_INDEX (insn) = point + 1;
++}
++
++/* Analyze the instructions that are to be scheduled, setting up
++   MODEL_INSN_INFO (...) and model_num_insns accordingly.  Add ready
++   instructions to model_worklist.  */
++
++static void
++model_analyze_insns (void)
++{
++  rtx start, end, iter;
++  sd_iterator_def sd_it;
++  dep_t dep;
++  struct model_insn_info *insn, *con;
++
++  model_num_insns = 0;
++  start = PREV_INSN (current_sched_info->next_tail);
++  end = current_sched_info->prev_head;
++  for (iter = start; iter != end; iter = PREV_INSN (iter))
++    if (NONDEBUG_INSN_P (iter))
++      {
++	insn = MODEL_INSN_INFO (iter);
++	insn->insn = iter;
++	FOR_EACH_DEP (iter, SD_LIST_FORW, sd_it, dep)
++	  {
++	    con = MODEL_INSN_INFO (DEP_CON (dep));
++	    if (con->insn && insn->alap < con->alap + 1)
++	      insn->alap = con->alap + 1;
++	  }
++
++	insn->old_queue = QUEUE_INDEX (iter);
++	QUEUE_INDEX (iter) = QUEUE_NOWHERE;
++
++	insn->unscheduled_preds = dep_list_size (iter, SD_LIST_HARD_BACK);
++	if (insn->unscheduled_preds == 0)
++	  model_add_to_worklist (insn, NULL, model_worklist);
++
++	model_num_insns++;
++      }
++}
++
++/* The global state describes the register pressure at the start of the
++   model schedule.  Initialize GROUP accordingly.  */
++
++static void
++model_init_pressure_group (struct model_pressure_group *group)
++{
++  int cci, cl;
++
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      cl = ira_reg_class_cover[cci];
++      group->limits[cci].pressure = curr_reg_pressure[cl];
++      group->limits[cci].point = 0;
++    }
++  /* Use index model_num_insns to record the state after the last
++     instruction in the model schedule.  */
++  group->model = XNEWVEC (struct model_pressure_data,
++			  (model_num_insns + 1) * ira_reg_class_cover_size);
++}
++
++/* Record that MODEL_REF_PRESSURE (GROUP, POINT, CCI) is PRESSURE.
++   Update the maximum pressure for the whole schedule.  */
++
++static void
++model_record_pressure (struct model_pressure_group *group,
++		       int point, int cci, int pressure)
++{
++  MODEL_REF_PRESSURE (group, point, cci) = pressure;
++  if (group->limits[cci].pressure < pressure)
++    {
++      group->limits[cci].pressure = pressure;
++      group->limits[cci].point = point;
++    }
++}
++
++/* INSN has just been added to the end of the model schedule.  Record its
++   register-pressure information.  */
++
++static void
++model_record_pressures (struct model_insn_info *insn)
++{
++  struct reg_pressure_data *reg_pressure;
++  int point, cci, cl, delta;
++  int death[N_REG_CLASSES];
++
++  point = model_index (insn->insn);
++  if (sched_verbose >= 2)
++    {
++      char buf[2048];
++
++      if (point == 0)
++	{
++	  fprintf (sched_dump, "\n;;\tModel schedule:\n;;\n");
++	  fprintf (sched_dump, ";;\t| idx insn | mpri hght dpth prio |\n");
++	}
++      print_pattern (buf, PATTERN (insn->insn), 0);
++      fprintf (sched_dump, ";;\t| %3d %4d | %4d %4d %4d %4d | %-30s ",
++	       point, INSN_UID (insn->insn), insn->model_priority,
++	       insn->depth + insn->alap, insn->depth,
++	       INSN_PRIORITY (insn->insn), buf);
++    }
++  calculate_reg_deaths (insn->insn, death);
++  reg_pressure = INSN_REG_PRESSURE (insn->insn);
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      cl = ira_reg_class_cover[cci];
++      delta = reg_pressure[cci].set_increase - death[cl];
++      if (sched_verbose >= 2)
++	fprintf (sched_dump, " %s:[%d,%+d]", reg_class_names[cl],
++		 curr_reg_pressure[cl], delta);
++      model_record_pressure (&model_before_pressure, point, cci,
++			     curr_reg_pressure[cl]);
++    }
++  if (sched_verbose >= 2)
++    fprintf (sched_dump, "\n");
++}
++
++/* All instructions have been added to the model schedule.  Record the
++   final register pressure in GROUP and set up all MODEL_MAX_PRESSUREs.  */
+ 
++static void
++model_record_final_pressures (struct model_pressure_group *group)
++{
++  int point, cci, max_pressure, ref_pressure, cl;
++
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      /* Record the final pressure for this class.  */
++      cl = ira_reg_class_cover[cci];
++      point = model_num_insns;
++      ref_pressure = curr_reg_pressure[cl];
++      model_record_pressure (group, point, cci, ref_pressure);
++
++      /* Record the original maximum pressure.  */
++      group->limits[cci].orig_pressure = group->limits[cci].pressure;
++
++      /* Update the MODEL_MAX_PRESSURE for every point of the schedule.  */
++      max_pressure = ref_pressure;
++      MODEL_MAX_PRESSURE (group, point, cci) = max_pressure;
++      while (point > 0)
++	{
++	  point--;
++	  ref_pressure = MODEL_REF_PRESSURE (group, point, cci);
++	  max_pressure = MAX (max_pressure, ref_pressure);
++	  MODEL_MAX_PRESSURE (group, point, cci) = max_pressure;
++	}
++    }
++}
++
++/* Update all successors of INSN, given that INSN has just been scheduled.  */
++
++static void
++model_add_successors_to_worklist (struct model_insn_info *insn)
++{
++  sd_iterator_def sd_it;
++  struct model_insn_info *con;
++  dep_t dep;
++
++  FOR_EACH_DEP (insn->insn, SD_LIST_FORW, sd_it, dep)
++    {
++      con = MODEL_INSN_INFO (DEP_CON (dep));
++      /* Ignore debug instructions, and instructions from other blocks.  */
++      if (con->insn)
++	{
++	  con->unscheduled_preds--;
++
++	  /* Update the depth field of each true-dependent successor.
++	     Increasing the depth gives them a higher priority than
++	     before.  */
++	  if (DEP_TYPE (dep) == REG_DEP_TRUE && con->depth < insn->depth + 1)
++	    {
++	      con->depth = insn->depth + 1;
++	      if (QUEUE_INDEX (con->insn) == QUEUE_READY)
++		model_promote_insn (con);
++	    }
++
++	  /* If this is a true dependency, or if there are no remaining
++	     dependencies for CON (meaning that CON only had non-true
++	     dependencies), make sure that CON is on the worklist.
++	     We don't bother otherwise because it would tend to fill the
++	     worklist with a lot of low-priority instructions that are not
++	     yet ready to issue.  */
++	  if ((con->depth > 0 || con->unscheduled_preds == 0)
++	      && QUEUE_INDEX (con->insn) == QUEUE_NOWHERE)
++	    model_add_to_worklist (con, insn, insn->next);
++	}
++    }
++}
++
++/* Give INSN a higher priority than any current instruction, then give
++   unscheduled predecessors of INSN a higher priority still.  If any of
++   those predecessors are not on the model worklist, do the same for its
++   predecessors, and so on.  */
++
++static void
++model_promote_predecessors (struct model_insn_info *insn)
++{
++  struct model_insn_info *pro, *first;
++  sd_iterator_def sd_it;
++  dep_t dep;
++
++  if (sched_verbose >= 7)
++    fprintf (sched_dump, ";;\t+--- priority of %d = %d, priority of",
++	     INSN_UID (insn->insn), model_next_priority);
++  insn->model_priority = model_next_priority++;
++  model_remove_from_worklist (insn);
++  model_add_to_worklist_at (insn, NULL);
++
++  first = NULL;
++  for (;;)
++    {
++      FOR_EACH_DEP (insn->insn, SD_LIST_HARD_BACK, sd_it, dep)
++	{
++	  pro = MODEL_INSN_INFO (DEP_PRO (dep));
++	  /* The first test is to ignore debug instructions, and instructions
++	     from other blocks.  */
++	  if (pro->insn
++	      && pro->model_priority != model_next_priority
++	      && QUEUE_INDEX (pro->insn) != QUEUE_SCHEDULED)
++	    {
++	      pro->model_priority = model_next_priority;
++	      if (sched_verbose >= 7)
++		fprintf (sched_dump, " %d", INSN_UID (pro->insn));
++	      if (QUEUE_INDEX (pro->insn) == QUEUE_READY)
++		{
++		  /* PRO is already in the worklist, but it now has
++		     a higher priority than before.  Move it at the
++		     appropriate place.  */
++		  model_remove_from_worklist (pro);
++		  model_add_to_worklist (pro, NULL, model_worklist);
++		}
++	      else
++		{
++		  /* PRO isn't in the worklist.  Recursively process
++		     its predecessors until we find one that is.  */
++		  pro->next = first;
++		  first = pro;
++		}
++	    }
++	}
++      if (!first)
++	break;
++      insn = first;
++      first = insn->next;
++    }
++  if (sched_verbose >= 7)
++    fprintf (sched_dump, " = %d\n", model_next_priority);
++  model_next_priority++;
++}
++
++/* Pick one instruction from model_worklist and process it.  */
++
++static void
++model_choose_insn (void)
++{
++  struct model_insn_info *insn, *fallback;
++  int count;
++
++  if (sched_verbose >= 7)
++    {
++      fprintf (sched_dump, ";;\t+--- worklist:\n");
++      insn = model_worklist;
++      count = MAX_SCHED_READY_INSNS;
++      while (count > 0 && insn)
++	{
++	  fprintf (sched_dump, ";;\t+---   %d [%d, %d, %d, %d]\n",
++		   INSN_UID (insn->insn), insn->model_priority,
++		   insn->depth + insn->alap, insn->depth,
++		   INSN_PRIORITY (insn->insn));
++	  count--;
++	  insn = insn->next;
++	}
++    }
++
++  /* Look for a ready instruction whose model_classify_priority is zero
++     or negative, picking the highest-priority one.  Adding such an
++     instruction to the schedule now should do no harm, and may actually
++     do some good.
++
++     Failing that, see whether there is an instruction with the highest
++     extant model_priority that is not yet ready, but which would reduce
++     pressure if it became ready.  This is designed to catch cases like:
++
++       (set (mem (reg R1)) (reg R2))
++
++     where the instruction is the last remaining use of R1 and where the
++     value of R2 is not yet available (or vice versa).  The death of R1
++     means that this instruction already reduces pressure.  It is of
++     course possible that the computation of R2 involves other registers
++     that are hard to kill, but such cases are rare enough for this
++     heuristic to be a win in general.
++
++     Failing that, just pick the highest-priority instruction in the
++     worklist.  */
++  count = MAX_SCHED_READY_INSNS;
++  insn = model_worklist;
++  fallback = 0;
++  for (;;)
++    {
++      if (count == 0 || !insn)
++	{
++	  insn = fallback ? fallback : model_worklist;
++	  break;
++	}
++      if (insn->unscheduled_preds)
++	{
++	  if (model_worklist->model_priority == insn->model_priority
++	      && !fallback
++	      && model_classify_pressure (insn) < 0)
++	    fallback = insn;
++	}
++      else
++	{
++	  if (model_classify_pressure (insn) <= 0)
++	    break;
++	}
++      count--;
++      insn = insn->next;
++    }
++
++  if (sched_verbose >= 7 && insn != model_worklist)
++    {
++      if (insn->unscheduled_preds)
++	fprintf (sched_dump, ";;\t+--- promoting insn %d, with dependencies\n",
++		 INSN_UID (insn->insn));
++      else
++	fprintf (sched_dump, ";;\t+--- promoting insn %d, which is ready\n",
++		 INSN_UID (insn->insn));
++    }
++  if (insn->unscheduled_preds)
++    /* INSN isn't yet ready to issue.  Give all its predecessors the
++       highest priority.  */
++    model_promote_predecessors (insn);
++  else
++    {
++      /* INSN is ready.  Add it to the end of model_schedule and
++	 process its successors.  */
++      model_add_successors_to_worklist (insn);
++      model_remove_from_worklist (insn);
++      model_add_to_schedule (insn->insn);
++      model_record_pressures (insn);
++      update_register_pressure (insn->insn);
++    }
++}
++
++/* Restore all QUEUE_INDEXs to the values that they had before
++   model_start_schedule was called.  */
++
++static void
++model_reset_queue_indices (void)
++{
++  unsigned int i;
++  rtx insn;
++
++  FOR_EACH_VEC_ELT (rtx, model_schedule, i, insn)
++    QUEUE_INDEX (insn) = MODEL_INSN_INFO (insn)->old_queue;
++}
++
++/* We have calculated the model schedule and spill costs.  Print a summary
++   to sched_dump.  */
++
++static void
++model_dump_pressure_summary (void)
++{
++  int cci, cl;
++
++  fprintf (sched_dump, ";; Pressure summary:");
++  for (cci = 0; cci < ira_reg_class_cover_size; cci++)
++    {
++      cl = ira_reg_class_cover[cci];
++      fprintf (sched_dump, " %s:%d", reg_class_names[cl],
++	       model_before_pressure.limits[cci].pressure);
++    }
++  fprintf (sched_dump, "\n\n");
++}
++
++/* Initialize the SCHED_PRESSURE_MODEL information for the current
++   scheduling region.  */
++
++static void
++model_start_schedule (void)
++{
++  basic_block bb;
++
++  model_next_priority = 1;
++  model_schedule = VEC_alloc (rtx, heap, sched_max_luid);
++  model_insns = XCNEWVEC (struct model_insn_info, sched_max_luid);
++
++  bb = BLOCK_FOR_INSN (NEXT_INSN (current_sched_info->prev_head));
++  initiate_reg_pressure_info (df_get_live_in (bb));
++
++  model_analyze_insns ();
++  model_init_pressure_group (&model_before_pressure);
++  while (model_worklist)
++    model_choose_insn ();
++  gcc_assert (model_num_insns == (int) VEC_length (rtx, model_schedule));
++  if (sched_verbose >= 2)
++    fprintf (sched_dump, "\n");
++
++  model_record_final_pressures (&model_before_pressure);
++  model_reset_queue_indices ();
++
++  XDELETEVEC (model_insns);
++
++  model_curr_point = 0;
++  initiate_reg_pressure_info (df_get_live_in (bb));
++  if (sched_verbose >= 1)
++    model_dump_pressure_summary ();
++}
++
++/* Free the information associated with GROUP.  */
++
++static void
++model_finalize_pressure_group (struct model_pressure_group *group)
++{
++  XDELETEVEC (group->model);
++}
++
++/* Free the information created by model_start_schedule.  */
++
++static void
++model_end_schedule (void)
++{
++  model_finalize_pressure_group (&model_before_pressure);
++  VEC_free (rtx, heap, model_schedule);
++}
++
+ /* INSN is the "currently executing insn".  Launch each insn which was
+    waiting on INSN.  READY is the ready list which contains the insns
+    that are ready to fire.  CLOCK is the current cycle.  The function
+@@ -1667,10 +3065,14 @@
+ 		     reg_class_names[ira_reg_class_cover[i]],
+ 		     pressure_info[i].set_increase, pressure_info[i].change);
+ 	}
++      if (sched_pressure == SCHED_PRESSURE_MODEL
++	  && model_curr_point < model_num_insns
++	  && model_index (insn) == model_curr_point)
++	fprintf (sched_dump, ":model %d", model_curr_point);
+       fputc ('\n', sched_dump);
+     }
+ 
+-  if (sched_pressure_p && !DEBUG_INSN_P (insn))
++  if (sched_pressure == SCHED_PRESSURE_WEIGHTED && !DEBUG_INSN_P (insn))
+     update_reg_and_insn_max_reg_pressure (insn);
+ 
+   /* Scheduling instruction should have all its dependencies resolved and
+@@ -1728,6 +3130,24 @@
+   gcc_assert (QUEUE_INDEX (insn) == QUEUE_NOWHERE);
+   QUEUE_INDEX (insn) = QUEUE_SCHEDULED;
+ 
++  if (sched_pressure == SCHED_PRESSURE_MODEL
++      && model_curr_point < model_num_insns
++      && NONDEBUG_INSN_P (insn))
++    {
++      if (model_index (insn) == model_curr_point)
++	do
++	  model_curr_point++;
++	while (model_curr_point < model_num_insns
++	       && (QUEUE_INDEX (MODEL_INSN (model_curr_point))
++		   == QUEUE_SCHEDULED));
++      else
++	model_recompute (insn);
++      model_update_limit_points ();
++      update_register_pressure (insn);
++      if (sched_verbose >= 2)
++	print_curr_reg_pressure ();
++    }
++
+   gcc_assert (INSN_TICK (insn) >= MIN_TICK);
+   if (INSN_TICK (insn) > clock_var)
+     /* INSN has been prematurely moved from the queue to the ready list.
+@@ -2056,7 +3476,16 @@
+       /* If the ready list is full, delay the insn for 1 cycle.
+ 	 See the comment in schedule_block for the rationale.  */
+       if (!reload_completed
+-	  && ready->n_ready - ready->n_debug > MAX_SCHED_READY_INSNS
++	  && (ready->n_ready - ready->n_debug > MAX_SCHED_READY_INSNS
++	      || (sched_pressure == SCHED_PRESSURE_MODEL
++		  /* Limit pressure recalculations to MAX_SCHED_READY_INSNS
++		     instructions too.  */
++		  && model_index (insn) > (model_curr_point
++					   + MAX_SCHED_READY_INSNS)))
++	  && !(sched_pressure == SCHED_PRESSURE_MODEL
++	       && model_curr_point < model_num_insns
++	       /* Always allow the next model instruction to issue.  */
++	       && model_index (insn) == model_curr_point)
+ 	  && !SCHED_GROUP_P (insn)
+ 	  && insn != skip_insn)
+ 	{
+@@ -2293,12 +3722,12 @@
+       fprintf (sched_dump, "  %s:%d",
+ 	       (*current_sched_info->print_insn) (p[i], 0),
+ 	       INSN_LUID (p[i]));
+-      if (sched_pressure_p)
++      if (sched_pressure != SCHED_PRESSURE_NONE)
+ 	fprintf (sched_dump, "(cost=%d",
+ 		 INSN_REG_PRESSURE_EXCESS_COST_CHANGE (p[i]));
+       if (INSN_TICK (p[i]) > clock_var)
+ 	fprintf (sched_dump, ":delay=%d", INSN_TICK (p[i]) - clock_var);
+-      if (sched_pressure_p)
++      if (sched_pressure != SCHED_PRESSURE_NONE)
+ 	fprintf (sched_dump, ")");
+     }
+   fprintf (sched_dump, "\n");
+@@ -2609,8 +4038,8 @@
+ 	    {
+ 	      if (state_dead_lock_p (state)
+ 		  || insn_finishes_cycle_p (insn))
+- 		/* We won't issue any more instructions in the next
+- 		   choice_state.  */
++		/* We won't issue any more instructions in the next
++		   choice_state.  */
+ 		top->rest = 0;
+ 	      else
+ 		top->rest--;
+@@ -2813,6 +4242,59 @@
+     }
+ }
+ 
++/* Examine all insns on the ready list and queue those which can't be
++   issued in this cycle.  TEMP_STATE is temporary scheduler state we
++   can use as scratch space.  If FIRST_CYCLE_INSN_P is true, no insns
++   have been issued for the current cycle, which means it is valid to
++   issue an asm statement.  */
++
++static void
++prune_ready_list (state_t temp_state, bool first_cycle_insn_p)
++{
++  int i;
++
++ restart:
++  for (i = 0; i < ready.n_ready; i++)
++    {
++      rtx insn = ready_element (&ready, i);
++      int cost = 0;
++
++      if (recog_memoized (insn) < 0)
++	{
++	  if (!first_cycle_insn_p
++	      && (GET_CODE (PATTERN (insn)) == ASM_INPUT
++		  || asm_noperands (PATTERN (insn)) >= 0))
++	    cost = 1;
++	}
++      else if (sched_pressure != SCHED_PRESSURE_NONE)
++	{
++	  if (sched_pressure == SCHED_PRESSURE_MODEL
++	      && INSN_TICK (insn) <= clock_var)
++	    {
++	      memcpy (temp_state, curr_state, dfa_state_size);
++	      if (state_transition (temp_state, insn) >= 0)
++		INSN_TICK (insn) = clock_var + 1;
++	    }
++	  cost = 0;
++	}
++      else
++	{
++	  memcpy (temp_state, curr_state, dfa_state_size);
++	  cost = state_transition (temp_state, insn);
++	  if (cost < 0)
++	    cost = 0;
++	  else if (cost == 0)
++	    cost = 1;
++	}
++      if (cost >= 1)
++	{
++	  ready_remove (&ready, i);
++	  queue_insn (insn, cost);
++	  goto restart;
++	}
++    }
++}
++
+ /* Use forward list scheduling to rearrange insns of block pointed to by
+    TARGET_BB, possibly bringing insns from subsequent blocks in the same
+    region.  */
+@@ -2882,6 +4364,9 @@
+      in try_ready () (which is called through init_ready_list ()).  */
+   (*current_sched_info->init_ready_list) ();
+ 
++  if (sched_pressure == SCHED_PRESSURE_MODEL)
++    model_start_schedule ();
++
+   /* The algorithm is O(n^2) in the number of ready insns at any given
+      time in the worst case.  Before reload we are more likely to have
+      big lists so truncate them to a reasonable size.  */
+@@ -2963,6 +4448,10 @@
+ 	}
+       while (advance > 0);
+ 
++      prune_ready_list (temp_state, true);
++      if (ready.n_ready == 0)
++        continue;
++
+       if (sort_p)
+ 	{
+ 	  /* Sort the ready list based on priority.  */
+@@ -3040,7 +4529,7 @@
+ 	      fprintf (sched_dump, ";;\tReady list (t = %3d):  ",
+ 		       clock_var);
+ 	      debug_ready_list (&ready);
+-	      if (sched_pressure_p)
++	      if (sched_pressure == SCHED_PRESSURE_WEIGHTED)
+ 		print_curr_reg_pressure ();
+ 	    }
+ 
+@@ -3084,7 +4573,8 @@
+ 	  else
+ 	    insn = ready_remove_first (&ready);
+ 
+-	  if (sched_pressure_p && INSN_TICK (insn) > clock_var)
++	  if (sched_pressure != SCHED_PRESSURE_NONE
++	      && INSN_TICK (insn) > clock_var)
+ 	    {
+ 	      ready_add (&ready, insn, true);
+ 	      advance = 1;
+@@ -3112,44 +4602,6 @@
+ 	    }
+ 
+ 	  sort_p = TRUE;
+-	  memcpy (temp_state, curr_state, dfa_state_size);
+-	  if (recog_memoized (insn) < 0)
+-	    {
+-	      asm_p = (GET_CODE (PATTERN (insn)) == ASM_INPUT
+-		       || asm_noperands (PATTERN (insn)) >= 0);
+-	      if (!first_cycle_insn_p && asm_p)
+-		/* This is asm insn which is tried to be issued on the
+-		   cycle not first.  Issue it on the next cycle.  */
+-		cost = 1;
+-	      else
+-		/* A USE insn, or something else we don't need to
+-		   understand.  We can't pass these directly to
+-		   state_transition because it will trigger a
+-		   fatal error for unrecognizable insns.  */
+-		cost = 0;
+-	    }
+-	  else if (sched_pressure_p)
+-	    cost = 0;
+-	  else
+-	    {
+-	      cost = state_transition (temp_state, insn);
+-	      if (cost < 0)
+-		cost = 0;
+-	      else if (cost == 0)
+-		cost = 1;
+-	    }
+-
+-	  if (cost >= 1)
+-	    {
+-	      queue_insn (insn, cost);
+- 	      if (SCHED_GROUP_P (insn))
+- 		{
+- 		  advance = cost;
+- 		  break;
+- 		}
+-
+-	      continue;
+-	    }
+ 
+ 	  if (current_sched_info->can_schedule_ready_p
+ 	      && ! (*current_sched_info->can_schedule_ready_p) (insn))
+@@ -3200,11 +4652,17 @@
+ 	  reemit_notes (insn);
+ 	  last_scheduled_insn = insn;
+ 
+-	  if (memcmp (curr_state, temp_state, dfa_state_size) != 0)
+-            {
+-              cycle_issued_insns++;
+-              memcpy (curr_state, temp_state, dfa_state_size);
+-            }
++	  if (recog_memoized (insn) >= 0)
++	    {
++	      cost = state_transition (curr_state, insn);
++	      if (sched_pressure != SCHED_PRESSURE_WEIGHTED)
++		gcc_assert (cost < 0);
++	      cycle_issued_insns++;
++	      asm_p = false;
++	    }
++	  else
++	    asm_p = (GET_CODE (PATTERN (insn)) == ASM_INPUT
++		     || asm_noperands (PATTERN (insn)) >= 0);
+ 
+ 	  if (targetm.sched.variable_issue)
+ 	    can_issue_more =
+@@ -3225,6 +4683,9 @@
+ 
+ 	  first_cycle_insn_p = false;
+ 
++	  if (ready.n_ready > 0)
++            prune_ready_list (temp_state, false);
++
+ 	  /* Sort the ready list based on priority.  This must be
+ 	     redone here, as schedule_insn may have readied additional
+ 	     insns that will not be sorted correctly.  */
+@@ -3321,6 +4782,9 @@
+ 	  }
+     }
+ 
++  if (sched_pressure == SCHED_PRESSURE_MODEL)
++    model_end_schedule ();
++
+   if (sched_verbose)
+     fprintf (sched_dump, ";;   total time = %d\n", clock_var);
+ 
+@@ -3424,10 +4888,14 @@
+   if (targetm.sched.dispatch (NULL_RTX, IS_DISPATCH_ON))
+     targetm.sched.dispatch_do (NULL_RTX, DISPATCH_INIT);
+ 
+-  sched_pressure_p = (flag_sched_pressure && ! reload_completed
+-		      && common_sched_info->sched_pass_id == SCHED_RGN_PASS);
++  if (flag_sched_pressure
++      && !reload_completed
++      && common_sched_info->sched_pass_id == SCHED_RGN_PASS)
++    sched_pressure = flag_sched_pressure_algorithm;
++  else
++    sched_pressure = SCHED_PRESSURE_NONE;
+ 
+-  if (sched_pressure_p)
++  if (sched_pressure != SCHED_PRESSURE_NONE)
+     ira_setup_eliminable_regset ();
+ 
+   /* Initialize SPEC_INFO.  */
+@@ -3504,7 +4972,7 @@
+   if (targetm.sched.init_global)
+     targetm.sched.init_global (sched_dump, sched_verbose, get_max_uid () + 1);
+ 
+-  if (sched_pressure_p)
++  if (sched_pressure != SCHED_PRESSURE_NONE)
+     {
+       int i, max_regno = max_reg_num ();
+ 
+@@ -3517,8 +4985,11 @@
+ 	     ? ira_class_translate[REGNO_REG_CLASS (i)]
+ 	     : reg_cover_class (i));
+       curr_reg_live = BITMAP_ALLOC (NULL);
+-      saved_reg_live = BITMAP_ALLOC (NULL);
+-      region_ref_regs = BITMAP_ALLOC (NULL);
++      if (sched_pressure == SCHED_PRESSURE_WEIGHTED)
++	{
++	  saved_reg_live = BITMAP_ALLOC (NULL);
++	  region_ref_regs = BITMAP_ALLOC (NULL);
++	}
+     }
+ 
+   curr_state = xmalloc (dfa_state_size);
+@@ -3618,12 +5089,15 @@
+ sched_finish (void)
+ {
+   haifa_finish_h_i_d ();
+-  if (sched_pressure_p)
++  if (sched_pressure != SCHED_PRESSURE_NONE)
+     {
+-      free (sched_regno_cover_class);
+-      BITMAP_FREE (region_ref_regs);
+-      BITMAP_FREE (saved_reg_live);
++      if (sched_pressure == SCHED_PRESSURE_WEIGHTED)
++	{
++	  BITMAP_FREE (region_ref_regs);
++	  BITMAP_FREE (saved_reg_live);
++	}
+       BITMAP_FREE (curr_reg_live);
++      free (sched_regno_cover_class);
+     }
+   free (curr_state);
+ 
+@@ -3936,7 +5410,7 @@
+   INSN_TICK (next) = tick;
+ 
+   delay = tick - clock_var;
+-  if (delay <= 0 || sched_pressure_p)
++  if (delay <= 0 || sched_pressure != SCHED_PRESSURE_NONE)
+     delay = QUEUE_READY;
+ 
+   change_queue_index (next, delay);
+@@ -5185,7 +6659,7 @@
+       if (insn == jump)
+ 	break;
+ 
+-      if (dep_list_size (insn) == 0)
++      if (dep_list_size (insn, SD_LIST_FORW) == 0)
+ 	{
+ 	  dep_def _new_dep, *new_dep = &_new_dep;
+ 
+@@ -5556,6 +7030,7 @@
+ 
+   FOR_EACH_VEC_ELT (haifa_insn_data_def, h_i_d, i, data)
+     {
++      free (data->max_reg_pressure);
+       if (data->reg_pressure != NULL)
+ 	free (data->reg_pressure);
+       for (use = data->reg_use_list; use != NULL; use = next)
+--- a/src/gcc/hooks.c
++++ b/src/gcc/hooks.c
+@@ -101,6 +101,15 @@
+   return true;
+ }
+ 
++/* Generic hook that takes (enum machine_mode, unsigned HOST_WIDE_INT)
++   and returns false.  */
++bool
++hook_bool_mode_uhwi_false (enum machine_mode mode ATTRIBUTE_UNUSED,
++			   unsigned HOST_WIDE_INT value ATTRIBUTE_UNUSED)
++{
++  return false;
++}
++
+ /* Generic hook that takes (FILE *, const char *) and does nothing.  */
+ void
+ hook_void_FILEptr_constcharptr (FILE *a ATTRIBUTE_UNUSED, const char *b ATTRIBUTE_UNUSED)
+--- a/src/gcc/hooks.h
++++ b/src/gcc/hooks.h
+@@ -34,6 +34,8 @@
+ extern bool hook_bool_mode_true (enum machine_mode);
+ extern bool hook_bool_mode_const_rtx_false (enum machine_mode, const_rtx);
+ extern bool hook_bool_mode_const_rtx_true (enum machine_mode, const_rtx);
++extern bool hook_bool_mode_uhwi_false (enum machine_mode,
++				       unsigned HOST_WIDE_INT);
+ extern bool hook_bool_tree_false (tree);
+ extern bool hook_bool_const_tree_false (const_tree);
+ extern bool hook_bool_tree_true (tree);
+--- a/src/gcc/ifcvt.c
++++ b/src/gcc/ifcvt.c
+@@ -1,5 +1,6 @@
+ /* If-conversion support.
+-   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
++   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010,
++   2011
+    Free Software Foundation, Inc.
+ 
+    This file is part of GCC.
+@@ -304,6 +305,10 @@
+ 
+   for (insn = start; ; insn = NEXT_INSN (insn))
+     {
++      /* dwarf2out can't cope with conditional prologues.  */
++      if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_PROLOGUE_END)
++	return FALSE;
++
+       if (NOTE_P (insn) || DEBUG_INSN_P (insn))
+ 	goto insn_done;
+ 
+--- a/src/gcc/internal-fn.c
++++ b/src/gcc/internal-fn.c
+@@ -0,0 +1,147 @@
++/* Internal functions.
++   Copyright (C) 2011 Free Software Foundation, Inc.
++
++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/>.  */
++
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "gimple.h"
++#include "tree.h"
++#include "expr.h"
++#include "optabs.h"
++#include "recog.h"
++
++/* The names of each internal function, indexed by function number.  */
++const char *const internal_fn_name_array[] = {
++#define DEF_INTERNAL_FN(CODE, FLAGS) #CODE,
++#include "internal-fn.def"
++#undef DEF_INTERNAL_FN
++  "<invalid-fn>"
++};
++
++/* The ECF_* flags of each internal function, indexed by function number.  */
++const int internal_fn_flags_array[] = {
++#define DEF_INTERNAL_FN(CODE, FLAGS) FLAGS,
++#include "internal-fn.def"
++#undef DEF_INTERNAL_FN
++  0
++};
++
++/* ARRAY_TYPE is an array of vector modes.  Return the associated insn
++   for load-lanes-style optab OPTAB.  The insn must exist.  */
++
++static enum insn_code
++get_multi_vector_move (tree array_type, convert_optab optab)
++{
++  enum insn_code icode;
++  enum machine_mode imode;
++  enum machine_mode vmode;
++
++  gcc_assert (TREE_CODE (array_type) == ARRAY_TYPE);
++  imode = TYPE_MODE (array_type);
++  vmode = TYPE_MODE (TREE_TYPE (array_type));
++
++  icode = convert_optab_handler (optab, imode, vmode);
++  gcc_assert (icode != CODE_FOR_nothing);
++  return icode;
++}
++
++/* Expand LOAD_LANES call STMT.  */
++
++static void
++expand_LOAD_LANES (gimple stmt)
++{
++  tree type, lhs, rhs;
++  rtx target, mem;
++  enum insn_code icode;
++  const struct insn_operand_data *operand;
++
++  lhs = gimple_call_lhs (stmt);
++  rhs = gimple_call_arg (stmt, 0);
++  type = TREE_TYPE (lhs);
++
++  target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE);
++  mem = expand_normal (rhs);
++
++  gcc_assert (REG_P (target));
++  gcc_assert (MEM_P (mem));
++  PUT_MODE (mem, TYPE_MODE (type));
++
++  icode = get_multi_vector_move (type, vec_load_lanes_optab);
++
++  operand = &insn_data[(int) icode].operand[1];
++  if (operand->predicate && !operand->predicate (mem, operand->mode))
++    mem = replace_equiv_address (mem, force_reg (Pmode, XEXP (mem, 0)));
++
++  emit_insn (GEN_FCN (icode) (target, mem));
++}
++
++/* Expand STORE_LANES call STMT.  */
++
++static void
++expand_STORE_LANES (gimple stmt)
++{
++  tree type, lhs, rhs;
++  rtx target, reg;
++  enum insn_code icode;
++  const struct insn_operand_data *operand;
++
++  lhs = gimple_call_lhs (stmt);
++  rhs = gimple_call_arg (stmt, 0);
++  type = TREE_TYPE (rhs);
++
++  target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE);
++  reg = expand_normal (rhs);
++
++  gcc_assert (MEM_P (target));
++  PUT_MODE (target, TYPE_MODE (type));
++
++  icode = get_multi_vector_move (type, vec_store_lanes_optab);
++
++  operand = &insn_data[(int) icode].operand[0];
++  if (operand->predicate && !operand->predicate (target, operand->mode))
++    target = replace_equiv_address (target,
++				    force_reg (Pmode, XEXP (target, 0)));
++
++  operand = &insn_data[(int) icode].operand[1];
++  if (operand->predicate && !operand->predicate (reg, operand->mode))
++    reg = force_reg (TYPE_MODE (type), reg);
++
++  emit_insn (GEN_FCN (icode) (target, reg));
++}
++
++/* Routines to expand each internal function, indexed by function number.
++   Each routine has the prototype:
++
++       expand_<NAME> (gimple stmt)
++
++   where STMT is the statement that performs the call. */
++static void (*const internal_fn_expanders[]) (gimple) = {
++#define DEF_INTERNAL_FN(CODE, FLAGS) expand_##CODE,
++#include "internal-fn.def"
++#undef DEF_INTERNAL_FN
++  0
++};
++
++/* Expand STMT, which is a call to internal function FN.  */
++
++void
++expand_internal_call (gimple stmt)
++{
++  internal_fn_expanders[(int) gimple_call_internal_fn (stmt)] (stmt);
++}
+--- a/src/gcc/internal-fn.def
++++ b/src/gcc/internal-fn.def
+@@ -0,0 +1,42 @@
++/* Internal functions.
++   Copyright (C) 2011 Free Software Foundation, Inc.
++
++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/>.  */
++
++/* This file specifies a list of internal "functions".  These functions
++   differ from built-in functions in that they have no linkage and cannot
++   be called directly by the user.  They represent operations that are only
++   synthesised by GCC itself.
++
++   Internal functions are used instead of tree codes if the operation
++   and its operands are more naturally represented as a GIMPLE_CALL
++   than a GIMPLE_ASSIGN.
++
++   Each entry in this file has the form:
++
++     DEF_INTERNAL_FN (NAME, FLAGS)
++
++   where NAME is the name of the function and FLAGS is a set of
++   ECF_* flags.  Each entry must have a corresponding expander
++   of the form:
++
++     void expand_NAME (gimple stmt)
++
++   where STMT is the statement that performs the call.  */
++
++DEF_INTERNAL_FN (LOAD_LANES, ECF_CONST | ECF_LEAF)
++DEF_INTERNAL_FN (STORE_LANES, ECF_CONST | ECF_LEAF)
+--- a/src/gcc/internal-fn.h
++++ b/src/gcc/internal-fn.h
+@@ -0,0 +1,52 @@
++/* Internal functions.
++   Copyright (C) 2011 Free Software Foundation, Inc.
++
++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/>.  */
++
++#ifndef GCC_INTERNAL_FN_H
++#define GCC_INTERNAL_FN_H
++
++enum internal_fn {
++#define DEF_INTERNAL_FN(CODE, FLAGS) IFN_##CODE,
++#include "internal-fn.def"
++#undef DEF_INTERNAL_FN
++  IFN_LAST
++};
++
++extern const char *const internal_fn_name_array[];
++extern const int internal_fn_flags_array[];
++
++/* Return the name of internal function FN.  The name is only meaningful
++   for dumps; it has no linkage.  */
++
++static inline const char *
++internal_fn_name (enum internal_fn fn)
++{
++  return internal_fn_name_array[(int) fn];
++}
++
++/* Return the ECF_* flags for function FN.  */
++
++static inline int
++internal_fn_flags (enum internal_fn fn)
++{
++  return internal_fn_flags_array[(int) fn];
++}
++
++extern void expand_internal_call (gimple);
++
++#endif
+--- a/src/gcc/ipa-prop.c
++++ b/src/gcc/ipa-prop.c
+@@ -704,12 +704,11 @@
+       || is_global_var (base))
+     return;
+ 
+-  if (detect_type_change (op, base, call, jfunc, offset))
+-    return;
+-
+   binfo = TYPE_BINFO (TREE_TYPE (base));
+-  if (!binfo)
++  if (!binfo
++      || detect_type_change (op, base, call, jfunc, offset))
+     return;
++
+   binfo = get_binfo_at_offset (binfo, offset, TREE_TYPE (op));
+   if (binfo)
+     {
+@@ -1418,6 +1417,8 @@
+ {
+   tree target = gimple_call_fn (call);
+ 
++  if (!target)
++    return;
+   if (TREE_CODE (target) == SSA_NAME)
+     ipa_analyze_indirect_call_uses (node, info, parms_info, call, target);
+   else if (TREE_CODE (target) == OBJ_TYPE_REF)
+--- a/src/gcc/LINARO-VERSION
++++ b/src/gcc/LINARO-VERSION
+@@ -0,0 +1 @@
++4.6-2012.08
+--- a/src/gcc/longlong.h
++++ b/src/gcc/longlong.h
+@@ -203,7 +203,7 @@
+ UDItype __umulsidi3 (USItype, USItype);
+ #endif
+ 
+-#if defined (__arm__) && !defined (__thumb__) && W_TYPE_SIZE == 32
++#if defined (__arm__) && (defined (__thumb2__) || !defined (__thumb__)) && W_TYPE_SIZE == 32
+ #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+   __asm__ ("adds	%1, %4, %5\n\tadc	%0, %2, %3"		\
+ 	   : "=r" ((USItype) (sh)),					\
+@@ -220,9 +220,12 @@
+ 	     "rI" ((USItype) (bh)),					\
+ 	     "r" ((USItype) (al)),					\
+ 	     "rI" ((USItype) (bl)) __CLOBBER_CC)
+-#define umul_ppmm(xh, xl, a, b) \
+-{register USItype __t0, __t1, __t2;					\
+-  __asm__ ("%@ Inlined umul_ppmm\n"					\
++# if defined(__ARM_ARCH_2__) || defined(__ARM_ARCH_2A__) \
++     || defined(__ARM_ARCH_3__)
++#  define umul_ppmm(xh, xl, a, b)					\
++  do {									\
++    register USItype __t0, __t1, __t2;					\
++    __asm__ ("%@ Inlined umul_ppmm\n"					\
+ 	   "	mov	%2, %5, lsr #16\n"				\
+ 	   "	mov	%0, %6, lsr #16\n"				\
+ 	   "	bic	%3, %5, %2, lsl #16\n"				\
+@@ -239,14 +242,26 @@
+ 	     "=r" ((USItype) (xl)),					\
+ 	     "=&r" (__t0), "=&r" (__t1), "=r" (__t2)			\
+ 	   : "r" ((USItype) (a)),					\
+-	     "r" ((USItype) (b)) __CLOBBER_CC );}
+-#define UMUL_TIME 20
+-#define UDIV_TIME 100
++	     "r" ((USItype) (b)) __CLOBBER_CC );			\
++  } while (0)
++#  define UMUL_TIME 20
++# else
++#  define umul_ppmm(xh, xl, a, b)					\
++  do {									\
++    /* Generate umull, under compiler control.  */			\
++    register UDItype __t0 = (UDItype)(USItype)(a) * (USItype)(b);	\
++    (xl) = (USItype)__t0;						\
++    (xh) = (USItype)(__t0 >> 32);					\
++  } while (0)
++#  define UMUL_TIME 3
++# endif
++# define UDIV_TIME 100
+ #endif /* __arm__ */
+ 
+ #if defined(__arm__)
+ /* Let gcc decide how best to implement count_leading_zeros.  */
+ #define count_leading_zeros(COUNT,X)	((COUNT) = __builtin_clz (X))
++#define count_trailing_zeros(COUNT,X)   ((COUNT) = __builtin_ctz (X))
+ #define COUNT_LEADING_ZEROS_0 32
+ #endif
+ 
+--- a/src/gcc/loop-doloop.c
++++ b/src/gcc/loop-doloop.c
+@@ -78,6 +78,8 @@
+   rtx inc_src;
+   rtx condition;
+   rtx pattern;
++  rtx cc_reg = NULL_RTX;
++  rtx reg_orig = NULL_RTX;
+ 
+   /* The canonical doloop pattern we expect has one of the following
+      forms:
+@@ -96,7 +98,16 @@
+      2)  (set (reg) (plus (reg) (const_int -1))
+          (set (pc) (if_then_else (reg != 0)
+ 	                         (label_ref (label))
+-			         (pc))).  */
++			         (pc))).  
++
++     Some targets (ARM) do the comparison before the branch, as in the
++     following form:
++
++     3) (parallel [(set (cc) (compare ((plus (reg) (const_int -1), 0)))
++                   (set (reg) (plus (reg) (const_int -1)))])
++        (set (pc) (if_then_else (cc == NE)
++                                (label_ref (label))
++                                (pc))) */
+ 
+   pattern = PATTERN (doloop_pat);
+ 
+@@ -104,19 +115,47 @@
+     {
+       rtx cond;
+       rtx prev_insn = prev_nondebug_insn (doloop_pat);
++      rtx cmp_arg1, cmp_arg2;
++      rtx cmp_orig;
+ 
+-      /* We expect the decrement to immediately precede the branch.  */
++      /* In case the pattern is not PARALLEL we expect two forms
++	 of doloop which are cases 2) and 3) above: in case 2) the
++	 decrement immediately precedes the branch, while in case 3)
++	 the compare and decrement instructions immediately precede
++	 the branch.  */
+ 
+       if (prev_insn == NULL_RTX || !INSN_P (prev_insn))
+         return 0;
+ 
+       cmp = pattern;
+-      inc = PATTERN (PREV_INSN (doloop_pat));
++      if (GET_CODE (PATTERN (prev_insn)) == PARALLEL)
++        {
++	  /* The third case: the compare and decrement instructions
++	     immediately precede the branch.  */
++	  cmp_orig = XVECEXP (PATTERN (prev_insn), 0, 0);
++	  if (GET_CODE (cmp_orig) != SET)
++	    return 0;
++	  if (GET_CODE (SET_SRC (cmp_orig)) != COMPARE)
++	    return 0;
++	  cmp_arg1 = XEXP (SET_SRC (cmp_orig), 0);
++          cmp_arg2 = XEXP (SET_SRC (cmp_orig), 1);
++	  if (cmp_arg2 != const0_rtx 
++	      || GET_CODE (cmp_arg1) != PLUS)
++	    return 0;
++	  reg_orig = XEXP (cmp_arg1, 0);
++	  if (XEXP (cmp_arg1, 1) != GEN_INT (-1) 
++	      || !REG_P (reg_orig))
++	    return 0;
++	  cc_reg = SET_DEST (cmp_orig);
++	  
++	  inc = XVECEXP (PATTERN (prev_insn), 0, 1);
++	}
++      else
++        inc = PATTERN (prev_insn);
+       /* We expect the condition to be of the form (reg != 0)  */
+       cond = XEXP (SET_SRC (cmp), 0);
+       if (GET_CODE (cond) != NE || XEXP (cond, 1) != const0_rtx)
+         return 0;
+-
+     }
+   else
+     {
+@@ -162,11 +201,15 @@
+     return 0;
+ 
+   if ((XEXP (condition, 0) == reg)
++      /* For the third case:  */  
++      || ((cc_reg != NULL_RTX)
++	  && (XEXP (condition, 0) == cc_reg)
++	  && (reg_orig == reg))
+       || (GET_CODE (XEXP (condition, 0)) == PLUS
+-		   && XEXP (XEXP (condition, 0), 0) == reg))
++	  && XEXP (XEXP (condition, 0), 0) == reg))
+    {
+      if (GET_CODE (pattern) != PARALLEL)
+-     /*  The second form we expect:
++     /*  For the second form we expect:
+ 
+          (set (reg) (plus (reg) (const_int -1))
+          (set (pc) (if_then_else (reg != 0)
+@@ -181,7 +224,24 @@
+                      (set (reg) (plus (reg) (const_int -1)))
+                      (additional clobbers and uses)])
+ 
+-         So we return that form instead.
++        For the third form we expect:
++
++        (parallel [(set (cc) (compare ((plus (reg) (const_int -1)), 0))
++                   (set (reg) (plus (reg) (const_int -1)))])
++        (set (pc) (if_then_else (cc == NE)
++                                (label_ref (label))
++                                (pc))) 
++
++        which is equivalent to the following:
++
++        (parallel [(set (cc) (compare (reg,  1))
++                   (set (reg) (plus (reg) (const_int -1)))
++                   (set (pc) (if_then_else (NE == cc)
++                                           (label_ref (label))
++                                           (pc))))])
++
++        So we return the second form instead for the two cases.
++
+      */
+         condition = gen_rtx_fmt_ee (NE, VOIDmode, inc_src, const1_rtx);
+ 
+--- a/src/gcc/lto/ChangeLog
++++ b/src/gcc/lto/ChangeLog
+@@ -1,3 +1,12 @@
++2012-04-23  Peter Bergner  <bergner@vnet.ibm.com>
++
++	Backport from mainline
++	2011-06-11  Jan Hubicka  <jh@suse.cz>
++
++	PR lto/48246
++	* lto.c (lto_1_to_1_map): Don't create empty partitions.
++	(lto_balanced_map): Likewise.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/gcc/lto/lto.c
++++ b/src/gcc/lto/lto.c
+@@ -893,7 +893,8 @@
+ 
+   for (node = cgraph_nodes; node; node = node->next)
+     {
+-      if (!partition_cgraph_node_p (node))
++      if (!partition_cgraph_node_p (node)
++	  || node->aux)
+ 	continue;
+ 
+       file_data = node->local.lto_file_data;
+@@ -923,13 +924,13 @@
+ 	  npartitions++;
+ 	}
+ 
+-      if (!node->aux)
+-        add_cgraph_node_to_partition (partition, node);
++      add_cgraph_node_to_partition (partition, node);
+     }
+ 
+   for (vnode = varpool_nodes; vnode; vnode = vnode->next)
+     {
+-      if (!partition_varpool_node_p (vnode))
++      if (!partition_varpool_node_p (vnode)
++	  || vnode->aux)
+ 	continue;
+       file_data = vnode->lto_file_data;
+       slot = pointer_map_contains (pmap, file_data);
+@@ -943,8 +944,7 @@
+ 	  npartitions++;
+ 	}
+ 
+-      if (!vnode->aux)
+-        add_varpool_node_to_partition (partition, vnode);
++      add_varpool_node_to_partition (partition, vnode);
+     }
+   for (node = cgraph_nodes; node; node = node->next)
+     node->aux = NULL;
+@@ -1050,8 +1050,9 @@
+ 
+   for (i = 0; i < n_nodes; i++)
+     {
+-      if (!order[i]->aux)
+-        add_cgraph_node_to_partition (partition, order[i]);
++      if (order[i]->aux)
++	continue;
++      add_cgraph_node_to_partition (partition, order[i]);
+       total_size -= order[i]->global.size;
+ 
+       /* Once we added a new node to the partition, we also want to add
+@@ -1231,6 +1232,8 @@
+ 	    }
+ 	  i = best_i;
+  	  /* When we are finished, avoid creating empty partition.  */
++	  while (i < n_nodes - 1 && order[i + 1]->aux)
++	    i++;
+ 	  if (i == n_nodes - 1)
+ 	    break;
+ 	  partition = new_partition ("");
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -888,6 +888,8 @@
+ READ_MD_H = $(OBSTACK_H) $(HASHTAB_H) read-md.h
+ PARAMS_H = params.h params.def
+ BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def
++INTERNAL_FN_DEF = internal-fn.def
++INTERNAL_FN_H = internal-fn.h $(INTERNAL_FN_DEF)
+ TREE_H = tree.h all-tree.def tree.def c-family/c-common.def \
+ 	$(lang_tree_files) $(MACHMODE_H) tree-check.h $(BUILTINS_DEF) \
+ 	$(INPUT_H) statistics.h $(VEC_H) treestruct.def $(HASHTAB_H) \
+@@ -897,7 +899,7 @@
+ BASIC_BLOCK_H = basic-block.h $(PREDICT_H) $(VEC_H) $(FUNCTION_H) cfghooks.h
+ GIMPLE_H = gimple.h gimple.def gsstruct.def pointer-set.h $(VEC_H) \
+ 	$(GGC_H) $(BASIC_BLOCK_H) $(TARGET_H) tree-ssa-operands.h \
+-	tree-ssa-alias.h vecir.h
++	tree-ssa-alias.h vecir.h $(INTERNAL_FN_H)
+ GCOV_IO_H = gcov-io.h gcov-iov.h auto-host.h
+ COVERAGE_H = coverage.h $(GCOV_IO_H)
+ DEMANGLE_H = $(srcdir)/../include/demangle.h
+@@ -1269,6 +1271,7 @@
+ 	init-regs.o \
+ 	input.o \
+ 	integrate.o \
++	internal-fn.o \
+ 	intl.o \
+ 	ira.o \
+ 	ira-build.o \
+@@ -2422,7 +2425,8 @@
+ tree-ssa-phiopt.o : tree-ssa-phiopt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+    $(TM_H) $(GGC_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
+    $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) langhooks.h $(FLAGS_H) \
+-   $(DIAGNOSTIC_H) $(TIMEVAR_H) pointer-set.h domwalk.h
++   $(DIAGNOSTIC_H) $(TIMEVAR_H) pointer-set.h domwalk.h $(CFGLOOP_H) \
++   $(TREE_DATA_REF_H)
+ tree-nrv.o : tree-nrv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+    $(TM_H) $(TREE_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(FLAGS_H) \
+    $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_PASS_H) \
+@@ -2663,7 +2667,7 @@
+    $(TREE_PASS_H) $(PARAMS_H) gt-tree-scalar-evolution.h
+ tree-data-ref.o : tree-data-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+    gimple-pretty-print.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+-   $(TREE_PASS_H) langhooks.h
++   $(TREE_PASS_H) langhooks.h tree-affine.h
+ sese.o : sese.c sese.h $(CONFIG_H) $(SYSTEM_H) coretypes.h tree-pretty-print.h \
+    $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) tree-pass.h value-prof.h
+ graphite.o : graphite.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) \
+@@ -2750,6 +2754,8 @@
+    $(TM_H) $(TREE_H) $(DIAGNOSTIC_CORE_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \
+    $(TREE_PASS_H) tree-ssa-propagate.h tree-pretty-print.h \
+    gimple-pretty-print.h
++internal-fn.o : internal-fn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
++   $(GIMPLE_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) $(RECOG_H)
+ gimple.o : gimple.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
+    $(GGC_H) $(GIMPLE_H) $(DIAGNOSTIC_CORE_H) $(DIAGNOSTIC_H) gt-gimple.h \
+    $(TREE_FLOW_H) value-prof.h $(FLAGS_H) $(DEMANGLE_H) \
+--- a/src/gcc/modulo-sched.c
++++ b/src/gcc/modulo-sched.c
+@@ -116,14 +116,18 @@
+ 
+ /* The number of different iterations the nodes in ps span, assuming
+    the stage boundaries are placed efficiently.  */
+-#define PS_STAGE_COUNT(ps) ((PS_MAX_CYCLE (ps) - PS_MIN_CYCLE (ps) \
+-			     + 1 + (ps)->ii - 1) / (ps)->ii)
++#define CALC_STAGE_COUNT(max_cycle,min_cycle,ii) ((max_cycle - min_cycle \
++                         + 1 + ii - 1) / ii)
++/* The stage count of ps.  */
++#define PS_STAGE_COUNT(ps) (((partial_schedule_ptr)(ps))->stage_count)
+ 
+ /* A single instruction in the partial schedule.  */
+ struct ps_insn
+ {
+-  /* The corresponding DDG_NODE.  */
+-  ddg_node_ptr node;
++  /* Identifies the instruction to be scheduled.  Values smaller than
++     the ddg's num_nodes refer directly to ddg nodes.  A value of
++     X - num_nodes refers to register move X.  */
++  int id;
+ 
+   /* The (absolute) cycle in which the PS instruction is scheduled.
+      Same as SCHED_TIME (node).  */
+@@ -133,10 +137,35 @@
+   ps_insn_ptr next_in_row,
+ 	      prev_in_row;
+ 
+-  /* The number of nodes in the same row that come after this node.  */
+-  int row_rest_count;
+ };
+ 
++/* Information about a register move that has been added to a partial
++   schedule.  */
++struct ps_reg_move_info
++{
++  /* The source of the move is defined by the ps_insn with id DEF.
++     The destination is used by the ps_insns with the ids in USES.  */
++  int def;
++  sbitmap uses;
++
++  /* The original form of USES' instructions used OLD_REG, but they
++     should now use NEW_REG.  */
++  rtx old_reg;
++  rtx new_reg;
++
++  /* The number of consecutive stages that the move occupies.  */
++  int num_consecutive_stages;
++
++  /* An instruction that sets NEW_REG to the correct value.  The first
++     move associated with DEF will have an rhs of OLD_REG; later moves
++     use the result of the previous move.  */
++  rtx insn;
++};
++
++typedef struct ps_reg_move_info ps_reg_move_info;
++DEF_VEC_O (ps_reg_move_info);
++DEF_VEC_ALLOC_O (ps_reg_move_info, heap);
++
+ /* Holds the partial schedule as an array of II rows.  Each entry of the
+    array points to a linked list of PS_INSNs, which represents the
+    instructions that are scheduled for that row.  */
+@@ -148,6 +177,16 @@
+   /* rows[i] points to linked list of insns scheduled in row i (0<=i<ii).  */
+   ps_insn_ptr *rows;
+ 
++  /* All the moves added for this partial schedule.  Index X has
++     a ps_insn id of X + g->num_nodes.  */
++  VEC (ps_reg_move_info, heap) *reg_moves;
++
++  /*  rows_length[i] holds the number of instructions in the row.
++      It is used only (as an optimization) to back off quickly from
++      trying to schedule a node in a full row; that is, to avoid running
++      through futile DFA state transitions.  */
++  int *rows_length;
++  
+   /* The earliest absolute cycle of an insn in the partial schedule.  */
+   int min_cycle;
+ 
+@@ -155,29 +194,18 @@
+   int max_cycle;
+ 
+   ddg_ptr g;	/* The DDG of the insns in the partial schedule.  */
+-};
+ 
+-/* We use this to record all the register replacements we do in
+-   the kernel so we can undo SMS if it is not profitable.  */
+-struct undo_replace_buff_elem
+-{
+-  rtx insn;
+-  rtx orig_reg;
+-  rtx new_reg;
+-  struct undo_replace_buff_elem *next;
++  int stage_count;  /* The stage count of the partial schedule.  */
+ };
+ 
+ 
+-
+ static partial_schedule_ptr create_partial_schedule (int ii, ddg_ptr, int history);
+ static void free_partial_schedule (partial_schedule_ptr);
+ static void reset_partial_schedule (partial_schedule_ptr, int new_ii);
+ void print_partial_schedule (partial_schedule_ptr, FILE *);
+ static void verify_partial_schedule (partial_schedule_ptr, sbitmap);
+ static ps_insn_ptr ps_add_node_check_conflicts (partial_schedule_ptr,
+-						ddg_node_ptr node, int cycle,
+-						sbitmap must_precede,
+-						sbitmap must_follow);
++						int, int, sbitmap, sbitmap);
+ static void rotate_partial_schedule (partial_schedule_ptr, int);
+ void set_row_column_for_ps (partial_schedule_ptr);
+ static void ps_insert_empty_row (partial_schedule_ptr, int, sbitmap);
+@@ -193,34 +221,27 @@
+ static void permute_partial_schedule (partial_schedule_ptr, rtx);
+ static void generate_prolog_epilog (partial_schedule_ptr, struct loop *,
+                                     rtx, rtx);
+-static void duplicate_insns_of_cycles (partial_schedule_ptr,
+-				       int, int, int, rtx);
+-
+-#define SCHED_ASAP(x) (((node_sched_params_ptr)(x)->aux.info)->asap)
+-#define SCHED_TIME(x) (((node_sched_params_ptr)(x)->aux.info)->time)
+-#define SCHED_FIRST_REG_MOVE(x) \
+-	(((node_sched_params_ptr)(x)->aux.info)->first_reg_move)
+-#define SCHED_NREG_MOVES(x) \
+-	(((node_sched_params_ptr)(x)->aux.info)->nreg_moves)
+-#define SCHED_ROW(x) (((node_sched_params_ptr)(x)->aux.info)->row)
+-#define SCHED_STAGE(x) (((node_sched_params_ptr)(x)->aux.info)->stage)
+-#define SCHED_COLUMN(x) (((node_sched_params_ptr)(x)->aux.info)->column)
++static int calculate_stage_count (partial_schedule_ptr, int);
++static void calculate_must_precede_follow (ddg_node_ptr, int, int,
++					   int, int, sbitmap, sbitmap, sbitmap);
++static int get_sched_window (partial_schedule_ptr, ddg_node_ptr, 
++			     sbitmap, int, int *, int *, int *);
++static bool try_scheduling_node_in_cycle (partial_schedule_ptr, int, int,
++					  sbitmap, int *, sbitmap, sbitmap);
++static void remove_node_from_ps (partial_schedule_ptr, ps_insn_ptr);
++
++#define NODE_ASAP(node) ((node)->aux.count)
++
++#define SCHED_PARAMS(x) VEC_index (node_sched_params, node_sched_param_vec, x)
++#define SCHED_TIME(x) (SCHED_PARAMS (x)->time)
++#define SCHED_ROW(x) (SCHED_PARAMS (x)->row)
++#define SCHED_STAGE(x) (SCHED_PARAMS (x)->stage)
++#define SCHED_COLUMN(x) (SCHED_PARAMS (x)->column)
+ 
+ /* The scheduling parameters held for each node.  */
+ typedef struct node_sched_params
+ {
+-  int asap;	/* A lower-bound on the absolute scheduling cycle.  */
+-  int time;	/* The absolute scheduling cycle (time >= asap).  */
+-
+-  /* The following field (first_reg_move) is a pointer to the first
+-     register-move instruction added to handle the modulo-variable-expansion
+-     of the register defined by this node.  This register-move copies the
+-     original register defined by the node.  */
+-  rtx first_reg_move;
+-
+-  /* The number of register-move instructions added, immediately preceding
+-     first_reg_move.  */
+-  int nreg_moves;
++  int time;	/* The absolute scheduling cycle.  */
+ 
+   int row;    /* Holds time % ii.  */
+   int stage;  /* Holds time / ii.  */
+@@ -230,6 +251,9 @@
+   int column;
+ } *node_sched_params_ptr;
+ 
++typedef struct node_sched_params node_sched_params;
++DEF_VEC_O (node_sched_params);
++DEF_VEC_ALLOC_O (node_sched_params, heap);
+ 
+ /* The following three functions are copied from the current scheduler
+    code in order to use sched_analyze() for computing the dependencies.
+@@ -279,6 +303,49 @@
+   0
+ };
+ 
++/* Partial schedule instruction ID in PS is a register move.  Return
++   information about it.  */
++static struct ps_reg_move_info *
++ps_reg_move (partial_schedule_ptr ps, int id)
++{
++  gcc_checking_assert (id >= ps->g->num_nodes);
++  return VEC_index (ps_reg_move_info, ps->reg_moves, id - ps->g->num_nodes);
++}
++
++/* Return the rtl instruction that is being scheduled by partial schedule
++   instruction ID, which belongs to schedule PS.  */
++static rtx
++ps_rtl_insn (partial_schedule_ptr ps, int id)
++{
++  if (id < ps->g->num_nodes)
++    return ps->g->nodes[id].insn;
++  else
++    return ps_reg_move (ps, id)->insn;
++}
++
++/* Partial schedule instruction ID, which belongs to PS, occured in
++   the original (unscheduled) loop.  Return the first instruction
++   in the loop that was associated with ps_rtl_insn (PS, ID).
++   If the instruction had some notes before it, this is the first
++   of those notes.  */
++static rtx
++ps_first_note (partial_schedule_ptr ps, int id)
++{
++  gcc_assert (id < ps->g->num_nodes);
++  return ps->g->nodes[id].first_note;
++}
++
++/* Return the number of consecutive stages that are occupied by
++   partial schedule instruction ID in PS.  */
++static int
++ps_num_consecutive_stages (partial_schedule_ptr ps, int id)
++{
++  if (id < ps->g->num_nodes)
++    return 1;
++  else
++    return ps_reg_move (ps, id)->num_consecutive_stages;
++}
++
+ /* Given HEAD and TAIL which are the first and last insns in a loop;
+    return the register which controls the loop.  Return zero if it has
+    more than one occurrence in the loop besides the control part or the
+@@ -310,10 +377,10 @@
+      either a single (parallel) branch-on-count or a (non-parallel)
+      branch immediately preceded by a single (decrement) insn.  */
+   first_insn_not_to_check = (GET_CODE (PATTERN (tail)) == PARALLEL ? tail
+-                             : PREV_INSN (tail));
++                             : prev_nondebug_insn (tail));
+ 
+   for (insn = head; insn != first_insn_not_to_check; insn = NEXT_INSN (insn))
+-    if (reg_mentioned_p (reg, insn))
++    if (reg_mentioned_p (reg, insn) && !DEBUG_INSN_P (insn))
+       {
+         if (dump_file)
+         {
+@@ -379,35 +446,59 @@
+ }
+ 
+ 
+-/* Points to the array that contains the sched data for each node.  */
+-static node_sched_params_ptr node_sched_params;
++/* A vector that contains the sched data for each ps_insn.  */
++static VEC (node_sched_params, heap) *node_sched_param_vec;
+ 
+-/* Allocate sched_params for each node and initialize it.  Assumes that
+-   the aux field of each node contain the asap bound (computed earlier),
+-   and copies it into the sched_params field.  */
++/* Allocate sched_params for each node and initialize it.  */
+ static void
+ set_node_sched_params (ddg_ptr g)
+ {
+-  int i;
++  VEC_truncate (node_sched_params, node_sched_param_vec, 0);
++  VEC_safe_grow_cleared (node_sched_params, heap,
++			 node_sched_param_vec, g->num_nodes);
++}
+ 
+-  /* Allocate for each node in the DDG a place to hold the "sched_data".  */
+-  /* Initialize ASAP/ALAP/HIGHT to zero.  */
+-  node_sched_params = (node_sched_params_ptr)
+-		       xcalloc (g->num_nodes,
+-				sizeof (struct node_sched_params));
++/* Make sure that node_sched_param_vec has an entry for every move in PS.  */
++static void
++extend_node_sched_params (partial_schedule_ptr ps)
++{
++  VEC_safe_grow_cleared (node_sched_params, heap, node_sched_param_vec,
++			 ps->g->num_nodes + VEC_length (ps_reg_move_info,
++							ps->reg_moves));
++}
+ 
+-  /* Set the pointer of the general data of the node to point to the
+-     appropriate sched_params structure.  */
+-  for (i = 0; i < g->num_nodes; i++)
++/* Update the sched_params (time, row and stage) for node U using the II,
++   the CYCLE of U and MIN_CYCLE.
++   We're not simply taking the following
++   SCHED_STAGE (u) = CALC_STAGE_COUNT (SCHED_TIME (u), min_cycle, ii);
++   because the stages may not be aligned on cycle 0.  */
++static void
++update_node_sched_params (int u, int ii, int cycle, int min_cycle)
++{
++  int sc_until_cycle_zero;
++  int stage;
++
++  SCHED_TIME (u) = cycle;
++  SCHED_ROW (u) = SMODULO (cycle, ii);
++
++  /* The calculation of stage count is done adding the number
++     of stages before cycle zero and after cycle zero.  */
++  sc_until_cycle_zero = CALC_STAGE_COUNT (-1, min_cycle, ii);
++
++  if (SCHED_TIME (u) < 0)
++    {
++      stage = CALC_STAGE_COUNT (-1, SCHED_TIME (u), ii);
++      SCHED_STAGE (u) = sc_until_cycle_zero - stage;
++    }
++  else
+     {
+-      /* Watch out for aliasing problems?  */
+-      node_sched_params[i].asap = g->nodes[i].aux.count;
+-      g->nodes[i].aux.info = &node_sched_params[i];
++      stage = CALC_STAGE_COUNT (SCHED_TIME (u), 0, ii);
++      SCHED_STAGE (u) = sc_until_cycle_zero + stage - 1;
+     }
+ }
+ 
+ static void
+-print_node_sched_params (FILE *file, int num_nodes, ddg_ptr g)
++print_node_sched_params (FILE *file, int num_nodes, partial_schedule_ptr ps)
+ {
+   int i;
+ 
+@@ -415,22 +506,170 @@
+     return;
+   for (i = 0; i < num_nodes; i++)
+     {
+-      node_sched_params_ptr nsp = &node_sched_params[i];
+-      rtx reg_move = nsp->first_reg_move;
+-      int j;
++      node_sched_params_ptr nsp = SCHED_PARAMS (i);
+ 
+       fprintf (file, "Node = %d; INSN = %d\n", i,
+-	       (INSN_UID (g->nodes[i].insn)));
+-      fprintf (file, " asap = %d:\n", nsp->asap);
++	       INSN_UID (ps_rtl_insn (ps, i)));
++      fprintf (file, " asap = %d:\n", NODE_ASAP (&ps->g->nodes[i]));
+       fprintf (file, " time = %d:\n", nsp->time);
+-      fprintf (file, " nreg_moves = %d:\n", nsp->nreg_moves);
+-      for (j = 0; j < nsp->nreg_moves; j++)
++      fprintf (file, " stage = %d:\n", nsp->stage);
++    }
++}
++
++/* Set SCHED_COLUMN for each instruction in row ROW of PS.  */
++static void
++set_columns_for_row (partial_schedule_ptr ps, int row)
++{
++  ps_insn_ptr cur_insn;
++  int column;
++
++  column = 0;
++  for (cur_insn = ps->rows[row]; cur_insn; cur_insn = cur_insn->next_in_row)
++    SCHED_COLUMN (cur_insn->id) = column++;
++}
++
++/* Set SCHED_COLUMN for each instruction in PS.  */
++static void
++set_columns_for_ps (partial_schedule_ptr ps)
++{
++  int row;
++
++  for (row = 0; row < ps->ii; row++)
++    set_columns_for_row (ps, row);
++}
++
++/* Try to schedule the move with ps_insn identifier I_REG_MOVE in PS.
++   Its single predecessor has already been scheduled, as has its
++   ddg node successors.  (The move may have also another move as its
++   successor, in which case that successor will be scheduled later.)
++
++   The move is part of a chain that satisfies register dependencies
++   between a producing ddg node and various consuming ddg nodes.
++   If some of these dependencies have a distance of 1 (meaning that
++   the use is upward-exposoed) then DISTANCE1_USES is nonnull and
++   contains the set of uses with distance-1 dependencies.
++   DISTANCE1_USES is null otherwise.
++
++   MUST_FOLLOW is a scratch bitmap that is big enough to hold
++   all current ps_insn ids.
++
++   Return true on success.  */
++static bool
++schedule_reg_move (partial_schedule_ptr ps, int i_reg_move,
++		   sbitmap distance1_uses, sbitmap must_follow)
++{
++  unsigned int u;
++  int this_time, this_distance, this_start, this_end, this_latency;
++  int start, end, c, ii;
++  sbitmap_iterator sbi;
++  ps_reg_move_info *move;
++  rtx this_insn;
++  ps_insn_ptr psi;
++
++  move = ps_reg_move (ps, i_reg_move);
++  ii = ps->ii;
++  if (dump_file)
++    {
++      fprintf (dump_file, "Scheduling register move INSN %d; ii = %d"
++	       ", min cycle = %d\n\n", INSN_UID (move->insn), ii,
++	       PS_MIN_CYCLE (ps));
++      print_rtl_single (dump_file, move->insn);
++      fprintf (dump_file, "\n%11s %11s %5s\n", "start", "end", "time");
++      fprintf (dump_file, "=========== =========== =====\n");
++    }
++
++  start = INT_MIN;
++  end = INT_MAX;
++
++  /* For dependencies of distance 1 between a producer ddg node A
++     and consumer ddg node B, we have a chain of dependencies:
++
++        A --(T,L1,1)--> M1 --(T,L2,0)--> M2 ... --(T,Ln,0)--> B
++
++     where Mi is the ith move.  For dependencies of distance 0 between
++     a producer ddg node A and consumer ddg node C, we have a chain of
++     dependencies:
++
++        A --(T,L1',0)--> M1' --(T,L2',0)--> M2' ... --(T,Ln',0)--> C
++
++     where Mi' occupies the same position as Mi but occurs a stage later.
++     We can only schedule each move once, so if we have both types of
++     chain, we model the second as:
++
++        A --(T,L1',1)--> M1 --(T,L2',0)--> M2 ... --(T,Ln',-1)--> C
++
++     First handle the dependencies between the previously-scheduled
++     predecessor and the move.  */
++  this_insn = ps_rtl_insn (ps, move->def);
++  this_latency = insn_latency (this_insn, move->insn);
++  this_distance = distance1_uses && move->def < ps->g->num_nodes ? 1 : 0;
++  this_time = SCHED_TIME (move->def) - this_distance * ii;
++  this_start = this_time + this_latency;
++  this_end = this_time + ii;
++  if (dump_file)
++    fprintf (dump_file, "%11d %11d %5d %d --(T,%d,%d)--> %d\n",
++	     this_start, this_end, SCHED_TIME (move->def),
++	     INSN_UID (this_insn), this_latency, this_distance,
++	     INSN_UID (move->insn));
++
++  if (start < this_start)
++    start = this_start;
++  if (end > this_end)
++    end = this_end;
++
++  /* Handle the dependencies between the move and previously-scheduled
++     successors.  */
++  EXECUTE_IF_SET_IN_SBITMAP (move->uses, 0, u, sbi)
++    {
++      this_insn = ps_rtl_insn (ps, u);
++      this_latency = insn_latency (move->insn, this_insn);
++      if (distance1_uses && !TEST_BIT (distance1_uses, u))
++	this_distance = -1;
++      else
++	this_distance = 0;
++      this_time = SCHED_TIME (u) + this_distance * ii;
++      this_start = this_time - ii;
++      this_end = this_time - this_latency;
++      if (dump_file)
++	fprintf (dump_file, "%11d %11d %5d %d --(T,%d,%d)--> %d\n",
++		 this_start, this_end, SCHED_TIME (u), INSN_UID (move->insn),
++		 this_latency, this_distance, INSN_UID (this_insn));
++
++      if (start < this_start)
++	start = this_start;
++      if (end > this_end)
++	end = this_end;
++    }
++
++  if (dump_file)
++    {
++      fprintf (dump_file, "----------- ----------- -----\n");
++      fprintf (dump_file, "%11d %11d %5s %s\n", start, end, "", "(max, min)");
++    }
++
++  sbitmap_zero (must_follow);
++  SET_BIT (must_follow, move->def);
++
++  start = MAX (start, end - (ii - 1));
++  for (c = end; c >= start; c--)
++    {
++      psi = ps_add_node_check_conflicts (ps, i_reg_move, c,
++					 move->uses, must_follow);
++      if (psi)
+ 	{
+-	  fprintf (file, " reg_move = ");
+-	  print_rtl_single (file, reg_move);
+-	  reg_move = PREV_INSN (reg_move);
++	  update_node_sched_params (i_reg_move, ii, c, PS_MIN_CYCLE (ps));
++	  if (dump_file)
++	    fprintf (dump_file, "\nScheduled register move INSN %d at"
++		     " time %d, row %d\n\n", INSN_UID (move->insn), c,
++		     SCHED_ROW (i_reg_move));
++	  return true;
+ 	}
+     }
++
++  if (dump_file)
++    fprintf (dump_file, "\nNo available slot\n\n");
++
++  return false;
+ }
+ 
+ /*
+@@ -444,175 +683,201 @@
+    nreg_moves = ----------------------------------- + 1 - {   dependence.
+                             ii                          { 1 if not.
+ */
+-static struct undo_replace_buff_elem *
+-generate_reg_moves (partial_schedule_ptr ps, bool rescan)
++static bool
++schedule_reg_moves (partial_schedule_ptr ps)
+ {
+   ddg_ptr g = ps->g;
+   int ii = ps->ii;
+   int i;
+-  struct undo_replace_buff_elem *reg_move_replaces = NULL;
+ 
+   for (i = 0; i < g->num_nodes; i++)
+     {
+       ddg_node_ptr u = &g->nodes[i];
+       ddg_edge_ptr e;
+       int nreg_moves = 0, i_reg_move;
+-      sbitmap *uses_of_defs;
+-      rtx last_reg_move;
+       rtx prev_reg, old_reg;
+-
++      int first_move;
++      int distances[2];
++      sbitmap must_follow;
++      sbitmap distance1_uses;
++      rtx set = single_set (u->insn);
++      
++      /* Skip instructions that do not set a register.  */
++      if ((set && !REG_P (SET_DEST (set))))
++        continue;
++ 
+       /* Compute the number of reg_moves needed for u, by looking at life
+ 	 ranges started at u (excluding self-loops).  */
++      distances[0] = distances[1] = false;
+       for (e = u->out; e; e = e->next_out)
+ 	if (e->type == TRUE_DEP && e->dest != e->src)
+ 	  {
+-	    int nreg_moves4e = (SCHED_TIME (e->dest) - SCHED_TIME (e->src)) / ii;
++	    int nreg_moves4e = (SCHED_TIME (e->dest->cuid)
++				- SCHED_TIME (e->src->cuid)) / ii;
+ 
+             if (e->distance == 1)
+-              nreg_moves4e = (SCHED_TIME (e->dest) - SCHED_TIME (e->src) + ii) / ii;
++              nreg_moves4e = (SCHED_TIME (e->dest->cuid)
++			      - SCHED_TIME (e->src->cuid) + ii) / ii;
+ 
+ 	    /* If dest precedes src in the schedule of the kernel, then dest
+ 	       will read before src writes and we can save one reg_copy.  */
+-	    if (SCHED_ROW (e->dest) == SCHED_ROW (e->src)
+-		&& SCHED_COLUMN (e->dest) < SCHED_COLUMN (e->src))
++	    if (SCHED_ROW (e->dest->cuid) == SCHED_ROW (e->src->cuid)
++		&& SCHED_COLUMN (e->dest->cuid) < SCHED_COLUMN (e->src->cuid))
+ 	      nreg_moves4e--;
+ 
++            if (nreg_moves4e >= 1)
++	      {
++		/* !single_set instructions are not supported yet and
++		   thus we do not except to encounter them in the loop
++		   except from the doloop part.  For the latter case
++		   we assume no regmoves are generated as the doloop
++		   instructions are tied to the branch with an edge.  */
++		gcc_assert (set);
++		/* If the instruction contains auto-inc register then
++		   validate that the regmov is being generated for the
++		   target regsiter rather then the inc'ed register.	*/
++		gcc_assert (!autoinc_var_is_used_p (u->insn, e->dest->insn));
++	      }
++	    
++	    if (nreg_moves4e)
++	      {
++		gcc_assert (e->distance < 2);
++		distances[e->distance] = true;
++	      }
+ 	    nreg_moves = MAX (nreg_moves, nreg_moves4e);
+ 	  }
+ 
+       if (nreg_moves == 0)
+ 	continue;
+ 
++      /* Create NREG_MOVES register moves.  */
++      first_move = VEC_length (ps_reg_move_info, ps->reg_moves);
++      VEC_safe_grow_cleared (ps_reg_move_info, heap, ps->reg_moves,
++			     first_move + nreg_moves);
++      extend_node_sched_params (ps);
++
++      /* Record the moves associated with this node.  */
++      first_move += ps->g->num_nodes;
++
++      /* Generate each move.  */
++      old_reg = prev_reg = SET_DEST (single_set (u->insn));
++      for (i_reg_move = 0; i_reg_move < nreg_moves; i_reg_move++)
++	{
++	  ps_reg_move_info *move = ps_reg_move (ps, first_move + i_reg_move);
++
++	  move->def = i_reg_move > 0 ? first_move + i_reg_move - 1 : i;
++	  move->uses = sbitmap_alloc (first_move + nreg_moves);
++	  move->old_reg = old_reg;
++	  move->new_reg = gen_reg_rtx (GET_MODE (prev_reg));
++	  move->num_consecutive_stages = distances[0] && distances[1] ? 2 : 1;
++	  move->insn = gen_move_insn (move->new_reg, copy_rtx (prev_reg));
++	  sbitmap_zero (move->uses);
++
++	  prev_reg = move->new_reg;
++	}
++
++      distance1_uses = distances[1] ? sbitmap_alloc (g->num_nodes) : NULL;
++
+       /* Every use of the register defined by node may require a different
+ 	 copy of this register, depending on the time the use is scheduled.
+-	 Set a bitmap vector, telling which nodes use each copy of this
+-	 register.  */
+-      uses_of_defs = sbitmap_vector_alloc (nreg_moves, g->num_nodes);
+-      sbitmap_vector_zero (uses_of_defs, nreg_moves);
++	 Record which uses require which move results.  */
+       for (e = u->out; e; e = e->next_out)
+ 	if (e->type == TRUE_DEP && e->dest != e->src)
+ 	  {
+-	    int dest_copy = (SCHED_TIME (e->dest) - SCHED_TIME (e->src)) / ii;
++	    int dest_copy = (SCHED_TIME (e->dest->cuid)
++			     - SCHED_TIME (e->src->cuid)) / ii;
+ 
+ 	    if (e->distance == 1)
+-	      dest_copy = (SCHED_TIME (e->dest) - SCHED_TIME (e->src) + ii) / ii;
++	      dest_copy = (SCHED_TIME (e->dest->cuid)
++			   - SCHED_TIME (e->src->cuid) + ii) / ii;
+ 
+-	    if (SCHED_ROW (e->dest) == SCHED_ROW (e->src)
+-		&& SCHED_COLUMN (e->dest) < SCHED_COLUMN (e->src))
++	    if (SCHED_ROW (e->dest->cuid) == SCHED_ROW (e->src->cuid)
++		&& SCHED_COLUMN (e->dest->cuid) < SCHED_COLUMN (e->src->cuid))
+ 	      dest_copy--;
+ 
+ 	    if (dest_copy)
+-	      SET_BIT (uses_of_defs[dest_copy - 1], e->dest->cuid);
+-	  }
++	      {
++		ps_reg_move_info *move;
+ 
+-      /* Now generate the reg_moves, attaching relevant uses to them.  */
+-      SCHED_NREG_MOVES (u) = nreg_moves;
+-      old_reg = prev_reg = copy_rtx (SET_DEST (single_set (u->insn)));
+-      /* Insert the reg-moves right before the notes which precede
+-         the insn they relates to.  */
+-      last_reg_move = u->first_note;
++		move = ps_reg_move (ps, first_move + dest_copy - 1);
++		SET_BIT (move->uses, e->dest->cuid);
++		if (e->distance == 1)
++		  SET_BIT (distance1_uses, e->dest->cuid);
++	      }
++	  }
+ 
++      must_follow = sbitmap_alloc (first_move + nreg_moves);
+       for (i_reg_move = 0; i_reg_move < nreg_moves; i_reg_move++)
+-	{
+-	  unsigned int i_use = 0;
+-	  rtx new_reg = gen_reg_rtx (GET_MODE (prev_reg));
+-	  rtx reg_move = gen_move_insn (new_reg, prev_reg);
+-	  sbitmap_iterator sbi;
+-
+-	  add_insn_before (reg_move, last_reg_move, NULL);
+-	  last_reg_move = reg_move;
+-
+-	  if (!SCHED_FIRST_REG_MOVE (u))
+-	    SCHED_FIRST_REG_MOVE (u) = reg_move;
+-
+-	  EXECUTE_IF_SET_IN_SBITMAP (uses_of_defs[i_reg_move], 0, i_use, sbi)
+-	    {
+-	      struct undo_replace_buff_elem *rep;
+-
+-	      rep = (struct undo_replace_buff_elem *)
+-		    xcalloc (1, sizeof (struct undo_replace_buff_elem));
+-	      rep->insn = g->nodes[i_use].insn;
+-	      rep->orig_reg = old_reg;
+-	      rep->new_reg = new_reg;
+-
+-	      if (! reg_move_replaces)
+-		reg_move_replaces = rep;
+-	      else
+-		{
+-		  rep->next = reg_move_replaces;
+-		  reg_move_replaces = rep;
+-		}
+-
+-	      replace_rtx (g->nodes[i_use].insn, old_reg, new_reg);
+-	      if (rescan)
+-		df_insn_rescan (g->nodes[i_use].insn);
+-	    }
+-
+-	  prev_reg = new_reg;
+-	}
+-      sbitmap_vector_free (uses_of_defs);
++	if (!schedule_reg_move (ps, first_move + i_reg_move,
++				distance1_uses, must_follow))
++	  break;
++      sbitmap_free (must_follow);
++      if (distance1_uses)
++	sbitmap_free (distance1_uses);
++      if (i_reg_move < nreg_moves)
++	return false;
+     }
+-  return reg_move_replaces;
++  return true;
+ }
+ 
+-/* Free memory allocated for the undo buffer.  */
++/* Emit the moves associatied with PS.  Apply the substitutions
++   associated with them.  */
+ static void
+-free_undo_replace_buff (struct undo_replace_buff_elem *reg_move_replaces)
++apply_reg_moves (partial_schedule_ptr ps)
+ {
++  ps_reg_move_info *move;
++  int i;
+ 
+-  while (reg_move_replaces)
++  FOR_EACH_VEC_ELT (ps_reg_move_info, ps->reg_moves, i, move)
+     {
+-      struct undo_replace_buff_elem *rep = reg_move_replaces;
++      unsigned int i_use;
++      sbitmap_iterator sbi;
+ 
+-      reg_move_replaces = reg_move_replaces->next;
+-      free (rep);
++      EXECUTE_IF_SET_IN_SBITMAP (move->uses, 0, i_use, sbi)
++	{
++	  replace_rtx (ps->g->nodes[i_use].insn, move->old_reg, move->new_reg);
++	  df_insn_rescan (ps->g->nodes[i_use].insn);
++	}
+     }
+ }
+ 
+-/* Bump the SCHED_TIMEs of all nodes to start from zero.  Set the values
+-   of SCHED_ROW and SCHED_STAGE.  */
++/* Bump the SCHED_TIMEs of all nodes by AMOUNT.  Set the values of
++   SCHED_ROW and SCHED_STAGE.  */
+ static void
+-normalize_sched_times (partial_schedule_ptr ps)
++reset_sched_times (partial_schedule_ptr ps, int amount)
+ {
+   int row;
+-  int amount = PS_MIN_CYCLE (ps);
+   int ii = ps->ii;
+   ps_insn_ptr crr_insn;
+ 
+   for (row = 0; row < ii; row++)
+     for (crr_insn = ps->rows[row]; crr_insn; crr_insn = crr_insn->next_in_row)
+       {
+-	ddg_node_ptr u = crr_insn->node;
++	int u = crr_insn->id;
+ 	int normalized_time = SCHED_TIME (u) - amount;
++	int new_min_cycle = PS_MIN_CYCLE (ps) - amount;
+ 
+-	if (dump_file)
+-	  fprintf (dump_file, "crr_insn->node=%d, crr_insn->cycle=%d,\
+-		   min_cycle=%d\n", crr_insn->node->cuid, SCHED_TIME
+-		   (u), ps->min_cycle);
++        if (dump_file)
++          {
++            /* Print the scheduling times after the rotation.  */
++	    rtx insn = ps_rtl_insn (ps, u);
++
++            fprintf (dump_file, "crr_insn->node=%d (insn id %d), "
++                     "crr_insn->cycle=%d, min_cycle=%d", u,
++                     INSN_UID (insn), normalized_time, new_min_cycle);
++            if (JUMP_P (insn))
++              fprintf (dump_file, " (branch)");
++            fprintf (dump_file, "\n");
++          }
++	
+ 	gcc_assert (SCHED_TIME (u) >= ps->min_cycle);
+ 	gcc_assert (SCHED_TIME (u) <= ps->max_cycle);
+-	SCHED_TIME (u) = normalized_time;
+-	SCHED_ROW (u) = normalized_time % ii;
+-	SCHED_STAGE (u) = normalized_time / ii;
+-      }
+-}
+-
+-/* Set SCHED_COLUMN of each node according to its position in PS.  */
+-static void
+-set_columns_for_ps (partial_schedule_ptr ps)
+-{
+-  int row;
+-
+-  for (row = 0; row < ps->ii; row++)
+-    {
+-      ps_insn_ptr cur_insn = ps->rows[row];
+-      int column = 0;
+ 
+-      for (; cur_insn; cur_insn = cur_insn->next_in_row)
+-	SCHED_COLUMN (cur_insn->node) = column++;
+-    }
++	crr_insn->cycle = normalized_time;
++	update_node_sched_params (u, ii, normalized_time, new_min_cycle);
++      }
+ }
+-
++ 
+ /* Permute the insns according to their order in PS, from row 0 to
+    row ii-1, and position them right before LAST.  This schedules
+    the insns of the loop kernel.  */
+@@ -625,14 +890,220 @@
+ 
+   for (row = 0; row < ii ; row++)
+     for (ps_ij = ps->rows[row]; ps_ij; ps_ij = ps_ij->next_in_row)
+-      if (PREV_INSN (last) != ps_ij->node->insn)
+-      	reorder_insns_nobb (ps_ij->node->first_note, ps_ij->node->insn,
+-			    PREV_INSN (last));
++      {
++	rtx insn = ps_rtl_insn (ps, ps_ij->id);
++
++	if (PREV_INSN (last) != insn)
++	  {
++	    if (ps_ij->id < ps->g->num_nodes)
++	      reorder_insns_nobb (ps_first_note (ps, ps_ij->id), insn,
++				  PREV_INSN (last));
++	    else
++	      add_insn_before (insn, last, NULL);
++	  }
++      }
++}
++
++/* Set bitmaps TMP_FOLLOW and TMP_PRECEDE to MUST_FOLLOW and MUST_PRECEDE
++   respectively only if cycle C falls on the border of the scheduling
++   window boundaries marked by START and END cycles.  STEP is the
++   direction of the window.  */
++static inline void
++set_must_precede_follow (sbitmap *tmp_follow, sbitmap must_follow,
++			 sbitmap *tmp_precede, sbitmap must_precede, int c,
++			 int start, int end, int step)
++{
++  *tmp_precede = NULL;
++  *tmp_follow = NULL;
++
++  if (c == start)
++    {
++      if (step == 1)
++	*tmp_precede = must_precede;
++      else			/* step == -1.  */
++	*tmp_follow = must_follow;
++    }
++  if (c == end - step)
++    {
++      if (step == 1)
++	*tmp_follow = must_follow;
++      else			/* step == -1.  */
++	*tmp_precede = must_precede;
++    }
++
++}
++
++/* Return True if the branch can be moved to row ii-1 while
++   normalizing the partial schedule PS to start from cycle zero and thus
++   optimize the SC.  Otherwise return False.  */
++static bool
++optimize_sc (partial_schedule_ptr ps, ddg_ptr g)
++{
++  int amount = PS_MIN_CYCLE (ps);
++  sbitmap sched_nodes = sbitmap_alloc (g->num_nodes);
++  int start, end, step;
++  int ii = ps->ii;
++  bool ok = false;
++  int stage_count, stage_count_curr;
++
++  /* Compare the SC after normalization and SC after bringing the branch
++     to row ii-1.  If they are equal just bail out.  */
++  stage_count = calculate_stage_count (ps, amount);
++  stage_count_curr =
++    calculate_stage_count (ps, SCHED_TIME (g->closing_branch->cuid) - (ii - 1));
++
++  if (stage_count == stage_count_curr)
++    {
++      if (dump_file)
++	fprintf (dump_file, "SMS SC already optimized.\n");
++
++      ok = false;
++      goto clear;
++    }
++
++  if (dump_file)
++    {
++      fprintf (dump_file, "SMS Trying to optimize branch location\n");
++      fprintf (dump_file, "SMS partial schedule before trial:\n");
++      print_partial_schedule (ps, dump_file);
++    }
++
++  /* First, normalize the partial scheduling.  */
++  reset_sched_times (ps, amount);
++  rotate_partial_schedule (ps, amount);
++  if (dump_file)
++    {
++      fprintf (dump_file,
++	       "SMS partial schedule after normalization (ii, %d, SC %d):\n",
++	       ii, stage_count);
++      print_partial_schedule (ps, dump_file);
++    }
++
++  if (SMODULO (SCHED_TIME (g->closing_branch->cuid), ii) == ii - 1)
++    {
++      ok = true;
++      goto clear;
++    }
++
++  sbitmap_ones (sched_nodes);
++
++  /* Calculate the new placement of the branch.  It should be in row
++     ii-1 and fall into it's scheduling window.  */
++  if (get_sched_window (ps, g->closing_branch, sched_nodes, ii, &start,
++			&step, &end) == 0)
++    {
++      bool success;
++      ps_insn_ptr next_ps_i;
++      int branch_cycle = SCHED_TIME (g->closing_branch->cuid);
++      int row = SMODULO (branch_cycle, ps->ii);
++      int num_splits = 0;
++      sbitmap must_precede, must_follow, tmp_precede, tmp_follow;
++      int c;
++
++      if (dump_file)
++	fprintf (dump_file, "\nTrying to schedule node %d "
++		 "INSN = %d  in (%d .. %d) step %d\n",
++		 g->closing_branch->cuid,
++		 (INSN_UID (g->closing_branch->insn)), start, end, step);
++
++      gcc_assert ((step > 0 && start < end) || (step < 0 && start > end));
++      if (step == 1)
++	{
++	  c = start + ii - SMODULO (start, ii) - 1;
++	  gcc_assert (c >= start);
++	  if (c >= end)
++	    {
++	      ok = false;
++	      if (dump_file)
++		fprintf (dump_file,
++			 "SMS failed to schedule branch at cycle: %d\n", c);
++	      goto clear;
++	    }
++	}
++      else
++	{
++	  c = start - SMODULO (start, ii) - 1;
++	  gcc_assert (c <= start);
++
++	  if (c <= end)
++	    {
++	      if (dump_file)
++		fprintf (dump_file,
++			 "SMS failed to schedule branch at cycle: %d\n", c);
++	      ok = false;
++	      goto clear;
++	    }
++	}
++
++      must_precede = sbitmap_alloc (g->num_nodes);
++      must_follow = sbitmap_alloc (g->num_nodes);
++
++      /* Try to schedule the branch is it's new cycle.  */
++      calculate_must_precede_follow (g->closing_branch, start, end,
++				     step, ii, sched_nodes,
++				     must_precede, must_follow);
++
++      set_must_precede_follow (&tmp_follow, must_follow, &tmp_precede,
++			       must_precede, c, start, end, step);
++
++      /* Find the element in the partial schedule related to the closing
++         branch so we can remove it from it's current cycle.  */
++      for (next_ps_i = ps->rows[row];
++	   next_ps_i; next_ps_i = next_ps_i->next_in_row)
++	if (next_ps_i->id == g->closing_branch->cuid)
++	  break;
++
++      remove_node_from_ps (ps, next_ps_i);
++      success =
++	try_scheduling_node_in_cycle (ps, g->closing_branch->cuid, c,
++				      sched_nodes, &num_splits,
++				      tmp_precede, tmp_follow);
++      gcc_assert (num_splits == 0);
++      if (!success)
++	{
++	  if (dump_file)
++	    fprintf (dump_file,
++		     "SMS failed to schedule branch at cycle: %d, "
++		     "bringing it back to cycle %d\n", c, branch_cycle);
++
++	  /* The branch was failed to be placed in row ii - 1.
++	     Put it back in it's original place in the partial
++	     schedualing.  */
++	  set_must_precede_follow (&tmp_follow, must_follow, &tmp_precede,
++				   must_precede, branch_cycle, start, end,
++				   step);
++	  success =
++	    try_scheduling_node_in_cycle (ps, g->closing_branch->cuid,
++					  branch_cycle, sched_nodes,
++					  &num_splits, tmp_precede,
++					  tmp_follow);
++	  gcc_assert (success && (num_splits == 0));
++	  ok = false;
++	}
++      else
++	{
++	  /* The branch is placed in row ii - 1.  */
++	  if (dump_file)
++	    fprintf (dump_file,
++		     "SMS success in moving branch to cycle %d\n", c);
++
++	  update_node_sched_params (g->closing_branch->cuid, ii, c,
++				    PS_MIN_CYCLE (ps));
++	  ok = true;
++	}
++
++      free (must_precede);
++      free (must_follow);
++    }
++
++clear:
++  free (sched_nodes);
++  return ok;
+ }
+ 
+ static void
+ duplicate_insns_of_cycles (partial_schedule_ptr ps, int from_stage,
+-			   int to_stage, int for_prolog, rtx count_reg)
++			   int to_stage, rtx count_reg)
+ {
+   int row;
+   ps_insn_ptr ps_ij;
+@@ -640,59 +1111,30 @@
+   for (row = 0; row < ps->ii; row++)
+     for (ps_ij = ps->rows[row]; ps_ij; ps_ij = ps_ij->next_in_row)
+       {
+-	ddg_node_ptr u_node = ps_ij->node;
+-	int j, i_reg_moves;
+-	rtx reg_move = NULL_RTX;
++	int u = ps_ij->id;
++	int first_u, last_u;
++	rtx u_insn;
+ 
+         /* Do not duplicate any insn which refers to count_reg as it
+            belongs to the control part.
++           The closing branch is scheduled as well and thus should
++           be ignored.
+            TODO: This should be done by analyzing the control part of
+            the loop.  */
+-        if (reg_mentioned_p (count_reg, u_node->insn))
++	u_insn = ps_rtl_insn (ps, u);
++        if (reg_mentioned_p (count_reg, u_insn)
++            || JUMP_P (u_insn))
+           continue;
+ 
+-	if (for_prolog)
+-	  {
+-	    /* SCHED_STAGE (u_node) >= from_stage == 0.  Generate increasing
+-	       number of reg_moves starting with the second occurrence of
+-	       u_node, which is generated if its SCHED_STAGE <= to_stage.  */
+-	    i_reg_moves = to_stage - SCHED_STAGE (u_node) + 1;
+-	    i_reg_moves = MAX (i_reg_moves, 0);
+-	    i_reg_moves = MIN (i_reg_moves, SCHED_NREG_MOVES (u_node));
+-
+-	    /* The reg_moves start from the *first* reg_move backwards.  */
+-	    if (i_reg_moves)
+-	      {
+-		reg_move = SCHED_FIRST_REG_MOVE (u_node);
+-		for (j = 1; j < i_reg_moves; j++)
+-		  reg_move = PREV_INSN (reg_move);
+-	      }
+-	  }
+-	else /* It's for the epilog.  */
++	first_u = SCHED_STAGE (u);
++	last_u = first_u + ps_num_consecutive_stages (ps, u) - 1;
++	if (from_stage <= last_u && to_stage >= first_u)
+ 	  {
+-	    /* SCHED_STAGE (u_node) <= to_stage.  Generate all reg_moves,
+-	       starting to decrease one stage after u_node no longer occurs;
+-	       that is, generate all reg_moves until
+-	       SCHED_STAGE (u_node) == from_stage - 1.  */
+-	    i_reg_moves = SCHED_NREG_MOVES (u_node)
+-	    	       - (from_stage - SCHED_STAGE (u_node) - 1);
+-	    i_reg_moves = MAX (i_reg_moves, 0);
+-	    i_reg_moves = MIN (i_reg_moves, SCHED_NREG_MOVES (u_node));
+-
+-	    /* The reg_moves start from the *last* reg_move forwards.  */
+-	    if (i_reg_moves)
+-	      {
+-		reg_move = SCHED_FIRST_REG_MOVE (u_node);
+-		for (j = 1; j < SCHED_NREG_MOVES (u_node); j++)
+-		  reg_move = PREV_INSN (reg_move);
+-	      }
++	    if (u < ps->g->num_nodes)
++	      duplicate_insn_chain (ps_first_note (ps, u), u_insn);
++	    else
++	      emit_insn (copy_rtx (PATTERN (u_insn)));
+ 	  }
+-
+-	for (j = 0; j < i_reg_moves; j++, reg_move = NEXT_INSN (reg_move))
+-	  emit_insn (copy_rtx (PATTERN (reg_move)));
+-	if (SCHED_STAGE (u_node) >= from_stage
+-	    && SCHED_STAGE (u_node) <= to_stage)
+-	  duplicate_insn_chain (u_node->first_note, u_node->insn);
+       }
+ }
+ 
+@@ -726,11 +1168,13 @@
+     }
+ 
+   for (i = 0; i < last_stage; i++)
+-    duplicate_insns_of_cycles (ps, 0, i, 1, count_reg);
++    duplicate_insns_of_cycles (ps, 0, i, count_reg);
+ 
+   /* Put the prolog on the entry edge.  */
+   e = loop_preheader_edge (loop);
+   split_edge_and_insert (e, get_insns ());
++  if (!flag_resched_modulo_sched)
++    e->dest->flags |= BB_DISABLE_SCHEDULE;
+ 
+   end_sequence ();
+ 
+@@ -738,15 +1182,32 @@
+   start_sequence ();
+ 
+   for (i = 0; i < last_stage; i++)
+-    duplicate_insns_of_cycles (ps, i + 1, last_stage, 0, count_reg);
++    duplicate_insns_of_cycles (ps, i + 1, last_stage, count_reg);
+ 
+   /* Put the epilogue on the exit edge.  */
+   gcc_assert (single_exit (loop));
+   e = single_exit (loop);
+   split_edge_and_insert (e, get_insns ());
++  if (!flag_resched_modulo_sched)
++    e->dest->flags |= BB_DISABLE_SCHEDULE;
++
+   end_sequence ();
+ }
+ 
++/* Mark LOOP as software pipelined so the later
++   scheduling passes don't touch it.  */
++static void
++mark_loop_unsched (struct loop *loop)
++{
++  unsigned i;
++  basic_block *bbs = get_loop_body (loop);
++
++  for (i = 0; i < loop->num_nodes; i++)
++    bbs[i]->flags |= BB_DISABLE_SCHEDULE;
++
++  free (bbs);
++}
++
+ /* Return true if all the BBs of the loop are empty except the
+    loop header.  */
+ static bool
+@@ -1009,10 +1470,10 @@
+ 	continue;
+       }
+ 
+-      /* Don't handle BBs with calls or barriers, or !single_set insns,
+-         or auto-increment insns (to avoid creating invalid reg-moves
+-         for the auto-increment insns).
+-         ??? Should handle auto-increment insns.
++      /* Don't handle BBs with calls or barriers
++	 or !single_set with the exception of instructions that include
++	 count_reg---these instructions are part of the control part
++	 that do-loop recognizes.
+          ??? Should handle insns defining subregs.  */
+      for (insn = head; insn != NEXT_INSN (tail); insn = NEXT_INSN (insn))
+       {
+@@ -1021,8 +1482,8 @@
+         if (CALL_P (insn)
+             || BARRIER_P (insn)
+             || (NONDEBUG_INSN_P (insn) && !JUMP_P (insn)
+-                && !single_set (insn) && GET_CODE (PATTERN (insn)) != USE)
+-            || (FIND_REG_INC_NOTE (insn, NULL_RTX) != 0)
++                && !single_set (insn) && GET_CODE (PATTERN (insn)) != USE
++                && !reg_mentioned_p (count_reg, insn))
+             || (INSN_P (insn) && (set = single_set (insn))
+                 && GET_CODE (SET_DEST (set)) == SUBREG))
+         break;
+@@ -1036,8 +1497,6 @@
+ 		fprintf (dump_file, "SMS loop-with-call\n");
+ 	      else if (BARRIER_P (insn))
+ 		fprintf (dump_file, "SMS loop-with-barrier\n");
+-              else if (FIND_REG_INC_NOTE (insn, NULL_RTX) != 0)
+-                fprintf (dump_file, "SMS reg inc\n");
+               else if ((NONDEBUG_INSN_P (insn) && !JUMP_P (insn)
+                 && !single_set (insn) && GET_CODE (PATTERN (insn)) != USE))
+                 fprintf (dump_file, "SMS loop-with-not-single-set\n");
+@@ -1049,7 +1508,11 @@
+ 	  continue;
+ 	}
+ 
+-      if (! (g = create_ddg (bb, 0)))
++      /* Always schedule the closing branch with the rest of the
++         instructions. The branch is rotated to be in row ii-1 at the
++         end of the scheduling procedure to make sure it's the last
++         instruction in the iteration.  */
++      if (! (g = create_ddg (bb, 1)))
+         {
+           if (dump_file)
+ 	    fprintf (dump_file, "SMS create_ddg failed\n");
+@@ -1072,9 +1535,9 @@
+     {
+       rtx head, tail;
+       rtx count_reg, count_init;
+-      int mii, rec_mii;
+-      unsigned stage_count = 0;
++      int mii, rec_mii, stage_count, min_cycle;
+       HOST_WIDEST_INT loop_count = 0;
++      bool opt_sc_p;
+ 
+       if (! (g = g_arr[loop->num]))
+         continue;
+@@ -1151,63 +1614,103 @@
+ 	fprintf (dump_file, "SMS iis %d %d %d (rec_mii, mii, maxii)\n",
+ 		 rec_mii, mii, maxii);
+ 
+-      /* After sms_order_nodes and before sms_schedule_by_order, to copy over
+-	 ASAP.  */
+-      set_node_sched_params (g);
+-
+-      ps = sms_schedule_by_order (g, mii, maxii, node_order);
+-
+-      if (ps){
+-	stage_count = PS_STAGE_COUNT (ps);
+-        gcc_assert(stage_count >= 1);
+-      }
+-
+-      /* Stage count of 1 means that there is no interleaving between
+-         iterations, let the scheduling passes do the job.  */
+-      if (stage_count <= 1
+-	  || (count_init && (loop_count <= stage_count))
+-	  || (flag_branch_probabilities && (trip_count <= stage_count)))
++      for (;;)
+ 	{
+-	  if (dump_file)
++	  set_node_sched_params (g);
++
++	  stage_count = 0;
++	  opt_sc_p = false;
++	  ps = sms_schedule_by_order (g, mii, maxii, node_order);
++      
++	  if (ps)
+ 	    {
+-	      fprintf (dump_file, "SMS failed... \n");
+-	      fprintf (dump_file, "SMS sched-failed (stage-count=%d, loop-count=", stage_count);
+-	      fprintf (dump_file, HOST_WIDEST_INT_PRINT_DEC, loop_count);
+-	      fprintf (dump_file, ", trip-count=");
+-	      fprintf (dump_file, HOST_WIDEST_INT_PRINT_DEC, trip_count);
+-	      fprintf (dump_file, ")\n");
+-	    }
+-	  continue;
+-	}
+-      else
+-	{
+-	  struct undo_replace_buff_elem *reg_move_replaces;
++	      /* Try to achieve optimized SC by normalizing the partial
++		 schedule (having the cycles start from cycle zero).
++		 The branch location must be placed in row ii-1 in the
++		 final scheduling.	If failed, shift all instructions to
++		 position the branch in row ii-1.  */
++	      opt_sc_p = optimize_sc (ps, g);
++	      if (opt_sc_p)
++		stage_count = calculate_stage_count (ps, 0);
++	      else
++		{
++		  /* Bring the branch to cycle ii-1.  */
++		  int amount = (SCHED_TIME (g->closing_branch->cuid)
++				- (ps->ii - 1));
++	      
++		  if (dump_file)
++		    fprintf (dump_file, "SMS schedule branch at cycle ii-1\n");
+ 
+-	  if (dump_file)
++		  stage_count = calculate_stage_count (ps, amount);
++		}
++	  
++	      gcc_assert (stage_count >= 1);
++	    }
++      
++	  /* The default value of PARAM_SMS_MIN_SC is 2 as stage count of
++	     1 means that there is no interleaving between iterations thus
++	     we let the scheduling passes do the job in this case.  */
++	  if (stage_count < PARAM_VALUE (PARAM_SMS_MIN_SC)
++	      || (count_init && (loop_count <= stage_count))
++	      || (flag_branch_probabilities && (trip_count <= stage_count)))
+ 	    {
+-	      fprintf (dump_file,
+-		       "SMS succeeded %d %d (with ii, sc)\n", ps->ii,
+-		       stage_count);
+-	      print_partial_schedule (ps, dump_file);
+-	      fprintf (dump_file,
+-		       "SMS Branch (%d) will later be scheduled at cycle %d.\n",
+-		       g->closing_branch->cuid, PS_MIN_CYCLE (ps) - 1);
++	      if (dump_file)
++		{
++		  fprintf (dump_file, "SMS failed... \n");
++		  fprintf (dump_file, "SMS sched-failed (stage-count=%d,"
++			   " loop-count=", stage_count);
++		  fprintf (dump_file, HOST_WIDEST_INT_PRINT_DEC, loop_count);
++		  fprintf (dump_file, ", trip-count=");
++		  fprintf (dump_file, HOST_WIDEST_INT_PRINT_DEC, trip_count);
++		  fprintf (dump_file, ")\n");
++		}
++	      break;
+ 	    }
+ 
+-	  /* Set the stage boundaries.  If the DDG is built with closing_branch_deps,
+-	     the closing_branch was scheduled and should appear in the last (ii-1)
+-	     row.  Otherwise, we are free to schedule the branch, and we let nodes
+-	     that were scheduled at the first PS_MIN_CYCLE cycle appear in the first
+-	     row; this should reduce stage_count to minimum.
+-             TODO: Revisit the issue of scheduling the insns of the
+-             control part relative to the branch when the control part
+-             has more than one insn.  */
+-	  normalize_sched_times (ps);
+-	  rotate_partial_schedule (ps, PS_MIN_CYCLE (ps));
++          if (!opt_sc_p)
++            {
++	      /* Rotate the partial schedule to have the branch in row ii-1.  */
++              int amount = SCHED_TIME (g->closing_branch->cuid) - (ps->ii - 1);
++	      
++              reset_sched_times (ps, amount);
++              rotate_partial_schedule (ps, amount);
++            }
++	  
+ 	  set_columns_for_ps (ps);
+ 
++	  min_cycle = PS_MIN_CYCLE (ps) - SMODULO (PS_MIN_CYCLE (ps), ps->ii);
++	  if (!schedule_reg_moves (ps))
++	    {
++	      mii = ps->ii + 1;
++	      free_partial_schedule (ps);
++	      continue;
++	    }
++
++	  /* Moves that handle incoming values might have been added
++	     to a new first stage.  Bump the stage count if so.
++
++	     ??? Perhaps we could consider rotating the schedule here
++	     instead?  */
++	  if (PS_MIN_CYCLE (ps) < min_cycle)
++	    {
++	      reset_sched_times (ps, 0);
++	      stage_count++;
++	    }
++
++	  /* The stage count should now be correct without rotation.  */
++	  gcc_checking_assert (stage_count == calculate_stage_count (ps, 0));
++	  PS_STAGE_COUNT (ps) = stage_count;
++
+ 	  canon_loop (loop);
+ 
++          if (dump_file)
++            {
++	      fprintf (dump_file,
++		       "%s:%d SMS succeeded %d %d (with ii, sc)\n",
++		       insn_file (tail), insn_line (tail), ps->ii, stage_count);
++	      print_partial_schedule (ps, dump_file);
++	    }
++ 
+           /* case the BCT count is not known , Do loop-versioning */
+ 	  if (count_reg && ! count_init)
+             {
+@@ -1230,23 +1733,23 @@
+ 	  permute_partial_schedule (ps, g->closing_branch->first_note);
+ 
+           /* Mark this loop as software pipelined so the later
+-	     scheduling passes doesn't touch it.  */
++	     scheduling passes don't touch it.  */
+ 	  if (! flag_resched_modulo_sched)
+-	    g->bb->flags |= BB_DISABLE_SCHEDULE;
++	    mark_loop_unsched (loop);
++	  
+ 	  /* The life-info is not valid any more.  */
+ 	  df_set_bb_dirty (g->bb);
+ 
+-	  reg_move_replaces = generate_reg_moves (ps, true);
++	  apply_reg_moves (ps);
+ 	  if (dump_file)
+-	    print_node_sched_params (dump_file, g->num_nodes, g);
++	    print_node_sched_params (dump_file, g->num_nodes, ps);
+ 	  /* Generate prolog and epilog.  */
+           generate_prolog_epilog (ps, loop, count_reg, count_init);
+-
+-	  free_undo_replace_buff (reg_move_replaces);
++	  break;
+ 	}
+ 
+       free_partial_schedule (ps);
+-      free (node_sched_params);
++      VEC_free (node_sched_params, heap, node_sched_param_vec);
+       free (node_order);
+       free_ddg (g);
+     }
+@@ -1347,19 +1850,21 @@
+    scheduling window is empty and zero otherwise.  */
+ 
+ static int
+-get_sched_window (partial_schedule_ptr ps, int *nodes_order, int i,
+-		  sbitmap sched_nodes, int ii, int *start_p, int *step_p, int *end_p)
++get_sched_window (partial_schedule_ptr ps, ddg_node_ptr u_node,
++		  sbitmap sched_nodes, int ii, int *start_p, int *step_p,
++		  int *end_p)
+ {
+   int start, step, end;
++  int early_start, late_start;
+   ddg_edge_ptr e;
+-  int u = nodes_order [i];
+-  ddg_node_ptr u_node = &ps->g->nodes[u];
+   sbitmap psp = sbitmap_alloc (ps->g->num_nodes);
+   sbitmap pss = sbitmap_alloc (ps->g->num_nodes);
+   sbitmap u_node_preds = NODE_PREDECESSORS (u_node);
+   sbitmap u_node_succs = NODE_SUCCESSORS (u_node);
+   int psp_not_empty;
+   int pss_not_empty;
++  int count_preds;
++  int count_succs;
+ 
+   /* 1. compute sched window for u (start, end, step).  */
+   sbitmap_zero (psp);
+@@ -1367,214 +1872,119 @@
+   psp_not_empty = sbitmap_a_and_b_cg (psp, u_node_preds, sched_nodes);
+   pss_not_empty = sbitmap_a_and_b_cg (pss, u_node_succs, sched_nodes);
+ 
+-  if (psp_not_empty && !pss_not_empty)
+-    {
+-      int early_start = INT_MIN;
+-
+-      end = INT_MAX;
+-      for (e = u_node->in; e != 0; e = e->next_in)
+-	{
+-	  ddg_node_ptr v_node = e->src;
+-
+-          if (dump_file)
+-            {
+-	      fprintf (dump_file, "\nProcessing edge: ");
+-              print_ddg_edge (dump_file, e);
+-	      fprintf (dump_file,
+-		       "\nScheduling %d (%d) in psp_not_empty,"
+-		       " checking p %d (%d): ", u_node->cuid,
+-		       INSN_UID (u_node->insn), v_node->cuid, INSN_UID
+-		       (v_node->insn));
+-            }
+-
+-	  if (TEST_BIT (sched_nodes, v_node->cuid))
+-	    {
+-              int p_st = SCHED_TIME (v_node);
+-
+-              early_start =
+-                MAX (early_start, p_st + e->latency - (e->distance * ii));
+-
+-              if (dump_file)
+-                fprintf (dump_file,
+-                         "pred st = %d; early_start = %d; latency: %d",
+-                         p_st, early_start, e->latency);
++  /* We first compute a forward range (start <= end), then decide whether
++     to reverse it.  */
++  early_start = INT_MIN;
++  late_start = INT_MAX;
++  start = INT_MIN;
++  end = INT_MAX;
++  step = 1;
++
++  count_preds = 0;
++  count_succs = 0;
++
++  if (dump_file && (psp_not_empty || pss_not_empty))
++    {
++      fprintf (dump_file, "\nAnalyzing dependencies for node %d (INSN %d)"
++	       "; ii = %d\n\n", u_node->cuid, INSN_UID (u_node->insn), ii);
++      fprintf (dump_file, "%11s %11s %11s %11s %5s\n",
++	       "start", "early start", "late start", "end", "time");
++      fprintf (dump_file, "=========== =========== =========== ==========="
++	       " =====\n");
++    }
++  /* Calculate early_start and limit end.  Both bounds are inclusive.  */
++  if (psp_not_empty)
++    for (e = u_node->in; e != 0; e = e->next_in)
++      {
++	int v = e->src->cuid;
+ 
+-	      if (e->data_type == MEM_DEP)
+-		end = MIN (end, SCHED_TIME (v_node) + ii - 1);
+-	    }
+-         else if (dump_file)
+-            fprintf (dump_file, "the node is not scheduled\n");
+-	}
+-      start = early_start;
+-      end = MIN (end, early_start + ii);
+-      /* Schedule the node close to it's predecessors.  */
+-      step = 1;
++	if (TEST_BIT (sched_nodes, v))
++	  {
++	    int p_st = SCHED_TIME (v);
++	    int earliest = p_st + e->latency - (e->distance * ii);
++	    int latest = (e->data_type == MEM_DEP ? p_st + ii - 1 : INT_MAX);
+ 
+-      if (dump_file)
+-        fprintf (dump_file,
+-		 "\nScheduling %d (%d) in a window (%d..%d) with step %d\n",
+-		 u_node->cuid, INSN_UID (u_node->insn), start, end, step);
+-    }
++	    if (dump_file)
++	      {
++		fprintf (dump_file, "%11s %11d %11s %11d %5d",
++			 "", earliest, "", latest, p_st);
++		print_ddg_edge (dump_file, e);
++		fprintf (dump_file, "\n");
++	      }
+ 
+-  else if (!psp_not_empty && pss_not_empty)
+-    {
+-      int late_start = INT_MAX;
++	    early_start = MAX (early_start, earliest);
++	    end = MIN (end, latest);
+ 
+-      end = INT_MIN;
+-      for (e = u_node->out; e != 0; e = e->next_out)
+-	{
+-	  ddg_node_ptr v_node = e->dest;
++	    if (e->type == TRUE_DEP && e->data_type == REG_DEP)
++	      count_preds++;
++	  }
++      }
+ 
+-          if (dump_file)
+-            {
+-              fprintf (dump_file, "\nProcessing edge:");
+-              print_ddg_edge (dump_file, e);
+-              fprintf (dump_file,
+-                       "\nScheduling %d (%d) in pss_not_empty,"
+-                       " checking s %d (%d): ", u_node->cuid,
+-                       INSN_UID (u_node->insn), v_node->cuid, INSN_UID
+-                       (v_node->insn));
+-            }
++  /* Calculate late_start and limit start.  Both bounds are inclusive.  */
++  if (pss_not_empty)
++    for (e = u_node->out; e != 0; e = e->next_out)
++      {
++	int v = e->dest->cuid;
+ 
+-	  if (TEST_BIT (sched_nodes, v_node->cuid))
+-	    {
+-              int s_st = SCHED_TIME (v_node);
++	if (TEST_BIT (sched_nodes, v))
++	  {
++	    int s_st = SCHED_TIME (v);
++	    int earliest = (e->data_type == MEM_DEP ? s_st - ii + 1 : INT_MIN);
++	    int latest = s_st - e->latency + (e->distance * ii);
+ 
+-              late_start = MIN (late_start,
+-                                s_st - e->latency + (e->distance * ii));
++	    if (dump_file)
++	      {
++		fprintf (dump_file, "%11d %11s %11d %11s %5d",
++			 earliest, "", latest, "", s_st);
++		print_ddg_edge (dump_file, e);
++		fprintf (dump_file, "\n");
++	      }
+ 
+-              if (dump_file)
+-                fprintf (dump_file,
+-                         "succ st = %d; late_start = %d; latency = %d",
+-                         s_st, late_start, e->latency);
+-
+-	      if (e->data_type == MEM_DEP)
+-		end = MAX (end, SCHED_TIME (v_node) - ii + 1);
+-             if (dump_file)
+-                 fprintf (dump_file, "end = %d\n", end);
++	    start = MAX (start, earliest);
++	    late_start = MIN (late_start, latest);
+ 
+-	    }
+-          else if (dump_file)
+-            fprintf (dump_file, "the node is not scheduled\n");
++	    if (e->type == TRUE_DEP && e->data_type == REG_DEP)
++	      count_succs++;
++	  }
++      }
+ 
+-	}
+-      start = late_start;
+-      end = MAX (end, late_start - ii);
+-      /* Schedule the node close to it's successors.  */
++  if (dump_file && (psp_not_empty || pss_not_empty))
++    {
++      fprintf (dump_file, "----------- ----------- ----------- -----------"
++	       " -----\n");
++      fprintf (dump_file, "%11d %11d %11d %11d %5s %s\n",
++	       start, early_start, late_start, end, "",
++	       "(max, max, min, min)");
++    }
++
++  /* Get a target scheduling window no bigger than ii.  */
++  if (early_start == INT_MIN && late_start == INT_MAX)
++    early_start = NODE_ASAP (u_node);
++  else if (early_start == INT_MIN)
++    early_start = late_start - (ii - 1);
++  late_start = MIN (late_start, early_start + (ii - 1));
++
++  /* Apply memory dependence limits.  */
++  start = MAX (start, early_start);
++  end = MIN (end, late_start);
++
++  if (dump_file && (psp_not_empty || pss_not_empty))
++    fprintf (dump_file, "%11s %11d %11d %11s %5s final window\n",
++	     "", start, end, "", "");
++
++  /* If there are at least as many successors as predecessors, schedule the
++     node close to its successors.  */
++  if (pss_not_empty && count_succs >= count_preds)
++    {
++      int tmp = end;
++      end = start;
++      start = tmp;
+       step = -1;
+-
+-      if (dump_file)
+-        fprintf (dump_file,
+-                 "\nScheduling %d (%d) in a window (%d..%d) with step %d\n",
+-                 u_node->cuid, INSN_UID (u_node->insn), start, end, step);
+-
+     }
+ 
+-  else if (psp_not_empty && pss_not_empty)
+-    {
+-      int early_start = INT_MIN;
+-      int late_start = INT_MAX;
+-      int count_preds = 0;
+-      int count_succs = 0;
+-
+-      start = INT_MIN;
+-      end = INT_MAX;
+-      for (e = u_node->in; e != 0; e = e->next_in)
+-	{
+-	  ddg_node_ptr v_node = e->src;
+-
+-	  if (dump_file)
+-	    {
+-              fprintf (dump_file, "\nProcessing edge:");
+-              print_ddg_edge (dump_file, e);
+-	      fprintf (dump_file,
+-		       "\nScheduling %d (%d) in psp_pss_not_empty,"
+-		       " checking p %d (%d): ", u_node->cuid, INSN_UID
+-		       (u_node->insn), v_node->cuid, INSN_UID
+-		       (v_node->insn));
+-	    }
+-
+-	  if (TEST_BIT (sched_nodes, v_node->cuid))
+-	    {
+-              int p_st = SCHED_TIME (v_node);
+-
+-	      early_start = MAX (early_start,
+-				 p_st + e->latency
+-				 - (e->distance * ii));
+-
+-              if (dump_file)
+-                fprintf (dump_file,
+-                         "pred st = %d; early_start = %d; latency = %d",
+-                         p_st, early_start, e->latency);
+-
+-              if (e->type == TRUE_DEP && e->data_type == REG_DEP)
+-                count_preds++;
+-
+-	      if (e->data_type == MEM_DEP)
+-		end = MIN (end, SCHED_TIME (v_node) + ii - 1);
+-	    }
+-          else if (dump_file)
+-            fprintf (dump_file, "the node is not scheduled\n");
+-
+-	}
+-      for (e = u_node->out; e != 0; e = e->next_out)
+-	{
+-	  ddg_node_ptr v_node = e->dest;
+-
+-	  if (dump_file)
+-	    {
+-              fprintf (dump_file, "\nProcessing edge:");
+-              print_ddg_edge (dump_file, e);
+-	      fprintf (dump_file,
+-		       "\nScheduling %d (%d) in psp_pss_not_empty,"
+-		       " checking s %d (%d): ", u_node->cuid, INSN_UID
+-		       (u_node->insn), v_node->cuid, INSN_UID
+-		       (v_node->insn));
+-	    }
+-
+-	  if (TEST_BIT (sched_nodes, v_node->cuid))
+-	    {
+-              int s_st = SCHED_TIME (v_node);
+-
+-	      late_start = MIN (late_start,
+-				s_st - e->latency
+-				+ (e->distance * ii));
+-
+-              if (dump_file)
+-                fprintf (dump_file,
+-                         "succ st = %d; late_start = %d; latency = %d",
+-                         s_st, late_start, e->latency);
+-
+-               if (e->type == TRUE_DEP && e->data_type == REG_DEP)
+-                 count_succs++;
+-
+-	      if (e->data_type == MEM_DEP)
+-		start = MAX (start, SCHED_TIME (v_node) - ii + 1);
+-	    }
+-          else if (dump_file)
+-            fprintf (dump_file, "the node is not scheduled\n");
+-
+-	}
+-      start = MAX (start, early_start);
+-      end = MIN (end, MIN (early_start + ii, late_start + 1));
+-      step = 1;
+-      /* If there are more successors than predecessors schedule the
+-         node close to it's successors.  */
+-      if (count_succs >= count_preds)
+-        {
+-          int old_start = start;
+-
+-          start = end - 1;
+-          end = old_start - 1;
+-          step = -1;
+-        }
+-    }
+-  else /* psp is empty && pss is empty.  */
+-    {
+-      start = SCHED_ASAP (u_node);
+-      end = start + ii;
+-      step = 1;
+-    }
++  /* Now that we've finalized the window, make END an exclusive rather
++     than an inclusive bound.  */
++  end += step;
+ 
+   *start_p = start;
+   *step_p = step;
+@@ -1587,10 +1997,10 @@
+       if (dump_file)
+ 	fprintf (dump_file, "\nEmpty window: start=%d, end=%d, step=%d\n",
+ 		 start, end, step);
+-    return -1;
++      return -1;
+     }
+ 
+-    return 0;
++  return 0;
+ }
+ 
+ /* Calculate MUST_PRECEDE/MUST_FOLLOW bitmaps of U_NODE; which is the
+@@ -1646,7 +2056,7 @@
+       SCHED_TIME (e->src) - (e->distance * ii) == first_cycle_in_window  */
+   for (e = u_node->in; e != 0; e = e->next_in)
+     if (TEST_BIT (sched_nodes, e->src->cuid)
+-	&& ((SCHED_TIME (e->src) - (e->distance * ii)) ==
++	&& ((SCHED_TIME (e->src->cuid) - (e->distance * ii)) ==
+              first_cycle_in_window))
+       {
+ 	if (dump_file)
+@@ -1671,7 +2081,7 @@
+       SCHED_TIME (e->dest) + (e->distance * ii) == last_cycle_in_window  */
+   for (e = u_node->out; e != 0; e = e->next_out)
+     if (TEST_BIT (sched_nodes, e->dest->cuid)
+-	&& ((SCHED_TIME (e->dest) + (e->distance * ii)) ==
++	&& ((SCHED_TIME (e->dest->cuid) + (e->distance * ii)) ==
+              last_cycle_in_window))
+       {
+ 	if (dump_file)
+@@ -1695,7 +2105,7 @@
+    last row of the scheduling window)  */
+ 
+ static bool
+-try_scheduling_node_in_cycle (partial_schedule_ptr ps, ddg_node_ptr u_node,
++try_scheduling_node_in_cycle (partial_schedule_ptr ps,
+ 			      int u, int cycle, sbitmap sched_nodes,
+ 			      int *num_splits, sbitmap must_precede,
+ 			      sbitmap must_follow)
+@@ -1704,11 +2114,10 @@
+   bool success = 0;
+ 
+   verify_partial_schedule (ps, sched_nodes);
+-  psi = ps_add_node_check_conflicts (ps, u_node, cycle,
+-				     must_precede, must_follow);
++  psi = ps_add_node_check_conflicts (ps, u, cycle, must_precede, must_follow);
+   if (psi)
+     {
+-      SCHED_TIME (u_node) = cycle;
++      SCHED_TIME (u) = cycle;
+       SET_BIT (sched_nodes, u);
+       success = 1;
+       *num_splits = 0;
+@@ -1760,23 +2169,17 @@
+ 	      continue;
+ 	    }
+ 
+-	  if (JUMP_P (insn)) /* Closing branch handled later.  */
+-	    {
+-	      RESET_BIT (tobe_scheduled, u);
+-	      continue;
+-	    }
+-
+ 	  if (TEST_BIT (sched_nodes, u))
+ 	    continue;
+ 
+ 	  /* Try to get non-empty scheduling window.  */
+ 	 success = 0;
+-         if (get_sched_window (ps, nodes_order, i, sched_nodes, ii, &start,
++         if (get_sched_window (ps, u_node, sched_nodes, ii, &start,
+                                 &step, &end) == 0)
+             {
+               if (dump_file)
+-                fprintf (dump_file, "\nTrying to schedule node %d \
+-                        INSN = %d  in (%d .. %d) step %d\n", u, (INSN_UID
++                fprintf (dump_file, "\nTrying to schedule node %d "
++			 "INSN = %d  in (%d .. %d) step %d\n", u, (INSN_UID
+                         (g->nodes[u].insn)), start, end, step);
+ 
+               gcc_assert ((step > 0 && start < end)
+@@ -1788,26 +2191,13 @@
+ 
+               for (c = start; c != end; c += step)
+                 {
+-                  sbitmap tmp_precede = NULL;
+-                  sbitmap tmp_follow = NULL;
+-
+-                  if (c == start)
+-                    {
+-                      if (step == 1)
+-                        tmp_precede = must_precede;
+-                      else      /* step == -1.  */
+-                        tmp_follow = must_follow;
+-                    }
+-                  if (c == end - step)
+-                    {
+-                      if (step == 1)
+-                        tmp_follow = must_follow;
+-                      else      /* step == -1.  */
+-                        tmp_precede = must_precede;
+-                    }
++		  sbitmap tmp_precede, tmp_follow;
+ 
++                  set_must_precede_follow (&tmp_follow, must_follow, 
++		                           &tmp_precede, must_precede, 
++                                           c, start, end, step);
+                   success =
+-                    try_scheduling_node_in_cycle (ps, u_node, u, c,
++                    try_scheduling_node_in_cycle (ps, u, c,
+                                                   sched_nodes,
+                                                   &num_splits, tmp_precede,
+                                                   tmp_follow);
+@@ -1883,6 +2273,7 @@
+   int ii = ps->ii;
+   int new_ii = ii + 1;
+   int row;
++  int *rows_length_new;
+ 
+   verify_partial_schedule (ps, sched_nodes);
+ 
+@@ -1893,18 +2284,20 @@
+   if (dump_file)
+     fprintf (dump_file, "split_row=%d\n", split_row);
+ 
+-  normalize_sched_times (ps);
+-  rotate_partial_schedule (ps, ps->min_cycle);
++  reset_sched_times (ps, PS_MIN_CYCLE (ps));
++  rotate_partial_schedule (ps, PS_MIN_CYCLE (ps));
+ 
+   rows_new = (ps_insn_ptr *) xcalloc (new_ii, sizeof (ps_insn_ptr));
++  rows_length_new = (int *) xcalloc (new_ii, sizeof (int));
+   for (row = 0; row < split_row; row++)
+     {
+       rows_new[row] = ps->rows[row];
++      rows_length_new[row] = ps->rows_length[row];
+       ps->rows[row] = NULL;
+       for (crr_insn = rows_new[row];
+ 	   crr_insn; crr_insn = crr_insn->next_in_row)
+ 	{
+-	  ddg_node_ptr u = crr_insn->node;
++	  int u = crr_insn->id;
+ 	  int new_time = SCHED_TIME (u) + (SCHED_TIME (u) / ii);
+ 
+ 	  SCHED_TIME (u) = new_time;
+@@ -1920,11 +2313,12 @@
+   for (row = split_row; row < ii; row++)
+     {
+       rows_new[row + 1] = ps->rows[row];
++      rows_length_new[row + 1] = ps->rows_length[row];
+       ps->rows[row] = NULL;
+       for (crr_insn = rows_new[row + 1];
+ 	   crr_insn; crr_insn = crr_insn->next_in_row)
+ 	{
+-	  ddg_node_ptr u = crr_insn->node;
++	  int u = crr_insn->id;
+ 	  int new_time = SCHED_TIME (u) + (SCHED_TIME (u) / ii) + 1;
+ 
+ 	  SCHED_TIME (u) = new_time;
+@@ -1941,6 +2335,8 @@
+     + (SMODULO (ps->max_cycle, ii) >= split_row ? 1 : 0);
+   free (ps->rows);
+   ps->rows = rows_new;
++  free (ps->rows_length);
++  ps->rows_length = rows_length_new;
+   ps->ii = new_ii;
+   gcc_assert (ps->min_cycle >= 0);
+ 
+@@ -1962,24 +2358,24 @@
+ {
+   ddg_edge_ptr e;
+   int lower = INT_MIN, upper = INT_MAX;
+-  ddg_node_ptr crit_pred = NULL;
+-  ddg_node_ptr crit_succ = NULL;
++  int crit_pred = -1;
++  int crit_succ = -1;
+   int crit_cycle;
+ 
+   for (e = u_node->in; e != 0; e = e->next_in)
+     {
+-      ddg_node_ptr v_node = e->src;
++      int v = e->src->cuid;
+ 
+-      if (TEST_BIT (sched_nodes, v_node->cuid)
+-	  && (low == SCHED_TIME (v_node) + e->latency - (e->distance * ii)))
+-	if (SCHED_TIME (v_node) > lower)
++      if (TEST_BIT (sched_nodes, v)
++	  && (low == SCHED_TIME (v) + e->latency - (e->distance * ii)))
++	if (SCHED_TIME (v) > lower)
+ 	  {
+-	    crit_pred = v_node;
+-	    lower = SCHED_TIME (v_node);
++	    crit_pred = v;
++	    lower = SCHED_TIME (v);
+ 	  }
+     }
+ 
+-  if (crit_pred != NULL)
++  if (crit_pred >= 0)
+     {
+       crit_cycle = SCHED_TIME (crit_pred) + 1;
+       return SMODULO (crit_cycle, ii);
+@@ -1987,17 +2383,18 @@
+ 
+   for (e = u_node->out; e != 0; e = e->next_out)
+     {
+-      ddg_node_ptr v_node = e->dest;
+-      if (TEST_BIT (sched_nodes, v_node->cuid)
+-	  && (up == SCHED_TIME (v_node) - e->latency + (e->distance * ii)))
+-	if (SCHED_TIME (v_node) < upper)
++      int v = e->dest->cuid;
++
++      if (TEST_BIT (sched_nodes, v)
++	  && (up == SCHED_TIME (v) - e->latency + (e->distance * ii)))
++	if (SCHED_TIME (v) < upper)
+ 	  {
+-	    crit_succ = v_node;
+-	    upper = SCHED_TIME (v_node);
++	    crit_succ = v;
++	    upper = SCHED_TIME (v);
+ 	  }
+     }
+ 
+-  if (crit_succ != NULL)
++  if (crit_succ >= 0)
+     {
+       crit_cycle = SCHED_TIME (crit_succ);
+       return SMODULO (crit_cycle, ii);
+@@ -2016,16 +2413,23 @@
+   ps_insn_ptr crr_insn;
+ 
+   for (row = 0; row < ps->ii; row++)
+-    for (crr_insn = ps->rows[row]; crr_insn; crr_insn = crr_insn->next_in_row)
+-      {
+-	ddg_node_ptr u = crr_insn->node;
+-
+-	gcc_assert (TEST_BIT (sched_nodes, u->cuid));
+-	/* ??? Test also that all nodes of sched_nodes are in ps, perhaps by
+-	   popcount (sched_nodes) == number of insns in ps.  */
+-	gcc_assert (SCHED_TIME (u) >= ps->min_cycle);
+-	gcc_assert (SCHED_TIME (u) <= ps->max_cycle);
+-      }
++    {
++      int length = 0;
++      
++      for (crr_insn = ps->rows[row]; crr_insn; crr_insn = crr_insn->next_in_row)
++	{
++	  int u = crr_insn->id;
++	  
++	  length++;
++	  gcc_assert (TEST_BIT (sched_nodes, u));
++	  /* ??? Test also that all nodes of sched_nodes are in ps, perhaps by
++	     popcount (sched_nodes) == number of insns in ps.  */
++	  gcc_assert (SCHED_TIME (u) >= ps->min_cycle);
++	  gcc_assert (SCHED_TIME (u) <= ps->max_cycle);
++	}
++      
++      gcc_assert (ps->rows_length[row] == length);
++    }
+ }
+ 
+ 
+@@ -2431,6 +2835,8 @@
+ {
+   partial_schedule_ptr ps = XNEW (struct partial_schedule);
+   ps->rows = (ps_insn_ptr *) xcalloc (ii, sizeof (ps_insn_ptr));
++  ps->rows_length = (int *) xcalloc (ii, sizeof (int));
++  ps->reg_moves = NULL;
+   ps->ii = ii;
+   ps->history = history;
+   ps->min_cycle = INT_MAX;
+@@ -2465,10 +2871,19 @@
+ static void
+ free_partial_schedule (partial_schedule_ptr ps)
+ {
++  ps_reg_move_info *move;
++  unsigned int i;
++
+   if (!ps)
+     return;
++
++  FOR_EACH_VEC_ELT (ps_reg_move_info, ps->reg_moves, i, move)
++    sbitmap_free (move->uses);
++  VEC_free (ps_reg_move_info, heap, ps->reg_moves);
++
+   free_ps_insns (ps);
+   free (ps->rows);
++  free (ps->rows_length);
+   free (ps);
+ }
+ 
+@@ -2486,6 +2901,8 @@
+   ps->rows = (ps_insn_ptr *) xrealloc (ps->rows, new_ii
+ 						 * sizeof (ps_insn_ptr));
+   memset (ps->rows, 0, new_ii * sizeof (ps_insn_ptr));
++  ps->rows_length = (int *) xrealloc (ps->rows_length, new_ii * sizeof (int));
++  memset (ps->rows_length, 0, new_ii * sizeof (int));
+   ps->ii = new_ii;
+   ps->min_cycle = INT_MAX;
+   ps->max_cycle = INT_MIN;
+@@ -2505,8 +2922,13 @@
+       fprintf (dump, "\n[ROW %d ]: ", i);
+       while (ps_i)
+ 	{
+-	  fprintf (dump, "%d, ",
+-		   INSN_UID (ps_i->node->insn));
++	  rtx insn = ps_rtl_insn (ps, ps_i->id);
++
++	  if (JUMP_P (insn))
++	    fprintf (dump, "%d (branch), ", INSN_UID (insn));
++	  else
++	    fprintf (dump, "%d, ", INSN_UID (insn));
++	
+ 	  ps_i = ps_i->next_in_row;
+ 	}
+     }
+@@ -2514,36 +2936,31 @@
+ 
+ /* Creates an object of PS_INSN and initializes it to the given parameters.  */
+ static ps_insn_ptr
+-create_ps_insn (ddg_node_ptr node, int rest_count, int cycle)
++create_ps_insn (int id, int cycle)
+ {
+   ps_insn_ptr ps_i = XNEW (struct ps_insn);
+ 
+-  ps_i->node = node;
++  ps_i->id = id;
+   ps_i->next_in_row = NULL;
+   ps_i->prev_in_row = NULL;
+-  ps_i->row_rest_count = rest_count;
+   ps_i->cycle = cycle;
+ 
+   return ps_i;
+ }
+ 
+ 
+-/* Removes the given PS_INSN from the partial schedule.  Returns false if the
+-   node is not found in the partial schedule, else returns true.  */
+-static bool
++/* Removes the given PS_INSN from the partial schedule.  */  
++static void 
+ remove_node_from_ps (partial_schedule_ptr ps, ps_insn_ptr ps_i)
+ {
+   int row;
+ 
+-  if (!ps || !ps_i)
+-    return false;
+-
++  gcc_assert (ps && ps_i);
++  
+   row = SMODULO (ps_i->cycle, ps->ii);
+   if (! ps_i->prev_in_row)
+     {
+-      if (ps_i != ps->rows[row])
+-	return false;
+-
++      gcc_assert (ps_i == ps->rows[row]);
+       ps->rows[row] = ps_i->next_in_row;
+       if (ps->rows[row])
+ 	ps->rows[row]->prev_in_row = NULL;
+@@ -2554,8 +2971,10 @@
+       if (ps_i->next_in_row)
+ 	ps_i->next_in_row->prev_in_row = ps_i->prev_in_row;
+     }
++   
++  ps->rows_length[row] -= 1; 
+   free (ps_i);
+-  return true;
++  return;
+ }
+ 
+ /* Unlike what literature describes for modulo scheduling (which focuses
+@@ -2571,6 +2990,7 @@
+   ps_insn_ptr next_ps_i;
+   ps_insn_ptr first_must_follow = NULL;
+   ps_insn_ptr last_must_precede = NULL;
++  ps_insn_ptr last_in_row = NULL;
+   int row;
+ 
+   if (! ps_i)
+@@ -2585,10 +3005,11 @@
+        next_ps_i;
+        next_ps_i = next_ps_i->next_in_row)
+     {
+-      if (must_follow && TEST_BIT (must_follow, next_ps_i->node->cuid)
++      if (must_follow
++	  && TEST_BIT (must_follow, next_ps_i->id)
+ 	  && ! first_must_follow)
+         first_must_follow = next_ps_i;
+-      if (must_precede && TEST_BIT (must_precede, next_ps_i->node->cuid))
++      if (must_precede && TEST_BIT (must_precede, next_ps_i->id))
+         {
+           /* If we have already met a node that must follow, then
+ 	     there is no possible column.  */
+@@ -2597,8 +3018,37 @@
+ 	  else
+             last_must_precede = next_ps_i;
+         }
++      /* The closing branch must be the last in the row.  */
++      if (must_precede 
++	  && TEST_BIT (must_precede, next_ps_i->id)
++	  && JUMP_P (ps_rtl_insn (ps, next_ps_i->id)))
++	return false;
++             
++       last_in_row = next_ps_i;
+     }
+ 
++  /* The closing branch is scheduled as well.  Make sure there is no
++     dependent instruction after it as the branch should be the last
++     instruction in the row.  */
++  if (JUMP_P (ps_rtl_insn (ps, ps_i->id)))
++    {
++      if (first_must_follow)
++	return false;
++      if (last_in_row)
++	{
++	  /* Make the branch the last in the row.  New instructions
++	     will be inserted at the beginning of the row or after the
++	     last must_precede instruction thus the branch is guaranteed
++	     to remain the last instruction in the row.  */
++	  last_in_row->next_in_row = ps_i;
++	  ps_i->prev_in_row = last_in_row;
++	  ps_i->next_in_row = NULL;
++	}
++      else
++	ps->rows[row] = ps_i;
++      return true;
++    }
++  
+   /* Now insert the node after INSERT_AFTER_PSI.  */
+ 
+   if (! last_must_precede)
+@@ -2631,7 +3081,6 @@
+ {
+   ps_insn_ptr prev, next;
+   int row;
+-  ddg_node_ptr next_node;
+ 
+   if (!ps || !ps_i)
+     return false;
+@@ -2641,11 +3090,9 @@
+   if (! ps_i->next_in_row)
+     return false;
+ 
+-  next_node = ps_i->next_in_row->node;
+-
+   /* Check if next_in_row is dependent on ps_i, both having same sched
+      times (typically ANTI_DEP).  If so, ps_i cannot skip over it.  */
+-  if (must_follow && TEST_BIT (must_follow, next_node->cuid))
++  if (must_follow && TEST_BIT (must_follow, ps_i->next_in_row->id))
+     return false;
+ 
+   /* Advance PS_I over its next_in_row in the doubly linked list.  */
+@@ -2676,21 +3123,16 @@
+    before/after (respectively) the node pointed to by PS_I when scheduled
+    in the same cycle.  */
+ static ps_insn_ptr
+-add_node_to_ps (partial_schedule_ptr ps, ddg_node_ptr node, int cycle,
++add_node_to_ps (partial_schedule_ptr ps, int id, int cycle,
+ 		sbitmap must_precede, sbitmap must_follow)
+ {
+   ps_insn_ptr ps_i;
+-  int rest_count = 1;
+   int row = SMODULO (cycle, ps->ii);
+ 
+-  if (ps->rows[row]
+-      && ps->rows[row]->row_rest_count >= issue_rate)
++  if (ps->rows_length[row] >= issue_rate)
+     return NULL;
+ 
+-  if (ps->rows[row])
+-    rest_count += ps->rows[row]->row_rest_count;
+-
+-  ps_i = create_ps_insn (node, rest_count, cycle);
++  ps_i = create_ps_insn (id, cycle);
+ 
+   /* Finds and inserts PS_I according to MUST_FOLLOW and
+      MUST_PRECEDE.  */
+@@ -2700,6 +3142,7 @@
+       return NULL;
+     }
+ 
++  ps->rows_length[row] += 1;
+   return ps_i;
+ }
+ 
+@@ -2741,7 +3184,7 @@
+ 	   crr_insn;
+ 	   crr_insn = crr_insn->next_in_row)
+ 	{
+-	  rtx insn = crr_insn->node->insn;
++	  rtx insn = ps_rtl_insn (ps, crr_insn->id);
+ 
+ 	  if (!NONDEBUG_INSN_P (insn))
+ 	    continue;
+@@ -2778,7 +3221,7 @@
+    cuid N must be come before/after (respectively) the node pointed to by
+    PS_I when scheduled in the same cycle.  */
+ ps_insn_ptr
+-ps_add_node_check_conflicts (partial_schedule_ptr ps, ddg_node_ptr n,
++ps_add_node_check_conflicts (partial_schedule_ptr ps, int n,
+    			     int c, sbitmap must_precede,
+ 			     sbitmap must_follow)
+ {
+@@ -2820,6 +3263,22 @@
+   return ps_i;
+ }
+ 
++/* Calculate the stage count of the partial schedule PS.  The calculation
++   takes into account the rotation amount passed in ROTATION_AMOUNT.  */
++int
++calculate_stage_count (partial_schedule_ptr ps, int rotation_amount)
++{
++  int new_min_cycle = PS_MIN_CYCLE (ps) - rotation_amount;
++  int new_max_cycle = PS_MAX_CYCLE (ps) - rotation_amount;
++  int stage_count = CALC_STAGE_COUNT (-1, new_min_cycle, ps->ii);
++
++  /* The calculation of stage count is done adding the number of stages
++     before cycle zero and after cycle zero.  */ 
++  stage_count += CALC_STAGE_COUNT (new_max_cycle, 0, ps->ii);
++
++  return stage_count;
++}
++
+ /* Rotate the rows of PS such that insns scheduled at time
+    START_CYCLE will appear in row 0.  Updates max/min_cycles.  */
+ void
+@@ -2837,11 +3296,16 @@
+   for (i = 0; i < backward_rotates; i++)
+     {
+       ps_insn_ptr first_row = ps->rows[0];
++      int first_row_length = ps->rows_length[0];
+ 
+       for (row = 0; row < last_row; row++)
+-	ps->rows[row] = ps->rows[row+1];
++	{
++	  ps->rows[row] = ps->rows[row + 1];
++	  ps->rows_length[row] = ps->rows_length[row + 1]; 
++	}
+ 
+       ps->rows[last_row] = first_row;
++      ps->rows_length[last_row] = first_row_length;
+     }
+ 
+   ps->max_cycle -= start_cycle;
+--- a/src/gcc/optabs.c
++++ b/src/gcc/optabs.c
+@@ -225,6 +225,61 @@
+   return 1;
+ }
+ 
++/* Given two input operands, OP0 and OP1, determine what the correct from_mode
++   for a widening operation would be.  In most cases this would be OP0, but if
++   that's a constant it'll be VOIDmode, which isn't useful.  */
++
++static enum machine_mode
++widened_mode (enum machine_mode to_mode, rtx op0, rtx op1)
++{
++  enum machine_mode m0 = GET_MODE (op0);
++  enum machine_mode m1 = GET_MODE (op1);
++  enum machine_mode result;
++
++  if (m0 == VOIDmode && m1 == VOIDmode)
++    return to_mode;
++  else if (m0 == VOIDmode || GET_MODE_SIZE (m0) < GET_MODE_SIZE (m1))
++    result = m1;
++  else
++    result = m0;
++
++  if (GET_MODE_SIZE (result) > GET_MODE_SIZE (to_mode))
++    return to_mode;
++
++  return result;
++}
++
++/* Find a widening optab even if it doesn't widen as much as we want.
++   E.g. if from_mode is HImode, and to_mode is DImode, and there is no
++   direct HI->SI insn, then return SI->DI, if that exists.
++   If PERMIT_NON_WIDENING is non-zero then this can be used with
++   non-widening optabs also.  */
++
++enum insn_code
++find_widening_optab_handler_and_mode (optab op, enum machine_mode to_mode,
++				      enum machine_mode from_mode,
++				      int permit_non_widening,
++				      enum machine_mode *found_mode)
++{
++  for (; (permit_non_widening || from_mode != to_mode)
++	 && GET_MODE_SIZE (from_mode) <= GET_MODE_SIZE (to_mode)
++	 && from_mode != VOIDmode;
++       from_mode = GET_MODE_WIDER_MODE (from_mode))
++    {
++      enum insn_code handler = widening_optab_handler (op, to_mode,
++						       from_mode);
++
++      if (handler != CODE_FOR_nothing)
++	{
++	  if (found_mode)
++	    *found_mode = from_mode;
++	  return handler;
++	}
++    }
++
++  return CODE_FOR_nothing;
++}
++
+ /* Widen OP to MODE and return the rtx for the widened operand.  UNSIGNEDP
+    says whether OP is signed or unsigned.  NO_EXTEND is nonzero if we need
+    not actually do a sign-extend or zero-extend, but can leave the
+@@ -399,6 +454,14 @@
+       return TYPE_UNSIGNED (type) ?
+ 	vec_widen_umult_lo_optab : vec_widen_smult_lo_optab;
+ 
++    case VEC_WIDEN_LSHIFT_HI_EXPR:
++      return TYPE_UNSIGNED (type) ?
++        vec_widen_ushiftl_hi_optab : vec_widen_sshiftl_hi_optab;
++
++    case VEC_WIDEN_LSHIFT_LO_EXPR:
++      return TYPE_UNSIGNED (type) ?
++        vec_widen_ushiftl_lo_optab : vec_widen_sshiftl_lo_optab;
++
+     case VEC_UNPACK_HI_EXPR:
+       return TYPE_UNSIGNED (type) ?
+ 	vec_unpacku_hi_optab : vec_unpacks_hi_optab;
+@@ -517,8 +580,9 @@
+     optab_for_tree_code (ops->code, TREE_TYPE (oprnd0), optab_default);
+   if (ops->code == WIDEN_MULT_PLUS_EXPR
+       || ops->code == WIDEN_MULT_MINUS_EXPR)
+-    icode = (int) optab_handler (widen_pattern_optab,
+-				 TYPE_MODE (TREE_TYPE (ops->op2)));
++    icode = (int) find_widening_optab_handler (widen_pattern_optab,
++					       TYPE_MODE (TREE_TYPE (ops->op2)),
++					       tmode0, 0);
+   else
+     icode = (int) optab_handler (widen_pattern_optab, tmode0);
+   gcc_assert (icode != CODE_FOR_nothing);
+@@ -1389,7 +1453,9 @@
+ 		       rtx target, int unsignedp, enum optab_methods methods,
+ 		       rtx last)
+ {
+-  int icode = (int) optab_handler (binoptab, mode);
++  enum machine_mode from_mode = widened_mode (mode, op0, op1);
++  int icode = (int) find_widening_optab_handler (binoptab, mode,
++						 from_mode, 1);
+   enum machine_mode mode0 = insn_data[icode].operand[1].mode;
+   enum machine_mode mode1 = insn_data[icode].operand[2].mode;
+   enum machine_mode tmp_mode;
+@@ -1546,7 +1612,9 @@
+   /* If we can do it with a three-operand insn, do so.  */
+ 
+   if (methods != OPTAB_MUST_WIDEN
+-      && optab_handler (binoptab, mode) != CODE_FOR_nothing)
++      && find_widening_optab_handler (binoptab, mode,
++				      widened_mode (mode, op0, op1), 1)
++	    != CODE_FOR_nothing)
+     {
+       temp = expand_binop_directly (mode, binoptab, op0, op1, target,
+ 				    unsignedp, methods, last);
+@@ -1586,8 +1654,9 @@
+ 
+   if (binoptab == smul_optab
+       && GET_MODE_WIDER_MODE (mode) != VOIDmode
+-      && (optab_handler ((unsignedp ? umul_widen_optab : smul_widen_optab),
+-			 GET_MODE_WIDER_MODE (mode))
++      && (widening_optab_handler ((unsignedp ? umul_widen_optab
++					     : smul_widen_optab),
++				  GET_MODE_WIDER_MODE (mode), mode)
+ 	  != CODE_FOR_nothing))
+     {
+       temp = expand_binop (GET_MODE_WIDER_MODE (mode),
+@@ -1618,9 +1687,11 @@
+ 	if (optab_handler (binoptab, wider_mode) != CODE_FOR_nothing
+ 	    || (binoptab == smul_optab
+ 		&& GET_MODE_WIDER_MODE (wider_mode) != VOIDmode
+-		&& (optab_handler ((unsignedp ? umul_widen_optab
+-				    : smul_widen_optab),
+-				   GET_MODE_WIDER_MODE (wider_mode))
++		&& (find_widening_optab_handler ((unsignedp
++						  ? umul_widen_optab
++						  : smul_widen_optab),
++						 GET_MODE_WIDER_MODE (wider_mode),
++						 mode, 0)
+ 		    != CODE_FOR_nothing)))
+ 	  {
+ 	    rtx xop0 = op0, xop1 = op1;
+@@ -2043,8 +2114,8 @@
+       && optab_handler (add_optab, word_mode) != CODE_FOR_nothing)
+     {
+       rtx product = NULL_RTX;
+-
+-      if (optab_handler (umul_widen_optab, mode) != CODE_FOR_nothing)
++      if (widening_optab_handler (umul_widen_optab, mode, word_mode)
++	    != CODE_FOR_nothing)
+ 	{
+ 	  product = expand_doubleword_mult (mode, op0, op1, target,
+ 					    true, methods);
+@@ -2053,7 +2124,8 @@
+ 	}
+ 
+       if (product == NULL_RTX
+-	  && optab_handler (smul_widen_optab, mode) != CODE_FOR_nothing)
++	  && widening_optab_handler (smul_widen_optab, mode, word_mode)
++		!= CODE_FOR_nothing)
+ 	{
+ 	  product = expand_doubleword_mult (mode, op0, op1, target,
+ 					    false, methods);
+@@ -2144,7 +2216,8 @@
+ 	   wider_mode != VOIDmode;
+ 	   wider_mode = GET_MODE_WIDER_MODE (wider_mode))
+ 	{
+-	  if (optab_handler (binoptab, wider_mode) != CODE_FOR_nothing
++	  if (find_widening_optab_handler (binoptab, wider_mode, mode, 1)
++		  != CODE_FOR_nothing
+ 	      || (methods == OPTAB_LIB
+ 		  && optab_libfunc (binoptab, wider_mode)))
+ 	    {
+@@ -6171,6 +6244,9 @@
+   init_optab (usashl_optab, US_ASHIFT);
+   init_optab (ashr_optab, ASHIFTRT);
+   init_optab (lshr_optab, LSHIFTRT);
++  init_optabv (vashl_optab, ASHIFT);
++  init_optabv (vashr_optab, ASHIFTRT);
++  init_optabv (vlshr_optab, LSHIFTRT);
+   init_optab (rotl_optab, ROTATE);
+   init_optab (rotr_optab, ROTATERT);
+   init_optab (smin_optab, SMIN);
+@@ -6283,6 +6359,10 @@
+   init_optab (vec_widen_umult_lo_optab, UNKNOWN);
+   init_optab (vec_widen_smult_hi_optab, UNKNOWN);
+   init_optab (vec_widen_smult_lo_optab, UNKNOWN);
++  init_optab (vec_widen_ushiftl_hi_optab, UNKNOWN);
++  init_optab (vec_widen_ushiftl_lo_optab, UNKNOWN);
++  init_optab (vec_widen_sshiftl_hi_optab, UNKNOWN);
++  init_optab (vec_widen_sshiftl_lo_optab, UNKNOWN);
+   init_optab (vec_unpacks_hi_optab, UNKNOWN);
+   init_optab (vec_unpacks_lo_optab, UNKNOWN);
+   init_optab (vec_unpacku_hi_optab, UNKNOWN);
+--- a/src/gcc/optabs.h
++++ b/src/gcc/optabs.h
+@@ -42,6 +42,11 @@
+   int insn_code;
+ };
+ 
++struct widening_optab_handlers
++{
++  struct optab_handlers handlers[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
++};
++
+ struct optab_d
+ {
+   enum rtx_code code;
+@@ -50,6 +55,7 @@
+   void (*libcall_gen)(struct optab_d *, const char *name, char suffix,
+ 		      enum machine_mode);
+   struct optab_handlers handlers[NUM_MACHINE_MODES];
++  struct widening_optab_handlers *widening;
+ };
+ typedef struct optab_d * optab;
+ 
+@@ -344,6 +350,12 @@
+   OTI_vec_widen_umult_lo,
+   OTI_vec_widen_smult_hi,
+   OTI_vec_widen_smult_lo,
++  /* Widening shift left.
++     The high/low part of the resulting vector is returned.  */
++  OTI_vec_widen_ushiftl_hi,
++  OTI_vec_widen_ushiftl_lo,
++  OTI_vec_widen_sshiftl_hi,
++  OTI_vec_widen_sshiftl_lo,
+   /* Extract and widen the high/low part of a vector of signed or
+      floating point elements.  */
+   OTI_vec_unpacks_hi,
+@@ -536,6 +548,10 @@
+ #define vec_widen_umult_lo_optab (&optab_table[OTI_vec_widen_umult_lo])
+ #define vec_widen_smult_hi_optab (&optab_table[OTI_vec_widen_smult_hi])
+ #define vec_widen_smult_lo_optab (&optab_table[OTI_vec_widen_smult_lo])
++#define vec_widen_ushiftl_hi_optab (&optab_table[OTI_vec_widen_ushiftl_hi])
++#define vec_widen_ushiftl_lo_optab (&optab_table[OTI_vec_widen_ushiftl_lo])
++#define vec_widen_sshiftl_hi_optab (&optab_table[OTI_vec_widen_sshiftl_hi])
++#define vec_widen_sshiftl_lo_optab (&optab_table[OTI_vec_widen_sshiftl_lo])
+ #define vec_unpacks_hi_optab (&optab_table[OTI_vec_unpacks_hi])
+ #define vec_unpacks_lo_optab (&optab_table[OTI_vec_unpacks_lo])
+ #define vec_unpacku_hi_optab (&optab_table[OTI_vec_unpacku_hi])
+@@ -578,6 +594,9 @@
+   COI_satfract,
+   COI_satfractuns,
+ 
++  COI_vec_load_lanes,
++  COI_vec_store_lanes,
++
+   COI_MAX
+ };
+ 
+@@ -598,6 +617,8 @@
+ #define fractuns_optab (&convert_optab_table[COI_fractuns])
+ #define satfract_optab (&convert_optab_table[COI_satfract])
+ #define satfractuns_optab (&convert_optab_table[COI_satfractuns])
++#define vec_load_lanes_optab (&convert_optab_table[COI_vec_load_lanes])
++#define vec_store_lanes_optab (&convert_optab_table[COI_vec_store_lanes])
+ 
+ /* Contains the optab used for each rtx code.  */
+ extern optab code_to_optab[NUM_RTX_CODE + 1];
+@@ -794,6 +815,15 @@
+ extern void emit_unop_insn (int, rtx, rtx, enum rtx_code);
+ extern bool maybe_emit_unop_insn (int, rtx, rtx, enum rtx_code);
+ 
++/* Find a widening optab even if it doesn't widen as much as we want.  */
++#define find_widening_optab_handler(A,B,C,D) \
++  find_widening_optab_handler_and_mode (A, B, C, D, NULL)
++extern enum insn_code find_widening_optab_handler_and_mode (optab,
++							    enum machine_mode,
++							    enum machine_mode,
++							    int,
++							    enum machine_mode *);
++
+ /* An extra flag to control optab_for_tree_code's behavior.  This is needed to
+    distinguish between machines with a vector shift that takes a scalar for the
+    shift amount vs. machines that take a vector for the shift amount.  */
+@@ -869,6 +899,23 @@
+ 			   + (int) CODE_FOR_nothing);
+ }
+ 
++/* Like optab_handler, but for widening_operations that have a TO_MODE and
++  a FROM_MODE.  */
++
++static inline enum insn_code
++widening_optab_handler (optab op, enum machine_mode to_mode,
++			enum machine_mode from_mode)
++{
++  if (to_mode == from_mode || from_mode == VOIDmode)
++    return optab_handler (op, to_mode);
++
++  if (op->widening)
++    return (enum insn_code) (op->widening->handlers[(int) to_mode][(int) from_mode].insn_code
++			     + (int) CODE_FOR_nothing);
++
++  return CODE_FOR_nothing;
++}
++
+ /* Record that insn CODE should be used to implement mode MODE of OP.  */
+ 
+ static inline void
+@@ -877,6 +924,26 @@
+   op->handlers[(int) mode].insn_code = (int) code - (int) CODE_FOR_nothing;
+ }
+ 
++/* Like set_optab_handler, but for widening operations that have a TO_MODE
++   and a FROM_MODE.  */
++
++static inline void
++set_widening_optab_handler (optab op, enum machine_mode to_mode,
++			    enum machine_mode from_mode, enum insn_code code)
++{
++  if (to_mode == from_mode)
++    set_optab_handler (op, to_mode, code);
++  else
++    {
++      if (op->widening == NULL)
++	op->widening = (struct widening_optab_handlers *)
++	      xcalloc (1, sizeof (struct widening_optab_handlers));
++
++      op->widening->handlers[(int) to_mode][(int) from_mode].insn_code
++	  = (int) code - (int) CODE_FOR_nothing;
++    }
++}
++
+ /* Return the insn used to perform conversion OP from mode FROM_MODE
+    to mode TO_MODE; return CODE_FOR_nothing if the target does not have
+    such an insn.  */
+--- a/src/gcc/opts.c
++++ b/src/gcc/opts.c
+@@ -823,6 +823,12 @@
+ 	  opts->x_flag_split_stack = 0;
+ 	}
+     }
++
++  /* Set PARAM_MAX_STORES_TO_SINK to 0 if either vectorization or if-conversion
++     is disabled.  */
++  if (!opts->x_flag_tree_vectorize || !opts->x_flag_tree_loop_if_convert)
++    maybe_set_param_value (PARAM_MAX_STORES_TO_SINK, 0,
++                           opts->x_param_values, opts_set->x_param_values);
+ }
+ 
+ #define LEFT_COLUMN	27
+--- a/src/gcc/params.def
++++ b/src/gcc/params.def
+@@ -344,6 +344,11 @@
+ 	 "sms-max-ii-factor",
+ 	 "A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop",
+ 	 100, 0, 0)
++/* The minimum value of stage count that swing modulo scheduler will generate.  */
++DEFPARAM(PARAM_SMS_MIN_SC,
++        "sms-min-sc",
++        "The minimum value of stage count that swing modulo scheduler will generate.",
++        2, 1, 1)
+ DEFPARAM(PARAM_SMS_DFA_HISTORY,
+ 	 "sms-dfa-history",
+ 	 "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA",
+@@ -883,6 +888,13 @@
+ 	  "name lookup fails",
+ 	  1000, 0, 0)
+ 
++/* Maximum number of conditional store pairs that can be sunk.  */
++DEFPARAM (PARAM_MAX_STORES_TO_SINK,
++          "max-stores-to-sink",
++          "Maximum number of conditional store pairs that can be sunk",
++          2, 0, 0)
++
++
+ /*
+ Local variables:
+ mode:c
+--- a/src/gcc/params.h
++++ b/src/gcc/params.h
+@@ -206,4 +206,6 @@
+   PARAM_VALUE (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
+ #define MIN_NONDEBUG_INSN_UID \
+   PARAM_VALUE (PARAM_MIN_NONDEBUG_INSN_UID)
++#define MAX_STORES_TO_SINK \
++  PARAM_VALUE (PARAM_MAX_STORES_TO_SINK)
+ #endif /* ! GCC_PARAMS_H */
+--- a/src/gcc/predict.c
++++ b/src/gcc/predict.c
+@@ -1790,7 +1790,8 @@
+ static void
+ predict_paths_for_bb (basic_block cur, basic_block bb,
+ 		      enum br_predictor pred,
+-		      enum prediction taken)
++		      enum prediction taken,
++		      bitmap visited)
+ {
+   edge e;
+   edge_iterator ei;
+@@ -1811,7 +1812,7 @@
+ 	continue;
+       gcc_assert (bb == cur || dominated_by_p (CDI_POST_DOMINATORS, cur, bb));
+ 
+-      /* See if there is how many edge from e->src that is not abnormal
++      /* See if there is an edge from e->src that is not abnormal
+ 	 and does not lead to BB.  */
+       FOR_EACH_EDGE (e2, ei2, e->src->succs)
+ 	if (e2 != e
+@@ -1824,16 +1825,20 @@
+ 
+       /* If there is non-abnormal path leaving e->src, predict edge
+ 	 using predictor.  Otherwise we need to look for paths
+-	 leading to e->src.  */
++	 leading to e->src.
++
++	 The second may lead to infinite loop in the case we are predicitng
++	 regions that are only reachable by abnormal edges.  We simply
++	 prevent visiting given BB twice.  */
+       if (found)
+         predict_edge_def (e, pred, taken);
+-      else
+-	predict_paths_for_bb (e->src, e->src, pred, taken);
++      else if (bitmap_set_bit (visited, e->src->index))
++	predict_paths_for_bb (e->src, e->src, pred, taken, visited);
+     }
+   for (son = first_dom_son (CDI_POST_DOMINATORS, cur);
+        son;
+        son = next_dom_son (CDI_POST_DOMINATORS, son))
+-    predict_paths_for_bb (son, bb, pred, taken);
++    predict_paths_for_bb (son, bb, pred, taken, visited);
+ }
+ 
+ /* Sets branch probabilities according to PREDiction and
+@@ -1843,7 +1848,9 @@
+ predict_paths_leading_to (basic_block bb, enum br_predictor pred,
+ 			  enum prediction taken)
+ {
+-  predict_paths_for_bb (bb, bb, pred, taken);
++  bitmap visited = BITMAP_ALLOC (NULL);
++  predict_paths_for_bb (bb, bb, pred, taken, visited);
++  BITMAP_FREE (visited);
+ }
+ 
+ /* Like predict_paths_leading_to but take edge instead of basic block.  */
+@@ -1866,7 +1873,11 @@
+ 	break;
+       }
+   if (!has_nonloop_edge)
+-    predict_paths_for_bb (bb, bb, pred, taken);
++    {
++      bitmap visited = BITMAP_ALLOC (NULL);
++      predict_paths_for_bb (bb, bb, pred, taken, visited);
++      BITMAP_FREE (visited);
++    }
+   else
+     predict_edge_def (e, pred, taken);
+ }
+--- a/src/gcc/recog.c
++++ b/src/gcc/recog.c
+@@ -930,7 +930,9 @@
+     return ((GET_MODE (op) == VOIDmode || GET_MODE (op) == mode
+ 	     || mode == VOIDmode)
+ 	    && (! flag_pic || LEGITIMATE_PIC_OPERAND_P (op))
+-	    && LEGITIMATE_CONSTANT_P (op));
++	    && targetm.legitimate_constant_p (mode == VOIDmode
++					      ? GET_MODE (op)
++					      : mode, op));
+ 
+   /* Except for certain constants with VOIDmode, already checked for,
+      OP's mode must match MODE if MODE specifies a mode.  */
+@@ -1107,7 +1109,9 @@
+ 	  && (GET_MODE (op) == mode || mode == VOIDmode
+ 	      || GET_MODE (op) == VOIDmode)
+ 	  && (! flag_pic || LEGITIMATE_PIC_OPERAND_P (op))
+-	  && LEGITIMATE_CONSTANT_P (op));
++	  && targetm.legitimate_constant_p (mode == VOIDmode
++					    ? GET_MODE (op)
++					    : mode, op));
+ }
+ 
+ /* Returns 1 if OP is an operand that is a CONST_INT.  */
+--- a/src/gcc/regcprop.c
++++ b/src/gcc/regcprop.c
+@@ -418,10 +418,9 @@
+ 
+       offset = ((WORDS_BIG_ENDIAN ? wordoffset : 0)
+ 		+ (BYTES_BIG_ENDIAN ? byteoffset : 0));
+-      return gen_rtx_raw_REG (new_mode,
+-			      regno + subreg_regno_offset (regno, orig_mode,
+-							   offset,
+-							   new_mode));
++      regno += subreg_regno_offset (regno, orig_mode, offset, new_mode);
++      if (HARD_REGNO_MODE_OK (regno, new_mode))
++	return gen_rtx_raw_REG (new_mode, regno);
+     }
+   return NULL_RTX;
+ }
+--- a/src/gcc/reload1.c
++++ b/src/gcc/reload1.c
+@@ -4159,6 +4159,9 @@
+ 		}
+ 	      else if (function_invariant_p (x))
+ 		{
++		  enum machine_mode mode;
++
++		  mode = GET_MODE (SET_DEST (set));
+ 		  if (GET_CODE (x) == PLUS)
+ 		    {
+ 		      /* This is PLUS of frame pointer and a constant,
+@@ -4171,12 +4174,11 @@
+ 		      reg_equiv_invariant[i] = x;
+ 		      num_eliminable_invariants++;
+ 		    }
+-		  else if (LEGITIMATE_CONSTANT_P (x))
++		  else if (targetm.legitimate_constant_p (mode, x))
+ 		    reg_equiv_constant[i] = x;
+ 		  else
+ 		    {
+-		      reg_equiv_memory_loc[i]
+-			= force_const_mem (GET_MODE (SET_DEST (set)), x);
++		      reg_equiv_memory_loc[i] = force_const_mem (mode, x);
+ 		      if (! reg_equiv_memory_loc[i])
+ 			reg_equiv_init[i] = NULL_RTX;
+ 		    }
+@@ -4478,6 +4480,43 @@
+ 	}
+     }
+ }
++
++/* *OP_PTR and *OTHER_PTR are two operands to a conceptual reload.
++   If *OP_PTR is a paradoxical subreg, try to remove that subreg
++   and apply the corresponding narrowing subreg to *OTHER_PTR.
++   Return true if the operands were changed, false otherwise.  */
++
++static bool
++strip_paradoxical_subreg (rtx *op_ptr, rtx *other_ptr)
++{
++  rtx op, inner, other, tem;
++
++  op = *op_ptr;
++  if (GET_CODE (op) != SUBREG)
++    return false;
++
++  inner = SUBREG_REG (op);
++  if (GET_MODE_SIZE (GET_MODE (op)) <= GET_MODE_SIZE (GET_MODE (inner)))
++    return false;
++
++  other = *other_ptr;
++  tem = gen_lowpart_common (GET_MODE (inner), other);
++  if (!tem)
++    return false;
++
++  /* If the lowpart operation turned a hard register into a subreg,
++     rather than simplifying it to another hard register, then the
++     mode change cannot be properly represented.  For example, OTHER
++     might be valid in its current mode, but not in the new one.  */
++  if (GET_CODE (tem) == SUBREG
++      && REG_P (other)
++      && HARD_REGISTER_P (other))
++    return false;
++
++  *op_ptr = inner;
++  *other_ptr = tem;
++  return true;
++}
+ 
+ /* A subroutine of reload_as_needed.  If INSN has a REG_EH_REGION note,
+    examine all of the reload insns between PREV and NEXT exclusive, and
+@@ -5558,7 +5597,7 @@
+      chain reloads or do need an intermediate hard registers.  */
+   bool result = true;
+   int regno, n, code;
+-  rtx out, in, tem, insn;
++  rtx out, in, insn;
+   rtx last = get_last_insn ();
+ 
+   /* Make r2 a component of r1.  */
+@@ -5577,11 +5616,7 @@
+ 
+   /* If IN is a paradoxical SUBREG, remove it and try to put the
+      opposite SUBREG on OUT.  Likewise for a paradoxical SUBREG on OUT.  */
+-  if (GET_CODE (in) == SUBREG
+-      && (GET_MODE_SIZE (GET_MODE (in))
+-	  > GET_MODE_SIZE (GET_MODE (SUBREG_REG (in))))
+-      && (tem = gen_lowpart_common (GET_MODE (SUBREG_REG (in)), out)) != 0)
+-    in = SUBREG_REG (in), out = tem;
++  strip_paradoxical_subreg (&in, &out);
+ 
+   if (GET_CODE (in) == PLUS
+       && (REG_P (XEXP (in, 0))
+@@ -6453,6 +6488,8 @@
+ 
+ 	      if (regno >= 0
+ 		  && reg_last_reload_reg[regno] != 0
++		  && (GET_MODE_SIZE (GET_MODE (reg_last_reload_reg[regno]))
++		      >= GET_MODE_SIZE (mode) + byte)
+ #ifdef CANNOT_CHANGE_MODE_CLASS
+ 		  /* Verify that the register it's in can be used in
+ 		     mode MODE.  */
+@@ -6464,24 +6501,12 @@
+ 		{
+ 		  enum reg_class rclass = rld[r].rclass, last_class;
+ 		  rtx last_reg = reg_last_reload_reg[regno];
+-		  enum machine_mode need_mode;
+ 
+ 		  i = REGNO (last_reg);
+ 		  i += subreg_regno_offset (i, GET_MODE (last_reg), byte, mode);
+ 		  last_class = REGNO_REG_CLASS (i);
+ 
+-		  if (byte == 0)
+-		    need_mode = mode;
+-		  else
+-		    need_mode
+-		      = smallest_mode_for_size
+-		        (GET_MODE_BITSIZE (mode) + byte * BITS_PER_UNIT,
+-			 GET_MODE_CLASS (mode) == MODE_PARTIAL_INT
+-			 ? MODE_INT : GET_MODE_CLASS (mode));
+-
+-		  if ((GET_MODE_SIZE (GET_MODE (last_reg))
+-		       >= GET_MODE_SIZE (need_mode))
+-		      && reg_reloaded_contents[i] == regno
++		  if (reg_reloaded_contents[i] == regno
+ 		      && TEST_HARD_REG_BIT (reg_reloaded_valid, i)
+ 		      && HARD_REGNO_MODE_OK (i, rld[r].mode)
+ 		      && (TEST_HARD_REG_BIT (reg_class_contents[(int) rclass], i)
+@@ -7583,7 +7608,6 @@
+ 	      if (tertiary_icode != CODE_FOR_nothing)
+ 		{
+ 		  rtx third_reloadreg = rld[tertiary_reload].reg_rtx;
+-		  rtx tem;
+ 
+ 		  /* Copy primary reload reg to secondary reload reg.
+ 		     (Note that these have been swapped above, then
+@@ -7592,13 +7616,7 @@
+ 		  /* If REAL_OLD is a paradoxical SUBREG, remove it
+ 		     and try to put the opposite SUBREG on
+ 		     RELOADREG.  */
+-		  if (GET_CODE (real_old) == SUBREG
+-		      && (GET_MODE_SIZE (GET_MODE (real_old))
+-			  > GET_MODE_SIZE (GET_MODE (SUBREG_REG (real_old))))
+-		      && 0 != (tem = gen_lowpart_common
+-			       (GET_MODE (SUBREG_REG (real_old)),
+-				reloadreg)))
+-		    real_old = SUBREG_REG (real_old), reloadreg = tem;
++		  strip_paradoxical_subreg (&real_old, &reloadreg);
+ 
+ 		  gen_reload (reloadreg, second_reloadreg,
+ 			      rl->opnum, rl->when_needed);
+@@ -8414,16 +8432,8 @@
+ 
+   /* If IN is a paradoxical SUBREG, remove it and try to put the
+      opposite SUBREG on OUT.  Likewise for a paradoxical SUBREG on OUT.  */
+-  if (GET_CODE (in) == SUBREG
+-      && (GET_MODE_SIZE (GET_MODE (in))
+-	  > GET_MODE_SIZE (GET_MODE (SUBREG_REG (in))))
+-      && (tem = gen_lowpart_common (GET_MODE (SUBREG_REG (in)), out)) != 0)
+-    in = SUBREG_REG (in), out = tem;
+-  else if (GET_CODE (out) == SUBREG
+-	   && (GET_MODE_SIZE (GET_MODE (out))
+-	       > GET_MODE_SIZE (GET_MODE (SUBREG_REG (out))))
+-	   && (tem = gen_lowpart_common (GET_MODE (SUBREG_REG (out)), in)) != 0)
+-    out = SUBREG_REG (out), in = tem;
++  if (!strip_paradoxical_subreg (&in, &out))
++    strip_paradoxical_subreg (&out, &in);
+ 
+   /* How to do this reload can get quite tricky.  Normally, we are being
+      asked to reload a simple operand, such as a MEM, a constant, or a pseudo
+--- a/src/gcc/reload.c
++++ b/src/gcc/reload.c
+@@ -1017,6 +1017,7 @@
+ #ifdef CANNOT_CHANGE_MODE_CLASS
+       && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SUBREG_REG (in)), inmode, rclass)
+ #endif
++      && contains_reg_of_mode[(int) rclass][(int) GET_MODE (SUBREG_REG (in))]
+       && (CONSTANT_P (SUBREG_REG (in))
+ 	  || GET_CODE (SUBREG_REG (in)) == PLUS
+ 	  || strict_low
+@@ -1123,6 +1124,7 @@
+ #ifdef CANNOT_CHANGE_MODE_CLASS
+       && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SUBREG_REG (out)), outmode, rclass)
+ #endif
++      && contains_reg_of_mode[(int) rclass][(int) GET_MODE (SUBREG_REG (out))]
+       && (CONSTANT_P (SUBREG_REG (out))
+ 	  || strict_low
+ 	  || (((REG_P (SUBREG_REG (out))
+@@ -4721,7 +4723,8 @@
+ 	    simplify_gen_subreg (GET_MODE (x), reg_equiv_constant[regno],
+ 				 GET_MODE (SUBREG_REG (x)), SUBREG_BYTE (x));
+ 	  gcc_assert (tem);
+-	  if (CONSTANT_P (tem) && !LEGITIMATE_CONSTANT_P (tem))
++	  if (CONSTANT_P (tem)
++	      && !targetm.legitimate_constant_p (GET_MODE (x), tem))
+ 	    {
+ 	      tem = force_const_mem (GET_MODE (x), tem);
+ 	      i = find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0),
+@@ -6049,7 +6052,7 @@
+ 			   enum reload_type type, int ind_levels)
+ {
+   if (CONSTANT_P (x)
+-      && (! LEGITIMATE_CONSTANT_P (x)
++      && (!targetm.legitimate_constant_p (mode, x)
+ 	  || targetm.preferred_reload_class (x, rclass) == NO_REGS))
+     {
+       x = force_const_mem (mode, x);
+@@ -6059,7 +6062,7 @@
+ 
+   else if (GET_CODE (x) == PLUS
+ 	   && CONSTANT_P (XEXP (x, 1))
+-	   && (! LEGITIMATE_CONSTANT_P (XEXP (x, 1))
++	   && (!targetm.legitimate_constant_p (GET_MODE (x), XEXP (x, 1))
+ 	       || targetm.preferred_reload_class (XEXP (x, 1), rclass)
+ 		   == NO_REGS))
+     {
+--- a/src/gcc/sched-deps.c
++++ b/src/gcc/sched-deps.c
+@@ -450,7 +450,7 @@
+ static void add_dependence_list_and_free (struct deps_desc *, rtx,
+ 					  rtx *, int, enum reg_note);
+ static void delete_all_dependences (rtx);
+-static void fixup_sched_groups (rtx);
++static void chain_to_prev_insn (rtx);
+ 
+ static void flush_pending_lists (struct deps_desc *, rtx, int, int);
+ static void sched_analyze_1 (struct deps_desc *, rtx, rtx);
+@@ -1490,7 +1490,7 @@
+    the previous nonnote insn.  */
+ 
+ static void
+-fixup_sched_groups (rtx insn)
++chain_to_prev_insn (rtx insn)
+ {
+   sd_iterator_def sd_it;
+   dep_t dep;
+@@ -1999,7 +1999,7 @@
+   static struct reg_pressure_data *pressure_info;
+   rtx link;
+ 
+-  gcc_assert (sched_pressure_p);
++  gcc_assert (sched_pressure != SCHED_PRESSURE_NONE);
+ 
+   if (! INSN_P (insn))
+     return;
+@@ -2030,8 +2030,9 @@
+   len = sizeof (struct reg_pressure_data) * ira_reg_class_cover_size;
+   pressure_info
+     = INSN_REG_PRESSURE (insn) = (struct reg_pressure_data *) xmalloc (len);
+-  INSN_MAX_REG_PRESSURE (insn) = (int *) xcalloc (ira_reg_class_cover_size
+-						  * sizeof (int), 1);
++  if (sched_pressure == SCHED_PRESSURE_WEIGHTED)
++    INSN_MAX_REG_PRESSURE (insn) = (int *) xcalloc (ira_reg_class_cover_size
++						    * sizeof (int), 1);
+   for (i = 0; i < ira_reg_class_cover_size; i++)
+     {
+       cl = ira_reg_class_cover[i];
+@@ -2775,7 +2776,7 @@
+       || (NONJUMP_INSN_P (insn) && control_flow_insn_p (insn)))
+     reg_pending_barrier = MOVE_BARRIER;
+ 
+-  if (sched_pressure_p)
++  if (sched_pressure != SCHED_PRESSURE_NONE)
+     {
+       setup_insn_reg_uses (deps, insn);
+       setup_insn_reg_pressure_info (insn);
+@@ -3076,7 +3077,7 @@
+ 	       instructions that follow seem like they should be part
+ 	       of the call group.
+ 
+-	       Also, if we did, fixup_sched_groups() would move the
++	       Also, if we did, chain_to_prev_insn would move the
+ 	       deps of the debug insn to the call insn, modifying
+ 	       non-debug post-dependency counts of the debug insn
+ 	       dependencies and otherwise messing with the scheduling
+@@ -3222,6 +3223,37 @@
+   return true;
+ }
+ 
++/* Return true if INSN should be made dependent on the previous instruction
++   group, and if all INSN's dependencies should be moved to the first
++   instruction of that group.  */
++
++static bool
++chain_to_prev_insn_p (rtx insn)
++{
++  rtx prev, x;
++
++  /* INSN forms a group with the previous instruction.  */
++  if (SCHED_GROUP_P (insn))
++    return true;
++
++  /* If the previous instruction clobbers a register R and this one sets
++     part of R, the clobber was added specifically to help us track the
++     liveness of R.  There's no point scheduling the clobber and leaving
++     INSN behind, especially if we move the clobber to another block.  */
++  prev = prev_nonnote_nondebug_insn (insn);
++  if (prev
++      && INSN_P (prev)
++      && BLOCK_FOR_INSN (prev) == BLOCK_FOR_INSN (insn)
++      && GET_CODE (PATTERN (prev)) == CLOBBER)
++    {
++      x = XEXP (PATTERN (prev), 0);
++      if (set_of (x, insn))
++	return true;
++    }
++
++  return false;
++}
++
+ /* Analyze INSN with DEPS as a context.  */
+ void
+ deps_analyze_insn (struct deps_desc *deps, rtx insn)
+@@ -3358,8 +3390,9 @@
+ 
+   /* Fixup the dependencies in the sched group.  */
+   if ((NONJUMP_INSN_P (insn) || JUMP_P (insn))
+-      && SCHED_GROUP_P (insn) && !sel_sched_p ())
+-    fixup_sched_groups (insn);
++      && chain_to_prev_insn_p (insn)
++      && !sel_sched_p ())
++    chain_to_prev_insn (insn);
+ }
+ 
+ /* Initialize DEPS for the new block beginning with HEAD.  */
+--- a/src/gcc/sched-int.h
++++ b/src/gcc/sched-int.h
+@@ -651,7 +651,7 @@
+ 
+ /* Do register pressure sensitive insn scheduling if the flag is set
+    up.  */
+-extern bool sched_pressure_p;
++extern enum sched_pressure_algorithm sched_pressure;
+ 
+ /* Map regno -> its cover class.  The map defined only when
+    SCHED_PRESSURE_P is true.  */
+@@ -773,16 +773,16 @@
+ 
+   short cost;
+ 
+-  /* Set if there's DEF-USE dependence between some speculatively
+-     moved load insn and this one.  */
+-  unsigned int fed_by_spec_load : 1;
+-  unsigned int is_load_insn : 1;
+-
+   /* '> 0' if priority is valid,
+      '== 0' if priority was not yet computed,
+      '< 0' if priority in invalid and should be recomputed.  */
+   signed char priority_status;
+ 
++  /* Set if there's DEF-USE dependence between some speculatively
++     moved load insn and this one.  */
++  unsigned int fed_by_spec_load : 1;
++  unsigned int is_load_insn : 1;
++
+   /* What speculations are necessary to apply to schedule the instruction.  */
+   ds_t todo_spec;
+ 
+@@ -817,6 +817,7 @@
+   /* Info about how scheduling the insn changes cost of register
+      pressure excess (between source and target).  */
+   int reg_pressure_excess_cost_change;
++  int model_index;
+ };
+ 
+ typedef struct _haifa_insn_data haifa_insn_data_def;
+@@ -839,6 +840,7 @@
+ #define INSN_REG_PRESSURE_EXCESS_COST_CHANGE(INSN) \
+   (HID (INSN)->reg_pressure_excess_cost_change)
+ #define INSN_PRIORITY_STATUS(INSN) (HID (INSN)->priority_status)
++#define INSN_MODEL_INDEX(INSN) (HID (INSN)->model_index)
+ 
+ typedef struct _haifa_deps_insn_data haifa_deps_insn_data_def;
+ typedef haifa_deps_insn_data_def *haifa_deps_insn_data_t;
+--- a/src/gcc/sched-rgn.c
++++ b/src/gcc/sched-rgn.c
+@@ -2943,7 +2943,7 @@
+ 
+   sched_extend_ready_list (rgn_n_insns);
+ 
+-  if (sched_pressure_p)
++  if (sched_pressure == SCHED_PRESSURE_WEIGHTED)
+     {
+       sched_init_region_reg_pressure_info ();
+       for (bb = 0; bb < current_nr_blocks; bb++)
+--- a/src/gcc/simplify-rtx.c
++++ b/src/gcc/simplify-rtx.c
+@@ -1000,6 +1000,48 @@
+ 	  && GET_CODE (XEXP (XEXP (op, 0), 1)) == LABEL_REF)
+ 	return XEXP (op, 0);
+ 
++      /* Extending a widening multiplication should be canonicalized to
++	 a wider widening multiplication.  */
++      if (GET_CODE (op) == MULT)
++	{
++	  rtx lhs = XEXP (op, 0);
++	  rtx rhs = XEXP (op, 1);
++	  enum rtx_code lcode = GET_CODE (lhs);
++	  enum rtx_code rcode = GET_CODE (rhs);
++
++	  /* Widening multiplies usually extend both operands, but sometimes
++	     they use a shift to extract a portion of a register.  */
++	  if ((lcode == SIGN_EXTEND
++	       || (lcode == ASHIFTRT && CONST_INT_P (XEXP (lhs, 1))))
++	      && (rcode == SIGN_EXTEND
++		  || (rcode == ASHIFTRT && CONST_INT_P (XEXP (rhs, 1)))))
++	    {
++	      enum machine_mode lmode = GET_MODE (lhs);
++	      enum machine_mode rmode = GET_MODE (rhs);
++	      int bits;
++
++	      if (lcode == ASHIFTRT)
++		/* Number of bits not shifted off the end.  */
++		bits = GET_MODE_PRECISION (lmode) - INTVAL (XEXP (lhs, 1));
++	      else /* lcode == SIGN_EXTEND */
++		/* Size of inner mode.  */
++		bits = GET_MODE_PRECISION (GET_MODE (XEXP (lhs, 0)));
++
++	      if (rcode == ASHIFTRT)
++		bits += GET_MODE_PRECISION (rmode) - INTVAL (XEXP (rhs, 1));
++	      else /* rcode == SIGN_EXTEND */
++		bits += GET_MODE_PRECISION (GET_MODE (XEXP (rhs, 0)));
++
++	      /* We can only widen multiplies if the result is mathematiclly
++		 equivalent.  I.e. if overflow was impossible.  */
++	      if (bits <= GET_MODE_PRECISION (GET_MODE (op)))
++		return simplify_gen_binary
++			 (MULT, mode,
++			  simplify_gen_unary (SIGN_EXTEND, mode, lhs, lmode),
++			  simplify_gen_unary (SIGN_EXTEND, mode, rhs, rmode));
++	    }
++	}
++
+       /* Check for a sign extension of a subreg of a promoted
+ 	 variable, where the promotion is sign-extended, and the
+ 	 target mode is the same as the variable's promotion.  */
+@@ -1071,6 +1113,48 @@
+ 	  && GET_MODE_SIZE (mode) <= GET_MODE_SIZE (GET_MODE (XEXP (op, 0))))
+ 	return rtl_hooks.gen_lowpart_no_emit (mode, op);
+ 
++      /* Extending a widening multiplication should be canonicalized to
++	 a wider widening multiplication.  */
++      if (GET_CODE (op) == MULT)
++	{
++	  rtx lhs = XEXP (op, 0);
++	  rtx rhs = XEXP (op, 1);
++	  enum rtx_code lcode = GET_CODE (lhs);
++	  enum rtx_code rcode = GET_CODE (rhs);
++
++	  /* Widening multiplies usually extend both operands, but sometimes
++	     they use a shift to extract a portion of a register.  */
++	  if ((lcode == ZERO_EXTEND
++	       || (lcode == LSHIFTRT && CONST_INT_P (XEXP (lhs, 1))))
++	      && (rcode == ZERO_EXTEND
++		  || (rcode == LSHIFTRT && CONST_INT_P (XEXP (rhs, 1)))))
++	    {
++	      enum machine_mode lmode = GET_MODE (lhs);
++	      enum machine_mode rmode = GET_MODE (rhs);
++	      int bits;
++
++	      if (lcode == LSHIFTRT)
++		/* Number of bits not shifted off the end.  */
++		bits = GET_MODE_PRECISION (lmode) - INTVAL (XEXP (lhs, 1));
++	      else /* lcode == ZERO_EXTEND */
++		/* Size of inner mode.  */
++		bits = GET_MODE_PRECISION (GET_MODE (XEXP (lhs, 0)));
++
++	      if (rcode == LSHIFTRT)
++		bits += GET_MODE_PRECISION (rmode) - INTVAL (XEXP (rhs, 1));
++	      else /* rcode == ZERO_EXTEND */
++		bits += GET_MODE_PRECISION (GET_MODE (XEXP (rhs, 0)));
++
++	      /* We can only widen multiplies if the result is mathematiclly
++		 equivalent.  I.e. if overflow was impossible.  */
++	      if (bits <= GET_MODE_PRECISION (GET_MODE (op)))
++		return simplify_gen_binary
++			 (MULT, mode,
++			  simplify_gen_unary (ZERO_EXTEND, mode, lhs, lmode),
++			  simplify_gen_unary (ZERO_EXTEND, mode, rhs, rmode));
++	    }
++	}
++
+       /* (zero_extend:M (zero_extend:N <X>)) is (zero_extend:M <X>).  */
+       if (GET_CODE (op) == ZERO_EXTEND)
+ 	return simplify_gen_unary (ZERO_EXTEND, mode, XEXP (op, 0),
+@@ -2506,6 +2590,46 @@
+ 							XEXP (op0, 1), mode),
+ 				    op1);
+ 
++      /* Given (xor (and A B) C), using P^Q == (~P&Q) | (~Q&P),
++	 we can transform like this:
++            (A&B)^C == ~(A&B)&C | ~C&(A&B)
++                    == (~A|~B)&C | ~C&(A&B)    * DeMorgan's Law
++                    == ~A&C | ~B&C | A&(~C&B)  * Distribute and re-order
++	 Attempt a few simplifications when B and C are both constants.  */
++      if (GET_CODE (op0) == AND
++	  && CONST_INT_P (op1)
++	  && CONST_INT_P (XEXP (op0, 1)))
++	{
++	  rtx a = XEXP (op0, 0);
++	  rtx b = XEXP (op0, 1);
++	  rtx c = op1;
++	  HOST_WIDE_INT bval = INTVAL (b);
++	  HOST_WIDE_INT cval = INTVAL (c);
++
++	  rtx na_c
++	    = simplify_binary_operation (AND, mode,
++					 simplify_gen_unary (NOT, mode, a, mode),
++					 c);
++	  if ((~cval & bval) == 0)
++	    {
++	      /* Try to simplify ~A&C | ~B&C.  */
++	      if (na_c != NULL_RTX)
++		return simplify_gen_binary (IOR, mode, na_c,
++					    GEN_INT (~bval & cval));
++	    }
++	  else
++	    {
++	      /* If ~A&C is zero, simplify A&(~C&B) | ~B&C.  */
++	      if (na_c == const0_rtx)
++		{
++		  rtx a_nc_b = simplify_gen_binary (AND, mode, a,
++						    GEN_INT (~cval & bval));
++		  return simplify_gen_binary (IOR, mode, a_nc_b,
++					      GEN_INT (~bval & cval));
++		}
++	    }
++	}
++
+       /* (xor (comparison foo bar) (const_int 1)) can become the reversed
+ 	 comparison if STORE_FLAG_VALUE is 1.  */
+       if (STORE_FLAG_VALUE == 1
+@@ -5453,6 +5577,7 @@
+   /* Optimize SUBREG truncations of zero and sign extended values.  */
+   if ((GET_CODE (op) == ZERO_EXTEND
+        || GET_CODE (op) == SIGN_EXTEND)
++      && SCALAR_INT_MODE_P (innermode)
+       && GET_MODE_BITSIZE (outermode) < GET_MODE_BITSIZE (innermode))
+     {
+       unsigned int bitpos = subreg_lsb_1 (outermode, innermode, byte);
+@@ -5491,6 +5616,7 @@
+   if ((GET_CODE (op) == LSHIFTRT
+        || GET_CODE (op) == ASHIFTRT)
+       && SCALAR_INT_MODE_P (outermode)
++      && SCALAR_INT_MODE_P (innermode)
+       /* Ensure that OUTERMODE is at least twice as wide as the INNERMODE
+ 	 to avoid the possibility that an outer LSHIFTRT shifts by more
+ 	 than the sign extension's sign_bit_copies and introduces zeros
+@@ -5510,6 +5636,7 @@
+   if ((GET_CODE (op) == LSHIFTRT
+        || GET_CODE (op) == ASHIFTRT)
+       && SCALAR_INT_MODE_P (outermode)
++      && SCALAR_INT_MODE_P (innermode)
+       && GET_MODE_BITSIZE (outermode) < GET_MODE_BITSIZE (innermode)
+       && CONST_INT_P (XEXP (op, 1))
+       && GET_CODE (XEXP (op, 0)) == ZERO_EXTEND
+@@ -5524,6 +5651,7 @@
+      the outer subreg is effectively a truncation to the original mode.  */
+   if (GET_CODE (op) == ASHIFT
+       && SCALAR_INT_MODE_P (outermode)
++      && SCALAR_INT_MODE_P (innermode)
+       && GET_MODE_BITSIZE (outermode) < GET_MODE_BITSIZE (innermode)
+       && CONST_INT_P (XEXP (op, 1))
+       && (GET_CODE (XEXP (op, 0)) == ZERO_EXTEND
+@@ -5537,7 +5665,7 @@
+   /* Recognize a word extraction from a multi-word subreg.  */
+   if ((GET_CODE (op) == LSHIFTRT
+        || GET_CODE (op) == ASHIFTRT)
+-      && SCALAR_INT_MODE_P (outermode)
++      && SCALAR_INT_MODE_P (innermode)
+       && GET_MODE_BITSIZE (outermode) >= BITS_PER_WORD
+       && GET_MODE_BITSIZE (innermode) >= (2 * GET_MODE_BITSIZE (outermode))
+       && CONST_INT_P (XEXP (op, 1))
+@@ -5559,6 +5687,7 @@
+ 
+   if ((GET_CODE (op) == LSHIFTRT
+        || GET_CODE (op) == ASHIFTRT)
++      && SCALAR_INT_MODE_P (innermode)
+       && MEM_P (XEXP (op, 0))
+       && CONST_INT_P (XEXP (op, 1))
+       && GET_MODE_SIZE (outermode) < GET_MODE_SIZE (GET_MODE (op))
+--- a/src/gcc/stmt.c
++++ b/src/gcc/stmt.c
+@@ -1683,119 +1683,21 @@
+     expand_value_return (result_rtl);
+ 
+   /* If the result is an aggregate that is being returned in one (or more)
+-     registers, load the registers here.  The compiler currently can't handle
+-     copying a BLKmode value into registers.  We could put this code in a
+-     more general area (for use by everyone instead of just function
+-     call/return), but until this feature is generally usable it is kept here
+-     (and in expand_call).  */
++     registers, load the registers here.  */
+ 
+   else if (retval_rhs != 0
+ 	   && TYPE_MODE (TREE_TYPE (retval_rhs)) == BLKmode
+ 	   && REG_P (result_rtl))
+     {
+-      int i;
+-      unsigned HOST_WIDE_INT bitpos, xbitpos;
+-      unsigned HOST_WIDE_INT padding_correction = 0;
+-      unsigned HOST_WIDE_INT bytes
+-	= int_size_in_bytes (TREE_TYPE (retval_rhs));
+-      int n_regs = (bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+-      unsigned int bitsize
+-	= MIN (TYPE_ALIGN (TREE_TYPE (retval_rhs)), BITS_PER_WORD);
+-      rtx *result_pseudos = XALLOCAVEC (rtx, n_regs);
+-      rtx result_reg, src = NULL_RTX, dst = NULL_RTX;
+-      rtx result_val = expand_normal (retval_rhs);
+-      enum machine_mode tmpmode, result_reg_mode;
+-
+-      if (bytes == 0)
+-	{
+-	  expand_null_return ();
+-	  return;
+-	}
+-
+-      /* If the structure doesn't take up a whole number of words, see
+-	 whether the register value should be padded on the left or on
+-	 the right.  Set PADDING_CORRECTION to the number of padding
+-	 bits needed on the left side.
+-
+-	 In most ABIs, the structure will be returned at the least end of
+-	 the register, which translates to right padding on little-endian
+-	 targets and left padding on big-endian targets.  The opposite
+-	 holds if the structure is returned at the most significant
+-	 end of the register.  */
+-      if (bytes % UNITS_PER_WORD != 0
+-	  && (targetm.calls.return_in_msb (TREE_TYPE (retval_rhs))
+-	      ? !BYTES_BIG_ENDIAN
+-	      : BYTES_BIG_ENDIAN))
+-	padding_correction = (BITS_PER_WORD - ((bytes % UNITS_PER_WORD)
+-					       * BITS_PER_UNIT));
+-
+-      /* Copy the structure BITSIZE bits at a time.  */
+-      for (bitpos = 0, xbitpos = padding_correction;
+-	   bitpos < bytes * BITS_PER_UNIT;
+-	   bitpos += bitsize, xbitpos += bitsize)
+-	{
+-	  /* We need a new destination pseudo each time xbitpos is
+-	     on a word boundary and when xbitpos == padding_correction
+-	     (the first time through).  */
+-	  if (xbitpos % BITS_PER_WORD == 0
+-	      || xbitpos == padding_correction)
+-	    {
+-	      /* Generate an appropriate register.  */
+-	      dst = gen_reg_rtx (word_mode);
+-	      result_pseudos[xbitpos / BITS_PER_WORD] = dst;
+-
+-	      /* Clear the destination before we move anything into it.  */
+-	      emit_move_insn (dst, CONST0_RTX (GET_MODE (dst)));
+-	    }
+-
+-	  /* We need a new source operand each time bitpos is on a word
+-	     boundary.  */
+-	  if (bitpos % BITS_PER_WORD == 0)
+-	    src = operand_subword_force (result_val,
+-					 bitpos / BITS_PER_WORD,
+-					 BLKmode);
+-
+-	  /* Use bitpos for the source extraction (left justified) and
+-	     xbitpos for the destination store (right justified).  */
+-	  store_bit_field (dst, bitsize, xbitpos % BITS_PER_WORD, word_mode,
+-			   extract_bit_field (src, bitsize,
+-					      bitpos % BITS_PER_WORD, 1, false,
+-					      NULL_RTX, word_mode, word_mode));
+-	}
+-
+-      tmpmode = GET_MODE (result_rtl);
+-      if (tmpmode == BLKmode)
++      val = copy_blkmode_to_reg (GET_MODE (result_rtl), retval_rhs);
++      if (val)
+ 	{
+-	  /* Find the smallest integer mode large enough to hold the
+-	     entire structure and use that mode instead of BLKmode
+-	     on the USE insn for the return register.  */
+-	  for (tmpmode = GET_CLASS_NARROWEST_MODE (MODE_INT);
+-	       tmpmode != VOIDmode;
+-	       tmpmode = GET_MODE_WIDER_MODE (tmpmode))
+-	    /* Have we found a large enough mode?  */
+-	    if (GET_MODE_SIZE (tmpmode) >= bytes)
+-	      break;
+-
+-	  /* A suitable mode should have been found.  */
+-	  gcc_assert (tmpmode != VOIDmode);
+-
+-	  PUT_MODE (result_rtl, tmpmode);
++	  /* Use the mode of the result value on the return register.  */
++	  PUT_MODE (result_rtl, GET_MODE (val));
++	  expand_value_return (val);
+ 	}
+-
+-      if (GET_MODE_SIZE (tmpmode) < GET_MODE_SIZE (word_mode))
+-	result_reg_mode = word_mode;
+       else
+-	result_reg_mode = tmpmode;
+-      result_reg = gen_reg_rtx (result_reg_mode);
+-
+-      for (i = 0; i < n_regs; i++)
+-	emit_move_insn (operand_subword (result_reg, i, 0, result_reg_mode),
+-			result_pseudos[i]);
+-
+-      if (tmpmode != result_reg_mode)
+-	result_reg = gen_lowpart (tmpmode, result_reg);
+-
+-      expand_value_return (result_reg);
++	expand_null_return ();
+     }
+   else if (retval_rhs != 0
+ 	   && !VOID_TYPE_P (TREE_TYPE (retval_rhs))
+--- a/src/gcc/stor-layout.c
++++ b/src/gcc/stor-layout.c
+@@ -546,6 +546,34 @@
+   return MIN (BIGGEST_ALIGNMENT, MAX (1, mode_base_align[mode]*BITS_PER_UNIT));
+ }
+ 
++/* Return the natural mode of an array, given that it is SIZE bytes in
++   total and has elements of type ELEM_TYPE.  */
++
++static enum machine_mode
++mode_for_array (tree elem_type, tree size)
++{
++  tree elem_size;
++  unsigned HOST_WIDE_INT int_size, int_elem_size;
++  bool limit_p;
++
++  /* One-element arrays get the component type's mode.  */
++  elem_size = TYPE_SIZE (elem_type);
++  if (simple_cst_equal (size, elem_size))
++    return TYPE_MODE (elem_type);
++
++  limit_p = true;
++  if (host_integerp (size, 1) && host_integerp (elem_size, 1))
++    {
++      int_size = tree_low_cst (size, 1);
++      int_elem_size = tree_low_cst (elem_size, 1);
++      if (int_elem_size > 0
++	  && int_size % int_elem_size == 0
++	  && targetm.array_mode_supported_p (TYPE_MODE (elem_type),
++					     int_size / int_elem_size))
++	limit_p = false;
++    }
++  return mode_for_size_tree (size, MODE_INT, limit_p);
++}
+ 
+ /* Subroutine of layout_decl: Force alignment required for the data type.
+    But if the decl itself wants greater alignment, don't override that.  */
+@@ -660,12 +688,13 @@
+ 	  /* See if we can use an ordinary integer mode for a bit-field.
+ 	     Conditions are: a fixed size that is correct for another mode,
+ 	     occupying a complete byte or bytes on proper boundary,
+-	     and not volatile or not -fstrict-volatile-bitfields.  */
++	     and not -fstrict-volatile-bitfields.  If the latter is set,
++	     we unfortunately can't check TREE_THIS_VOLATILE, as a cast
++	     may make a volatile object later.  */
+ 	  if (TYPE_SIZE (type) != 0
+ 	      && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
+ 	      && GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT
+-	      && !(TREE_THIS_VOLATILE (decl)
+-		   && flag_strict_volatile_bitfields > 0))
++	      && flag_strict_volatile_bitfields <= 0)
+ 	    {
+ 	      enum machine_mode xmode
+ 		= mode_for_size_tree (DECL_SIZE (decl), MODE_INT, 1);
+@@ -1926,9 +1955,17 @@
+ 	TYPE_SIZE (type) = int_const_binop (MULT_EXPR, TYPE_SIZE (innertype),
+ 					    bitsize_int (nunits), 0);
+ 
+-	/* Always naturally align vectors.  This prevents ABI changes
+-	   depending on whether or not native vector modes are supported.  */
+-	TYPE_ALIGN (type) = tree_low_cst (TYPE_SIZE (type), 0);
++	/* For vector types, we do not default to the mode's alignment.
++	   Instead, query a target hook, defaulting to natural alignment.
++	   This prevents ABI changes depending on whether or not native
++	   vector modes are supported.  */
++	TYPE_ALIGN (type) = targetm.vector_alignment (type);
++
++	/* However, if the underlying mode requires a bigger alignment than
++	   what the target hook provides, we cannot use the mode.  For now,
++	   simply reject that case.  */
++	gcc_assert (TYPE_ALIGN (type)
++		    >= GET_MODE_ALIGNMENT (TYPE_MODE (type)));
+         break;
+       }
+ 
+@@ -2039,14 +2076,8 @@
+ 	    && (TYPE_MODE (TREE_TYPE (type)) != BLKmode
+ 		|| TYPE_NO_FORCE_BLK (TREE_TYPE (type))))
+ 	  {
+-	    /* One-element arrays get the component type's mode.  */
+-	    if (simple_cst_equal (TYPE_SIZE (type),
+-				  TYPE_SIZE (TREE_TYPE (type))))
+-	      SET_TYPE_MODE (type, TYPE_MODE (TREE_TYPE (type)));
+-	    else
+-	      SET_TYPE_MODE (type, mode_for_size_tree (TYPE_SIZE (type),
+-						       MODE_INT, 1));
+-
++	    SET_TYPE_MODE (type, mode_for_array (TREE_TYPE (type),
++						 TYPE_SIZE (type)));
+ 	    if (TYPE_MODE (type) != BLKmode
+ 		&& STRICT_ALIGNMENT && TYPE_ALIGN (type) < BIGGEST_ALIGNMENT
+ 		&& TYPE_ALIGN (type) < GET_MODE_ALIGNMENT (TYPE_MODE (type)))
+--- a/src/gcc/target.def
++++ b/src/gcc/target.def
+@@ -1344,6 +1344,13 @@
+  unsigned, (unsigned nunroll, struct loop *loop),
+  NULL)
+ 
++/* True if X is a legitimate MODE-mode immediate operand.  */
++DEFHOOK
++(legitimate_constant_p,
++ "",
++ bool, (enum machine_mode mode, rtx x),
++ default_legitimate_constant_p)
++
+ /* True if the constant X cannot be placed in the constant pool.  */
+ DEFHOOK
+ (cannot_force_const_mem,
+@@ -1611,6 +1618,48 @@
+  bool, (enum machine_mode mode),
+  hook_bool_mode_false)
+ 
++DEFHOOK
++(vector_alignment,
++ "This hook can be used to define the alignment for a vector of type\n\
++@var{type}, in order to comply with a platform ABI.  The default is to\n\
++require natural alignment for vector types.  The alignment returned by\n\
++this hook must be a power-of-two multiple of the default alignment of\n\
++the vector element type.",
++ HOST_WIDE_INT, (const_tree type),
++ default_vector_alignment)
++
++/* True if we should try to use a scalar mode to represent an array,
++   overriding the usual MAX_FIXED_MODE limit.  */
++DEFHOOK
++(array_mode_supported_p,
++ "Return true if GCC should try to use a scalar mode to store an array\n\
++of @var{nelems} elements, given that each element has mode @var{mode}.\n\
++Returning true here overrides the usual @code{MAX_FIXED_MODE} limit\n\
++and allows GCC to use any defined integer mode.\n\
++\n\
++One use of this hook is to support vector load and store operations\n\
++that operate on several homogeneous vectors.  For example, ARM NEON\n\
++has operations like:\n\
++\n\
++@smallexample\n\
++int8x8x3_t vld3_s8 (const int8_t *)\n\
++@end smallexample\n\
++\n\
++where the return type is defined as:\n\
++\n\
++@smallexample\n\
++typedef struct int8x8x3_t\n\
++@{\n\
++  int8x8_t val[3];\n\
++@} int8x8x3_t;\n\
++@end smallexample\n\
++\n\
++If this hook allows @code{val} to have a scalar mode, then\n\
++@code{int8x8x3_t} can have the same mode.  GCC can then store\n\
++@code{int8x8x3_t}s in registers rather than forcing them onto the stack.",
++ bool, (enum machine_mode mode, unsigned HOST_WIDE_INT nelems),
++ hook_bool_mode_uhwi_false)
++
+ /* Compute cost of moving data from a register of class FROM to one of
+    TO, using MODE.  */
+ DEFHOOK
+--- a/src/gcc/target.h
++++ b/src/gcc/target.h
+@@ -128,7 +128,8 @@
+   scalar_to_vec,
+   cond_branch_not_taken,
+   cond_branch_taken,
+-  vec_perm
++  vec_perm,
++  vec_promote_demote
+ };
+ 
+ /* Sets of optimization levels at which an option may be enabled by
+--- a/src/gcc/targhooks.c
++++ b/src/gcc/targhooks.c
+@@ -529,6 +529,7 @@
+       case scalar_to_vec:
+       case cond_branch_not_taken:
+       case vec_perm:
++      case vec_promote_demote:
+         return 1;
+ 
+       case unaligned_load:
+@@ -978,6 +979,13 @@
+    return id;
+ }
+ 
++/* Default to natural alignment for vector types.  */
++HOST_WIDE_INT
++default_vector_alignment (const_tree type)
++{
++  return tree_low_cst (TYPE_SIZE (type), 0);
++}
++
+ bool
+ default_builtin_vector_alignment_reachable (const_tree type, bool is_packed)
+ {
+@@ -1519,4 +1527,15 @@
+     { OPT_LEVELS_NONE, 0, NULL, 0 }
+   };
+ 
++bool
++default_legitimate_constant_p (enum machine_mode mode ATTRIBUTE_UNUSED,
++			       rtx x ATTRIBUTE_UNUSED)
++{
++#ifdef LEGITIMATE_CONSTANT_P
++  return LEGITIMATE_CONSTANT_P (x);
++#else
++  return true;
++#endif
++}
++
+ #include "gt-targhooks.h"
+--- a/src/gcc/targhooks.h
++++ b/src/gcc/targhooks.h
+@@ -85,6 +85,8 @@
+ 
+ extern tree default_builtin_reciprocal (unsigned int, bool, bool);
+ 
++extern HOST_WIDE_INT default_vector_alignment (const_tree);
++
+ extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
+ extern bool
+ default_builtin_support_vector_misalignment (enum machine_mode mode,
+@@ -183,3 +185,4 @@
+ 
+ extern void *default_get_pch_validity (size_t *);
+ extern const char *default_pch_valid_p (const void *, size_t);
++extern bool default_legitimate_constant_p (enum machine_mode, rtx);
+--- a/src/gcc/testsuite/c-c++-common/abi-bf.c
++++ b/src/gcc/testsuite/c-c++-common/abi-bf.c
+@@ -0,0 +1,3 @@
++/* { dg-warning "incompatible" } */
++/* { dg-do compile } */
++/* { dg-options "-fstrict-volatile-bitfields -fabi-version=1" } */
+--- a/src/gcc/testsuite/ChangeLog
++++ b/src/gcc/testsuite/ChangeLog
+@@ -1,3 +1,227 @@
++2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>
++
++	Backport from trunk:
++	2012-07-13  Hans-Peter Nilsson  <hp@axis.com>
++
++	PR rtl-optimization/53908
++	* gcc.dg/torture/pr53908.c: New test.
++
++2012-07-14  Mikael Morin  <mikael.morin@gcc.gnu.org>
++
++	Backport from trunk:
++	2012-01-09  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/51758
++	* gfortran.dg/optional_absent_2.f90: New.
++
++2012-07-03  Michael Hope  <michael.hope@linaro.org>
++
++	PR c++/53814
++	* g++.dg/cpp0x/nullptr28.C: Change selector for explicit
++	options.
++
++2012-06-28  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/53790
++	* gcc.dg/torture/pr53790.c: New testcase.
++
++2012-06-25  Jason Merrill  <jason@redhat.com>
++
++	PR c++/52988
++	* g++.dg/cpp0x/nullptr28.C: New.
++
++2012-06-19  Kaz Kojima  <kkojima@gcc.gnu.org>
++
++	* gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets
++	and add __sh__ case.
++
++2012-06-14  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53597
++	* gfortran.dg/save_4.f90: New.
++
++2012-06-13  Christian Bruel  <christian.bruel@st.com>
++
++	PR target/53621
++	* gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH.
++
++2012-06-05  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/50619
++	* gfortran.dg/init_flag_10.f90: New.
++
++2012-06-04  Edmar Wienskoski  <edmar@freescale.com>
++
++	PR target/53559
++	* gcc.target/powerpc/cell_builtin_1.c: New test case.
++	* gcc.target/powerpc/cell_builtin_2.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_3.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_4.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_5.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_6.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_7.c: Ditto.
++	* gcc.target/powerpc/cell_builtin_8.c: Ditto.
++
++2012-05-23  Michael Hope  <michael.hope@linaro.org>
++
++	PR c++/52796
++	* g++.dg/cpp0x/variadic-value1.C: Change selector for explicit
++	options.
++
++2012-05-23  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53389
++	* gfortran.dg/realloc_on_assign_15.f90: New.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2011-11-10  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/51071
++	* gcc.dg/torture/pr51071.c: New testcase.
++	* gcc.dg/torture/pr51071-2.c: Likewise.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2012-02-28  Richard Guenther  <rguenther@suse.de>
++
++	PR target/52407
++	* gcc.dg/torture/pr52407.c: New testcase.
++
++2012-05-22  Richard Guenther  <rguenther@suse.de>
++
++	Backport from mainline
++	2012-04-12  Richard Guenther  <rguenther@suse.de>
++
++	PR c/52862
++	* gcc.dg/pr52862.c: New testcase.
++
++2012-05-21  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/53418
++	* gcc.c-torture/compile/pr53418-1.c,
++	gcc.c-torture/compile/pr53418-2.c: New tests.
++
++2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backport from mainline
++	2012-05-21  Uros Bizjak  <ubizjak@gmail.com>
++		    H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR target/53416
++	* gcc.target/i386/pr53416.c: New file.
++
++2012-05-14  Uros Bizjak  <ubizjak@gmail.com>
++
++	* gcc.target/i386/avx256-unaligned-load-[1234].c: Update scan strings.
++	* gcc.target/i386/avx256-unaligned-store-[1234].c: Ditto.
++
++2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/53199
++	* gcc.target/powwerpc/pr53199.c: New file.
++
++2012-05-02  Tobias Burnus  <burnus@net-b.de>
++
++	Backport from mainline
++	2012-04-16  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52864
++	* gfortran.dg/pointer_intent_6.f90: New.
++
++2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-04-27  Paolo Bonzini  <bonzini@gnu.org>
++
++	PR target/53138
++	* gcc.c-torture/execute/20120427-1.c: New testcase.
++
++2012-04-24  Jakub Jelinek  <jakub@redhat.com>
++
++	PR middle-end/53084
++	* gcc.c-torture/execute/pr53084.c: New test.
++
++2012-04-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2012-04-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/52775
++	* gcc.target/powerpc/pr52775.c: New file.
++
++2012-04-03  Jason Merrill  <jason@redhat.com>
++
++	PR c++/52796
++	* g++.dg/cpp0x/variadic-value1.C: New.
++
++2012-03-28  Joey Ye  <joey.ye@arm.com>
++
++	Backported from mainline
++	2011-12-20  Bernd Schmidt  <bernds@codesourcery.com>
++
++	PR middle-end/51200
++	* gcc.target/arm/volatile-bitfields-4.c: New test.
++	* c-c++-common/abi-bf.c: New test.
++
++	2011-12-26  Joey Ye  <joey.ye@arm.com>
++
++	PR middle-end/51200
++	* gcc.dg/volatile-bitfields-2.c: New test.
++
++2012-03-28  Martin Jambor  <mjambor@suse.cz>
++
++	Backported from mainline
++	2012-03-27  Martin Jambor  <mjambor@suse.cz>
++
++	PR middle-end/52693
++	* gcc.dg/torture/pr52693.c: New test.
++
++2012-03-28  Jakub Jelinek  <jakub@redhat.com>
++
++	PR target/52736
++	* gcc.target/i386/pr52736.c: New test.
++
++2012-03-24  Jan Hubicka  <jh@suse.cz>
++
++	PR middle-end/51737
++	* g++.dg/torture/pr51737.C: New testcase
++
++2012-03-24  Steven Bosscher  <steven@gcc.gnu.org>
++
++	PR middle-end/52640
++	* gcc.c-torture/compile/limits-externdecl.c: New test.
++
++2012-03-16  Jan Hubicka  <jh@suse.cz>
++
++	PR middle-end/48600
++	* g++.dg/torture/pr48600.C: New testcase.
++
++2012-03-10  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52469
++	* gfortran.dg/proc_ptr_34.f90: New.
++
++2012-03-06  Tobias Burnus  <burnus@net-b.de>
++
++	Backport from mainline
++	2012-03-02  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/52452
++	* gfortran.dg/intrinsic_8.f90: New.
++
++2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
++
++	Backport from mainline
++	2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
++
++	* gcc.target/powerpc/pr52457.c: New test.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/gcc/testsuite/gcc.c-torture/compile/20110401-1.c
++++ b/src/gcc/testsuite/gcc.c-torture/compile/20110401-1.c
+@@ -0,0 +1,22 @@
++void asn1_length_der (unsigned long int len, unsigned char *ans, int *ans_len)
++{
++    int k;
++    unsigned char temp[4];
++    if (len < 128) {
++	if (ans != ((void *) 0))
++	    ans[0] = (unsigned char) len;
++	*ans_len = 1;
++    } else {
++	k = 0;
++	while (len) {
++	    temp[k++] = len & 0xFF;
++	    len = len >> 8;
++	}
++	*ans_len = k + 1;
++	if (ans != ((void *) 0)) {
++	    ans[0] = ((unsigned char) k & 0x7F) + 128;
++	    while (k--)
++		ans[*ans_len - 1 - k] = temp[k];
++	}
++    }
++}
+--- a/src/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
++++ b/src/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
+@@ -0,0 +1,56 @@
++/* Inspired by the test case for PR middle-end/52640.  */
++
++typedef struct
++{
++    char *value;
++} REFERENCE;
++
++/* Add a few "extern int Xxxxxx ();" declarations.  */
++#undef DEF
++#undef LIM1
++#undef LIM2
++#undef LIM3
++#undef LIM4
++#undef LIM5
++#undef LIM6
++#define DEF(x) 	extern int x ()
++#define LIM1(x) DEF(x##0); DEF(x##1); DEF(x##2); DEF(x##3); DEF(x##4); \
++		DEF(x##5); DEF(x##6); DEF(x##7); DEF(x##8); DEF(x##9);
++#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
++		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
++#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
++		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
++#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
++		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
++#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
++		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
++#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
++		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
++LIM5 (X);
++
++/* Add references to them, or GCC will simply ignore the extern decls.  */
++#undef DEF
++#undef LIM1
++#undef LIM2
++#undef LIM3
++#undef LIM4
++#undef LIM5
++#undef LIM6
++#define DEF(x)	(char *) x
++#define LIM1(x) DEF(x##0), DEF(x##1), DEF(x##2), DEF(x##3), DEF(x##4), \
++		DEF(x##5), DEF(x##6), DEF(x##7), DEF(x##8), DEF(x##9),
++#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
++		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
++#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
++		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
++#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
++		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
++#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
++		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
++#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
++		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
++REFERENCE references[] = {
++  LIM5 (X)
++  0
++};
++
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  int i = (0 ? 1 : 0U / 0);
++}
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  int i = (1 ? 0U / 0 : 1);
++}
+--- a/src/gcc/testsuite/gcc.c-torture/execute/20120427-1.c
++++ b/src/gcc/testsuite/gcc.c-torture/execute/20120427-1.c
+@@ -0,0 +1,36 @@
++typedef struct sreal
++{
++  unsigned sig;		/* Significant.  */
++  int exp;		/* Exponent.  */
++} sreal;
++
++sreal_compare (sreal *a, sreal *b)
++{
++  if (a->exp > b->exp)
++    return 1;
++  if (a->exp < b->exp)
++    return -1;
++  if (a->sig > b->sig)
++    return 1;
++  return -(a->sig < b->sig);
++}
++
++sreal a[] = {
++   { 0, 0 },
++   { 1, 0 },
++   { 0, 1 },
++   { 1, 1 }
++};
++
++int main()
++{
++  int i, j;
++  for (i = 0; i <= 3; i++) {
++    for (j = 0; j < 3; j++) {
++      if (i < j && sreal_compare(&a[i], &a[j]) != -1) abort();
++      if (i == j && sreal_compare(&a[i], &a[j]) != 0) abort();
++      if (i > j && sreal_compare(&a[i], &a[j]) != 1) abort();
++    }
++  }
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.c-torture/execute/pr53084.c
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr53084.c
+@@ -0,0 +1,18 @@
++/* PR middle-end/53084 */
++
++extern void abort (void);
++
++__attribute__((noinline, noclone)) void
++bar (const char *p)
++{
++  if (p[0] != 'o' || p[1] != 'o' || p[2])
++    abort ();
++}
++
++int
++main ()
++{
++  static const char *const foo[] = {"foo" + 1};
++  bar (foo[0]);
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.dg/align-2.c
++++ b/src/gcc/testsuite/gcc.dg/align-2.c
+@@ -1,5 +1,5 @@
+ /* PR 17962 */
+-/* { dg-do compile } */
++/* { dg-do compile { target vect_natural_alignment } } */
+ /* { dg-options "" } */
+ 
+ typedef float v4 __attribute__((vector_size(sizeof(float)*4)));
+--- a/src/gcc/testsuite/gcc.dg/di-longlong64-sync-1.c
++++ b/src/gcc/testsuite/gcc.dg/di-longlong64-sync-1.c
+@@ -0,0 +1,164 @@
++/* { dg-do run } */
++/* { dg-require-effective-target sync_longlong } */
++/* { dg-options "-std=gnu99" } */
++/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
++/* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
++
++
++/* Test basic functionality of the intrinsics.  The operations should
++   not be optimized away if no one checks the return values.  */
++
++/* Based on ia64-sync-[12].c, but 1) long on ARM is 32 bit so use long long
++   (an explicit 64bit type maybe a better bet) and 2) Use values that cross
++   the 32bit boundary and cause carries since the actual maths are done as
++   pairs of 32 bit instructions.  */
++
++/* Note: This file is #included by some of the ARM tests.  */
++
++__extension__ typedef __SIZE_TYPE__ size_t;
++
++extern void abort (void);
++extern void *memcpy (void *, const void *, size_t);
++extern int memcmp (const void *, const void *, size_t);
++
++/* Temporary space where the work actually gets done.  */
++static long long AL[24];
++/* Values copied into AL before we start.  */
++static long long init_di[24] = { 0x100000002ll, 0x200000003ll, 0, 1,
++
++				 0x100000002ll, 0x100000002ll,
++				 0x100000002ll, 0x100000002ll,
++
++				 0, 0x1000e0de0000ll,
++				 42 , 0xc001c0de0000ll,
++
++				 -1ll, 0, 0xff00ff0000ll, -1ll,
++
++				 0, 0x1000e0de0000ll,
++				 42 , 0xc001c0de0000ll,
++
++				 -1ll, 0, 0xff00ff0000ll, -1ll};
++/* This is what should be in AL at the end.  */
++static long long test_di[24] = { 0x1234567890ll, 0x1234567890ll, 1, 0,
++
++				 0x100000002ll, 0x100000002ll,
++				 0x100000002ll, 0x100000002ll,
++
++				 1, 0xc001c0de0000ll,
++				 20, 0x1000e0de0000ll,
++
++				 0x300000007ll , 0x500000009ll,
++				 0xf100ff0001ll, ~0xa00000007ll,
++
++				 1, 0xc001c0de0000ll,
++				 20, 0x1000e0de0000ll,
++
++				 0x300000007ll , 0x500000009ll,
++				 0xf100ff0001ll, ~0xa00000007ll };
++
++/* First check they work in terms of what they do to memory.  */
++static void
++do_noret_di (void)
++{
++  __sync_val_compare_and_swap (AL+0, 0x100000002ll, 0x1234567890ll);
++  __sync_bool_compare_and_swap (AL+1, 0x200000003ll, 0x1234567890ll);
++  __sync_lock_test_and_set (AL+2, 1);
++  __sync_lock_release (AL+3);
++
++  /* The following tests should not change the value since the
++     original does NOT match.  */
++  __sync_val_compare_and_swap (AL+4, 0x000000002ll, 0x1234567890ll);
++  __sync_val_compare_and_swap (AL+5, 0x100000000ll, 0x1234567890ll);
++  __sync_bool_compare_and_swap (AL+6, 0x000000002ll, 0x1234567890ll);
++  __sync_bool_compare_and_swap (AL+7, 0x100000000ll, 0x1234567890ll);
++
++  __sync_fetch_and_add (AL+8, 1);
++  __sync_fetch_and_add (AL+9, 0xb000e0000000ll); /* + to both halves & carry.  */
++  __sync_fetch_and_sub (AL+10, 22);
++  __sync_fetch_and_sub (AL+11, 0xb000e0000000ll);
++
++  __sync_fetch_and_and (AL+12, 0x300000007ll);
++  __sync_fetch_and_or (AL+13, 0x500000009ll);
++  __sync_fetch_and_xor (AL+14, 0xe00000001ll);
++  __sync_fetch_and_nand (AL+15, 0xa00000007ll);
++
++  /* These should be the same as the fetch_and_* cases except for
++     return value.  */
++  __sync_add_and_fetch (AL+16, 1);
++  /* add to both halves & carry.  */
++  __sync_add_and_fetch (AL+17, 0xb000e0000000ll);
++  __sync_sub_and_fetch (AL+18, 22);
++  __sync_sub_and_fetch (AL+19, 0xb000e0000000ll);
++
++  __sync_and_and_fetch (AL+20, 0x300000007ll);
++  __sync_or_and_fetch (AL+21, 0x500000009ll);
++  __sync_xor_and_fetch (AL+22, 0xe00000001ll);
++  __sync_nand_and_fetch (AL+23, 0xa00000007ll);
++}
++
++/* Now check return values.  */
++static void
++do_ret_di (void)
++{
++  if (__sync_val_compare_and_swap (AL+0, 0x100000002ll, 0x1234567890ll) !=
++	0x100000002ll) abort ();
++  if (__sync_bool_compare_and_swap (AL+1, 0x200000003ll, 0x1234567890ll) !=
++	1) abort ();
++  if (__sync_lock_test_and_set (AL+2, 1) != 0) abort ();
++  __sync_lock_release (AL+3); /* no return value, but keep to match results.  */
++
++  /* The following tests should not change the value since the
++     original does NOT match.  */
++  if (__sync_val_compare_and_swap (AL+4, 0x000000002ll, 0x1234567890ll) !=
++	0x100000002ll) abort ();
++  if (__sync_val_compare_and_swap (AL+5, 0x100000000ll, 0x1234567890ll) !=
++	0x100000002ll) abort ();
++  if (__sync_bool_compare_and_swap (AL+6, 0x000000002ll, 0x1234567890ll) !=
++	0) abort ();
++  if (__sync_bool_compare_and_swap (AL+7, 0x100000000ll, 0x1234567890ll) !=
++	0) abort ();
++
++  if (__sync_fetch_and_add (AL+8, 1) != 0) abort ();
++  if (__sync_fetch_and_add (AL+9, 0xb000e0000000ll) != 0x1000e0de0000ll) abort ();
++  if (__sync_fetch_and_sub (AL+10, 22) != 42) abort ();
++  if (__sync_fetch_and_sub (AL+11, 0xb000e0000000ll) != 0xc001c0de0000ll)
++	abort ();
++
++  if (__sync_fetch_and_and (AL+12, 0x300000007ll) != -1ll) abort ();
++  if (__sync_fetch_and_or (AL+13, 0x500000009ll) != 0) abort ();
++  if (__sync_fetch_and_xor (AL+14, 0xe00000001ll) != 0xff00ff0000ll) abort ();
++  if (__sync_fetch_and_nand (AL+15, 0xa00000007ll) != -1ll) abort ();
++
++  /* These should be the same as the fetch_and_* cases except for
++     return value.  */
++  if (__sync_add_and_fetch (AL+16, 1) != 1) abort ();
++  if (__sync_add_and_fetch (AL+17, 0xb000e0000000ll) != 0xc001c0de0000ll)
++	abort ();
++  if (__sync_sub_and_fetch (AL+18, 22) != 20) abort ();
++  if (__sync_sub_and_fetch (AL+19, 0xb000e0000000ll) != 0x1000e0de0000ll)
++	abort ();
++
++  if (__sync_and_and_fetch (AL+20, 0x300000007ll) != 0x300000007ll) abort ();
++  if (__sync_or_and_fetch (AL+21, 0x500000009ll) != 0x500000009ll) abort ();
++  if (__sync_xor_and_fetch (AL+22, 0xe00000001ll) != 0xf100ff0001ll) abort ();
++  if (__sync_nand_and_fetch (AL+23, 0xa00000007ll) != ~0xa00000007ll) abort ();
++}
++
++int main ()
++{
++  memcpy (AL, init_di, sizeof (init_di));
++
++  do_noret_di ();
++
++  if (memcmp (AL, test_di, sizeof (test_di)))
++    abort ();
++
++  memcpy (AL, init_di, sizeof (init_di));
++
++  do_ret_di ();
++
++  if (memcmp (AL, test_di, sizeof (test_di)))
++    abort ();
++
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.dg/di-sync-multithread.c
++++ b/src/gcc/testsuite/gcc.dg/di-sync-multithread.c
+@@ -0,0 +1,205 @@
++/* { dg-do run } */
++/* { dg-require-effective-target sync_longlong } */
++/* { dg-require-effective-target pthread_h } */
++/* { dg-require-effective-target pthread } */
++/* { dg-options "-pthread -std=gnu99" } */
++
++/* test of long long atomic ops performed in parallel in 3 pthreads
++   david.gilbert@linaro.org */
++
++#include <pthread.h>
++#include <unistd.h>
++
++/*#define DEBUGIT 1 */
++
++#ifdef DEBUGIT
++#include <stdio.h>
++
++#define DOABORT(x,...) {\
++	 fprintf (stderr, x, __VA_ARGS__); fflush (stderr); abort ();\
++	 }
++
++#else
++
++#define DOABORT(x,...) abort ();
++
++#endif
++
++/* Passed to each thread to describe which bits it is going to work on.  */
++struct threadwork {
++  unsigned long long count; /* incremented each time the worker loops.  */
++  unsigned int thread;    /* ID */
++  unsigned int addlsb;    /* 8 bit */
++  unsigned int logic1lsb; /* 5 bit */
++  unsigned int logic2lsb; /* 8 bit */
++};
++
++/* The shared word where all the atomic work is done.  */
++static volatile long long workspace;
++
++/* A shared word to tell the workers to quit when non-0.  */
++static long long doquit;
++
++extern void abort (void);
++
++/* Note this test doesn't test the return values much.  */
++void*
++worker (void* data)
++{
++  struct threadwork *tw = (struct threadwork*)data;
++  long long add1bit = 1ll << tw->addlsb;
++  long long logic1bit = 1ll << tw->logic1lsb;
++  long long logic2bit = 1ll << tw->logic2lsb;
++
++  /* Clear the bits we use.  */
++  __sync_and_and_fetch (&workspace, ~(0xffll * add1bit));
++  __sync_fetch_and_and (&workspace, ~(0x1fll * logic1bit));
++  __sync_fetch_and_and (&workspace, ~(0xffll * logic2bit));
++
++  do
++    {
++      long long tmp1, tmp2, tmp3;
++      /* OK, lets try and do some stuff to the workspace - by the end
++         of the main loop our area should be the same as it is now - i.e. 0.  */
++
++      /* Push the arithmetic section upto 128 - one of the threads will
++         case this to carry accross the 32bit boundary.  */
++      for (tmp2 = 0; tmp2 < 64; tmp2++)
++	{
++	  /* Add 2 using the two different adds.  */
++	  tmp1 = __sync_add_and_fetch (&workspace, add1bit);
++	  tmp3 = __sync_fetch_and_add (&workspace, add1bit);
++
++	  /* The value should be the intermediate add value in both cases.  */
++	  if ((tmp1 & (add1bit * 0xff)) != (tmp3 & (add1bit * 0xff)))
++	    DOABORT ("Mismatch of add intermediates on thread %d "
++			"workspace=0x%llx tmp1=0x%llx "
++			"tmp2=0x%llx tmp3=0x%llx\n",
++			 tw->thread, workspace, tmp1, tmp2, tmp3);
++	}
++
++      /* Set the logic bits.  */
++      tmp2=__sync_or_and_fetch (&workspace,
++			  0x1fll * logic1bit | 0xffll * logic2bit);
++
++      /* Check the logic bits are set and the arithmetic value is correct.  */
++      if ((tmp2 & (0x1fll * logic1bit | 0xffll * logic2bit
++			| 0xffll * add1bit))
++	  != (0x1fll * logic1bit | 0xffll * logic2bit | 0x80ll * add1bit))
++	DOABORT ("Midloop check failed on thread %d "
++			"workspace=0x%llx tmp2=0x%llx "
++			"masktmp2=0x%llx expected=0x%llx\n",
++		tw->thread, workspace, tmp2,
++		tmp2 & (0x1fll * logic1bit | 0xffll * logic2bit |
++			 0xffll * add1bit),
++		(0x1fll * logic1bit | 0xffll * logic2bit | 0x80ll * add1bit));
++
++      /* Pull the arithmetic set back down to 0 - again this should cause a
++	 carry across the 32bit boundary in one thread.  */
++
++      for (tmp2 = 0; tmp2 < 64; tmp2++)
++	{
++	  /* Subtract 2 using the two different subs.  */
++	  tmp1=__sync_sub_and_fetch (&workspace, add1bit);
++	  tmp3=__sync_fetch_and_sub (&workspace, add1bit);
++
++	  /* The value should be the intermediate sub value in both cases.  */
++	  if ((tmp1 & (add1bit * 0xff)) != (tmp3 & (add1bit * 0xff)))
++	    DOABORT ("Mismatch of sub intermediates on thread %d "
++			"workspace=0x%llx tmp1=0x%llx "
++			"tmp2=0x%llx tmp3=0x%llx\n",
++			tw->thread, workspace, tmp1, tmp2, tmp3);
++	}
++
++
++      /* Clear the logic bits.  */
++      __sync_fetch_and_xor (&workspace, 0x1fll * logic1bit);
++      tmp3=__sync_and_and_fetch (&workspace, ~(0xffll * logic2bit));
++
++      /* The logic bits and the arithmetic bits should be zero again.  */
++      if (tmp3 & (0x1fll * logic1bit | 0xffll * logic2bit | 0xffll * add1bit))
++	DOABORT ("End of worker loop; bits none 0 on thread %d "
++			"workspace=0x%llx tmp3=0x%llx "
++			"mask=0x%llx maskedtmp3=0x%llx\n",
++		tw->thread, workspace, tmp3, (0x1fll * logic1bit |
++			0xffll * logic2bit | 0xffll * add1bit),
++		tmp3 & (0x1fll * logic1bit | 0xffll * logic2bit | 0xffll * add1bit));
++
++      __sync_add_and_fetch (&tw->count, 1);
++    }
++  while (!__sync_bool_compare_and_swap (&doquit, 1, 1));
++
++  pthread_exit (0);
++}
++
++int
++main ()
++{
++  /* We have 3 threads doing three sets of operations, an 8 bit
++     arithmetic field, a 5 bit logic field and an 8 bit logic
++     field (just to pack them all in).
++
++  6      5       4       4       3       2       1
++  3      6       8       0       2       4       6       8       0
++  |...,...|...,...|...,...|...,...|...,...|...,...|...,...|...,...
++  - T0   --  T1  -- T2   --T2 --  T0  -*- T2-- T1-- T1   -***- T0-
++   logic2  logic2  arith   log2  arith  log1 log1  arith     log1
++
++  */
++  unsigned int t;
++  long long tmp;
++  int err;
++
++  struct threadwork tw[3]={
++    { 0ll, 0, 27, 0, 56 },
++    { 0ll, 1,  8,16, 48 },
++    { 0ll, 2, 40,21, 35 }
++  };
++
++  pthread_t threads[3];
++
++  __sync_lock_release (&doquit);
++
++  /* Get the work space into a known value - All 1's.  */
++  __sync_lock_release (&workspace); /* Now all 0.  */
++  tmp = __sync_val_compare_and_swap (&workspace, 0, -1ll);
++  if (tmp!=0)
++    DOABORT ("Initial __sync_val_compare_and_swap wasn't 0 workspace=0x%llx "
++		"tmp=0x%llx\n", workspace,tmp);
++
++  for (t = 0; t < 3; t++)
++  {
++    err=pthread_create (&threads[t], NULL , worker, &tw[t]);
++    if (err) DOABORT ("pthread_create failed on thread %d with error %d\n",
++	t, err);
++  };
++
++  sleep (5);
++
++  /* Stop please.  */
++  __sync_lock_test_and_set (&doquit, 1ll);
++
++  for (t = 0; t < 3; t++)
++    {
++      err=pthread_join (threads[t], NULL);
++      if (err)
++	DOABORT ("pthread_join failed on thread %d with error %d\n", t, err);
++    };
++
++  __sync_synchronize ();
++
++  /* OK, so all the workers have finished -
++     the workers should have zero'd their workspace, the unused areas
++     should still be 1.  */
++  if (!__sync_bool_compare_and_swap (&workspace, 0x040000e0ll, 0))
++    DOABORT ("End of run workspace mismatch, got %llx\n", workspace);
++
++  /* All the workers should have done some work.  */
++  for (t = 0; t < 3; t++)
++    {
++      if (tw[t].count == 0) DOABORT ("Worker %d gave 0 count\n", t);
++    };
++
++  return 0;
++}
++
+--- a/src/gcc/testsuite/gcc.dg/pr50193-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr50193-1.c
+@@ -0,0 +1,10 @@
++/* PR 50193: ARM: ICE on a | (b << negative-constant) */
++/* Ensure that the compiler doesn't ICE.  */
++
++/* { dg-options "-O2" } */
++
++int
++foo(int a, int b)
++{
++  return a | (b << -3); /* { dg-warning "left shift count is negative" } */
++}
+--- a/src/gcc/testsuite/gcc.dg/pr50717-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr50717-1.c
+@@ -0,0 +1,26 @@
++/* PR tree-optimization/50717  */
++/* Ensure that widening multiply-and-accumulate is not used where integer
++   type promotion or users' casts should prevent it.  */
++
++/* { dg-options "-O2 -fdump-tree-widening_mul" } */
++
++long long
++f (unsigned int a, char b, long long c)
++{
++  return (a * b) + c;
++}
++
++int
++g (short a, short b, int c)
++{
++  return (short)(a * b) + c;
++}
++
++int
++h (char a, char b, int c)
++{
++  return (char)(a * b) + c;
++}
++
++/* { dg-final { scan-tree-dump-times "WIDEN_MULT_PLUS_EXPR" 0 "widening_mul" } } */
++/* { dg-final { cleanup-tree-dump "widening_mul" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr52862.c
++++ b/src/gcc/testsuite/gcc.dg/pr52862.c
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-O" } */
++
++void ASMAtomicWritePtrVoid(const void *pv);
++void rtThreadDestroy(void)
++{
++  void * const pvTypeChecked = ((void *)0);
++  ASMAtomicWritePtrVoid((void *)(pvTypeChecked));
++}
+--- a/src/gcc/testsuite/gcc.dg/sms-10.c
++++ b/src/gcc/testsuite/gcc.dg/sms-10.c
+@@ -0,0 +1,118 @@
++ /* { dg-do run } */
++ /* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -fdump-rtl-sms" } */
++
++
++typedef __SIZE_TYPE__ size_t;
++extern void *malloc (size_t);
++extern void free (void *);
++extern void abort (void);
++
++struct regstat_n_sets_and_refs_t
++{
++  int sets;
++  int refs;
++};
++
++struct regstat_n_sets_and_refs_t *regstat_n_sets_and_refs;
++
++struct df_reg_info
++{
++  unsigned int n_refs;
++};
++
++struct df_d
++{
++  struct df_reg_info **def_regs;
++  struct df_reg_info **use_regs;
++};
++struct df_d *df;
++
++static inline int
++REG_N_SETS (int regno)
++{
++  return regstat_n_sets_and_refs[regno].sets;
++}
++
++__attribute__ ((noinline))
++     int max_reg_num (void)
++{
++  return 100;
++}
++
++__attribute__ ((noinline))
++     void regstat_init_n_sets_and_refs (void)
++{
++  unsigned int i;
++  unsigned int max_regno = max_reg_num ();
++
++  for (i = 0; i < max_regno; i++)
++    {
++      (regstat_n_sets_and_refs[i].sets = (df->def_regs[(i)]->n_refs));
++      (regstat_n_sets_and_refs[i].refs =
++       (df->use_regs[(i)]->n_refs) + REG_N_SETS (i));
++    }
++}
++
++int a_sets[100] =
++  { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
++  21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
++  40, 41, 42,
++  43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
++  62, 63, 64,
++  65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
++  84, 85, 86,
++  87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
++};
++
++int a_refs[100] =
++  { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
++  40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
++  78, 80, 82,
++  84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116,
++  118, 120,
++  122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150,
++  152, 154, 156,
++  158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186,
++  188, 190, 192,
++  194, 196, 198
++};
++
++int
++main ()
++{
++  struct df_reg_info *b[100], *c[100];
++  struct df_d df1;
++  size_t s = sizeof (struct df_reg_info);
++  struct regstat_n_sets_and_refs_t a[100];
++
++  df = &df1;
++  regstat_n_sets_and_refs = a;
++  int i;
++
++  for (i = 0; i < 100; i++)
++    {
++      b[i] = (struct df_reg_info *) malloc (s);
++      b[i]->n_refs = i;
++      c[i] = (struct df_reg_info *) malloc (s);
++      c[i]->n_refs = i;
++    }
++
++  df1.def_regs = b;
++  df1.use_regs = c;
++  regstat_init_n_sets_and_refs ();
++
++  for (i = 0; i < 100; i++)
++    if ((a[i].sets != a_sets[i]) || (a[i].refs != a_refs[i]))
++      abort ();
++
++  for (i = 0; i < 100; i++)
++    {
++      free (b[i]);
++      free (c[i]);
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target powerpc*-*-* } } } */
++/* { dg-final { cleanup-rtl-dump "sms" } } */
+--- a/src/gcc/testsuite/gcc.dg/sms-11.c
++++ b/src/gcc/testsuite/gcc.dg/sms-11.c
+@@ -0,0 +1,37 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -fdump-rtl-sms" } */
++
++extern void abort (void);
++
++float out[4][4] = { 6, 6, 7, 5, 6, 7, 5, 5, 6, 4, 4, 4, 6, 2, 3, 4 };
++
++void
++invert (void)
++{
++  int i, j, k = 0, swap;
++  float tmp[4][4] = { 5, 6, 7, 5, 6, 7, 5, 5, 4, 4, 4, 4, 3, 2, 3, 4 };
++
++  for (i = 0; i < 4; i++)
++    {
++      for (j = i + 1; j < 4; j++)
++	if (tmp[j][i] > tmp[i][i])
++	  swap = j;
++
++      if (swap != i)
++	tmp[i][k] = tmp[swap][k];
++    }
++
++  for (i = 0; i < 4; i++)
++    for (j = 0; j < 4; j++)
++      if (tmp[i][j] != out[i][j])
++	abort ();
++}
++
++int
++main ()
++{
++  invert ();
++  return 0;
++}
++
++/* { dg-final { cleanup-rtl-dump "sms" } } */
+--- a/src/gcc/testsuite/gcc.dg/sms-9.c
++++ b/src/gcc/testsuite/gcc.dg/sms-9.c
+@@ -0,0 +1,60 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -fmodulo-sched -fno-auto-inc-dec -O2 -fmodulo-sched-allow-regmoves" } */
++
++#include <stdlib.h>
++#include <stdarg.h>
++
++struct df_ref_info
++{
++  unsigned int *begin;
++  unsigned int *count;
++};
++
++extern void *memset (void *s, int c, __SIZE_TYPE__ n);
++
++
++__attribute__ ((noinline))
++     int
++     df_reorganize_refs_by_reg_by_insn (struct df_ref_info *ref_info,
++					int num, unsigned int start)
++{
++  unsigned int m = num;
++  unsigned int offset = 77;
++  unsigned int r;
++
++  for (r = start; r < m; r++)
++    {
++      ref_info->begin[r] = offset;
++      offset += ref_info->count[r];
++      ref_info->count[r] = 0;
++    }
++
++  return offset;
++}
++
++int
++main ()
++{
++  struct df_ref_info temp;
++  int num = 100;
++  unsigned int start = 5;
++  int i, offset;
++
++  temp.begin = malloc (100 * sizeof (unsigned int));
++  temp.count = malloc (100 * sizeof (unsigned int));
++
++  memset (temp.begin, 0, sizeof (unsigned int) * num);
++  memset (temp.count, 0, sizeof (unsigned int) * num);
++
++  for (i = 0; i < num; i++)
++    temp.count[i] = i + 1;
++
++  offset = df_reorganize_refs_by_reg_by_insn (&temp, num, start);
++
++  if (offset != 5112)
++    abort ();
++
++  free (temp.begin);
++  free (temp.count);
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.dg/stack-usage-1.c
++++ b/src/gcc/testsuite/gcc.dg/stack-usage-1.c
+@@ -41,6 +41,8 @@
+ #  define SIZE 160 /* 256 -  96 bytes for register save area */
+ #elif defined (__SPU__)
+ #  define SIZE 224
++#elif defined (__sh__)
++#  define SIZE 252
+ #else
+ #  define SIZE 256
+ #endif
+--- a/src/gcc/testsuite/gcc.dg/torture/pr49030.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr49030.c
+@@ -0,0 +1,19 @@
++void
++sample_move_d32u24_sS (char *dst, float *src, unsigned long nsamples,
++		       unsigned long dst_skip)
++{
++  long long y;
++  while (nsamples--)
++    {
++      y = (long long) (*src * 8388608.0f) << 8;
++      if (y > 2147483647) {
++	*(int *) dst = 2147483647;
++      } else if (y < -2147483647 - 1) {
++	*(int *) dst = -2147483647 - 1;
++      } else {
++	*(int *) dst = (int) y;
++      }
++      dst += dst_skip;
++      src++;
++    }
++}
+--- a/src/gcc/testsuite/gcc.dg/torture/pr49169.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr49169.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile { target { arm*-*-* || mips*-*-* } } } */
++
++#include <stdlib.h>
++#include <stdint.h>
++
++int
++main (void)
++{
++  void *p = main;
++  if ((intptr_t) p & 1)
++    abort ();
++  return 0;
++}
++
++/* { dg-final { scan-assembler "abort" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr51071-2.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr51071-2.c
+@@ -0,0 +1,38 @@
++/* { dg-do compile } */
++/* { dg-options "-fno-delete-null-pointer-checks" } */
++
++extern struct module __this_module;
++static inline void
++trace_module_get  (struct module *mod, unsigned long ip) { }
++struct module;
++static inline __attribute__((no_instrument_function))
++int try_module_get(struct module *module)
++{
++  int ret = 1;
++  if (module)
++    {
++      if (module_is_live(module))
++	{
++	  __label__ __here;
++	  asm("");
++	  __here:
++	  trace_module_get(module, (unsigned long)&&__here);
++	}
++      else
++	ret = 0;
++    }
++  return ret;
++}
++struct net_device;
++struct net_device_ops {
++    int (*ndo_open)(struct net_device *dev);
++};
++int t3e3_open(struct net_device *dev)
++{
++  int ret = hdlc_open(dev);
++  if (ret)
++    return ret;
++  try_module_get((&__this_module));
++  return 0;
++}
++const struct net_device_ops t3e3_ops = { .ndo_open = t3e3_open };
+--- a/src/gcc/testsuite/gcc.dg/torture/pr51071.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr51071.c
+@@ -0,0 +1,33 @@
++/* { dg-do compile } */
++
++void foo (void);
++void bar (void *);
++extern int t;
++
++static void kmalloc_large (int size, int flags)
++{
++  (void) size;
++  (void) flags;
++  foo ();
++  bar (({__here:&&__here;}));
++}
++
++static void kmalloc (int size, int flags)
++{
++  if (size)
++    {
++      if ((unsigned long) size > 0x1000)
++	kmalloc_large (size, flags);
++
++      if (flags)
++	bar (({__here:&&__here;}));
++    }
++}
++
++void compress_file_range (int i, int j, int k)
++{
++  int nr_pages = ({j < k;});
++
++  if (i || t)
++    kmalloc (0x1000UL * nr_pages, 0x40UL);
++}
+--- a/src/gcc/testsuite/gcc.dg/torture/pr52407.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr52407.c
+@@ -0,0 +1,33 @@
++/* { dg-do run } */
++
++extern void abort (void);
++
++typedef long long T;
++typedef T vl_t __attribute__((vector_size(2 * sizeof (T))));
++
++vl_t	ul[4], vl[4] = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
++
++static void
++mul_vl_l(vl_t *u, vl_t *v, T x, int m)
++{
++  vl_t	 w;
++  T *p = (T *)&w;
++  p[0] = p[1] = x;
++  while (m--)
++    *u++ = *v++ * w;
++}
++
++int
++main(int argc, char *argv[])
++{
++  int i;
++  T *pl;
++
++  pl = (T *) &ul;
++  mul_vl_l(ul, vl, 2, 4);
++  for (i = 0; i < 8; i++)
++    if (pl[i] != 2 * (i + 1))
++      abort ();
++
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.dg/torture/pr52693.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr52693.c
+@@ -0,0 +1,33 @@
++/* { dg-do run } */
++
++struct pair
++{
++  int x;
++  int y;
++};
++
++struct array
++{
++  struct pair elems[ 2 ];
++  unsigned index;
++};
++
++extern void abort ();
++
++void __attribute__ ((noinline,noclone))
++test_results (int x1, int y1, int x2, int y2)
++{
++  if (x1 != x2 || y1 != y2)
++    abort ();
++}
++
++int
++main (void)
++{
++  struct array arr = {{{1,2}, {3,4}}, 1};
++  struct pair last = arr.elems[arr.index];
++
++  test_results ( last.x, last.y, arr.elems[1].x, arr.elems[1].y);
++
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.dg/torture/pr53790.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr53790.c
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++
++typedef struct s {
++    int value;
++} s_t;
++
++static inline int 
++read(s_t const *var)
++{
++  return var->value;
++}
++
++int main()
++{
++  extern union u extern_var;
++  return read((s_t *)&extern_var);
++}
+--- a/src/gcc/testsuite/gcc.dg/torture/pr53908.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr53908.c
+@@ -0,0 +1,288 @@
++/* { dg-do run } */
++/* SEGV at comment below.  */
++typedef unsigned int size_t;
++typedef enum har {
++  he_fatal = (-199),
++  he_not_initialized,
++  he_bad_input,
++  he_memory_too_small,
++  he_bad_action,
++  he_duplicate,
++  he_bad_nonce,
++  he_stale_nonce,
++  he_bad_credentials,
++  he_bad_user,
++  he_no_such_user,
++  he_bad_passwd,
++  he_unknown_auth_scheme,
++  he_not_found,
++  he_failed_digest_file_check,
++  he_failed_digest_file_save,
++  he_process_not_privileged,
++  he_other,
++  he_end_of_range,
++  ha_no_error = 0,
++  ha_no_value = 1
++} har;
++typedef enum realm_type
++{
++  axis_realm = 0,
++  ws_realm
++} realm_type;
++
++__attribute__((__noclone__, __noinline__))
++har has_www_auth(char *, size_t, realm_type, har);
++
++__attribute__((__noclone__, __noinline__))
++har has_auth_user(const char *, const char *, realm_type, char *, size_t);
++
++__attribute__((__noclone__, __noinline__))
++char *ha_get_string_value(void);
++
++typedef struct
++{
++  unsigned int track_id;
++  char* user;
++  char* realm;
++  char* authent;
++  int internal_realm;
++} request;
++enum user_response {
++  file_not_found_user_response = -3,
++  access_denied_user_response = -2,
++  no_user_response = -1,
++  ok_user_response = 0
++};
++struct realm_group {
++  char *name;
++  int id;
++  struct realm_group *next;
++};
++struct realm {
++  char *name;
++  char *space;
++  struct realm_group *groups;
++  struct realm *next;
++};
++struct user_info {
++  char *name;
++  int no_groups;
++  int groups[128];
++  struct user_info *next;
++};
++static struct user_info *find_user(const char *user_name);
++static int is_member_of_groups(const struct user_info *user_item,
++                                const struct realm_group *groups);
++int authent_author(request *req);
++struct realm *realms = ((void *)0);
++struct user_info *users = ((void *)0);
++static struct user_info*
++find_user(const char *user_name)
++{
++  struct user_info *user_item;
++  user_item = users;
++  while (user_item != ((void *)0)) {
++    /* SEGV due to NULL access here on user_name.  See also comment below.  */
++    if ((__builtin_strcmp(user_item->name, user_name) == 0))
++      break;
++    user_item = user_item->next;
++  }
++  return user_item;
++}
++static int
++is_member_of_groups(const struct user_info *user_item,
++                    const struct realm_group *groups)
++{
++  const struct realm_group *group_item;
++  int i;
++  group_item = groups;
++  while (group_item != ((void *)0)) {
++    for (i = 0; i < user_item->no_groups; i++)
++      if (user_item->groups[i] == group_item->id)
++	return 0;
++    group_item = group_item->next;
++  }
++  return -1;
++}
++char *foo (void) __attribute__((__noclone__, __noinline__));
++char* g_strdup (const char *str) __attribute__((__malloc__, __noclone__, __noinline__));
++int g_strcmp0 (const char *str1, const char *str2);
++static int
++is_basic(char **user)
++{
++  char *passwd_ptr;
++  char *authent = foo();
++  passwd_ptr = __builtin_strchr(authent, ':');
++  if (passwd_ptr != ((void *)0)) {
++    *user = g_strdup(authent);
++    return 0;
++  }
++  return -1;
++}
++static int
++is_digest(char **user)
++{
++  int ret_val = -1;
++  char *authent;
++  authent = ha_get_string_value();
++  if (authent) {
++    *user = g_strdup(authent);
++    ret_val = 0;
++  }
++  return ret_val;
++}
++__attribute__((__noclone__, __noinline__))
++void g_free (void * mem);
++static enum user_response
++get_user_info_from_header(const realm_type type,
++                          char **user_name,
++                          struct user_info **user_item)
++{
++  int ret_val = no_user_response;
++  if ((type == ws_realm)) {
++    if (is_basic(user_name) == 0)
++      ret_val = access_denied_user_response;
++    if (is_digest(user_name) == 0)
++      ret_val = ok_user_response;
++  } else {
++    if (is_basic(user_name) < 0 &&
++	/* Load of *user_name here, but not after the is_digest call.  */
++	is_digest(user_name) < 0)
++      ;
++    else if ((*user_item = find_user(*user_name)) != ((void *)0))
++      ret_val = ok_user_response;
++    else
++      ret_val = access_denied_user_response;
++    if (ret_val != ok_user_response)
++      g_free(*user_name);
++  }
++  return ret_val;
++}
++static enum user_response
++authenticate_user(request *req,
++                  char **user_name,
++                  struct user_info **user_item)
++{
++  char *authent = ((void *)0);
++  har resp = ha_no_value;
++  enum user_response user_resp;
++  int ret_val = no_user_response;
++  if (req->authent && __builtin_strlen(req->authent)) {
++    authent = req->authent;
++    user_resp = get_user_info_from_header(req->internal_realm,
++                                          user_name,
++                                          user_item);
++    if (user_resp == ok_user_response) {
++      resp = has_auth_user(authent, 0, req->internal_realm, "", 1);
++      if (resp == ha_no_error)
++	ret_val = ok_user_response;
++      else if (resp != he_stale_nonce)
++	ret_val = access_denied_user_response;
++    } else if (user_resp == access_denied_user_response)
++      ret_val = access_denied_user_response;
++  }
++  if (resp != he_memory_too_small && resp != ha_no_error)
++    resp = has_www_auth("", 1, req->internal_realm, resp);
++  return ret_val;
++}
++
++int __attribute__ ((__noinline__, __noclone__))
++authent_author(request *req)
++{
++  struct realm *realm;
++  char *user_name = ((void *)0);
++  struct user_info *user_item = ((void *)0);
++  int res = 0;
++  asm ("");
++  realm = realms;
++  if (__builtin_strcmp("Wsd", realm->name) == 0) {
++    req->internal_realm = ws_realm;
++    is_digest(&user_name);
++  }
++  if (authenticate_user(req, &user_name, &user_item) < 0) {
++    if (user_name != ((void *)0))
++      req->user = user_name;
++    res = -2;
++    goto authent_author_return;
++  }
++  if (is_member_of_groups(user_item, realm->groups) < 0)
++    res = -1;
++authent_author_return:
++  return res;
++}
++
++int good0, good1, good2;
++
++__attribute__ ((__noinline__, __noclone__))
++char *foo(void)
++{
++  asm ("");
++  good0++;
++  return "";
++}
++
++__attribute__ ((__noinline__, __noclone__))
++char *ha_get_string_value(void)
++{
++  asm ("");
++  good1++;
++  return "f";
++}
++
++__attribute__ ((__noinline__, __noclone__))
++har has_auth_user(const char *a, const char *b, realm_type c, char *d, size_t e)
++{
++  asm ("");
++  if (*a != 'z' || a[1] != 0 || b != 0 || c != axis_realm || *d != 0
++      || e != 1)
++    __builtin_abort ();
++  return ha_no_error;
++}
++
++__attribute__ ((__noinline__, __noclone__))
++har has_www_auth(char *a, size_t b, realm_type c, har d)
++{
++  (void)(*a+b+c+d);
++  asm ("");
++  __builtin_abort ();
++}
++
++
++char *strdupped_user = "me";
++__attribute__((__malloc__, __noclone__, __noinline__))
++char* g_strdup (const char *str)
++{
++  asm ("");
++  if (*str != 'f')
++    __builtin_abort ();
++  good2++;
++  return strdupped_user;
++}
++
++__attribute__((__noclone__, __noinline__))
++void g_free (void * mem)
++{
++  (void)mem;
++  asm ("");
++  __builtin_abort ();
++}
++
++struct user_info me = { .name = "me", .no_groups = 1, .groups = {42}, .next = 0};
++struct user_info you = { .name = "you", .next = &me};
++struct realm_group xgroups = { .name = "*", .id = 42, .next = 0};
++
++int main(void)
++{
++  char *orig_user = "?";
++  struct realm r = { .name = "x", .space = "space?", .groups = &xgroups, .next = 0};
++  request req = { .user = orig_user, .realm = "!", .authent = "z",
++		  .internal_realm = axis_realm};
++  realms = &r;
++  users = &you;
++  if (authent_author (&req) != 0 || good0 != 1 || good1 != 1 || good2 != 1
++      || req.user != orig_user
++      || req.internal_realm != axis_realm)
++    __builtin_abort ();
++  __builtin_exit (0);
++}
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
+@@ -48,7 +48,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 0 "slp" } } */
+-/* { dg-final { scan-tree-dump-times "SLP with multiple types" 1 "slp" } } */
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target vect64 } } } */
+ /* { dg-final { cleanup-tree-dump "slp" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-24.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-24.c
+@@ -0,0 +1,59 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define A 3
++#define N 256
++
++short src[N], dst[N];
++
++void foo (short * __restrict__ dst, short * __restrict__ src, int h,
++          int stride, int dummy)
++{
++  int i;
++  h /= 8;
++  for (i = 0; i < h; i++)
++    {
++      dst[0] += A*src[0];
++      dst[1] += A*src[1];
++      dst[2] += A*src[2];
++      dst[3] += A*src[3];
++      dst[4] += A*src[4];
++      dst[5] += A*src[5];
++      dst[6] += A*src[6];
++      dst[7] += A*src[7];
++      dst += stride;
++      src += stride;
++      if (dummy == 32)
++        abort ();
++    }
++}
++
++
++int main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      dst[i] = 0;
++      src[i] = i;
++    }
++
++  foo (dst, src, N, 8, 0);
++
++  for (i = 0; i < N; i++)
++    {
++      if (dst[i] != A * i)
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target vect_element_align } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-25.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-25.c
+@@ -0,0 +1,59 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define A 3
++#define B 4
++#define N 256
++
++short src[N], dst[N];
++
++void foo (short * __restrict__ dst, short * __restrict__ src, int h, int stride, int dummy)
++{
++  int i;
++  h /= 16;
++  for (i = 0; i < h; i++)
++    {
++      dst[0] += A*src[0] + src[stride];
++      dst[1] += A*src[1] + src[1+stride];
++      dst[2] += A*src[2] + src[2+stride];
++      dst[3] += A*src[3] + src[3+stride];
++      dst[4] += A*src[4] + src[4+stride];
++      dst[5] += A*src[5] + src[5+stride];
++      dst[6] += A*src[6] + src[6+stride];
++      dst[7] += A*src[7] + src[7+stride];
++      dst += 8;
++      src += 8;
++      if (dummy == 32)
++        abort ();
++   }
++}
++
++
++int main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++       dst[i] = 0;
++       src[i] = i;
++    }
++
++  foo (dst, src, N, 8, 0);
++
++  for (i = 0; i < N/2; i++)
++    {
++      if (dst[i] != A * i + i + 8)
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target vect_element_align } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-26.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-26.c
+@@ -0,0 +1,60 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define A 3
++#define B 4
++#define N 256
++
++char src[N], dst[N];
++
++void foo (char * __restrict__ dst, char * __restrict__ src, int h,
++          int stride, int dummy)
++{
++  int i;
++  h /= 16;
++  for (i = 0; i < h; i++)
++    {
++      dst[0] += A*src[0];
++      dst[1] += A*src[1];
++      dst[2] += A*src[2];
++      dst[3] += A*src[3];
++      dst[4] += A*src[4];
++      dst[5] += A*src[5];
++      dst[6] += A*src[6];
++      dst[7] += A*src[7];
++      dst += 8;
++      src += 8;
++      if (dummy == 32)
++        abort ();
++   }
++}
++
++
++int main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++       dst[i] = 0;
++       src[i] = i/8;
++    }
++
++  foo (dst, src, N, 8, 0);
++
++  for (i = 0; i < N/2; i++)
++    {
++      if (dst[i] != A * src[i])
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target vect64 } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-27.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-27.c
+@@ -0,0 +1,49 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define A 3
++#define N 16
++
++short src[N], dst[N];
++
++void foo (int a)
++{
++  dst[0] += a*src[0];
++  dst[1] += a*src[1];
++  dst[2] += a*src[2];
++  dst[3] += a*src[3];
++  dst[4] += a*src[4];
++  dst[5] += a*src[5];
++  dst[6] += a*src[6];
++  dst[7] += a*src[7];
++}
++
++
++int main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      dst[i] = 0;
++      src[i] = i;
++    }
++
++  foo (A);
++
++  for (i = 0; i < 8; i++)
++    {
++      if (dst[i] != A * i)
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-28.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-28.c
+@@ -0,0 +1,71 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define A 300
++#define N 16
++
++char src[N];
++short dst[N];
++short src1[N], dst1[N];
++
++void foo (int a)
++{
++  dst[0] = (short) (a * (int) src[0]);
++  dst[1] = (short) (a * (int) src[1]);
++  dst[2] = (short) (a * (int) src[2]);
++  dst[3] = (short) (a * (int) src[3]);
++  dst[4] = (short) (a * (int) src[4]);
++  dst[5] = (short) (a * (int) src[5]);
++  dst[6] = (short) (a * (int) src[6]);
++  dst[7] = (short) (a * (int) src[7]);
++  dst[8] = (short) (a * (int) src[8]);
++  dst[9] = (short) (a * (int) src[9]);
++  dst[10] = (short) (a * (int) src[10]);
++  dst[11] = (short) (a * (int) src[11]);
++  dst[12] = (short) (a * (int) src[12]);
++  dst[13] = (short) (a * (int) src[13]);
++  dst[14] = (short) (a * (int) src[14]);
++  dst[15] = (short) (a * (int) src[15]);
++
++  dst1[0] += src1[0];
++  dst1[1] += src1[1];
++  dst1[2] += src1[2];
++  dst1[3] += src1[3];
++  dst1[4] += src1[4];
++  dst1[5] += src1[5];
++  dst1[6] += src1[6];
++  dst1[7] += src1[7];
++}
++
++
++int main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      dst[i] = 2;
++      dst1[i] = 0;
++      src[i] = i;
++      src1[i] = i+2;
++    }
++
++  foo (A);
++
++  for (i = 0; i < N; i++)
++    {
++      if (dst[i] != A * i
++          || (i < N/2 && dst1[i] != i + 2))
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target { vect_int_mult &&  { vect_pack_trunc && vect_unpack } } } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-29.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-29.c
+@@ -0,0 +1,59 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define A 3
++#define B 4
++#define N 256
++
++short src[N], dst[N];
++
++void foo (short * __restrict__ dst, short * __restrict__ src, int h, int stride, int dummy)
++{
++  int i;
++  h /= 16;
++  for (i = 0; i < h; i++)
++    {
++      dst[0] = A*src[0] + B*src[1];
++      dst[1] = A*src[1] + B*src[2];
++      dst[2] = A*src[2] + B*src[3];
++      dst[3] = A*src[3] + B*src[4];
++      dst[4] = A*src[4] + B*src[5];
++      dst[5] = A*src[5] + B*src[6];
++      dst[6] = A*src[6] + B*src[7];
++      dst[7] = A*src[7] + B*src[8];
++      dst += stride;
++      src += stride;
++      if (dummy == 32)
++        abort ();
++   }
++}
++
++
++int main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++       dst[i] = 0;
++       src[i] = i;
++    }
++
++  foo (dst, src, N, 8, 0);
++
++  for (i = 0; i < N/2; i++)
++    {
++      if (dst[i] != A * src[i] + B * src[i+1])
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp"  { target { vect_int_mult &&  vect_element_align } } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
+@@ -0,0 +1,46 @@
++/* { dg-require-effective-target vect_condition } */
++
++#include "tree-vect.h"
++
++#define N 128
++
++__attribute__((noinline, noclone)) void
++foo (int *a, int stride)
++{
++  int i;
++
++  for (i = 0; i < N/stride; i++, a += stride)
++   {
++     a[0] = a[0] ? 1 : 5;
++     a[1] = a[1] ? 2 : 6;
++     a[2] = a[2] ? 3 : 7;
++     a[3] = a[3] ? 4 : 8;
++   }
++}
++
++
++int a[N];
++int main ()
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    a[i] = i;
++
++  foo (a, 4);
++
++  for (i = 1; i < N; i++)
++    if (a[i] != i%4 + 1)
++      abort ();
++
++  if (a[0] != 5)
++    abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target vect_element_align } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-cond-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-cond-3.c
+@@ -0,0 +1,85 @@
++/* { dg-require-effective-target vect_condition } */
++
++#include "tree-vect.h"
++
++#define N 64 
++
++/* Comparison in int, then/else and result in unsigned char.  */ 
++
++static inline unsigned char
++foo (int x, int y, int a, int b)
++{
++  if (x >= y)
++    return a;
++  else
++    return b;
++}
++
++__attribute__((noinline, noclone)) void
++bar (unsigned char * __restrict__ a, unsigned char * __restrict__ b,
++     unsigned char * __restrict__ c, unsigned char * __restrict__ d,
++     unsigned char * __restrict__ e, int stride, int w)
++{
++  int i;
++  for (i = 0; i < N/stride; i++, a += stride, b += stride, c += stride,
++				d += stride, e += stride)
++    {
++      e[0] = foo (c[0], d[0], a[0] * w, b[0] * w);
++      e[1] = foo (c[1], d[1], a[1] * w, b[1] * w);
++      e[2] = foo (c[2], d[2], a[2] * w, b[2] * w);
++      e[3] = foo (c[3], d[3], a[3] * w, b[3] * w);
++      e[4] = foo (c[4], d[4], a[4] * w, b[4] * w);
++      e[5] = foo (c[5], d[5], a[5] * w, b[5] * w);
++      e[6] = foo (c[6], d[6], a[6] * w, b[6] * w);
++      e[7] = foo (c[7], d[7], a[7] * w, b[7] * w);
++      e[8] = foo (c[8], d[8], a[8] * w, b[8] * w);
++      e[9] = foo (c[9], d[9], a[9] * w, b[9] * w);
++      e[10] = foo (c[10], d[10], a[10] * w, b[10] * w);
++      e[11] = foo (c[11], d[11], a[11] * w, b[11] * w);
++      e[12] = foo (c[12], d[12], a[12] * w, b[12] * w);
++      e[13] = foo (c[13], d[13], a[13] * w, b[13] * w);
++      e[14] = foo (c[14], d[14], a[14] * w, b[14] * w);
++      e[15] = foo (c[15], d[15], a[15] * w, b[15] * w);
++    }
++}
++
++
++unsigned char a[N], b[N], c[N], d[N], e[N];
++
++int main ()
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      a[i] = i;
++      b[i] = 5;
++      e[i] = 0;
++
++      switch (i % 9)
++        {
++        case 0: asm (""); c[i] = i; d[i] = i + 1; break;
++        case 1: c[i] = 0; d[i] = 0; break;
++        case 2: c[i] = i + 1; d[i] = i - 1; break;
++        case 3: c[i] = i; d[i] = i + 7; break;
++        case 4: c[i] = i; d[i] = i; break;
++        case 5: c[i] = i + 16; d[i] = i + 3; break;
++        case 6: c[i] = i - 5; d[i] = i; break;
++        case 7: c[i] = i; d[i] = i; break;
++        case 8: c[i] = i; d[i] = i - 7; break;
++        }
++    }
++
++  bar (a, b, c, d, e, 16, 2);
++  for (i = 0; i < N; i++)
++    if (e[i] != ((i % 3) == 0 ? 10 : 2 * i))
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target { vect_element_align && vect_int_mult } } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-cond-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-cond-4.c
+@@ -0,0 +1,85 @@
++/* { dg-require-effective-target vect_condition } */
++
++#include "tree-vect.h"
++
++#define N 64 
++
++/* Comparison in short, then/else and result in int.  */
++static inline int
++foo (short x, short y, int a, int b)
++{
++  if (x >= y)
++    return a;
++  else
++    return b;
++}
++
++__attribute__((noinline, noclone)) void
++bar (short * __restrict__ a, short * __restrict__ b,
++     short * __restrict__ c, short * __restrict__ d,
++     int * __restrict__ e, int stride, int w)
++{
++  int i;
++  for (i = 0; i < N/stride; i++, a += stride, b += stride, c += stride,
++				d += stride, e += stride)
++    {
++      e[0] = foo (c[0], d[0], a[0], b[0]);
++      e[1] = foo (c[1], d[1], a[1], b[1]);
++      e[2] = foo (c[2], d[2], a[2], b[2]);
++      e[3] = foo (c[3], d[3], a[3], b[3]);
++      e[4] = foo (c[4], d[4], a[4], b[4]);
++      e[5] = foo (c[5], d[5], a[5], b[5]);
++      e[6] = foo (c[6], d[6], a[6], b[6]);
++      e[7] = foo (c[7], d[7], a[7], b[7]);
++      e[8] = foo (c[8], d[8], a[8], b[8]);
++      e[9] = foo (c[9], d[9], a[9], b[9]);
++      e[10] = foo (c[10], d[10], a[10], b[10]);
++      e[11] = foo (c[11], d[11], a[11], b[11]);
++      e[12] = foo (c[12], d[12], a[12], b[12]);
++      e[13] = foo (c[13], d[13], a[13], b[13]);
++      e[14] = foo (c[14], d[14], a[14], b[14]);
++      e[15] = foo (c[15], d[15], a[15], b[15]);
++    }
++}
++
++
++short a[N], b[N], c[N], d[N];
++int e[N];
++
++int main ()
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      a[i] = i;
++      b[i] = 5;
++      e[i] = 0;
++
++      switch (i % 9)
++        {
++        case 0: asm (""); c[i] = - i - 1; d[i] = i + 1; break;
++        case 1: c[i] = 0; d[i] = 0; break;
++        case 2: c[i] = i + 1; d[i] = - i - 1; break;
++        case 3: c[i] = i; d[i] = i + 7; break;
++        case 4: c[i] = i; d[i] = i; break;
++        case 5: c[i] = i + 16; d[i] = i + 3; break;
++        case 6: c[i] = - i - 5; d[i] = - i; break;
++        case 7: c[i] = - i; d[i] = - i; break;
++        case 8: c[i] = - i; d[i] = - i - 7; break;
++        }
++    }
++
++  bar (a, b, c, d, e, 16, 2);
++  for (i = 0; i < N; i++)
++    if (e[i] != ((i % 3) == 0 ? 5 : i))
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target vect_element_align } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
+@@ -0,0 +1,55 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 8
++
++unsigned short X[N];
++unsigned short Y[N];
++unsigned int result[N];
++
++/* unsigned short->unsigned int widening-mult.  */
++__attribute__ ((noinline, noclone)) void 
++foo (void)
++{
++  result[0] = (unsigned int)(X[0] * Y[0]);
++  result[1] = (unsigned int)(X[1] * Y[1]);
++  result[2] = (unsigned int)(X[2] * Y[2]);
++  result[3] = (unsigned int)(X[3] * Y[3]);
++  result[4] = (unsigned int)(X[4] * Y[4]);
++  result[5] = (unsigned int)(X[5] * Y[5]);
++  result[6] = (unsigned int)(X[6] * Y[6]);
++  result[7] = (unsigned int)(X[7] * Y[7]);
++}
++
++int main (void)
++{
++  int i, tmp;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      X[i] = i;
++      Y[i] = 64-i;
++    }
++
++  foo ();
++
++  for (i = 0; i < N; i++)
++    {
++      __asm__ volatile ("");
++      tmp = X[i] * Y[i];
++      if (result[i] != tmp)
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 8 "slp" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { scan-tree-dump-times "pattern recognized" 8 "slp" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
+@@ -0,0 +1,53 @@
++/* { dg-require-effective-target vect_condition } */
++
++#include "tree-vect.h"
++
++#define N 128
++
++__attribute__((noinline, noclone)) void
++foo (short * __restrict__ a, int * __restrict__ b, int stride)
++{
++  int i;
++
++  for (i = 0; i < N/stride; i++, a += stride, b += stride)
++   {
++     a[0] = b[0] ? 1 : 7;
++     a[1] = b[1] ? 2 : 0;
++     a[2] = b[2] ? 3 : 0;
++     a[3] = b[3] ? 4 : 0;
++     a[4] = b[4] ? 5 : 0;
++     a[5] = b[5] ? 6 : 0;
++     a[6] = b[6] ? 7 : 0;
++     a[7] = b[7] ? 8 : 0;
++   }
++}
++
++short a[N];
++int b[N];
++int main ()
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      a[i] = i;
++      b[i] = -i;
++    }
++
++  foo (a, b, 8);
++
++  for (i = 1; i < N; i++)
++    if (a[i] != i%8 + 1)
++      abort ();
++
++  if (a[0] != 7)
++    abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target { vect_element_align && vect_pack_trunc } } } } */
++/* { dg-final { cleanup-tree-dump "slp" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
+@@ -113,7 +113,7 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target { vect_strided && vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target { vect_strided8 && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided8 && vect_int_mult } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
+@@ -20,7 +20,7 @@
+   return avg;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_extract_even_odd_wide  } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_extract_even_odd_wide  } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_extract_even_odd  } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_extract_even_odd  } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
+@@ -13,5 +13,5 @@
+    }
+ }
+ 
+-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided } } } */
++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
+@@ -56,5 +56,5 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave  && vect_extract_even_odd_wide } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
++++ b/src/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
+@@ -0,0 +1,69 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 50
++
++typedef struct {
++  short a;
++  short b;
++} data;
++
++data in1[N], in2[N], out[N];
++short result[N*2] = {10,-7,11,-6,12,-5,13,-4,14,-3,15,-2,16,-1,17,0,18,1,19,2,20,3,21,4,22,5,23,6,24,7,25,8,26,9,27,10,28,11,29,12,30,13,31,14,32,15,33,16,34,17,35,18,36,19,37,20,38,21,39,22,40,23,41,24,42,25,43,26,44,27,45,28,46,29,47,30,48,31,49,32,50,33,51,34,52,35,53,36,54,37,55,38,56,39,57,40,58,41,59,42};
++short out1[N], out2[N];
++
++__attribute__ ((noinline)) void
++foo ()
++{
++  int i;
++  short c, d;
++
++  for (i = 0; i < N; i++)
++    {
++      c = in1[i].b;
++      d = in2[i].b;
++
++      if (c >= d)
++        {
++          out[i].b = in1[i].a;
++          out[i].a = d + 5;
++        }
++      else
++        {
++          out[i].b = d - 12;
++          out[i].a = in2[i].a + d;
++        }
++    }
++}
++
++int
++main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in1[i].a = i;
++      in1[i].b = i + 2;
++      in2[i].a = 5;
++      in2[i].b = i + 5;
++      __asm__ volatile ("");
++    }
++
++  foo ();
++
++  for (i = 0; i < N; i++)
++    {
++      if (out[i].a != result[2*i] || out[i].b != result[2*i+1])
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || { ! vect_strided2 } } } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-fre-pre-pr50208.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-fre-pre-pr50208.c
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++
++char c;
++int a, b;
++
++void foo (int j)
++{
++  int i;
++  while (--j)
++    {
++      b = 3;
++      for (i = 0; i < 2; ++i)
++        a = b ^ c;
++    }
++}
++
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
+@@ -54,5 +54,5 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
+@@ -53,5 +53,5 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
+@@ -47,5 +47,5 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_interleave } } } */
++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
+@@ -50,5 +50,5 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++
++extern unsigned char g_5;
++extern int g_31, g_76;
++int main(void) {
++ int i, j;
++    for (j=0; j < 2; ++j) {
++        g_31 = -3;
++        for (i=0; i < 2; ++i)
++          g_76 = (g_31 ? g_31+1 : 0) ^ g_5;
++    }
++}
++
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
+@@ -1,5 +1,4 @@
+ /* { dg-require-effective-target vect_int } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+@@ -8,7 +7,7 @@
+ void with_restrict(int * __restrict p)
+ {
+   int i;
+-  int *q = p - 2;
++  int *q = p - 1;
+ 
+   for (i = 0; i < 1000; ++i) {
+     p[i] = q[i];
+@@ -19,7 +18,7 @@
+ void without_restrict(int * p)
+ {
+   int i;
+-  int *q = p - 2;
++  int *q = p - 1;
+ 
+   for (i = 0; i < 1000; ++i) {
+     p[i] = q[i];
+@@ -38,8 +37,8 @@
+     a[i] = b[i] = i;
+   }
+ 
+-  with_restrict(a + 2);
+-  without_restrict(b + 2);
++  with_restrict(a + 1);
++  without_restrict(b + 1);
+ 
+   for (i = 0; i < 1002; ++i) {
+     if (a[i] != b[i])
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c
+@@ -45,6 +45,7 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c
+@@ -53,6 +53,7 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
+@@ -53,6 +53,7 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
+@@ -58,5 +58,6 @@
+    If/when the aliasing problems are resolved, unalignment may
+    prevent vectorization on some targets.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "can't determine dependence between" 2 "vect" } } */
++/* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "can't determine dependence" 4 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
+@@ -46,5 +46,6 @@
+   If/when the aliasing problems are resolved, unalignment may
+   prevent vectorization on some targets.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "can't determine dependence between" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
+@@ -26,7 +26,7 @@
+     }
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided_wide } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided_wide } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/pr30843.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr30843.c
+@@ -20,6 +20,6 @@
+     }
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided4 } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr30858.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr30858.c
+@@ -11,5 +11,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Unknown def-use cycle pattern." 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Unknown def-use cycle pattern." 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "Unknown def-use cycle pattern." 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33866.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33866.c
+@@ -27,6 +27,6 @@
+ }
+ 
+ /* Needs interleaving support.  */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr37539.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr37539.c
+@@ -40,7 +40,7 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_strided_wide } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_strided4 && vect_strided2 } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr50014.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr50014.c
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target vect_int } */
++
++int f(unsigned char *s, int n)
++{
++  int sum = 0;
++  int i;
++
++  for (i = 0; i < n; i++)
++    sum += 256 * s[i];
++
++  return sum;
++}
++
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51301.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51301.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++
++typedef signed char int8_t;
++typedef signed long long int64_t;
++int64_t
++f0a (int8_t * __restrict__ arg1)
++{
++  int idx;
++  int64_t result = 0;
++  for (idx = 0; idx < 416; idx += 1)
++    result += arg1[idx] << (arg1[idx] == arg1[idx]);
++  return result;
++}
++
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51799.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51799.c
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++
++typedef signed char int8_t;
++typedef unsigned char uint8_t;
++typedef signed short int16_t;
++typedef unsigned long uint32_t;
++void
++f0a (uint32_t * __restrict__ result, int8_t * __restrict__ arg1,
++     uint32_t * __restrict__ arg4, int8_t temp_6)
++{
++  int idx;
++  for (idx = 0; idx < 416; idx += 1)
++    {
++      result[idx] = (uint8_t)(((arg1[idx] << 7) + arg4[idx]) * temp_6);
++    }
++}
++
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr52870.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr52870.c
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++/* { dg-options "-O1 -ftree-vectorize" } */
++
++long
++test (int *x)
++{
++  unsigned long sx, xprec;
++
++  sx = *x >= 0 ? *x : -*x;
++
++  xprec = sx * 64;
++
++  if (sx < 16384)
++    foo (sx);
++
++  return xprec;
++}
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-11a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-11a.c
+@@ -0,0 +1,75 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 8
++
++int
++main1 ()
++{
++  int i;
++  unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
++  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
++
++  /* Different operations - not SLPable.  */
++  for (i = 0; i < N; i++)
++    {
++      a0 = in[i*8] + 5;
++      a1 = in[i*8 + 1] * 6;
++      a2 = in[i*8 + 2] + 7;
++      a3 = in[i*8 + 3] + 8;
++      a4 = in[i*8 + 4] + 9;
++      a5 = in[i*8 + 5] + 10;
++      a6 = in[i*8 + 6] + 11;
++      a7 = in[i*8 + 7] + 12;
++
++      b0 = a0 * 3;
++      b1 = a1 * 2;
++      b2 = a2 * 12;
++      b3 = a3 * 5;
++      b4 = a4 * 8;
++      b5 = a5 * 4;
++      b6 = a6 * 3;
++      b7 = a7 * 2;
++
++      out[i*8] = b0 - 2;
++      out[i*8 + 1] = b1 - 3;
++      out[i*8 + 2] = b2 - 2;
++      out[i*8 + 3] = b3 - 1;
++      out[i*8 + 4] = b4 - 8;
++      out[i*8 + 5] = b5 - 7;
++      out[i*8 + 6] = b6 - 3;
++      out[i*8 + 7] = b7 - 7;
++    }
++
++  /* check results:  */
++  for (i = 0; i < N; i++)
++    {
++      if (out[i*8] !=  (in[i*8] + 5) * 3 - 2
++         || out[i*8 + 1] != (in[i*8 + 1] * 6) * 2 - 3
++         || out[i*8 + 2] != (in[i*8 + 2] + 7) * 12 - 2
++         || out[i*8 + 3] != (in[i*8 + 3] + 8) * 5 - 1
++         || out[i*8 + 4] != (in[i*8 + 4] + 9) * 8 - 8
++         || out[i*8 + 5] != (in[i*8 + 5] + 10) * 4 - 7
++         || out[i*8 + 6] != (in[i*8 + 6] + 11) * 3 - 3
++         || out[i*8 + 7] != (in[i*8 + 7] + 12) * 2 - 7)
++	abort ();
++    }
++
++  return 0;
++}
++
++int main (void)
++{
++  check_vect ();
++
++  main1 ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-11b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-11b.c
+@@ -0,0 +1,49 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 8
++
++int
++main1 ()
++{
++  int i;
++  unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
++  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
++
++  /* Requires permutation - not SLPable.  */
++  for (i = 0; i < N*2; i++)
++    {
++      out[i*4] = (in[i*4] + 2) * 3;
++      out[i*4 + 1] = (in[i*4 + 2] + 2) * 7;
++      out[i*4 + 2] = (in[i*4 + 1] + 7) * 3;
++      out[i*4 + 3] = (in[i*4 + 3] + 3) * 4;
++    }
++
++  /* check results:  */
++  for (i = 0; i < N*2; i++)
++    {
++      if (out[i*4] !=  (in[i*4] + 2) * 3
++         || out[i*4 + 1] != (in[i*4 + 2] + 2) * 7
++         || out[i*4 + 2] != (in[i*4 + 1] + 7) * 3
++         || out[i*4 + 3] != (in[i*4 + 3] + 3) * 4)
++        abort ();
++    }
++
++  return 0;
++}
++
++int main (void)
++{
++  check_vect ();
++
++  main1 ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided4 && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided4 && vect_int_mult } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-11.c
+@@ -1,113 +0,0 @@
+-/* { dg-require-effective-target vect_int } */
+-
+-#include <stdarg.h>
+-#include "tree-vect.h"
+-
+-#define N 8 
+-
+-int
+-main1 ()
+-{
+-  int i;
+-  unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
+-  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+-  float out2[N*8];
+-
+-  /* Different operations - not SLPable.  */
+-  for (i = 0; i < N; i++)
+-    {
+-      a0 = in[i*8] + 5;
+-      a1 = in[i*8 + 1] * 6;
+-      a2 = in[i*8 + 2] + 7;
+-      a3 = in[i*8 + 3] + 8;
+-      a4 = in[i*8 + 4] + 9;
+-      a5 = in[i*8 + 5] + 10;
+-      a6 = in[i*8 + 6] + 11;
+-      a7 = in[i*8 + 7] + 12;
+-
+-      b0 = a0 * 3;
+-      b1 = a1 * 2;
+-      b2 = a2 * 12;
+-      b3 = a3 * 5;
+-      b4 = a4 * 8;
+-      b5 = a5 * 4;
+-      b6 = a6 * 3;
+-      b7 = a7 * 2;
+-
+-      out[i*8] = b0 - 2;
+-      out[i*8 + 1] = b1 - 3; 
+-      out[i*8 + 2] = b2 - 2;
+-      out[i*8 + 3] = b3 - 1;
+-      out[i*8 + 4] = b4 - 8;
+-      out[i*8 + 5] = b5 - 7;
+-      out[i*8 + 6] = b6 - 3;
+-      out[i*8 + 7] = b7 - 7;
+-    }
+-
+-  /* check results:  */
+-  for (i = 0; i < N; i++)
+-    {
+-      if (out[i*8] !=  (in[i*8] + 5) * 3 - 2
+-         || out[i*8 + 1] != (in[i*8 + 1] * 6) * 2 - 3
+-         || out[i*8 + 2] != (in[i*8 + 2] + 7) * 12 - 2
+-         || out[i*8 + 3] != (in[i*8 + 3] + 8) * 5 - 1
+-         || out[i*8 + 4] != (in[i*8 + 4] + 9) * 8 - 8
+-         || out[i*8 + 5] != (in[i*8 + 5] + 10) * 4 - 7
+-         || out[i*8 + 6] != (in[i*8 + 6] + 11) * 3 - 3
+-         || out[i*8 + 7] != (in[i*8 + 7] + 12) * 2 - 7)
+-	abort ();
+-    }
+-
+-  /* Requires permutation - not SLPable.  */
+-  for (i = 0; i < N*2; i++)
+-    {
+-      out[i*4] = (in[i*4] + 2) * 3;
+-      out[i*4 + 1] = (in[i*4 + 2] + 2) * 7;
+-      out[i*4 + 2] = (in[i*4 + 1] + 7) * 3;
+-      out[i*4 + 3] = (in[i*4 + 3] + 3) * 4;
+-    }
+-
+-  /* check results:  */
+-  for (i = 0; i < N*2; i++)
+-    {
+-      if (out[i*4] !=  (in[i*4] + 2) * 3
+-         || out[i*4 + 1] != (in[i*4 + 2] + 2) * 7
+-         || out[i*4 + 2] != (in[i*4 + 1] + 7) * 3
+-         || out[i*4 + 3] != (in[i*4 + 3] + 3) * 4)
+-        abort ();
+-    }
+-
+-  /* Different operations - not SLPable.  */
+-  for (i = 0; i < N*4; i++)
+-    {
+-      out2[i*2] = ((float) in[i*2] * 2 + 6) ;
+-      out2[i*2 + 1] = (float) (in[i*2 + 1] * 3 + 7);
+-    }
+-
+-  /* check results:  */
+-  for (i = 0; i < N*4; i++)
+-    {
+-      if (out2[i*2] !=  ((float) in[i*2] * 2 + 6)
+-         || out2[i*2 + 1] != (float) (in[i*2 + 1] * 3 + 7))
+-        abort ();
+-    }
+-
+-
+-  return 0;
+-}
+-
+-int main (void)
+-{
+-  check_vect ();
+-
+-  main1 ();
+-
+-  return 0;
+-}
+-
+-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  { target { { vect_uintfloat_cvt && vect_strided_wide } &&  vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  { target { { { ! vect_uintfloat_cvt } && vect_strided_wide } &&  vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  {target  { ! { vect_int_mult && vect_strided_wide } } } } }  */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0  "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+-  
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-11c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-11c.c
+@@ -0,0 +1,46 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 8
++
++int
++main1 ()
++{
++  int i;
++  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
++  float out[N*8];
++
++  /* Different operations - not SLPable.  */
++  for (i = 0; i < N*4; i++)
++    {
++      out[i*2] = ((float) in[i*2] * 2 + 6) ;
++      out[i*2 + 1] = (float) (in[i*2 + 1] * 3 + 7);
++    }
++
++  /* check results:  */
++  for (i = 0; i < N*4; i++)
++    {
++      if (out[i*2] !=  ((float) in[i*2] * 2 + 6)
++         || out[i*2 + 1] != (float) (in[i*2 + 1] * 3 + 7))
++        abort ();
++    }
++
++
++  return 0;
++}
++
++int main (void)
++{
++  check_vect ();
++
++  main1 ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0  "vect"  } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-12a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-12a.c
+@@ -11,7 +11,7 @@
+   int i;
+   unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
+   unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+-  unsigned int ia[N], ib[N*2];
++  unsigned int ia[N];
+ 
+   for (i = 0; i < N; i++)
+     {
+@@ -61,27 +61,6 @@
+ 	abort ();
+     }
+ 
+-  for (i = 0; i < N*2; i++)
+-    {
+-      out[i*4] = (in[i*4] + 2) * 3;
+-      out[i*4 + 1] = (in[i*4 + 1] + 2) * 7;
+-      out[i*4 + 2] = (in[i*4 + 2] + 7) * 3;
+-      out[i*4 + 3] = (in[i*4 + 3] + 7) * 7;
+-
+-      ib[i] = 7;
+-    }
+-
+-  /* check results:  */
+-  for (i = 0; i < N*2; i++)
+-    {
+-      if (out[i*4] !=  (in[i*4] + 2) * 3
+-         || out[i*4 + 1] != (in[i*4 + 1] + 2) * 7
+-         || out[i*4 + 2] != (in[i*4 + 2] + 7) * 3
+-         || out[i*4 + 3] != (in[i*4 + 3] + 7) * 7 
+-         || ib[i] != 7)
+-        abort ();
+-    }
+-
+   return 0;
+ }
+ 
+@@ -94,11 +73,8 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  {target { vect_strided_wide && vect_int_mult} } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  {target { {! {vect_strided_wide}} && vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  {target  { ! vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" {target { vect_strided_wide && vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" {target { {! {vect_strided_wide}} && vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target  { ! vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+-  
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-12b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-12b.c
+@@ -43,9 +43,9 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  {target { vect_strided_wide && vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  {target { { ! { vect_int_mult }} || { ! {vect_strided_wide}}} } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  {target { vect_strided_wide && vect_int_mult } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  {target { { ! { vect_int_mult }} || { ! {vect_strided_wide}}} } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_strided2 && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  { target { ! { vect_strided2 && vect_int_mult } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target { vect_strided2 && vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided2 && vect_int_mult } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-12c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-12c.c
+@@ -0,0 +1,53 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 8
++
++int
++main1 ()
++{
++  int i;
++  unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
++  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
++  unsigned int ia[N*2];
++
++  for (i = 0; i < N*2; i++)
++    {
++      out[i*4] = (in[i*4] + 2) * 3;
++      out[i*4 + 1] = (in[i*4 + 1] + 2) * 7;
++      out[i*4 + 2] = (in[i*4 + 2] + 7) * 3;
++      out[i*4 + 3] = (in[i*4 + 3] + 7) * 7;
++
++      ia[i] = 7;
++    }
++
++  /* check results:  */
++  for (i = 0; i < N*2; i++)
++    {
++      if (out[i*4] !=  (in[i*4] + 2) * 3
++         || out[i*4 + 1] != (in[i*4 + 1] + 2) * 7
++         || out[i*4 + 2] != (in[i*4 + 2] + 7) * 3
++         || out[i*4 + 3] != (in[i*4 + 3] + 7) * 7
++         || ia[i] != 7)
++        abort ();
++    }
++
++  return 0;
++}
++
++int main (void)
++{
++  check_vect ();
++
++  main1 ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  { target { ! vect_int_mult } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_int_mult } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_int_mult } } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-18.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-18.c
+@@ -91,7 +91,7 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target { vect_strided } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided8 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-19a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-19a.c
+@@ -0,0 +1,61 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 16
++
++int
++main1 ()
++{
++  unsigned int i;
++  unsigned int out[N*8];
++  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
++  unsigned int ia[N*2];
++
++  for (i = 0; i < N; i++)
++    {
++      out[i*8] = in[i*8];
++      out[i*8 + 1] = in[i*8 + 1];
++      out[i*8 + 2] = in[i*8 + 2];
++      out[i*8 + 3] = in[i*8 + 3];
++      out[i*8 + 4] = in[i*8 + 4];
++      out[i*8 + 5] = in[i*8 + 5];
++      out[i*8 + 6] = in[i*8 + 6];
++      out[i*8 + 7] = in[i*8 + 7];
++
++      ia[i] = in[i*8 + 2];
++    }
++
++  /* check results:  */
++  for (i = 0; i < N; i++)
++    {
++      if (out[i*8] !=  in[i*8]
++         || out[i*8 + 1] != in[i*8 + 1]
++         || out[i*8 + 2] != in[i*8 + 2]
++         || out[i*8 + 3] != in[i*8 + 3]
++         || out[i*8 + 4] != in[i*8 + 4]
++         || out[i*8 + 5] != in[i*8 + 5]
++         || out[i*8 + 6] != in[i*8 + 6]
++         || out[i*8 + 7] != in[i*8 + 7]
++         || ia[i] != in[i*8 + 2])
++	abort ();
++    }
++
++  return 0;
++}
++
++int main (void)
++{
++  check_vect ();
++
++  main1 ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided8 } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided8 } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided8} } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-19b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-19b.c
+@@ -0,0 +1,58 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 16
++
++int
++main1 ()
++{
++  unsigned int i;
++  unsigned int out[N*8];
++  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
++  unsigned int ia[N*2], a0, a1, a2, a3;
++
++  for (i = 0; i < N*2; i++)
++    {
++      a0 = in[i*4] + 1;
++      a1 = in[i*4 + 1] + 2;
++      a2 = in[i*4 + 2] + 3;
++      a3 = in[i*4 + 3] + 4;
++
++      out[i*4] = a0;
++      out[i*4 + 1] = a1;
++      out[i*4 + 2] = a2;
++      out[i*4 + 3] = a3;
++
++      ia[i] = a2;
++    }
++
++  /* check results:  */
++  for (i = 0; i < N*2; i++)
++    {
++      if (out[i*4] !=  in[i*4] + 1
++         || out[i*4 + 1] != in[i*4 + 1] + 2
++         || out[i*4 + 2] != in[i*4 + 2] + 3
++         || out[i*4 + 3] != in[i*4 + 3] + 4
++         || ia[i] != in[i*4 + 2] + 3)
++        abort ();
++    }
++
++  return 0;
++}
++
++int main (void)
++{
++  check_vect ();
++
++  main1 ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided4 } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided4 } } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-19.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-19.c
+@@ -1,154 +0,0 @@
+-/* { dg-require-effective-target vect_int } */
+-
+-#include <stdarg.h>
+-#include "tree-vect.h"
+-
+-#define N 16 
+-
+-int
+-main1 ()
+-{
+-  unsigned int i;
+-  unsigned int out[N*8];
+-  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+-  unsigned int ia[N*2], a0, a1, a2, a3;
+-
+-  for (i = 0; i < N; i++)
+-    {
+-      out[i*8] = in[i*8];
+-      out[i*8 + 1] = in[i*8 + 1];
+-      out[i*8 + 2] = in[i*8 + 2];
+-      out[i*8 + 3] = in[i*8 + 3];
+-      out[i*8 + 4] = in[i*8 + 4];
+-      out[i*8 + 5] = in[i*8 + 5];
+-      out[i*8 + 6] = in[i*8 + 6];
+-      out[i*8 + 7] = in[i*8 + 7];
+-    
+-      ia[i] = in[i*8 + 2];
+-    }
+-
+-  /* check results:  */
+-  for (i = 0; i < N; i++)
+-    {
+-      if (out[i*8] !=  in[i*8]
+-         || out[i*8 + 1] != in[i*8 + 1]
+-         || out[i*8 + 2] != in[i*8 + 2]
+-         || out[i*8 + 3] != in[i*8 + 3]
+-         || out[i*8 + 4] != in[i*8 + 4]
+-         || out[i*8 + 5] != in[i*8 + 5]
+-         || out[i*8 + 6] != in[i*8 + 6]
+-         || out[i*8 + 7] != in[i*8 + 7]
+-         || ia[i] != in[i*8 + 2])
+-	abort ();
+-    }
+-
+-  for (i = 0; i < N*2; i++)
+-    {
+-      a0 = in[i*4] + 1;
+-      a1 = in[i*4 + 1] + 2;
+-      a2 = in[i*4 + 2] + 3;
+-      a3 = in[i*4 + 3] + 4;
+-
+-      out[i*4] = a0;
+-      out[i*4 + 1] = a1;
+-      out[i*4 + 2] = a2;
+-      out[i*4 + 3] = a3;
+-
+-      ia[i] = a2;
+-    }
+-
+-  /* check results:  */
+-  for (i = 0; i < N*2; i++)
+-    {
+-      if (out[i*4] !=  in[i*4] + 1
+-         || out[i*4 + 1] != in[i*4 + 1] + 2
+-         || out[i*4 + 2] != in[i*4 + 2] + 3
+-         || out[i*4 + 3] != in[i*4 + 3] + 4
+-         || ia[i] != in[i*4 + 2] + 3)
+-        abort ();
+-    }
+-
+-  /* The last stmt requires interleaving of not power of 2 size - not 
+-     vectorizable.  */
+-  for (i = 0; i < N/2; i++)
+-    {
+-      out[i*12] = in[i*12];
+-      out[i*12 + 1] = in[i*12 + 1];
+-      out[i*12 + 2] = in[i*12 + 2];
+-      out[i*12 + 3] = in[i*12 + 3];
+-      out[i*12 + 4] = in[i*12 + 4];
+-      out[i*12 + 5] = in[i*12 + 5];
+-      out[i*12 + 6] = in[i*12 + 6];
+-      out[i*12 + 7] = in[i*12 + 7];
+-      out[i*12 + 8] = in[i*12 + 8];
+-      out[i*12 + 9] = in[i*12 + 9];
+-      out[i*12 + 10] = in[i*12 + 10];
+-      out[i*12 + 11] = in[i*12 + 11];
+-
+-      ia[i] = in[i*12 + 7];
+-    }
+-
+-  /* check results:  */
+-  for (i = 0; i < N/2; i++)
+-    {
+-      if (out[i*12] !=  in[i*12]
+-         || out[i*12 + 1] != in[i*12 + 1]
+-         || out[i*12 + 2] != in[i*12 + 2]
+-         || out[i*12 + 3] != in[i*12 + 3]
+-         || out[i*12 + 4] != in[i*12 + 4]
+-         || out[i*12 + 5] != in[i*12 + 5]
+-         || out[i*12 + 6] != in[i*12 + 6]
+-         || out[i*12 + 7] != in[i*12 + 7]
+-         || out[i*12 + 8] != in[i*12 + 8]
+-         || out[i*12 + 9] != in[i*12 + 9]
+-         || out[i*12 + 10] != in[i*12 + 10]
+-         || out[i*12 + 11] != in[i*12 + 11]
+-         || ia[i] != in[i*12 + 7])
+-        abort ();
+-    }
+-
+-  /* Hybrid SLP with unrolling by 2.  */
+-  for (i = 0; i < N; i++)
+-    {
+-      out[i*6] = in[i*6];
+-      out[i*6 + 1] = in[i*6 + 1];
+-      out[i*6 + 2] = in[i*6 + 2];
+-      out[i*6 + 3] = in[i*6 + 3];
+-      out[i*6 + 4] = in[i*6 + 4];
+-      out[i*6 + 5] = in[i*6 + 5];
+-    
+-      ia[i] = i;
+-    } 
+-    
+-  /* check results:  */
+-  for (i = 0; i < N/2; i++)
+-    {
+-      if (out[i*6] !=  in[i*6]
+-         || out[i*6 + 1] != in[i*6 + 1]
+-         || out[i*6 + 2] != in[i*6 + 2]
+-         || out[i*6 + 3] != in[i*6 + 3]
+-         || out[i*6 + 4] != in[i*6 + 4]
+-         || out[i*6 + 5] != in[i*6 + 5]
+-         || ia[i] != i)
+-        abort ();
+-    }
+-
+-
+-  return 0;
+-}
+-
+-int main (void)
+-{
+-  check_vect ();
+-
+-  main1 ();
+-
+-  return 0;
+-}
+-
+-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { target  vect_strided_wide  } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target  { ! { vect_strided_wide } } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  { target  vect_strided_wide  } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target { ! { vect_strided_wide } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+-  
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-19c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-19c.c
+@@ -0,0 +1,95 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 16
++
++int
++main1 ()
++{
++  unsigned int i;
++  unsigned int out[N*8];
++  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
++  unsigned int ia[N*2], a0, a1, a2, a3;
++
++  /* The last stmt requires interleaving of not power of 2 size - not
++     vectorizable.  */
++  for (i = 0; i < N/2; i++)
++    {
++      out[i*12] = in[i*12];
++      out[i*12 + 1] = in[i*12 + 1];
++      out[i*12 + 2] = in[i*12 + 2];
++      out[i*12 + 3] = in[i*12 + 3];
++      out[i*12 + 4] = in[i*12 + 4];
++      out[i*12 + 5] = in[i*12 + 5];
++      out[i*12 + 6] = in[i*12 + 6];
++      out[i*12 + 7] = in[i*12 + 7];
++      out[i*12 + 8] = in[i*12 + 8];
++      out[i*12 + 9] = in[i*12 + 9];
++      out[i*12 + 10] = in[i*12 + 10];
++      out[i*12 + 11] = in[i*12 + 11];
++
++      ia[i] = in[i*12 + 7];
++    }
++
++  /* check results:  */
++  for (i = 0; i < N/2; i++)
++    {
++      if (out[i*12] !=  in[i*12]
++         || out[i*12 + 1] != in[i*12 + 1]
++         || out[i*12 + 2] != in[i*12 + 2]
++         || out[i*12 + 3] != in[i*12 + 3]
++         || out[i*12 + 4] != in[i*12 + 4]
++         || out[i*12 + 5] != in[i*12 + 5]
++         || out[i*12 + 6] != in[i*12 + 6]
++         || out[i*12 + 7] != in[i*12 + 7]
++         || out[i*12 + 8] != in[i*12 + 8]
++         || out[i*12 + 9] != in[i*12 + 9]
++         || out[i*12 + 10] != in[i*12 + 10]
++         || out[i*12 + 11] != in[i*12 + 11]
++         || ia[i] != in[i*12 + 7])
++        abort ();
++    }
++
++  /* Hybrid SLP with unrolling by 2.  */
++  for (i = 0; i < N; i++)
++    {
++      out[i*6] = in[i*6];
++      out[i*6 + 1] = in[i*6 + 1];
++      out[i*6 + 2] = in[i*6 + 2];
++      out[i*6 + 3] = in[i*6 + 3];
++      out[i*6 + 4] = in[i*6 + 4];
++      out[i*6 + 5] = in[i*6 + 5];
++
++      ia[i] = i;
++    }
++
++  /* check results:  */
++  for (i = 0; i < N/2; i++)
++    {
++      if (out[i*6] !=  in[i*6]
++         || out[i*6 + 1] != in[i*6 + 1]
++         || out[i*6 + 2] != in[i*6 + 2]
++         || out[i*6 + 3] != in[i*6 + 3]
++         || out[i*6 + 4] != in[i*6 + 4]
++         || out[i*6 + 5] != in[i*6 + 5]
++         || ia[i] != i)
++        abort ();
++    }
++
++  return 0;
++}
++
++int main (void)
++{
++  check_vect ();
++
++  main1 ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-21.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-21.c
+@@ -199,9 +199,9 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  { target { vect_strided || vect_extract_even_odd } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target  { ! { vect_strided || vect_extract_even_odd } } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided }  } } */
+-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  { target { vect_strided4 || vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target  { ! { vect_strided4 || vect_extract_even_odd } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided4 }  } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided4 } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-23.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-23.c
+@@ -106,8 +106,8 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided_wide } && {! { vect_no_align} } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided_wide || vect_no_align} } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided8 && { ! { vect_no_align} } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided8 || vect_no_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-25.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-25.c
+@@ -1,5 +1,4 @@
+ /* { dg-require-effective-target vect_int } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+@@ -57,5 +56,5 @@
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || { ! vect_natural_alignment } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-3.c
+@@ -1,12 +1,11 @@
+ /* { dg-require-effective-target vect_int } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+ 
+-#define N 8 
++#define N 12 
+ 
+-unsigned short in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
++unsigned short in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
+ 
+ int
+ main1 ()
+@@ -101,7 +100,7 @@
+     }
+ 
+   /* SLP with unrolling by 8.  */
+-  for (i = 0; i < N/2; i++)
++  for (i = 0; i < N/4; i++)
+     {
+       out[i*9] = in[i*9];
+       out[i*9 + 1] = in[i*9 + 1];
+@@ -115,7 +114,7 @@
+     }
+ 
+   /* check results:  */
+-  for (i = 0; i < N/2; i++)
++  for (i = 0; i < N/4; i++)
+     {
+       if (out[i*9] !=  in[i*9]
+          || out[i*9 + 1] != in[i*9 + 1]
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-cond-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-cond-1.c
+@@ -0,0 +1,126 @@
++/* { dg-require-effective-target vect_condition } */
++#include "tree-vect.h"
++
++#define N 32
++int a[N], b[N];
++int d[N], e[N];
++int k[N];
++
++__attribute__((noinline, noclone)) void
++f1 (void)
++{
++  int i;
++  for (i = 0; i < N/4; i++)
++    {
++      k[4*i] = a[4*i] < b[4*i] ? 17 : 0;
++      k[4*i+1] = a[4*i+1] < b[4*i+1] ? 17 : 0;
++      k[4*i+2] = a[4*i+2] < b[4*i+2] ? 17 : 0;
++      k[4*i+3] = a[4*i+3] < b[4*i+3] ? 17 : 0;
++    }
++}
++
++__attribute__((noinline, noclone)) void
++f2 (void)
++{
++  int i;
++  for (i = 0; i < N/2; ++i)
++    {
++      k[2*i] = a[2*i] < b[2*i] ? 0 : 24;
++      k[2*i+1] = a[2*i+1] < b[2*i+1] ? 7 : 4;
++    }
++}
++
++__attribute__((noinline, noclone)) void
++f3 (void)
++{
++  int i;
++  for (i = 0; i < N/2; ++i)
++    {
++      k[2*i] = a[2*i] < b[2*i] ? 51 : 12;
++      k[2*i+1] = a[2*i+1] > b[2*i+1] ? 51 : 12;
++    }
++}
++
++__attribute__((noinline, noclone)) void
++f4 (void)
++{
++  int i;
++  for (i = 0; i < N/2; ++i)
++    {
++      int d0 = d[2*i], e0 = e[2*i];
++      int d1 = d[2*i+1], e1 = e[2*i+1];
++      k[2*i] = a[2*i] >= b[2*i] ? d0 : e0;
++      k[2*i+1] = a[2*i+1] >= b[2*i+1] ? d1 : e1;
++    }
++}
++
++int
++main ()
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      switch (i % 9)
++	{
++	case 0: asm (""); a[i] = - i - 1; b[i] = i + 1; break;
++	case 1: a[i] = 0; b[i] = 0; break;
++	case 2: a[i] = i + 1; b[i] = - i - 1; break;
++	case 3: a[i] = i; b[i] = i + 7; break;
++	case 4: a[i] = i; b[i] = i; break;
++	case 5: a[i] = i + 16; b[i] = i + 3; break;
++	case 6: a[i] = - i - 5; b[i] = - i; break;
++	case 7: a[i] = - i; b[i] = - i; break;
++	case 8: a[i] = - i; b[i] = - i - 7; break;
++	}
++      d[i] = i;
++      e[i] = 2 * i;
++    }
++  f1 ();
++  for (i = 0; i < N; i++)
++    if (k[i] != ((i % 3) == 0 ? 17 : 0))
++      abort ();
++
++  f2 ();
++  for (i = 0; i < N; i++)
++    {
++      switch (i % 9)
++        {
++        case 0:
++	case 6:
++	  if (k[i] != ((i/9 % 2) == 0 ? 0 : 7))
++	    abort ();
++	  break;
++        case 1:
++        case 5:
++        case 7:
++	  if (k[i] != ((i/9 % 2) == 0 ? 4 : 24))
++            abort ();
++          break;
++        case 2:
++        case 4:
++        case 8:
++	  if (k[i] != ((i/9 % 2) == 0 ? 24 : 4))
++            abort ();
++          break;
++        case 3:
++	  if (k[i] != ((i/9 % 2) == 0 ? 7 : 0))
++            abort ();
++          break;
++        }
++    }
++
++  f3 ();
++
++  f4 ();
++  for (i = 0; i < N; i++)
++    if (k[i] != ((i % 3) == 0 ? e[i] : d[i]))
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
+@@ -42,7 +42,7 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! vect_unpack } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! { vect_unpack || vect_strided2 } } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "different interleaving chains in one node" 1 "vect" { target { ! vect_no_int_add } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
+@@ -0,0 +1,52 @@
++/* { dg-require-effective-target vect_int } */
++
++#include "tree-vect.h"
++#include <stdlib.h>
++
++#define N 32
++#define COEF 32470
++#define COEF2 324700
++
++unsigned char in[N];
++int out[N];
++int out2[N];
++
++__attribute__ ((noinline)) void
++foo ()
++{
++  int i;
++
++  for (i = 0; i < N/2; i++)
++    {
++      out[2*i] = in[2*i] * COEF;
++      out2[2*i] = in[2*i] + COEF2;
++      out[2*i+1] = in[2*i+1] * COEF;
++      out2[2*i+1] = in[2*i+1] + COEF2;
++    }
++}
++
++int main (void)
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      __asm__ volatile ("");
++    }
++
++  foo ();
++
++  for (i = 0; i < N; i++)
++    if (out[i] != in[i] * COEF || out2[i] != in[i] + COEF2)
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
++/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_widen_mult_hi_to_si } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-104.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-104.c
+@@ -64,6 +64,7 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-107.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-107.c
+@@ -40,6 +40,6 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_extract_even_odd_wide } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_extract_even_odd_wide } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-109.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-109.c
+@@ -1,5 +1,4 @@
+ /* { dg-require-effective-target vect_int } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-10.c
+@@ -22,5 +22,5 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_strided2 } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-119.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-119.c
+@@ -0,0 +1,28 @@
++/* { dg-do compile } */
++
++#define OUTER 32
++#define INNER 40
++
++static unsigned int
++bar (const unsigned int x[INNER][2], unsigned int sum)
++{
++  int i;
++
++  for (i = 0; i < INNER; i++)
++    sum += x[i][0] * x[i][0] + x[i][1] * x[i][1];
++  return sum;
++}
++
++unsigned int foo (const unsigned int x[OUTER][INNER][2])
++{
++  int i;
++  unsigned int sum;
++
++  sum = 0.0f;
++  for (i = 0; i < OUTER; i++)
++    sum = bar (x[i], sum);
++  return sum;
++}
++
++/* { dg-final { scan-tree-dump-times "Detected interleaving of size 2" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-1.c
+@@ -85,6 +85,6 @@
+   fbar (a);
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_extract_even_odd_wide } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_extract_even_odd_wide } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_strided2 } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-40.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-40.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_float } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-42.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-42.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_float } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-46.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-46.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_float } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-48.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-48.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_float } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-52.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-52.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_float } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-54.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-54.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_float } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-96.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-96.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_int } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-98.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-98.c
+@@ -38,6 +38,6 @@
+ }
+ 
+ /* Needs interleaving support.  */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd_wide } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  { vect_interleave && vect_extract_even_odd_wide } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided4 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-8a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-8a.c
+@@ -0,0 +1,75 @@
++/* { dg-require-effective-target vect_condition } */
++
++#include "tree-vect.h"
++
++#define N 1024
++int a[N], b[N], c[N];
++char d[N], e[N], f[N];
++unsigned char k[N];
++
++__attribute__((noinline, noclone)) void
++f1 (void)
++{
++  int i;
++  for (i = 0; i < N; ++i)
++    k[i] = a[i] < b[i] ? 17 : 0;
++}
++
++__attribute__((noinline, noclone)) void
++f2 (void)
++{
++  int i;
++  for (i = 0; i < N; ++i)
++    k[i] = a[i] < b[i] ? 0 : 24;
++}
++
++__attribute__((noinline, noclone)) void
++f3 (void)
++{
++  int i;
++  for (i = 0; i < N; ++i)
++    k[i] = a[i] < b[i] ? 51 : 12;
++}
++
++int
++main ()
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      switch (i % 9)
++	{
++	case 0: asm (""); a[i] = - i - 1; b[i] = i + 1; break;
++	case 1: a[i] = 0; b[i] = 0; break;
++	case 2: a[i] = i + 1; b[i] = - i - 1; break;
++	case 3: a[i] = i; b[i] = i + 7; break;
++	case 4: a[i] = i; b[i] = i; break;
++	case 5: a[i] = i + 16; b[i] = i + 3; break;
++	case 6: a[i] = - i - 5; b[i] = - i; break;
++	case 7: a[i] = - i; b[i] = - i; break;
++	case 8: a[i] = - i; b[i] = - i - 7; break;
++	}
++      d[i] = i;
++      e[i] = 2 * i;
++    }
++  f1 ();
++  for (i = 0; i < N; i++)
++    if (k[i] != ((i % 3) == 0 ? 17 : 0))
++      abort ();
++  f2 ();
++  for (i = 0; i < N; i++)
++    if (k[i] != ((i % 3) == 0 ? 0 : 24))
++      abort ();
++  f3 ();
++  for (i = 0; i < N; i++)
++    if (k[i] != ((i % 3) == 0 ? 51 : 12))
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "note: vectorized 1 loops" 3 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
+@@ -0,0 +1,86 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 50
++
++typedef struct {
++  short a;
++  short b;
++} data;
++
++data in1[N], in2[N], out[N];
++short result[N*2] = {7,-7,9,-6,11,-5,13,-4,15,-3,17,-2,19,-1,21,0,23,1,25,2,27,3,29,4,31,5,33,6,35,7,37,8,39,9,41,10,43,11,45,12,47,13,49,14,51,15,53,16,55,17,57,18,59,19,61,20,63,21,65,22,67,23,69,24,71,25,73,26,75,27,77,28,79,29,81,30,83,31,85,32,87,33,89,34,91,35,93,36,95,37,97,38,99,39,101,40,103,41,105,42};
++short out1[N], out2[N];
++
++__attribute__ ((noinline)) void
++foo ()
++{
++  int i;
++  short c, d;
++
++  /* Vectorizable with conditional store sinking.  */
++  for (i = 0; i < N; i++)
++    {
++      c = in1[i].b;
++      d = in2[i].b;
++
++      if (c >= d)
++        {
++          out[i].b = c;
++          out[i].a = d + 5;
++        }
++      else
++        {
++          out[i].b = d - 12;
++          out[i].a = c + d;
++        }
++    }
++
++  /* Not vectorizable.  */
++  for (i = 0; i < N; i++)
++    {
++      c = in1[i].b;
++      d = in2[i].b;
++
++      if (c >= d)
++        {
++          out1[i] = c;
++        }
++      else
++        {
++          out2[i] = c + d;
++        }
++    }
++}
++
++int
++main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in1[i].a = i;
++      in1[i].b = i + 2;
++      in2[i].a = 5;
++      in2[i].b = i + 5;
++      __asm__ volatile ("");
++    }
++
++  foo ();
++
++  for (i = 0; i < N; i++)
++    {
++      if (out[i].a != result[2*i] || out[i].b != result[2*i+1])
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || { ! vect_strided2 } } } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
+@@ -0,0 +1,65 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 50
++
++int a[N], b[N], in1[N], in2[N];
++int result[2*N] = {5,-7,7,-6,9,-5,11,-4,13,-3,15,-2,17,-1,19,0,21,1,23,2,25,3,27,4,29,5,31,6,33,7,35,8,37,9,39,10,41,11,43,12,45,13,47,14,49,15,51,16,53,17,55,18,57,19,59,20,61,21,63,22,65,23,67,24,69,25,71,26,73,27,75,28,77,29,79,30,81,31,83,32,85,33,87,34,89,35,91,36,93,37,95,38,97,39,99,40,101,41,103,42};
++
++__attribute__ ((noinline)) void
++foo (int *pa, int *pb)
++{
++  int i;
++  int c, d;
++
++  /* Store sinking should not work here since the pointers may alias.  */
++  for (i = 0; i < N; i++)
++    {
++      c = in1[i];
++      d = in2[i];
++
++      if (c >= d)
++        {
++          *pa = c;
++          *pb = d + 5;
++        }
++      else
++        {
++          *pb = d - 12;
++          *pa = c + d;
++        }
++
++      pa++;
++      pb++;
++    }
++}
++
++int
++main (void)
++{
++  int i;
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in1[i] = i;
++      in2[i] = i + 5;
++      __asm__ volatile ("");
++    }
++
++  foo (a, b);
++
++  for (i = 0; i < N; i++)
++    {
++      if (a[i] != result[2*i] || b[i] != result[2*i+1])
++        abort ();
++    }
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect"  } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect.exp
++++ b/src/gcc/testsuite/gcc.dg/vect/vect.exp
+@@ -75,15 +75,20 @@
+ lappend VECT_SLP_CFLAGS "-fdump-tree-slp-details"
+ 
+ # Main loop.
+-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.\[cS\]]]  \
+-	"" $DEFAULT_VECTCFLAGS
+-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vect-*.\[cS\]]]  \
+-	"" $DEFAULT_VECTCFLAGS
+-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-*.\[cS\]]]  \
+-        "" $DEFAULT_VECTCFLAGS
+-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/bb-slp*.\[cS\]]]  \
+-        "" $VECT_SLP_CFLAGS
+-
++set VECT_ADDITIONAL_FLAGS [list ""]
++if { [check_effective_target_lto] } {
++    lappend VECT_ADDITIONAL_FLAGS "-flto"
++}
++foreach flags $VECT_ADDITIONAL_FLAGS {
++    dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.\[cS\]]]  \
++	$flags $DEFAULT_VECTCFLAGS
++    dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vect-*.\[cS\]]]  \
++	$flags $DEFAULT_VECTCFLAGS
++    dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-*.\[cS\]]]  \
++        $flags $DEFAULT_VECTCFLAGS
++    dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/bb-slp*.\[cS\]]]  \
++        $flags $VECT_SLP_CFLAGS
++}
+ 
+ #### Tests with special options
+ global SAVED_DEFAULT_VECTCFLAGS
+@@ -210,6 +215,12 @@
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/ggc-*.\[cS\]]]  \
+         "" $DEFAULT_VECTCFLAGS
+ 
++# -ftree-loop-if-convert-stores
++set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
++lappend DEFAULT_VECTCFLAGS "-ftree-loop-if-convert-stores"
++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/if-cvt-stores-vect-*.\[cS\]]]  \
++        "" $DEFAULT_VECTCFLAGS
++
+ # With -O3.
+ # Don't allow IPA cloning, because it throws our counts out of whack.
+ set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
+@@ -234,6 +245,18 @@
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-reassoc-bb-slp-*.\[cS\]]]  \
+         "" $VECT_SLP_CFLAGS
+ 
++# -fno-tree-fre
++set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
++lappend DEFAULT_VECTCFLAGS "-fno-tree-fre"
++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-fre-*.\[cS\]]]  \
++        "" $DEFAULT_VECTCFLAGS
++
++# -fno-tree-fre -fno-tree-pre
++set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
++lappend DEFAULT_VECTCFLAGS "-fno-tree-fre" "-fno-tree-pre"
++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-fre-pre*.\[cS\]]]  \
++        "" $DEFAULT_VECTCFLAGS
++
+ # Clean up.
+ set dg-do-what-default ${save-dg-do-what-default}
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
+@@ -1,5 +1,4 @@
+ /* { dg-require-effective-target vect_int } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_int } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
+@@ -1,5 +1,4 @@
+ /* { dg-require-effective-target vect_int } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
+@@ -1,4 +1,5 @@
+ /* { dg-require-effective-target vect_int } */
++/* { dg-add-options double_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c
+@@ -20,5 +20,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1b.c
+@@ -22,5 +22,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1.c
+@@ -22,5 +22,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c
+@@ -37,5 +37,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "strided access in outer loop." 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
+@@ -49,5 +49,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 2 "vect" } } */
++/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 2 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 3 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
+@@ -49,5 +49,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "strided access in outer loop" 4 "vect" { target vect_multiple_sizes } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
+@@ -1,5 +1,4 @@
+ /* { dg-require-effective-target vect_float } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include <signal.h>
+@@ -17,7 +16,7 @@
+   float B[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+   float C[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+   float D[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+-  float E[4] = {0,1,2,480};
++  float E[4] = {0,480,960,1440};
+   float s;
+ 
+   int i, j;
+@@ -55,7 +54,7 @@
+       s = 0;
+       for (j=0; j<N; j+=4)
+ 	s += C[j];
+-      B[i+3] = B[i] + s;
++      B[i+1] = B[i] + s;
+     }
+ 
+   /* check results:  */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
+@@ -0,0 +1,64 @@
++/* { dg-require-effective-target vect_int } */
++/* { dg-require-effective-target vect_shift } */
++
++#include <stdlib.h>
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 64
++
++/* Modified rgb to rgb conversion from FFmpeg.  */
++__attribute__ ((noinline)) void
++foo (unsigned char *src, unsigned char *dst)
++{
++  unsigned char *s = src;
++  unsigned short *d = (unsigned short *)dst;
++  int i;
++
++  for (i = 0; i < N/4; i++)
++    {
++      const int b = *s++;
++      const int g = *s++;
++      const int r = *s++;
++      const int a = *s++;
++      *d = ((b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8) | (a>>5));
++      d++;
++    }
++
++  s = src;
++  d = (unsigned short *)dst;
++  for (i = 0; i < N/4; i++)
++    {
++      const int b = *s++;
++      const int g = *s++;
++      const int r = *s++;
++      const int a = *s++;
++      if (*d != ((b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8) | (a>>5)))
++        abort ();
++      d++;
++    }
++}
++
++int main (void)
++{
++  int i;
++  unsigned char in[N], out[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      out[i] = 255;
++      __asm__ volatile ("");
++    }
++
++  foo (in, out);
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-2.c
+@@ -0,0 +1,65 @@
++/* { dg-require-effective-target vect_int } */
++/* { dg-require-effective-target vect_shift } */
++
++#include <stdlib.h>
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 64
++
++/* Modified rgb to rgb conversion from FFmpeg.  */
++__attribute__ ((noinline)) void
++foo (unsigned char *src, unsigned char *dst)
++{
++  unsigned char *s = src;
++  int *d = (int *)dst;
++  int i;
++
++  for (i = 0; i < N/4; i++)
++    {
++      const int b = *s++;
++      const int g = *s++;
++      const int r = *s++;
++      const int a = *s++;
++      *d = ((b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8) | (a>>5));
++      d++;
++    }
++
++  s = src;
++  d = (int *)dst;
++  for (i = 0; i < N/4; i++)
++    {
++      const int b = *s++;
++      const int g = *s++;
++      const int r = *s++;
++      const int a = *s++;
++      if (*d != ((b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8) | (a>>5)))
++        abort ();
++      d++;
++    }
++}
++
++int main (void)
++{
++  int i;
++  unsigned char in[N], out[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      out[i] = 255;
++      __asm__ volatile ("");
++    }
++
++  foo (in, out);
++
++  return 0;
++}
++
++/* Final value stays in int, so no over-widening is detected at the moment.  */
++/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 0 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-3.c
+@@ -0,0 +1,64 @@
++/* { dg-require-effective-target vect_int } */
++/* { dg-require-effective-target vect_shift } */
++
++#include <stdlib.h>
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 64
++
++/* Modified rgb to rgb conversion from FFmpeg.  */
++__attribute__ ((noinline)) void
++foo (unsigned char *src, unsigned char *dst)
++{
++  unsigned char *s = src;
++  unsigned short *d = (unsigned short *)dst;
++  int i;
++
++  for (i = 0; i < N/4; i++)
++    {
++      const int b = *s++;
++      const int g = *s++;
++      const int r = *s++;
++      const int a = *s++;
++      *d = ((b>>3) | ((g&0xFFC)<<3) | ((r+0xF8)>>8) | (a<<9));
++      d++;
++    }
++
++  s = src;
++  d = (unsigned short *)dst;
++  for (i = 0; i < N/4; i++)
++    {
++      const int b = *s++;
++      const int g = *s++;
++      const int r = *s++;
++      const int a = *s++;
++      if (*d != ((b>>3) | ((g&0xFFC)<<3) | ((r+0xF8)>>8) | (a<<9)))
++        abort ();
++      d++;
++    }
++}
++
++int main (void)
++{
++  int i;
++  unsigned char in[N], out[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      out[i] = 255;
++      __asm__ volatile ("");
++    }
++
++  foo (in, out);
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
+@@ -0,0 +1,68 @@
++/* { dg-require-effective-target vect_int } */
++/* { dg-require-effective-target vect_shift } */
++
++#include <stdlib.h>
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 64
++
++/* Modified rgb to rgb conversion from FFmpeg.  */
++__attribute__ ((noinline)) int
++foo (unsigned char *src, unsigned char *dst)
++{
++  unsigned char *s = src;
++  unsigned short *d = (unsigned short *)dst, res;
++  int i, result = 0;
++
++  for (i = 0; i < N/4; i++)
++    {
++      const int b = *s++;
++      const int g = *s++;
++      const int r = *s++;
++      const int a = *s++;
++      res = ((b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8) | (a>>5));
++      *d = res;
++      result += res;
++      d++;
++    }
++
++  s = src;
++  d = (unsigned short *)dst;
++  for (i = 0; i < N/4; i++)
++    {
++      const int b = *s++;
++      const int g = *s++;
++      const int r = *s++;
++      const int a = *s++;
++      if (*d != ((b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8) | (a>>5)))
++        abort ();
++      d++;
++    }
++
++  return result;
++}
++
++int main (void)
++{
++  int i;
++  unsigned char in[N], out[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      out[i] = 255;
++      __asm__ volatile ("");
++    }
++
++  foo (in, out);
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c
+@@ -1,5 +1,4 @@
+ /* { dg-require-effective-target vect_int } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+@@ -49,6 +48,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_element_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c
+@@ -1,5 +1,4 @@
+ /* { dg-require-effective-target vect_int } */
+-/* { dg-add-options quad_vectors } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+@@ -50,6 +49,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_element_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vect_element_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c
+@@ -4,9 +4,7 @@
+ #include "tree-vect.h"
+ 
+ #define N 128
+-#define RES 21888 
+-
+-/* unaligned store.  */
++#define RES 21640 
+ 
+ int ib[N+10];
+ int ia[N+10];
+@@ -18,11 +16,11 @@
+   int i, suma = 0, sumb = 0, sumc = 0;
+ 
+   /* ib and ic have same misalignment, we peel to align them.  */
+-  for (i = 1; i <= N; i++)
++  for (i = 0; i <= N; i++)
+     {
+       suma += ia[i];
+-      sumb += ib[i+6];
+-      sumc += ic[i+2];
++      sumb += ib[i+5];
++      sumc += ic[i+1];
+     }
+ 
+   /* check results:  */
+@@ -49,7 +47,7 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c
+@@ -6,23 +6,23 @@
+ #define N 128
+ 
+ int ib[N+7];
++int ia[N+1];
+ 
+ __attribute__ ((noinline))
+ int main1 ()
+ {
+   int i;
+-  int ia[N+1];
+ 
+   /* Don't peel keeping one load and the store aligned.  */
+   for (i = 0; i <= N; i++)
+     {
+-      ia[i] = ib[i] + ib[i+6];
++      ia[i] = ib[i] + ib[i+5];
+     }
+ 
+   /* check results:  */
+   for (i = 1; i <= N; i++)
+     {
+-      if (ia[i] != ib[i] + ib[i+6])
++      if (ia[i] != ib[i] + ib[i+5])
+         abort ();
+     }
+ 
+@@ -44,7 +44,7 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
+@@ -58,7 +58,8 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { xfail vect_multiple_sizes } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_multiple_sizes } } } */
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
+@@ -0,0 +1,37 @@
++/* { dg-require-effective-target vect_shift } */
++/* { dg-require-effective-target vect_int } */
++
++#include "tree-vect.h"
++
++#define N 32
++
++unsigned short dst[N] __attribute__((aligned(N)));
++unsigned short src[N] __attribute__((aligned(N)));
++
++__attribute__ ((noinline))
++void array_shift(void)
++{
++  int i;
++  for (i = 0; i < N; i++)
++    dst[i] = src[i] >> 3;
++}
++
++int main()
++{
++  volatile int i;
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    src[i] = i << 3;
++
++  array_shift ();
++
++  for (i = 0; i < N; i++)
++    if (dst[i] != i)
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-shift-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-shift-4.c
+@@ -0,0 +1,37 @@
++/* { dg-require-effective-target vect_shift_char } */
++/* { dg-require-effective-target vect_int } */
++
++#include "tree-vect.h"
++
++#define N 32
++
++unsigned char dst[N] __attribute__((aligned(N)));
++unsigned char src[N] __attribute__((aligned(N)));
++
++__attribute__ ((noinline))
++void array_shift(void)
++{
++  int i;
++  for (i = 0; i < N; i++)
++    dst[i] = src[i] >> 3;
++}
++
++int main()
++{
++  volatile int i;
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    src[i] = i << 3;
++
++  array_shift ();
++
++  for (i = 0; i < N; i++)
++    if (dst[i] != i)
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
+@@ -71,6 +71,6 @@
+   return 0;
+ }   
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
+@@ -55,6 +55,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
+@@ -68,6 +68,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
+@@ -62,6 +62,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
+@@ -61,6 +61,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
+@@ -69,6 +69,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
+@@ -76,6 +76,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
+@@ -81,6 +81,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-float.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-float.c
+@@ -39,7 +39,7 @@
+ }
+ 
+ /* Needs interleaving support.  */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd_wide } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave && vect_extract_even_odd_wide } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
+@@ -71,6 +71,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
+@@ -71,6 +71,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
+@@ -72,5 +72,5 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
+@@ -55,6 +55,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave || vect_strided2 } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
+@@ -65,8 +65,8 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target { vect_interleave && vect_pack_trunc  } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { { ! { vect_interleave } } && { vect_pack_trunc } } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target { { vect_interleave || vect_strided4 } && vect_pack_trunc } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { { ! { vect_interleave || vect_strided4 } } && { vect_pack_trunc } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
+@@ -39,7 +39,7 @@
+ }
+ 
+ /* Needs interleaving support.  */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave || vect_strided2 } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
+@@ -55,6 +55,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c
+@@ -0,0 +1,112 @@
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 128
++
++typedef struct {
++   unsigned short a;
++   unsigned short b;
++   unsigned short c;
++} s;
++
++#define A(I) (I)
++#define B(I) ((I) * 2)
++#define C(I) ((unsigned short) ~((I) ^ 0x18))
++
++void __attribute__ ((noinline))
++check1 (s *res)
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    if (res[i].a != C (i)
++	|| res[i].b != A (i)
++	|| res[i].c != B (i))
++      abort ();
++}
++
++void __attribute__ ((noinline))
++check2 (unsigned short *res)
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    if (res[i] != (unsigned short) (A (i) + B (i) + C (i)))
++      abort ();
++}
++
++void __attribute__ ((noinline))
++check3 (s *res)
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    if (res[i].a != i
++	|| res[i].b != i
++	|| res[i].c != i)
++      abort ();
++}
++
++void __attribute__ ((noinline))
++check4 (unsigned short *res)
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    if (res[i] != (unsigned short) (A (i) + B (i)))
++      abort ();
++}
++
++void __attribute__ ((noinline))
++main1 (s *arr)
++{
++  int i;
++  s *ptr = arr;
++  s res1[N];
++  unsigned short res2[N];
++
++  for (i = 0; i < N; i++)
++    {
++      res1[i].a = arr[i].c;
++      res1[i].b = arr[i].a;
++      res1[i].c = arr[i].b;
++    }
++  check1 (res1);
++
++  for (i = 0; i < N; i++)
++    res2[i] = arr[i].a + arr[i].b + arr[i].c;
++  check2 (res2);
++
++  for (i = 0; i < N; i++)
++    {
++      res1[i].a = i;
++      res1[i].b = i;
++      res1[i].c = i;
++    }
++  check3 (res1);
++
++  for (i = 0; i < N; i++)
++    res2[i] = arr[i].a + arr[i].b;
++  check4 (res2);
++}
++
++int main (void)
++{
++  int i;
++  s arr[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      arr[i].a = A (i);
++      arr[i].b = B (i);
++      arr[i].c = C (i);
++    }
++  main1 (arr);
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  { target vect_strided3 } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
+@@ -68,6 +68,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
+@@ -63,6 +63,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
+@@ -77,6 +77,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
+@@ -60,6 +60,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
+@@ -54,6 +54,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+    
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
+@@ -71,6 +71,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
+@@ -85,6 +85,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
+@@ -78,6 +78,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
+@@ -98,6 +98,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
+@@ -83,6 +83,6 @@
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
+@@ -53,6 +53,6 @@
+ } 
+ 
+ /* Needs interleaving support.  */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  { vect_interleave && vect_extract_even_odd } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided2 } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-const-s16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-const-s16.c
+@@ -0,0 +1,60 @@
++/* { dg-require-effective-target vect_int } */
++
++#include "tree-vect.h"
++#include <stdlib.h>
++
++#define N 32
++
++__attribute__ ((noinline)) void 
++foo (int *__restrict a,
++     short *__restrict b,
++     int n)
++{
++  int i;
++
++  for (i = 0; i < n; i++)
++    a[i] = b[i] * 2333;
++
++  for (i = 0; i < n; i++)
++    if (a[i] != b[i] * 2333)
++      abort ();
++}
++
++__attribute__ ((noinline)) void
++bar (int *__restrict a,
++     short *__restrict b,
++     int n)
++{
++  int i;
++
++  for (i = 0; i < n; i++)
++    a[i] = b[i] * (short) 2333;
++
++  for (i = 0; i < n; i++)
++    if (a[i] != b[i] * (short) 2333)
++      abort ();
++}
++
++int main (void)
++{
++  int i;
++  int a[N];
++  short b[N];
++
++  for (i = 0; i < N; i++)
++    {
++      a[i] = 0;
++      b[i] = i;
++      __asm__ volatile ("");
++    }
++
++  foo (a, b, N);
++  bar (a, b, N);
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_widen_mult_hi_to_si } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-const-u16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-const-u16.c
+@@ -0,0 +1,77 @@
++/* { dg-require-effective-target vect_int } */
++
++#include "tree-vect.h"
++#include <stdlib.h>
++
++#define N 32
++
++__attribute__ ((noinline)) void 
++foo (unsigned int *__restrict a,
++     unsigned short *__restrict b,
++     int n)
++{
++  int i;
++
++  for (i = 0; i < n; i++)
++    a[i] = b[i] * 2333;
++
++  for (i = 0; i < n; i++)
++    if (a[i] != b[i] * 2333)
++      abort ();
++}
++
++__attribute__ ((noinline)) void
++bar (unsigned int *__restrict a,
++     unsigned short *__restrict b,
++     int n)
++{
++  int i;
++
++  for (i = 0; i < n; i++)
++    a[i] = (unsigned short) 2333 * b[i];
++
++  for (i = 0; i < n; i++)
++    if (a[i] != b[i] * (unsigned short) 2333)
++      abort ();
++}
++
++__attribute__ ((noinline)) void
++baz (unsigned int *__restrict a,
++     unsigned short *__restrict b,
++     int n)
++{
++  int i;
++
++  for (i = 0; i < n; i++)
++    a[i] = b[i] * 233333333;
++
++  for (i = 0; i < n; i++)
++    if (a[i] != b[i] * 233333333)
++      abort ();
++}
++
++
++int main (void)
++{
++  int i;
++  unsigned int a[N];
++  unsigned short b[N];
++
++  for (i = 0; i < N; i++)
++    {
++      a[i] = 0;
++      b[i] = i;
++      __asm__ volatile ("");
++    }
++
++  foo (a, b, N);
++  bar (a, b, N);
++  baz (a, b, N);
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" { target vect_widen_mult_hi_to_si } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-half.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-half.c
+@@ -0,0 +1,49 @@
++/* { dg-require-effective-target vect_int } */
++
++#include "tree-vect.h"
++#include <stdlib.h>
++
++#define N 32
++#define COEF 32470
++#define COEF2 324700
++
++unsigned char in[N];
++int out[N];
++int out2[N];
++
++__attribute__ ((noinline)) void
++foo (int a)
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    {
++      out[i] = in[i] * COEF;
++      out2[i] = in[i] + a;
++    }
++}
++
++int main (void)
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      __asm__ volatile ("");
++    }
++
++  foo (COEF2);
++
++  for (i = 0; i < N; i++)
++    if (out[i] != in[i] * COEF || out2[i] != in[i] + COEF2)
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-half-u8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-half-u8.c
+@@ -0,0 +1,59 @@
++/* { dg-require-effective-target vect_int } */
++
++#include "tree-vect.h"
++#include <stdlib.h>
++
++#define N 32
++#define COEF 32470
++
++unsigned char in[N];
++int out[N];
++
++__attribute__ ((noinline)) void
++foo ()
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    out[i] = in[i] * COEF;
++}
++
++__attribute__ ((noinline)) void
++bar ()
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    out[i] = COEF * in[i];
++}
++
++int main (void)
++{
++  int i;
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      __asm__ volatile ("");
++    }
++
++  foo ();
++
++  for (i = 0; i < N; i++)
++    if (out[i] != in[i] * COEF)
++      abort ();
++
++  bar ();
++
++  for (i = 0; i < N; i++)
++    if (out[i] != in[i] * COEF)
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_widen_mult_hi_to_si } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c
+@@ -9,13 +9,11 @@
+ unsigned short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ unsigned int result[N];
+ 
+-/* short->int widening-mult */
++/* unsigned short->unsigned int widening-mult.  */
+ __attribute__ ((noinline)) int
+ foo1(int len) {
+   int i;
+ 
+-  /* Not vectorized because X[i] and Y[i] are casted to 'int'
+-     so the widening multiplication pattern is not recognized.  */
+   for (i=0; i<len; i++) {
+     result[i] = (unsigned int)(X[i] * Y[i]);
+   }
+@@ -43,8 +41,8 @@
+   return 0;
+ }
+ 
+-/*The induction loop is vectorized  */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_pack_trunc } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
++/* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c
+@@ -9,7 +9,7 @@
+ unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ unsigned short result[N];
+ 
+-/* char->short widening-mult */
++/* unsigned char-> unsigned short widening-mult.  */
+ __attribute__ ((noinline)) int
+ foo1(int len) {
+   int i;
+@@ -28,8 +28,7 @@
+   for (i=0; i<N; i++) {
+     X[i] = i;
+     Y[i] = 64-i;
+-    if (i%4 == 0)
+-      X[i] = 5;
++    __asm__ volatile ("");
+   }
+ 
+   foo1 (N);
+@@ -43,5 +42,7 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_qi_to_hi_pattern } } } */
++/* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_qi_to_hi_pattern } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-s16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-s16.c
+@@ -0,0 +1,107 @@
++/* { dg-require-effective-target vect_int } */
++/* { dg-require-effective-target vect_shift } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 64
++#define C 16
++
++__attribute__ ((noinline)) void
++foo (short *src, int *dst)
++{
++  int i;
++  short b, b0, b1, b2, b3, *s = src;
++  int *d = dst;
++
++  for (i = 0; i < N/4; i++)
++    {
++      b0 = *s++;
++      b1 = *s++;
++      b2 = *s++;
++      b3 = *s++;
++      *d = b0 << C;
++      d++;
++      *d = b1 << C;
++      d++;
++      *d = b2 << C;
++      d++;
++      *d = b3 << C;
++      d++;
++    }
++
++  s = src;
++  d = dst;
++  for (i = 0; i < N; i++)
++    {
++      b = *s++;
++      if (*d != b << C)
++        abort ();
++      d++;
++    }
++
++  s = src;
++  d = dst;
++  for (i = 0; i < N/4; i++)
++    {
++      b0 = *s++;
++      b1 = *s++;
++      b2 = *s++;
++      b3 = *s++;
++      *d = b0 << C;
++      d++;
++      *d = b1 << C;
++      d++;
++      *d = b2 << C;
++      d++;
++      *d = b3 << 6;
++      d++;
++    }
++
++  s = src;
++  d = dst;
++  for (i = 0; i < N/4; i++)
++    {
++      b = *s++;
++      if (*d != b << C)
++        abort ();
++      d++;
++      b = *s++;
++      if (*d != b << C)
++        abort ();
++      d++;
++      b = *s++;
++      if (*d != b << C)
++        abort ();
++      d++;
++      b = *s++;
++      if (*d != b << 6)
++        abort ();
++      d++;
++    }
++}
++
++int main (void)
++{
++  int i;
++  short in[N];
++  int out[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      out[i] = 255;
++      __asm__ volatile ("");
++    }
++
++  foo (in, out);
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 8 "vect" { target vect_widen_shift } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-s8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-s8.c
+@@ -0,0 +1,58 @@
++/* { dg-require-effective-target vect_int } */
++/* { dg-require-effective-target vect_shift } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 64
++#define C 12
++
++__attribute__ ((noinline)) void
++foo (char *src, int *dst)
++{
++  int i;
++  char b, *s = src;
++  int *d = dst;
++
++  for (i = 0; i < N; i++)
++    {
++      b = *s++;
++      *d = b << C;
++      d++;
++    }
++
++  s = src;
++  d = dst;
++  for (i = 0; i < N; i++)
++    {
++      b = *s++;
++      if (*d != b << C)
++        abort ();
++      d++;
++    }
++}
++
++int main (void)
++{
++  int i;
++  char in[N];
++  int out[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      out[i] = 255;
++      __asm__ volatile ("");
++    }
++
++  foo (in, out);
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 1 "vect" { target vect_widen_shift } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-u16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-u16.c
+@@ -0,0 +1,58 @@
++/* { dg-require-effective-target vect_int } */
++/* { dg-require-effective-target vect_shift } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 64
++#define C 7
++
++__attribute__ ((noinline)) void
++foo (unsigned short *src, unsigned int *dst)
++{
++  int i;
++  unsigned short b, *s = src;
++  unsigned int *d = dst;
++
++  for (i = 0; i < N; i++)
++    {
++      b = *s++;
++      *d = b << C;
++      d++;
++    }
++
++  s = src;
++  d = dst;
++  for (i = 0; i < N; i++)
++    {
++      b = *s++;
++      if (*d != b << C)
++        abort ();
++      d++;
++    }
++}
++
++int main (void)
++{
++  int i;
++  unsigned short in[N];
++  unsigned int out[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      out[i] = 255;
++      __asm__ volatile ("");
++    }
++
++  foo (in, out);
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 1 "vect" { target vect_widen_shift } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-u8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-u8.c
+@@ -0,0 +1,64 @@
++/* { dg-require-effective-target vect_int } */
++/* { dg-require-effective-target vect_shift } */
++
++#include <stdarg.h>
++#include "tree-vect.h"
++
++#define N 64
++#define C1 10
++#define C2 5
++
++__attribute__ ((noinline)) void
++foo (unsigned char *src, unsigned int *dst1, unsigned int *dst2)
++{
++  int i;
++  unsigned char b, *s = src;
++  unsigned int *d1 = dst1, *d2 = dst2;
++
++  for (i = 0; i < N; i++)
++    {
++      b = *s++;
++      *d1 = b << C1;
++      d1++;
++      *d2 = b << C2;
++      d2++;
++    }
++
++  s = src;
++  d1 = dst1;
++  d2 = dst2;
++  for (i = 0; i < N; i++)
++    {
++      b = *s++;
++      if (*d1 != b << C1 || *d2 != b << C2)
++        abort ();
++      d1++;
++      d2++;
++    }
++}
++
++int main (void)
++{
++  int i;
++  unsigned char in[N];
++  unsigned int out1[N];
++  unsigned int out2[N];
++
++  check_vect ();
++
++  for (i = 0; i < N; i++)
++    {
++      in[i] = i;
++      out1[i] = 255;
++      out2[i] = 255;
++      __asm__ volatile ("");
++    }
++
++  foo (in, out1, out2);
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 2 "vect" { target vect_widen_shift } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/volatile-bitfields-2.c
++++ b/src/gcc/testsuite/gcc.dg/volatile-bitfields-2.c
+@@ -0,0 +1,15 @@
++/* { dg-do run } */
++/* { dg-options "-fstrict-volatile-bitfields" } */
++
++extern void abort(void);
++struct thing {
++  volatile unsigned short a: 8;
++  volatile unsigned short b: 8;
++} t = {1,2};
++
++int main()
++{
++  t.a = 3;
++  if (t.a !=3 || t.b !=2) abort();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/abitest.h
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/abitest.h
+@@ -1,3 +1,4 @@
++
+ #define IN_FRAMEWORK
+ 
+ #ifdef VFP
+@@ -10,6 +11,13 @@
+ #define D6	48
+ #define D7	56
+ 
++#ifdef NEON
++#define Q0      D0
++#define Q1      D2
++#define Q2      D4
++#define Q3      D6
++#endif
++
+ #define S0	64
+ #define S1	68
+ #define S2	72
+@@ -27,23 +35,18 @@
+ #define S14	120
+ #define S15	124
+ 
+-#define R0	128
+-#define R1	132
+-#define R2	136
+-#define R3	140
+-
+-#define STACK	144
+-
++#define CORE_REG_START 128
+ #else
++#define CORE_REG_START 0
++#endif
+ 
+-#define R0	0
+-#define R1	4
+-#define R2	8
+-#define R3	12
++#define R0	CORE_REG_START
++#define R1	(R0 + 4)
++#define R2	(R1 + 4)
++#define R3	(R2 + 4)
++#define STACK	(R3 + 4)
+ 
+-#define STACK   16
+ 
+-#endif
+ 
+ extern void abort (void);
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-constants.h
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-constants.h
+@@ -0,0 +1,33 @@
++
++
++#include "arm_neon.h"
++
++const int32x4_t i32x4_constvec1 = { 1101, 1102, 1103, 1104};
++const int32x4_t i32x4_constvec2 = { 2101, 2102, 2103, 2104};
++
++#define ELEM(INDEX) .val[INDEX]
++
++const int32x4x2_t i32x4x2_constvec1 =   {ELEM(0) = {0xaddebccb,11,12,13}, 
++					 ELEM(1) = {14, 15, 16, 17} };
++
++const int32x4x2_t i32x4x2_constvec2 = { ELEM(0) = {0xaadebcca,11,12,13}, 
++			                ELEM(1) = {140, 15, 16, 17}};
++
++const int32x4x3_t i32x4x3_constvec1 = { ELEM(0) = {0xabbccdde,8, 9, 10},
++					ELEM(1) = {0xabcccdde, 26, 27, 28},
++			                ELEM(2) = {0xaccccddf, 29, 30, 31}};
++
++const int32x4x3_t i32x4x3_constvec2 = { ELEM(0) = {0xbccccdd0,8, 9, 10},
++					ELEM(1) = {0xbdfe1000, 26, 27, 28},
++			                ELEM(2) = {0xaccccddf, 29, 30, 31}};
++const float32x4x2_t f32x4x2_constvec1 =
++  { ELEM(0) = { 7.101f, 0.201f, 0.301f, 0.401f} ,
++    ELEM(1) = { 8.101f, 0.501f, 0.601f, 0.701f} };
++
++const float32x4x2_t f32x4x2_constvec2 = 
++  { ELEM(0) = { 11.99f , 11.21f, 1.27f, 8.74f},
++    ELEM(1) = { 13.45f , 1.23f ,1.24f, 1.26f}};
++
++const int32x2_t i32x2_constvec1 = { 1283, 1345 };
++const int32x2x2_t i32x2x2_constvec1 = { ELEM(0) = { 0xabcdefab, 32 },
++					ELEM(1) = { 0xabcdefbc, 33 }};
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect1.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect1.c
+@@ -0,0 +1,27 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok  } */
++/* { dg-require-effective-target arm_neon_ok  } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect1.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(float, 3.0f, S4) /* D2, Q1 */
++ARG(int32x4x2_t, i32x4x2_constvec1, Q2) /* Q2, Q3 - D4-D6 , s5-s12 */
++ARG(double, 12.0, D3) /* Backfill this particular argument.  */
++ARG(int32x4x2_t, i32x4x2_constvec2, STACK) 
++ARG(float, 5.0f, STACK+sizeof(int32x4x2_t)) /* No backfill allowed.  */
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect2.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect2.c
+@@ -0,0 +1,23 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect2.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1.  */
++ARG(float, 3.0f, S4) /* D2, Q1 occupied.  */
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect3.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect3.c
+@@ -0,0 +1,26 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect3.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(float, 3.0f, S4) /* D2, Q1 */
++ARG(int32x4x2_t, i32x4x2_constvec1, Q2) /* Q2, Q3 - D4-D6 , s5-s12 */
++ARG(int32x4x2_t, i32x4x2_constvec2, STACK) 
++ARG(double, 11.0, STACK+sizeof(int32x4x2_t)) /* No backfill in D3.  */
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect4.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect4.c
+@@ -0,0 +1,27 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok  } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect4.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(float, 3.0f, S4) /* D2, Q1 */
++ARG(int32x4x2_t, i32x4x2_constvec1, Q2) /* Q2, Q3 - D4-D6 , s5-s12 */
++ARG(double, 12.0, D3) /* Backfill this particular argument.  */
++ARG(float, 5.0f, S5) /* Backfill in S5.  */
++ARG(int32x4x2_t, i32x4x2_constvec2, STACK) 
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect5.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect5.c
+@@ -0,0 +1,28 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect5.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(float, 3.0f, S4) /* D2, Q1 */
++ARG(float32x4x2_t, f32x4x2_constvec1, Q2) /* Q2, Q3 - D4-D6 , s5-s12 */
++ARG(double, 12.0, D3) /* Backfill this particular argument.  */
++ARG(int32x4x2_t, i32x4x2_constvec2, STACK) 
++ARG(float, 5.0f, STACK+sizeof(int32x4x2_t)) /* No backfill allowed.  */
++LAST_ARG(int, 3, R0)
++
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect6.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect6.c
+@@ -0,0 +1,24 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect6.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(int32x4x3_t, i32x4x3_constvec1, Q1) /* Q1, Q2, Q3  */
++ARG(int32x4x3_t, i32x4x3_constvec2, STACK)
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect7.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect7.c
+@@ -0,0 +1,27 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect7.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(float, 24.3f, S0) /* S0 , D0, Q0 */
++ARG(int32x4x3_t, i32x4x3_constvec1, Q1) /* Q1, Q2, Q3  */
++ARG(double, 25.6, D1)
++ARG(float, 12.67f, S1)
++ARG(int32x4x3_t, i32x4x3_constvec2, STACK)
++ARG(double, 2.47, STACK+sizeof(int32x4x3_t))
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect8.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect8.c
+@@ -0,0 +1,27 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect8.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(float, 24.3f, S0) /* S0 , D0, Q0 */
++ARG(int32x2_t, i32x2_constvec1, D1) /* D1  */
++ARG(double, 25.6, D2)
++ARG(float, 12.67f, S1)
++ARG(int32x4x3_t, i32x4x3_constvec2, STACK)
++ARG(double, 2.47, STACK+sizeof(int32x4x3_t))
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp15.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp15.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp16.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp17.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp17.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/cmp-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/cmp-1.c
+@@ -0,0 +1,37 @@
++/* { dg-do compile } */
++/* { dg-options "-O" } */
++/* { dg-final { scan-assembler-not "\tbl\t" } } */
++/* { dg-final { scan-assembler-not "__aeabi" } } */
++int x, y;
++
++#define TEST_EXPR(NAME, ARGS, EXPR)			\
++  int NAME##1 ARGS { return (EXPR); }			\
++  int NAME##2 ARGS { return !(EXPR); }			\
++  int NAME##3 ARGS { return (EXPR) ? x : y; }		\
++  void NAME##4 ARGS { if (EXPR) x++; }			\
++  void NAME##5 ARGS { if (!(EXPR)) x++; }
++
++#define TEST(NAME, TYPE, OPERATOR) \
++  TEST_EXPR (NAME##_rr, (TYPE a1, TYPE a2), a1 OPERATOR a2)	\
++  TEST_EXPR (NAME##_rm, (TYPE a1, TYPE *a2), a1 OPERATOR *a2)	\
++  TEST_EXPR (NAME##_mr, (TYPE *a1, TYPE a2), *a1 OPERATOR a2)	\
++  TEST_EXPR (NAME##_mm, (TYPE *a1, TYPE *a2), *a1 OPERATOR *a2) \
++  TEST_EXPR (NAME##_rc, (TYPE a1), a1 OPERATOR 100)		\
++  TEST_EXPR (NAME##_cr, (TYPE a1), 100 OPERATOR a1)
++
++#define TEST_OP(NAME, OPERATOR) \
++  TEST (sc_##NAME, signed char, OPERATOR)		\
++  TEST (uc_##NAME, unsigned char, OPERATOR)		\
++  TEST (ss_##NAME, short, OPERATOR)			\
++  TEST (us_##NAME, unsigned short, OPERATOR)		\
++  TEST (si_##NAME, int, OPERATOR)			\
++  TEST (ui_##NAME, unsigned int, OPERATOR)		\
++  TEST (sll_##NAME, long long, OPERATOR)		\
++  TEST (ull_##NAME, unsigned long long, OPERATOR)
++
++TEST_OP (eq, ==)
++TEST_OP (ne, !=)
++TEST_OP (lt, <)
++TEST_OP (gt, >)
++TEST_OP (le, <=)
++TEST_OP (ge, >=)
+--- a/src/gcc/testsuite/gcc.target/arm/cmp-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/cmp-2.c
+@@ -0,0 +1,49 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-final { scan-assembler-not "\tbl\t" } } */
++/* { dg-final { scan-assembler-not "__aeabi" } } */
++int x, y;
++
++#define EQ(X, Y) ((X) == (Y))
++#define NE(X, Y) ((X) != (Y))
++#define LT(X, Y) ((X) < (Y))
++#define GT(X, Y) ((X) > (Y))
++#define LE(X, Y) ((X) <= (Y))
++#define GE(X, Y) ((X) >= (Y))
++
++#define TEST_EXPR(NAME, ARGS, EXPR)			\
++  int NAME##1 ARGS { return (EXPR); }			\
++  int NAME##2 ARGS { return !(EXPR); }			\
++  int NAME##3 ARGS { return (EXPR) ? x : y; }		\
++  void NAME##4 ARGS { if (EXPR) x++; }			\
++  void NAME##5 ARGS { if (!(EXPR)) x++; }
++
++#define TEST(NAME, TYPE, OPERATOR) \
++  TEST_EXPR (NAME##_rr, (TYPE a1, TYPE a2), OPERATOR (a1, a2))		\
++  TEST_EXPR (NAME##_rm, (TYPE a1, TYPE *a2), OPERATOR (a1, *a2))	\
++  TEST_EXPR (NAME##_mr, (TYPE *a1, TYPE a2), OPERATOR (*a1, a2))	\
++  TEST_EXPR (NAME##_mm, (TYPE *a1, TYPE *a2), OPERATOR (*a1, *a2))	\
++  TEST_EXPR (NAME##_rc, (TYPE a1), OPERATOR (a1, 100))			\
++  TEST_EXPR (NAME##_cr, (TYPE a1), OPERATOR (100, a1))
++
++#define TEST_OP(NAME, OPERATOR) \
++  TEST (f_##NAME, float, OPERATOR)		\
++  TEST (d_##NAME, double, OPERATOR)		\
++  TEST (ld_##NAME, long double, OPERATOR)
++
++TEST_OP (eq, EQ)
++TEST_OP (ne, NE)
++TEST_OP (lt, LT)
++TEST_OP (gt, GT)
++TEST_OP (le, LE)
++TEST_OP (ge, GE)
++TEST_OP (blt, __builtin_isless)
++TEST_OP (bgt, __builtin_isgreater)
++TEST_OP (ble, __builtin_islessequal)
++TEST_OP (bge, __builtin_isgreaterequal)
++/* This one should be expanded into separate ordered and equality
++   comparisons.  */
++TEST_OP (blg, __builtin_islessgreater)
++TEST_OP (bun, __builtin_isunordered)
+--- a/src/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c
++++ b/src/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arch_v5_ok } */
++/* { dg-options "-std=gnu99" } */
++/* { dg-add-options arm_arch_v5 } */
++/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
++/* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
++/* { dg-message "file included" "In file included" { target *-*-* } 0 } */
++
++#include "../../gcc.dg/di-longlong64-sync-1.c"
++
++/* On an old ARM we have no ldrexd or strexd so we have to use helpers.  */
++/* { dg-final { scan-assembler-not "ldrexd" } } */
++/* { dg-final { scan-assembler-not "strexd" } } */
++/* { dg-final { scan-assembler "__sync_" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withldrexd.c
++++ b/src/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withldrexd.c
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arm_ok } */
++/* { dg-options "-marm -std=gnu99" } */
++/* { dg-require-effective-target arm_arch_v6k_ok } */
++/* { dg-add-options arm_arch_v6k } */
++/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
++/* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
++/* { dg-message "file included" "In file included" { target *-*-* } 0 } */
++
++#include "../../gcc.dg/di-longlong64-sync-1.c"
++
++/* We should be using ldrexd, strexd and no helpers or shorter ldrex.  */
++/* { dg-final { scan-assembler-times "\tldrexd" 48 } } */
++/* { dg-final { scan-assembler-times "\tstrexd" 48 } } */
++/* { dg-final { scan-assembler-not "__sync_" } } */
++/* { dg-final { scan-assembler-not "ldrex\t" } } */
++/* { dg-final { scan-assembler-not "strex\t" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/lp1013209.c
++++ b/src/gcc/testsuite/gcc.target/arm/lp1013209.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++/* { dg-add-options arm_neon } */
++#include "arm_neon.h"
++
++void foo (void)
++{
++  int16_t buffer[2048];
++  int f;
++  for (f = 0; f < 128; f += 8)
++    vst1q_u16 (&buffer[f], (uint16x8_t){0});
++
++}
+--- a/src/gcc/testsuite/gcc.target/arm/mla-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/mla-2.c
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long foolong (long long x, short *a, short *b)
++{
++    return x + *a * *b;
++}
++
++/* { dg-final { scan-assembler "smlalbb" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
+@@ -15,5 +15,5 @@
+   out_float32x2_t = vld1_dup_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
+@@ -15,5 +15,5 @@
+   out_poly16x4_t = vld1_dup_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
+@@ -15,5 +15,5 @@
+   out_poly8x8_t = vld1_dup_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
+@@ -15,5 +15,5 @@
+   out_int16x4_t = vld1_dup_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
+@@ -15,5 +15,5 @@
+   out_int32x2_t = vld1_dup_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
+@@ -15,5 +15,5 @@
+   out_int64x1_t = vld1_dup_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
+@@ -15,5 +15,5 @@
+   out_int8x8_t = vld1_dup_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
+@@ -15,5 +15,5 @@
+   out_uint16x4_t = vld1_dup_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
+@@ -15,5 +15,5 @@
+   out_uint32x2_t = vld1_dup_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
+@@ -15,5 +15,5 @@
+   out_uint64x1_t = vld1_dup_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
+@@ -15,5 +15,5 @@
+   out_uint8x8_t = vld1_dup_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
+@@ -15,5 +15,5 @@
+   out_float32x2_t = vld1_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
+@@ -16,5 +16,5 @@
+   out_float32x2_t = vld1_lane_f32 (0, arg1_float32x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
+@@ -16,5 +16,5 @@
+   out_poly16x4_t = vld1_lane_p16 (0, arg1_poly16x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
+@@ -16,5 +16,5 @@
+   out_poly8x8_t = vld1_lane_p8 (0, arg1_poly8x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
+@@ -16,5 +16,5 @@
+   out_int16x4_t = vld1_lane_s16 (0, arg1_int16x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
+@@ -16,5 +16,5 @@
+   out_int32x2_t = vld1_lane_s32 (0, arg1_int32x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
+@@ -16,5 +16,5 @@
+   out_int64x1_t = vld1_lane_s64 (0, arg1_int64x1_t, 0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
+@@ -16,5 +16,5 @@
+   out_int8x8_t = vld1_lane_s8 (0, arg1_int8x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
+@@ -16,5 +16,5 @@
+   out_uint16x4_t = vld1_lane_u16 (0, arg1_uint16x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
+@@ -16,5 +16,5 @@
+   out_uint32x2_t = vld1_lane_u32 (0, arg1_uint32x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
+@@ -16,5 +16,5 @@
+   out_uint64x1_t = vld1_lane_u64 (0, arg1_uint64x1_t, 0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
+@@ -16,5 +16,5 @@
+   out_uint8x8_t = vld1_lane_u8 (0, arg1_uint8x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
+@@ -15,5 +15,5 @@
+   out_poly16x4_t = vld1_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
+@@ -15,5 +15,5 @@
+   out_poly8x8_t = vld1_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
+@@ -15,5 +15,5 @@
+   out_float32x4_t = vld1q_dup_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
+@@ -15,5 +15,5 @@
+   out_poly16x8_t = vld1q_dup_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
+@@ -15,5 +15,5 @@
+   out_poly8x16_t = vld1q_dup_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
+@@ -15,5 +15,5 @@
+   out_int16x8_t = vld1q_dup_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
+@@ -15,5 +15,5 @@
+   out_int32x4_t = vld1q_dup_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
+@@ -15,5 +15,5 @@
+   out_int64x2_t = vld1q_dup_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
+@@ -15,5 +15,5 @@
+   out_int8x16_t = vld1q_dup_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
+@@ -15,5 +15,5 @@
+   out_uint16x8_t = vld1q_dup_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
+@@ -15,5 +15,5 @@
+   out_uint32x4_t = vld1q_dup_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
+@@ -15,5 +15,5 @@
+   out_uint64x2_t = vld1q_dup_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
+@@ -15,5 +15,5 @@
+   out_uint8x16_t = vld1q_dup_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
+@@ -15,5 +15,5 @@
+   out_float32x4_t = vld1q_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
+@@ -16,5 +16,5 @@
+   out_float32x4_t = vld1q_lane_f32 (0, arg1_float32x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
+@@ -16,5 +16,5 @@
+   out_poly16x8_t = vld1q_lane_p16 (0, arg1_poly16x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
+@@ -16,5 +16,5 @@
+   out_poly8x16_t = vld1q_lane_p8 (0, arg1_poly8x16_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
+@@ -16,5 +16,5 @@
+   out_int16x8_t = vld1q_lane_s16 (0, arg1_int16x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
+@@ -16,5 +16,5 @@
+   out_int32x4_t = vld1q_lane_s32 (0, arg1_int32x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
+@@ -16,5 +16,5 @@
+   out_int64x2_t = vld1q_lane_s64 (0, arg1_int64x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
+@@ -16,5 +16,5 @@
+   out_int8x16_t = vld1q_lane_s8 (0, arg1_int8x16_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
+@@ -16,5 +16,5 @@
+   out_uint16x8_t = vld1q_lane_u16 (0, arg1_uint16x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
+@@ -16,5 +16,5 @@
+   out_uint32x4_t = vld1q_lane_u32 (0, arg1_uint32x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
+@@ -16,5 +16,5 @@
+   out_uint64x2_t = vld1q_lane_u64 (0, arg1_uint64x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
+@@ -16,5 +16,5 @@
+   out_uint8x16_t = vld1q_lane_u8 (0, arg1_uint8x16_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
+@@ -15,5 +15,5 @@
+   out_poly16x8_t = vld1q_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
+@@ -15,5 +15,5 @@
+   out_poly8x16_t = vld1q_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
+@@ -15,5 +15,5 @@
+   out_int16x8_t = vld1q_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
+@@ -15,5 +15,5 @@
+   out_int32x4_t = vld1q_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
+@@ -15,5 +15,5 @@
+   out_int64x2_t = vld1q_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
+@@ -15,5 +15,5 @@
+   out_int8x16_t = vld1q_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
+@@ -15,5 +15,5 @@
+   out_uint16x8_t = vld1q_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
+@@ -15,5 +15,5 @@
+   out_uint32x4_t = vld1q_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
+@@ -15,5 +15,5 @@
+   out_uint64x2_t = vld1q_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
+@@ -15,5 +15,5 @@
+   out_uint8x16_t = vld1q_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
+@@ -15,5 +15,5 @@
+   out_int16x4_t = vld1_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
+@@ -15,5 +15,5 @@
+   out_int32x2_t = vld1_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
+@@ -15,5 +15,5 @@
+   out_int64x1_t = vld1_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
+@@ -15,5 +15,5 @@
+   out_int8x8_t = vld1_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
+@@ -15,5 +15,5 @@
+   out_uint16x4_t = vld1_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
+@@ -15,5 +15,5 @@
+   out_uint32x2_t = vld1_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
+@@ -15,5 +15,5 @@
+   out_uint64x1_t = vld1_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
+@@ -15,5 +15,5 @@
+   out_uint8x8_t = vld1_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
+@@ -15,5 +15,5 @@
+   out_float32x2x2_t = vld2_dup_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
+@@ -15,5 +15,5 @@
+   out_poly16x4x2_t = vld2_dup_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
+@@ -15,5 +15,5 @@
+   out_poly8x8x2_t = vld2_dup_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
+@@ -15,5 +15,5 @@
+   out_int16x4x2_t = vld2_dup_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
+@@ -15,5 +15,5 @@
+   out_int32x2x2_t = vld2_dup_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
+@@ -15,5 +15,5 @@
+   out_int64x1x2_t = vld2_dup_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
+@@ -15,5 +15,5 @@
+   out_int8x8x2_t = vld2_dup_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
+@@ -15,5 +15,5 @@
+   out_uint16x4x2_t = vld2_dup_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
+@@ -15,5 +15,5 @@
+   out_uint32x2x2_t = vld2_dup_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
+@@ -15,5 +15,5 @@
+   out_uint64x1x2_t = vld2_dup_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
+@@ -15,5 +15,5 @@
+   out_uint8x8x2_t = vld2_dup_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
+@@ -15,5 +15,5 @@
+   out_float32x2x2_t = vld2_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
+@@ -16,5 +16,5 @@
+   out_float32x2x2_t = vld2_lane_f32 (0, arg1_float32x2x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
+@@ -16,5 +16,5 @@
+   out_poly16x4x2_t = vld2_lane_p16 (0, arg1_poly16x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
+@@ -16,5 +16,5 @@
+   out_poly8x8x2_t = vld2_lane_p8 (0, arg1_poly8x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
+@@ -16,5 +16,5 @@
+   out_int16x4x2_t = vld2_lane_s16 (0, arg1_int16x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
+@@ -16,5 +16,5 @@
+   out_int32x2x2_t = vld2_lane_s32 (0, arg1_int32x2x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
+@@ -16,5 +16,5 @@
+   out_int8x8x2_t = vld2_lane_s8 (0, arg1_int8x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
+@@ -16,5 +16,5 @@
+   out_uint16x4x2_t = vld2_lane_u16 (0, arg1_uint16x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
+@@ -16,5 +16,5 @@
+   out_uint32x2x2_t = vld2_lane_u32 (0, arg1_uint32x2x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
+@@ -16,5 +16,5 @@
+   out_uint8x8x2_t = vld2_lane_u8 (0, arg1_uint8x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
+@@ -15,5 +15,5 @@
+   out_poly16x4x2_t = vld2_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
+@@ -15,5 +15,5 @@
+   out_poly8x8x2_t = vld2_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
+@@ -15,6 +15,6 @@
+   out_float32x4x2_t = vld2q_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
+@@ -16,5 +16,5 @@
+   out_float32x4x2_t = vld2q_lane_f32 (0, arg1_float32x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
+@@ -16,5 +16,5 @@
+   out_poly16x8x2_t = vld2q_lane_p16 (0, arg1_poly16x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
+@@ -16,5 +16,5 @@
+   out_int16x8x2_t = vld2q_lane_s16 (0, arg1_int16x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
+@@ -16,5 +16,5 @@
+   out_int32x4x2_t = vld2q_lane_s32 (0, arg1_int32x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
+@@ -16,5 +16,5 @@
+   out_uint16x8x2_t = vld2q_lane_u16 (0, arg1_uint16x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
+@@ -16,5 +16,5 @@
+   out_uint32x4x2_t = vld2q_lane_u32 (0, arg1_uint32x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
+@@ -15,6 +15,6 @@
+   out_poly16x8x2_t = vld2q_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
+@@ -15,6 +15,6 @@
+   out_poly8x16x2_t = vld2q_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
+@@ -15,6 +15,6 @@
+   out_int16x8x2_t = vld2q_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
+@@ -15,6 +15,6 @@
+   out_int32x4x2_t = vld2q_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
+@@ -15,6 +15,6 @@
+   out_int8x16x2_t = vld2q_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
+@@ -15,6 +15,6 @@
+   out_uint16x8x2_t = vld2q_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
+@@ -15,6 +15,6 @@
+   out_uint32x4x2_t = vld2q_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
+@@ -15,6 +15,6 @@
+   out_uint8x16x2_t = vld2q_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
+@@ -15,5 +15,5 @@
+   out_int16x4x2_t = vld2_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
+@@ -15,5 +15,5 @@
+   out_int32x2x2_t = vld2_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
+@@ -15,5 +15,5 @@
+   out_int64x1x2_t = vld2_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
+@@ -15,5 +15,5 @@
+   out_int8x8x2_t = vld2_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
+@@ -15,5 +15,5 @@
+   out_uint16x4x2_t = vld2_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
+@@ -15,5 +15,5 @@
+   out_uint32x2x2_t = vld2_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
+@@ -15,5 +15,5 @@
+   out_uint64x1x2_t = vld2_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
+@@ -15,5 +15,5 @@
+   out_uint8x8x2_t = vld2_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
+@@ -15,5 +15,5 @@
+   out_float32x2x3_t = vld3_dup_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
+@@ -15,5 +15,5 @@
+   out_poly16x4x3_t = vld3_dup_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
+@@ -15,5 +15,5 @@
+   out_poly8x8x3_t = vld3_dup_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
+@@ -15,5 +15,5 @@
+   out_int16x4x3_t = vld3_dup_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
+@@ -15,5 +15,5 @@
+   out_int32x2x3_t = vld3_dup_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
+@@ -15,5 +15,5 @@
+   out_int64x1x3_t = vld3_dup_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
+@@ -15,5 +15,5 @@
+   out_int8x8x3_t = vld3_dup_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
+@@ -15,5 +15,5 @@
+   out_uint16x4x3_t = vld3_dup_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
+@@ -15,5 +15,5 @@
+   out_uint32x2x3_t = vld3_dup_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
+@@ -15,5 +15,5 @@
+   out_uint64x1x3_t = vld3_dup_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
+@@ -15,5 +15,5 @@
+   out_uint8x8x3_t = vld3_dup_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
+@@ -15,5 +15,5 @@
+   out_float32x2x3_t = vld3_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
+@@ -16,5 +16,5 @@
+   out_float32x2x3_t = vld3_lane_f32 (0, arg1_float32x2x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
+@@ -16,5 +16,5 @@
+   out_poly16x4x3_t = vld3_lane_p16 (0, arg1_poly16x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
+@@ -16,5 +16,5 @@
+   out_poly8x8x3_t = vld3_lane_p8 (0, arg1_poly8x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
+@@ -16,5 +16,5 @@
+   out_int16x4x3_t = vld3_lane_s16 (0, arg1_int16x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
+@@ -16,5 +16,5 @@
+   out_int32x2x3_t = vld3_lane_s32 (0, arg1_int32x2x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
+@@ -16,5 +16,5 @@
+   out_int8x8x3_t = vld3_lane_s8 (0, arg1_int8x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
+@@ -16,5 +16,5 @@
+   out_uint16x4x3_t = vld3_lane_u16 (0, arg1_uint16x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
+@@ -16,5 +16,5 @@
+   out_uint32x2x3_t = vld3_lane_u32 (0, arg1_uint32x2x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
+@@ -16,5 +16,5 @@
+   out_uint8x8x3_t = vld3_lane_u8 (0, arg1_uint8x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
+@@ -15,5 +15,5 @@
+   out_poly16x4x3_t = vld3_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
+@@ -15,5 +15,5 @@
+   out_poly8x8x3_t = vld3_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
+@@ -15,6 +15,6 @@
+   out_float32x4x3_t = vld3q_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
+@@ -16,5 +16,5 @@
+   out_float32x4x3_t = vld3q_lane_f32 (0, arg1_float32x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
+@@ -16,5 +16,5 @@
+   out_poly16x8x3_t = vld3q_lane_p16 (0, arg1_poly16x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
+@@ -16,5 +16,5 @@
+   out_int16x8x3_t = vld3q_lane_s16 (0, arg1_int16x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
+@@ -16,5 +16,5 @@
+   out_int32x4x3_t = vld3q_lane_s32 (0, arg1_int32x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
+@@ -16,5 +16,5 @@
+   out_uint16x8x3_t = vld3q_lane_u16 (0, arg1_uint16x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
+@@ -16,5 +16,5 @@
+   out_uint32x4x3_t = vld3q_lane_u32 (0, arg1_uint32x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
+@@ -15,6 +15,6 @@
+   out_poly16x8x3_t = vld3q_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
+@@ -15,6 +15,6 @@
+   out_poly8x16x3_t = vld3q_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
+@@ -15,6 +15,6 @@
+   out_int16x8x3_t = vld3q_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
+@@ -15,6 +15,6 @@
+   out_int32x4x3_t = vld3q_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
+@@ -15,6 +15,6 @@
+   out_int8x16x3_t = vld3q_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
+@@ -15,6 +15,6 @@
+   out_uint16x8x3_t = vld3q_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
+@@ -15,6 +15,6 @@
+   out_uint32x4x3_t = vld3q_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
+@@ -15,6 +15,6 @@
+   out_uint8x16x3_t = vld3q_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
+@@ -15,5 +15,5 @@
+   out_int16x4x3_t = vld3_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
+@@ -15,5 +15,5 @@
+   out_int32x2x3_t = vld3_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
+@@ -15,5 +15,5 @@
+   out_int64x1x3_t = vld3_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
+@@ -15,5 +15,5 @@
+   out_int8x8x3_t = vld3_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
+@@ -15,5 +15,5 @@
+   out_uint16x4x3_t = vld3_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
+@@ -15,5 +15,5 @@
+   out_uint32x2x3_t = vld3_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
+@@ -15,5 +15,5 @@
+   out_uint64x1x3_t = vld3_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
+@@ -15,5 +15,5 @@
+   out_uint8x8x3_t = vld3_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
+@@ -15,5 +15,5 @@
+   out_float32x2x4_t = vld4_dup_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
+@@ -15,5 +15,5 @@
+   out_poly16x4x4_t = vld4_dup_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
+@@ -15,5 +15,5 @@
+   out_poly8x8x4_t = vld4_dup_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
+@@ -15,5 +15,5 @@
+   out_int16x4x4_t = vld4_dup_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
+@@ -15,5 +15,5 @@
+   out_int32x2x4_t = vld4_dup_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
+@@ -15,5 +15,5 @@
+   out_int64x1x4_t = vld4_dup_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
+@@ -15,5 +15,5 @@
+   out_int8x8x4_t = vld4_dup_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
+@@ -15,5 +15,5 @@
+   out_uint16x4x4_t = vld4_dup_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
+@@ -15,5 +15,5 @@
+   out_uint32x2x4_t = vld4_dup_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
+@@ -15,5 +15,5 @@
+   out_uint64x1x4_t = vld4_dup_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
+@@ -15,5 +15,5 @@
+   out_uint8x8x4_t = vld4_dup_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
+@@ -15,5 +15,5 @@
+   out_float32x2x4_t = vld4_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
+@@ -16,5 +16,5 @@
+   out_float32x2x4_t = vld4_lane_f32 (0, arg1_float32x2x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
+@@ -16,5 +16,5 @@
+   out_poly16x4x4_t = vld4_lane_p16 (0, arg1_poly16x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
+@@ -16,5 +16,5 @@
+   out_poly8x8x4_t = vld4_lane_p8 (0, arg1_poly8x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
+@@ -16,5 +16,5 @@
+   out_int16x4x4_t = vld4_lane_s16 (0, arg1_int16x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
+@@ -16,5 +16,5 @@
+   out_int32x2x4_t = vld4_lane_s32 (0, arg1_int32x2x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
+@@ -16,5 +16,5 @@
+   out_int8x8x4_t = vld4_lane_s8 (0, arg1_int8x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
+@@ -16,5 +16,5 @@
+   out_uint16x4x4_t = vld4_lane_u16 (0, arg1_uint16x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
+@@ -16,5 +16,5 @@
+   out_uint32x2x4_t = vld4_lane_u32 (0, arg1_uint32x2x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
+@@ -16,5 +16,5 @@
+   out_uint8x8x4_t = vld4_lane_u8 (0, arg1_uint8x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
+@@ -15,5 +15,5 @@
+   out_poly16x4x4_t = vld4_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
+@@ -15,5 +15,5 @@
+   out_poly8x8x4_t = vld4_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
+@@ -15,6 +15,6 @@
+   out_float32x4x4_t = vld4q_f32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
+@@ -16,5 +16,5 @@
+   out_float32x4x4_t = vld4q_lane_f32 (0, arg1_float32x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
+@@ -16,5 +16,5 @@
+   out_poly16x8x4_t = vld4q_lane_p16 (0, arg1_poly16x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
+@@ -16,5 +16,5 @@
+   out_int16x8x4_t = vld4q_lane_s16 (0, arg1_int16x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
+@@ -16,5 +16,5 @@
+   out_int32x4x4_t = vld4q_lane_s32 (0, arg1_int32x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
+@@ -16,5 +16,5 @@
+   out_uint16x8x4_t = vld4q_lane_u16 (0, arg1_uint16x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
+@@ -16,5 +16,5 @@
+   out_uint32x4x4_t = vld4q_lane_u32 (0, arg1_uint32x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
+@@ -15,6 +15,6 @@
+   out_poly16x8x4_t = vld4q_p16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
+@@ -15,6 +15,6 @@
+   out_poly8x16x4_t = vld4q_p8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
+@@ -15,6 +15,6 @@
+   out_int16x8x4_t = vld4q_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
+@@ -15,6 +15,6 @@
+   out_int32x4x4_t = vld4q_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
+@@ -15,6 +15,6 @@
+   out_int8x16x4_t = vld4q_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
+@@ -15,6 +15,6 @@
+   out_uint16x8x4_t = vld4q_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
+@@ -15,6 +15,6 @@
+   out_uint32x4x4_t = vld4q_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
+@@ -15,6 +15,6 @@
+   out_uint8x16x4_t = vld4q_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
+@@ -15,5 +15,5 @@
+   out_int16x4x4_t = vld4_s16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
+@@ -15,5 +15,5 @@
+   out_int32x2x4_t = vld4_s32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
+@@ -15,5 +15,5 @@
+   out_int64x1x4_t = vld4_s64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
+@@ -15,5 +15,5 @@
+   out_int8x8x4_t = vld4_s8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
+@@ -15,5 +15,5 @@
+   out_uint16x4x4_t = vld4_u16 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
+@@ -15,5 +15,5 @@
+   out_uint32x2x4_t = vld4_u32 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
+@@ -15,5 +15,5 @@
+   out_uint64x1x4_t = vld4_u64 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
+@@ -15,5 +15,5 @@
+   out_uint8x8x4_t = vld4_u8 (0);
+ }
+ 
+-/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
+@@ -16,5 +16,5 @@
+   vst1_f32 (arg0_float32_t, arg1_float32x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
+@@ -16,5 +16,5 @@
+   vst1_lane_f32 (arg0_float32_t, arg1_float32x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
+@@ -16,5 +16,5 @@
+   vst1_lane_p16 (arg0_poly16_t, arg1_poly16x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
+@@ -16,5 +16,5 @@
+   vst1_lane_p8 (arg0_poly8_t, arg1_poly8x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
+@@ -16,5 +16,5 @@
+   vst1_lane_s16 (arg0_int16_t, arg1_int16x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
+@@ -16,5 +16,5 @@
+   vst1_lane_s32 (arg0_int32_t, arg1_int32x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
+@@ -16,5 +16,5 @@
+   vst1_lane_s64 (arg0_int64_t, arg1_int64x1_t, 0);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
+@@ -16,5 +16,5 @@
+   vst1_lane_s8 (arg0_int8_t, arg1_int8x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
+@@ -16,5 +16,5 @@
+   vst1_lane_u16 (arg0_uint16_t, arg1_uint16x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
+@@ -16,5 +16,5 @@
+   vst1_lane_u32 (arg0_uint32_t, arg1_uint32x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
+@@ -16,5 +16,5 @@
+   vst1_lane_u64 (arg0_uint64_t, arg1_uint64x1_t, 0);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
+@@ -16,5 +16,5 @@
+   vst1_lane_u8 (arg0_uint8_t, arg1_uint8x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
+@@ -16,5 +16,5 @@
+   vst1_p16 (arg0_poly16_t, arg1_poly16x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
+@@ -16,5 +16,5 @@
+   vst1_p8 (arg0_poly8_t, arg1_poly8x8_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
+@@ -16,5 +16,5 @@
+   vst1q_f32 (arg0_float32_t, arg1_float32x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_f32 (arg0_float32_t, arg1_float32x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_p16 (arg0_poly16_t, arg1_poly16x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_p8 (arg0_poly8_t, arg1_poly8x16_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_s16 (arg0_int16_t, arg1_int16x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_s32 (arg0_int32_t, arg1_int32x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_s64 (arg0_int64_t, arg1_int64x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_s8 (arg0_int8_t, arg1_int8x16_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_u16 (arg0_uint16_t, arg1_uint16x8_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_u32 (arg0_uint32_t, arg1_uint32x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_u64 (arg0_uint64_t, arg1_uint64x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
+@@ -16,5 +16,5 @@
+   vst1q_lane_u8 (arg0_uint8_t, arg1_uint8x16_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
+@@ -16,5 +16,5 @@
+   vst1q_p16 (arg0_poly16_t, arg1_poly16x8_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
+@@ -16,5 +16,5 @@
+   vst1q_p8 (arg0_poly8_t, arg1_poly8x16_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
+@@ -16,5 +16,5 @@
+   vst1q_s16 (arg0_int16_t, arg1_int16x8_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
+@@ -16,5 +16,5 @@
+   vst1q_s32 (arg0_int32_t, arg1_int32x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
+@@ -16,5 +16,5 @@
+   vst1q_s64 (arg0_int64_t, arg1_int64x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
+@@ -16,5 +16,5 @@
+   vst1q_s8 (arg0_int8_t, arg1_int8x16_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
+@@ -16,5 +16,5 @@
+   vst1q_u16 (arg0_uint16_t, arg1_uint16x8_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
+@@ -16,5 +16,5 @@
+   vst1q_u32 (arg0_uint32_t, arg1_uint32x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
+@@ -16,5 +16,5 @@
+   vst1q_u64 (arg0_uint64_t, arg1_uint64x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
+@@ -16,5 +16,5 @@
+   vst1q_u8 (arg0_uint8_t, arg1_uint8x16_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
+@@ -16,5 +16,5 @@
+   vst1_s16 (arg0_int16_t, arg1_int16x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
+@@ -16,5 +16,5 @@
+   vst1_s32 (arg0_int32_t, arg1_int32x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
+@@ -16,5 +16,5 @@
+   vst1_s64 (arg0_int64_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
+@@ -16,5 +16,5 @@
+   vst1_s8 (arg0_int8_t, arg1_int8x8_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
+@@ -16,5 +16,5 @@
+   vst1_u16 (arg0_uint16_t, arg1_uint16x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
+@@ -16,5 +16,5 @@
+   vst1_u32 (arg0_uint32_t, arg1_uint32x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
+@@ -16,5 +16,5 @@
+   vst1_u64 (arg0_uint64_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
+@@ -16,5 +16,5 @@
+   vst1_u8 (arg0_uint8_t, arg1_uint8x8_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
+@@ -16,5 +16,5 @@
+   vst2_f32 (arg0_float32_t, arg1_float32x2x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
+@@ -16,5 +16,5 @@
+   vst2_lane_f32 (arg0_float32_t, arg1_float32x2x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
+@@ -16,5 +16,5 @@
+   vst2_lane_p16 (arg0_poly16_t, arg1_poly16x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
+@@ -16,5 +16,5 @@
+   vst2_lane_p8 (arg0_poly8_t, arg1_poly8x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
+@@ -16,5 +16,5 @@
+   vst2_lane_s16 (arg0_int16_t, arg1_int16x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
+@@ -16,5 +16,5 @@
+   vst2_lane_s32 (arg0_int32_t, arg1_int32x2x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
+@@ -16,5 +16,5 @@
+   vst2_lane_s8 (arg0_int8_t, arg1_int8x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
+@@ -16,5 +16,5 @@
+   vst2_lane_u16 (arg0_uint16_t, arg1_uint16x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
+@@ -16,5 +16,5 @@
+   vst2_lane_u32 (arg0_uint32_t, arg1_uint32x2x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
+@@ -16,5 +16,5 @@
+   vst2_lane_u8 (arg0_uint8_t, arg1_uint8x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
+@@ -16,5 +16,5 @@
+   vst2_p16 (arg0_poly16_t, arg1_poly16x4x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
+@@ -16,5 +16,5 @@
+   vst2_p8 (arg0_poly8_t, arg1_poly8x8x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
+@@ -16,6 +16,6 @@
+   vst2q_f32 (arg0_float32_t, arg1_float32x4x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
+@@ -16,5 +16,5 @@
+   vst2q_lane_f32 (arg0_float32_t, arg1_float32x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
+@@ -16,5 +16,5 @@
+   vst2q_lane_p16 (arg0_poly16_t, arg1_poly16x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
+@@ -16,5 +16,5 @@
+   vst2q_lane_s16 (arg0_int16_t, arg1_int16x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
+@@ -16,5 +16,5 @@
+   vst2q_lane_s32 (arg0_int32_t, arg1_int32x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
+@@ -16,5 +16,5 @@
+   vst2q_lane_u16 (arg0_uint16_t, arg1_uint16x8x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
+@@ -16,5 +16,5 @@
+   vst2q_lane_u32 (arg0_uint32_t, arg1_uint32x4x2_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
+@@ -16,6 +16,6 @@
+   vst2q_p16 (arg0_poly16_t, arg1_poly16x8x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
+@@ -16,6 +16,6 @@
+   vst2q_p8 (arg0_poly8_t, arg1_poly8x16x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
+@@ -16,6 +16,6 @@
+   vst2q_s16 (arg0_int16_t, arg1_int16x8x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
+@@ -16,6 +16,6 @@
+   vst2q_s32 (arg0_int32_t, arg1_int32x4x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
+@@ -16,6 +16,6 @@
+   vst2q_s8 (arg0_int8_t, arg1_int8x16x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
+@@ -16,6 +16,6 @@
+   vst2q_u16 (arg0_uint16_t, arg1_uint16x8x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
+@@ -16,6 +16,6 @@
+   vst2q_u32 (arg0_uint32_t, arg1_uint32x4x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
+@@ -16,6 +16,6 @@
+   vst2q_u8 (arg0_uint8_t, arg1_uint8x16x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
+@@ -16,5 +16,5 @@
+   vst2_s16 (arg0_int16_t, arg1_int16x4x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
+@@ -16,5 +16,5 @@
+   vst2_s32 (arg0_int32_t, arg1_int32x2x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
+@@ -16,5 +16,5 @@
+   vst2_s64 (arg0_int64_t, arg1_int64x1x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
+@@ -16,5 +16,5 @@
+   vst2_s8 (arg0_int8_t, arg1_int8x8x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
+@@ -16,5 +16,5 @@
+   vst2_u16 (arg0_uint16_t, arg1_uint16x4x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
+@@ -16,5 +16,5 @@
+   vst2_u32 (arg0_uint32_t, arg1_uint32x2x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
+@@ -16,5 +16,5 @@
+   vst2_u64 (arg0_uint64_t, arg1_uint64x1x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
+@@ -16,5 +16,5 @@
+   vst2_u8 (arg0_uint8_t, arg1_uint8x8x2_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
+@@ -16,5 +16,5 @@
+   vst3_f32 (arg0_float32_t, arg1_float32x2x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
+@@ -16,5 +16,5 @@
+   vst3_lane_f32 (arg0_float32_t, arg1_float32x2x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
+@@ -16,5 +16,5 @@
+   vst3_lane_p16 (arg0_poly16_t, arg1_poly16x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
+@@ -16,5 +16,5 @@
+   vst3_lane_p8 (arg0_poly8_t, arg1_poly8x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
+@@ -16,5 +16,5 @@
+   vst3_lane_s16 (arg0_int16_t, arg1_int16x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
+@@ -16,5 +16,5 @@
+   vst3_lane_s32 (arg0_int32_t, arg1_int32x2x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
+@@ -16,5 +16,5 @@
+   vst3_lane_s8 (arg0_int8_t, arg1_int8x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
+@@ -16,5 +16,5 @@
+   vst3_lane_u16 (arg0_uint16_t, arg1_uint16x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
+@@ -16,5 +16,5 @@
+   vst3_lane_u32 (arg0_uint32_t, arg1_uint32x2x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
+@@ -16,5 +16,5 @@
+   vst3_lane_u8 (arg0_uint8_t, arg1_uint8x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
+@@ -16,5 +16,5 @@
+   vst3_p16 (arg0_poly16_t, arg1_poly16x4x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
+@@ -16,5 +16,5 @@
+   vst3_p8 (arg0_poly8_t, arg1_poly8x8x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
+@@ -16,6 +16,6 @@
+   vst3q_f32 (arg0_float32_t, arg1_float32x4x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
+@@ -16,5 +16,5 @@
+   vst3q_lane_f32 (arg0_float32_t, arg1_float32x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
+@@ -16,5 +16,5 @@
+   vst3q_lane_p16 (arg0_poly16_t, arg1_poly16x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
+@@ -16,5 +16,5 @@
+   vst3q_lane_s16 (arg0_int16_t, arg1_int16x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
+@@ -16,5 +16,5 @@
+   vst3q_lane_s32 (arg0_int32_t, arg1_int32x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
+@@ -16,5 +16,5 @@
+   vst3q_lane_u16 (arg0_uint16_t, arg1_uint16x8x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
+@@ -16,5 +16,5 @@
+   vst3q_lane_u32 (arg0_uint32_t, arg1_uint32x4x3_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
+@@ -16,6 +16,6 @@
+   vst3q_p16 (arg0_poly16_t, arg1_poly16x8x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
+@@ -16,6 +16,6 @@
+   vst3q_p8 (arg0_poly8_t, arg1_poly8x16x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
+@@ -16,6 +16,6 @@
+   vst3q_s16 (arg0_int16_t, arg1_int16x8x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
+@@ -16,6 +16,6 @@
+   vst3q_s32 (arg0_int32_t, arg1_int32x4x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
+@@ -16,6 +16,6 @@
+   vst3q_s8 (arg0_int8_t, arg1_int8x16x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
+@@ -16,6 +16,6 @@
+   vst3q_u16 (arg0_uint16_t, arg1_uint16x8x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
+@@ -16,6 +16,6 @@
+   vst3q_u32 (arg0_uint32_t, arg1_uint32x4x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
+@@ -16,6 +16,6 @@
+   vst3q_u8 (arg0_uint8_t, arg1_uint8x16x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
+@@ -16,5 +16,5 @@
+   vst3_s16 (arg0_int16_t, arg1_int16x4x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
+@@ -16,5 +16,5 @@
+   vst3_s32 (arg0_int32_t, arg1_int32x2x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
+@@ -16,5 +16,5 @@
+   vst3_s64 (arg0_int64_t, arg1_int64x1x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
+@@ -16,5 +16,5 @@
+   vst3_s8 (arg0_int8_t, arg1_int8x8x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
+@@ -16,5 +16,5 @@
+   vst3_u16 (arg0_uint16_t, arg1_uint16x4x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
+@@ -16,5 +16,5 @@
+   vst3_u32 (arg0_uint32_t, arg1_uint32x2x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
+@@ -16,5 +16,5 @@
+   vst3_u64 (arg0_uint64_t, arg1_uint64x1x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
+@@ -16,5 +16,5 @@
+   vst3_u8 (arg0_uint8_t, arg1_uint8x8x3_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
+@@ -16,5 +16,5 @@
+   vst4_f32 (arg0_float32_t, arg1_float32x2x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
+@@ -16,5 +16,5 @@
+   vst4_lane_f32 (arg0_float32_t, arg1_float32x2x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
+@@ -16,5 +16,5 @@
+   vst4_lane_p16 (arg0_poly16_t, arg1_poly16x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
+@@ -16,5 +16,5 @@
+   vst4_lane_p8 (arg0_poly8_t, arg1_poly8x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
+@@ -16,5 +16,5 @@
+   vst4_lane_s16 (arg0_int16_t, arg1_int16x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
+@@ -16,5 +16,5 @@
+   vst4_lane_s32 (arg0_int32_t, arg1_int32x2x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
+@@ -16,5 +16,5 @@
+   vst4_lane_s8 (arg0_int8_t, arg1_int8x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
+@@ -16,5 +16,5 @@
+   vst4_lane_u16 (arg0_uint16_t, arg1_uint16x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
+@@ -16,5 +16,5 @@
+   vst4_lane_u32 (arg0_uint32_t, arg1_uint32x2x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
+@@ -16,5 +16,5 @@
+   vst4_lane_u8 (arg0_uint8_t, arg1_uint8x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
+@@ -16,5 +16,5 @@
+   vst4_p16 (arg0_poly16_t, arg1_poly16x4x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
+@@ -16,5 +16,5 @@
+   vst4_p8 (arg0_poly8_t, arg1_poly8x8x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
+@@ -16,6 +16,6 @@
+   vst4q_f32 (arg0_float32_t, arg1_float32x4x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
+@@ -16,5 +16,5 @@
+   vst4q_lane_f32 (arg0_float32_t, arg1_float32x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
+@@ -16,5 +16,5 @@
+   vst4q_lane_p16 (arg0_poly16_t, arg1_poly16x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
+@@ -16,5 +16,5 @@
+   vst4q_lane_s16 (arg0_int16_t, arg1_int16x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
+@@ -16,5 +16,5 @@
+   vst4q_lane_s32 (arg0_int32_t, arg1_int32x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
+@@ -16,5 +16,5 @@
+   vst4q_lane_u16 (arg0_uint16_t, arg1_uint16x8x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
+@@ -16,5 +16,5 @@
+   vst4q_lane_u32 (arg0_uint32_t, arg1_uint32x4x4_t, 1);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
+@@ -16,6 +16,6 @@
+   vst4q_p16 (arg0_poly16_t, arg1_poly16x8x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
+@@ -16,6 +16,6 @@
+   vst4q_p8 (arg0_poly8_t, arg1_poly8x16x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
+@@ -16,6 +16,6 @@
+   vst4q_s16 (arg0_int16_t, arg1_int16x8x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
+@@ -16,6 +16,6 @@
+   vst4q_s32 (arg0_int32_t, arg1_int32x4x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
+@@ -16,6 +16,6 @@
+   vst4q_s8 (arg0_int8_t, arg1_int8x16x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
+@@ -16,6 +16,6 @@
+   vst4q_u16 (arg0_uint16_t, arg1_uint16x8x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
+@@ -16,6 +16,6 @@
+   vst4q_u32 (arg0_uint32_t, arg1_uint32x4x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
+@@ -16,6 +16,6 @@
+   vst4q_u8 (arg0_uint8_t, arg1_uint8x16x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
+@@ -16,5 +16,5 @@
+   vst4_s16 (arg0_int16_t, arg1_int16x4x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
+@@ -16,5 +16,5 @@
+   vst4_s32 (arg0_int32_t, arg1_int32x2x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
+@@ -16,5 +16,5 @@
+   vst4_s64 (arg0_int64_t, arg1_int64x1x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
+@@ -16,5 +16,5 @@
+   vst4_s8 (arg0_int8_t, arg1_int8x8x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
+@@ -16,5 +16,5 @@
+   vst4_u16 (arg0_uint16_t, arg1_uint16x4x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
+@@ -16,5 +16,5 @@
+   vst4_u32 (arg0_uint32_t, arg1_uint32x2x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
+@@ -16,5 +16,5 @@
+   vst4_u64 (arg0_uint64_t, arg1_uint64x1x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
+@@ -16,5 +16,5 @@
+   vst4_u8 (arg0_uint8_t, arg1_uint8x8x4_t);
+ }
+ 
+-/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c
+@@ -0,0 +1,50 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O2 -funsafe-math-optimizations" } */
++/* { dg-add-options arm_neon } */
++
++#include <arm_neon.h>
++float32x2_t f_sub_abs_to_vabd_32()
++{
++  float32x2_t val1 = vdup_n_f32 (10);
++  float32x2_t val2 = vdup_n_f32 (30);
++  float32x2_t sres = vsub_f32(val1, val2);
++  float32x2_t res = vabs_f32 (sres);
++
++  return res;
++}
++/* { dg-final { scan-assembler "vabd\.f32" } }*/
++
++#include <arm_neon.h>
++int8x8_t sub_abs_to_vabd_8()
++{
++  int8x8_t val1 = vdup_n_s8 (10);
++  int8x8_t val2 = vdup_n_s8 (30);
++  int8x8_t sres = vsub_s8(val1, val2);
++  int8x8_t res = vabs_s8 (sres);
++
++  return res;
++}
++/* { dg-final { scan-assembler "vabd\.s8" } }*/
++
++int16x4_t sub_abs_to_vabd_16()
++{
++  int16x4_t val1 = vdup_n_s16 (10);
++  int16x4_t val2 = vdup_n_s16 (30);
++  int16x4_t sres = vsub_s16(val1, val2);
++  int16x4_t res = vabs_s16 (sres);
++
++  return res;
++}
++/* { dg-final { scan-assembler "vabd\.s16" } }*/
++
++int32x2_t sub_abs_to_vabd_32()
++{
++  int32x2_t val1 = vdup_n_s32 (10);
++  int32x2_t val2 = vdup_n_s32 (30);
++  int32x2_t sres = vsub_s32(val1, val2);
++  int32x2_t res = vabs_s32 (sres);
++
++   return res;
++}
++/* { dg-final { scan-assembler "vabd\.s32" } }*/
+--- a/src/gcc/testsuite/gcc.target/arm/neon-modes-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-modes-2.c
+@@ -0,0 +1,24 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O1" } */
++/* { dg-add-options arm_neon } */
++
++#include "arm_neon.h"
++
++#define SETUP(A) x##A = vld3_u32 (ptr + A * 0x20)
++#define MODIFY(A) x##A = vld3_lane_u32 (ptr + A * 0x20 + 0x10, x##A, 1)
++#define STORE(A) vst3_u32 (ptr + A * 0x20, x##A)
++
++#define MANY(A) A (0), A (1), A (2), A (3), A (4), A (5)
++
++void
++bar (uint32_t *ptr, int y)
++{
++  uint32x2x3_t MANY (SETUP);
++  int *x = __builtin_alloca (y);
++  int z[0x1000];
++  foo (x, z);
++  MANY (MODIFY);
++  foo (x, z);
++  MANY (STORE);
++}
+--- a/src/gcc/testsuite/gcc.target/arm/neon-modes-3.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-modes-3.c
+@@ -0,0 +1,61 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O" } */
++/* { dg-add-options arm_neon } */
++
++#include <arm_neon.h>
++
++void f1 (volatile float32x4_t *dest, volatile float32x4x4_t *src, int n)
++{
++  float32x4x4_t a5, a6, a7, a8, a9;
++  int i;
++
++  a5 = *src;
++  a6 = *src;
++  a7 = *src;
++  a8 = *src;
++  a9 = *src;
++  while (n--)
++    {
++      for (i = 0; i < 8; i++)
++	{
++	  float32x4x4_t a0, a1, a2, a3, a4;
++
++	  a0 = *src;
++	  a1 = *src;
++	  a2 = *src;
++	  a3 = *src;
++	  a4 = *src;
++	  *src = a0;
++	  *dest = a0.val[0];
++	  *dest = a0.val[3];
++	  *src = a1;
++	  *dest = a1.val[0];
++	  *dest = a1.val[3];
++	  *src = a2;
++	  *dest = a2.val[0];
++	  *dest = a2.val[3];
++	  *src = a3;
++	  *dest = a3.val[0];
++	  *dest = a3.val[3];
++	  *src = a4;
++	  *dest = a4.val[0];
++	  *dest = a4.val[3];
++	}
++      *src = a5;
++      *dest = a5.val[0];
++      *dest = a5.val[3];
++      *src = a6;
++      *dest = a6.val[0];
++      *dest = a6.val[3];
++      *src = a7;
++      *dest = a7.val[0];
++      *dest = a7.val[3];
++      *src = a8;
++      *dest = a8.val[0];
++      *dest = a8.val[3];
++      *src = a9;
++      *dest = a9.val[0];
++      *dest = a9.val[3];
++    }
++}
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vld3-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vld3-1.c
+@@ -0,0 +1,27 @@
++/* { dg-do run } */
++/* { dg-require-effective-target arm_neon_hw } */
++/* { dg-options "-O2" } */
++/* { dg-add-options arm_neon } */
++
++#include "arm_neon.h"
++
++uint32_t buffer[12];
++
++void __attribute__((noinline))
++foo (uint32_t *a)
++{
++  uint32x4x3_t x;
++
++  x = vld3q_u32 (a);
++  x.val[0] = vaddq_u32 (x.val[0], x.val[1]);
++  vst3q_u32 (a, x);
++}
++
++int
++main (void)
++{
++  buffer[0] = 1;
++  buffer[1] = 2;
++  foo (buffer);
++  return buffer[0] != 3;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vlshr-imm-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vlshr-imm-1.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O2 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize" } */
++/* { dg-final { scan-assembler "vshr\.u32.*#3" } } */
++
++/* Verify that VSHR immediate is used.  */
++void f1(int n, unsigned int x[], unsigned int y[]) {
++  int i;
++  for (i = 0; i < n; ++i)
++    y[i] = x[i] >> 3;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vorn-vbic.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vorn-vbic.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O2 -ftree-vectorize" } */
++/* { dg-add-options arm_neon } */
++
++void bor (int *__restrict__ c, int *__restrict__ a, int *__restrict__ b)
++{
++  int i;
++  for (i = 0; i < 9; i++)
++    c[i] = b[i] | (~a[i]);
++}
++void bic (int *__restrict__ c, int *__restrict__ a, int *__restrict__ b)
++{
++  int i;
++  for (i = 0; i < 9; i++)
++    c[i] = b[i] & (~a[i]);
++}
++
++/* { dg-final { scan-assembler "vorn\\t" } } */
++/* { dg-final { scan-assembler "vbic\\t" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vshl-imm-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vshl-imm-1.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O2 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize" } */
++/* { dg-final { scan-assembler "vshl\.i32.*#3" } } */
++
++/* Verify that VSHR immediate is used.  */
++void f1(int n, int x[], int y[]) {
++  int i;
++  for (i = 0; i < n; ++i)
++    y[i] = x[i] << 3;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vshr-imm-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vshr-imm-1.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O2 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize" } */
++/* { dg-final { scan-assembler "vshr\.s32.*#3" } } */
++
++/* Verify that VSHR immediate is used.  */
++void f1(int n, int x[], int y[]) {
++  int i;
++  for (i = 0; i < n; ++i)
++    y[i] = x[i] >> 3;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vst3-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vst3-1.c
+@@ -0,0 +1,25 @@
++/* { dg-do run } */
++/* { dg-require-effective-target arm_neon_hw } */
++/* { dg-options "-O2" } */
++/* { dg-add-options arm_neon } */
++
++#include "arm_neon.h"
++
++uint32_t buffer[64];
++
++void __attribute__((noinline))
++foo (uint32_t *a)
++{
++  uint32x4x3_t x;
++
++  x = vld3q_u32 (a);
++  a[35] = 1;
++  vst3q_lane_u32 (a + 32, x, 1);
++}
++
++int
++main (void)
++{
++  foo (buffer);
++  return buffer[35] != 1;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/no-wmla-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/no-wmla-1.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++int
++foo (int a, short b, short c)
++{
++     int bc = b * c;
++        return a + (short)bc;
++}
++
++/* { dg-final { scan-assembler "mul" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/pr46329.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr46329.c
+@@ -0,0 +1,9 @@
++/* { dg-options "-O2" } */
++/* { dg-add-options arm_neon } */
++
++int __attribute__ ((vector_size (32))) x;
++void
++foo (void)
++{
++  x <<= x;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/pr48183.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr48183.c
+@@ -0,0 +1,25 @@
++/* testsuite/gcc.target/arm/pr48183.c */
++
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O -g" } */
++/* { dg-add-options arm_neon } */
++
++#include <arm_neon.h>
++
++void move_16bit_to_32bit (int32_t *dst, const short *src, unsigned n)
++{
++    unsigned i;
++    int16x4x2_t input;
++    int32x4x2_t mid;
++    int32x4x2_t output;
++
++    for (i = 0; i < n/2; i += 8) {
++        input = vld2_s16(src + i);
++        mid.val[0] = vmovl_s16(input.val[0]);
++        mid.val[1] = vmovl_s16(input.val[1]);
++        output.val[0] = vshlq_n_s32(mid.val[0], 8);
++        output.val[1] = vshlq_n_s32(mid.val[1], 8);
++        vst2q_s32((int32_t *)dst + i, output);
++    }
++}
+--- a/src/gcc/testsuite/gcc.target/arm/pr50099.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr50099.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++long long foo (signed char * arg)
++{
++  long long temp_1;
++
++  temp_1 = arg[256]; 
++  return temp_1;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/pr50305.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr50305.c
+@@ -0,0 +1,60 @@
++/* { dg-do compile } */
++/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv7-a" } } */
++/* { dg-options "-O2 -fno-omit-frame-pointer -marm -march=armv7-a -mfpu=vfp3" } */
++
++struct event {
++ unsigned long long id;
++ unsigned int flag;
++};
++
++void dummy(void)
++{
++  /* This is here to ensure that the offset of perf_event_id below
++     relative to the LANCHOR symbol exceeds the allowed displacement.  */
++  static int __warned[300];
++ __warned[0] = 1;
++}
++
++extern void *kmem_cache_alloc_trace (void *cachep);
++extern void *cs_cachep;
++extern int nr_cpu_ids;
++
++struct event *
++event_alloc (int cpu)
++{
++ static unsigned long long __attribute__((aligned(8))) perf_event_id;
++ struct event *event;
++ unsigned long long result;
++ unsigned long tmp;
++
++ if (cpu >= nr_cpu_ids)
++  return 0;
++
++ event = kmem_cache_alloc_trace (cs_cachep);
++
++ __asm__ __volatile__ ("dmb" : : : "memory");
++
++ __asm__ __volatile__("@ atomic64_add_return\n"
++"1:	ldrexd	%0, %H0, [%3]\n"
++"	adds	%0, %0, %4\n"
++"	adc	%H0, %H0, %H4\n"
++"	strexd	%1, %0, %H0, [%3]\n"
++"	teq	%1, #0\n"
++"	bne	1b"
++ : "=&r" (result), "=&r" (tmp), "+Qo" (perf_event_id)
++ : "r" (&perf_event_id), "r" (1LL)
++ : "cc");
++
++ __asm__ __volatile__ ("dmb" : : : "memory");
++
++ event->id = result;
++
++ if (cpu)
++  event->flag = 1;
++
++ for (cpu = 0; cpu < nr_cpu_ids; cpu++)
++   kmem_cache_alloc_trace (cs_cachep);
++
++ return event;
++}
++
+--- a/src/gcc/testsuite/gcc.target/arm/pr50318-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr50318-1.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++/* { dg-require-effective-target arm_dsp } */
++
++long long test (unsigned int sec, unsigned long long nsecs)
++{
++   return (long long)(long)sec * 1000000000L + (long long)(unsigned
++   long)nsecs;
++}
++
++/* { dg-final { scan-assembler "umlal" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/pr52633.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr52633.c
+@@ -0,0 +1,13 @@
++/* PR tree-optimization/52633 */
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-march=armv7-a -mfloat-abi=softfp -mfpu=neon -O -ftree-vectorize" } */
++
++void
++test (unsigned short *x, signed char *y)
++{
++  int i;
++  for (i = 0; i < 32; i++)
++    x[i] = (short) (y[i] << 5);
++}
++
+--- a/src/gcc/testsuite/gcc.target/arm/pr52686.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr52686.c
+@@ -0,0 +1,19 @@
++/* PR target/52375 */
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-march=armv7-a -mfloat-abi=softfp -mfpu=neon -O -ftree-vectorize" } */
++
++unsigned int output[4];
++
++void test (unsigned short *p)
++{
++  unsigned int x = *p;
++  if (x)
++    {
++      output[0] = x << 1;
++      output[1] = x << 1;
++      output[2] = x << 1;
++      output[3] = x << 1;
++    }
++}
++
+--- a/src/gcc/testsuite/gcc.target/arm/pr53636.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr53636.c
+@@ -0,0 +1,48 @@
++/* { dg-do run } */
++/* { dg-require-effective-target arm_neon_hw } */
++/* { dg-options "-O -ftree-vectorize" } */
++/* { dg-add-options arm_neon } */
++
++void fill (short *buf) __attribute__ ((noinline));
++void fill (short *buf)
++{
++  int i;
++
++  for (i = 0; i < 11 * 8; i++)
++    buf[i] = i;
++}
++
++void test (unsigned char *dst) __attribute__ ((noinline));
++void test (unsigned char *dst)
++{
++  short tmp[11 * 8], *tptr;
++  int i;
++
++  fill (tmp);
++
++  tptr = tmp;
++  for (i = 0; i < 8; i++)
++    {
++      dst[0] = (-tptr[0] + 9 * tptr[0 + 1] + 9 * tptr[0 + 2] - tptr[0 + 3]) >> 7;
++      dst[1] = (-tptr[1] + 9 * tptr[1 + 1] + 9 * tptr[1 + 2] - tptr[1 + 3]) >> 7;
++      dst[2] = (-tptr[2] + 9 * tptr[2 + 1] + 9 * tptr[2 + 2] - tptr[2 + 3]) >> 7;
++      dst[3] = (-tptr[3] + 9 * tptr[3 + 1] + 9 * tptr[3 + 2] - tptr[3 + 3]) >> 7;
++      dst[4] = (-tptr[4] + 9 * tptr[4 + 1] + 9 * tptr[4 + 2] - tptr[4 + 3]) >> 7;
++      dst[5] = (-tptr[5] + 9 * tptr[5 + 1] + 9 * tptr[5 + 2] - tptr[5 + 3]) >> 7;
++      dst[6] = (-tptr[6] + 9 * tptr[6 + 1] + 9 * tptr[6 + 2] - tptr[6 + 3]) >> 7;
++      dst[7] = (-tptr[7] + 9 * tptr[7 + 1] + 9 * tptr[7 + 2] - tptr[7 + 3]) >> 7;
++
++      dst += 8;
++      tptr += 11;
++    }
++}
++
++int main (void)
++{
++  char buf [8 * 8];
++
++  test (buf);
++
++  return 0;
++}
++
+--- a/src/gcc/testsuite/gcc.target/arm/sat-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/sat-1.c
+@@ -0,0 +1,64 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arm_ok } */
++/* { dg-require-effective-target arm_arch_v6_ok } */
++/* { dg-options "-O2 -marm" } */
++/* { dg-add-options arm_arch_v6 } */
++
++
++static inline int sat1 (int a, int amin, int amax)
++{
++  if      (a < amin) return amin;
++  else if (a > amax) return amax;
++  else               return a;
++}
++
++static inline int sat2 (int a, int amin, int amax)
++{
++  if      (a > amax) return amax;
++  else if (a < amin) return amin;
++  else               return a;
++}
++
++int u1 (int x)
++{
++  return sat1 (x, 0, 63);
++}
++
++int us1 (int x)
++{
++  return sat1 (x >> 5, 0, 63);
++}
++
++int s1 (int x)
++{
++  return sat1 (x, -64, 63);
++}
++
++int ss1 (int x)
++{
++  return sat1 (x >> 5, -64, 63);
++}
++
++int u2 (int x)
++{
++  return sat2 (x, 0, 63);
++}
++
++int us2 (int x)
++{
++  return sat2 (x >> 5, 0, 63);
++}
++
++int s2 (int x)
++{
++  return sat2 (x, -64, 63);
++}
++
++int ss2 (int x)
++{
++  return sat2 (x >> 5, -64, 63);
++}
++
++/* { dg-final { scan-assembler-times "usat" 4 } } */
++/* { dg-final { scan-assembler-times "ssat" 4 } } */
++
+--- a/src/gcc/testsuite/gcc.target/arm/shiftable.c
++++ b/src/gcc/testsuite/gcc.target/arm/shiftable.c
+@@ -0,0 +1,63 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++/* { dg-require-effective-target arm32 } */
++
++/* ARM has shift-and-alu insns.  Depending on the ALU op GCC represents some
++   of these as a left shift, others as a multiply.  Check that we match the
++    right one.  */
++
++int
++plus (int a, int b)
++{
++  return (a * 64) + b;
++}
++
++/* { dg-final { scan-assembler "add.*\[al]sl #6" } } */
++
++int
++minus (int a, int b)
++{
++  return a - (b * 64);
++}
++
++/* { dg-final { scan-assembler "sub.*\[al]sl #6" } } */
++
++int
++ior (int a, int b)
++{
++  return (a * 64) | b;
++}
++
++/* { dg-final { scan-assembler "orr.*\[al]sl #6" } } */
++
++int
++xor (int a, int b)
++{
++  return (a * 64) ^ b;
++}
++
++/* { dg-final { scan-assembler "eor.*\[al]sl #6" } } */
++
++int
++and (int a, int b)
++{
++  return (a * 64) & b;
++}
++
++/* { dg-final { scan-assembler "and.*\[al]sl #6" } } */
++
++int
++rsb (int a, int b)
++{
++  return (a * 64) - b;
++}
++
++/* { dg-final { scan-assembler "rsb.*\[al]sl #6" } } */
++
++int
++mvn (int a, int b)
++{
++  return ~(a * 64);
++}
++
++/* { dg-final { scan-assembler "mvn.*\[al]sl #6" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/smlaltb-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/smlaltb-1.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long int
++foo (long long x, int in)
++{
++  short a = in & 0xffff;
++  short b = (in & 0xffff0000) >> 16;
++
++  return x + b * a;
++}
++
++/* { dg-final { scan-assembler "smlaltb" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/smlaltt-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/smlaltt-1.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long int
++foo (long long x, int in1, int in2)
++{
++  short a = (in1 & 0xffff0000) >> 16;
++  short b = (in2 & 0xffff0000) >> 16;
++
++  return x + b * a;
++}
++
++/* { dg-final { scan-assembler "smlaltt" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/smlatb-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/smlatb-1.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++int
++foo (int x, int in)
++{
++  short a = in & 0xffff;
++  short b = (in & 0xffff0000) >> 16;
++
++  return x + b * a;
++}
++
++/* { dg-final { scan-assembler "smlatb" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/smlatt-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/smlatt-1.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++int
++foo (int x, int in1, int in2)
++{
++  short a = (in1 & 0xffff0000) >> 16;
++  short b = (in2 & 0xffff0000) >> 16;
++
++  return x + b * a;
++}
++
++/* { dg-final { scan-assembler "smlatt" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-1.c
+@@ -0,0 +1,13 @@
++/* Use conditional compare */
++/* { dg-options "-O2" } */
++/* { dg-skip-if "" { arm_thumb1_ok } } */
++/* { dg-final { scan-assembler "cmpne" } } */
++
++int f(int i, int j) 
++{
++  if ( (i == '+') || (j == '-') ) {
++    return 1;
++  } else {
++    return 0;
++  }
++}
+--- a/src/gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-2.c
+@@ -0,0 +1,13 @@
++/* Use conditional compare */                                                                                         
++/* { dg-options "-O2" } */
++/* { dg-skip-if "" { arm_thumb1_ok } } */
++/* { dg-final { scan-assembler "cmpeq" } } */
++
++int f(int i, int j) 
++{
++  if ( (i == '+') && (j == '-') ) {
++    return 1;
++  } else {
++    return 0;
++  }
++}
+--- a/src/gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-3.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-3.c
+@@ -0,0 +1,12 @@
++/* Use conditional compare */                                                                                         
++/* { dg-options "-O2" } */
++/* { dg-skip-if "" { arm_thumb1_ok } } */
++/* { dg-final { scan-assembler "cmpgt" } } */
++
++int f(int i, int j)
++{
++  if ( (i >= '+') ? (j > '-') : 0)
++    return 1;
++  else
++    return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-4.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb2-cond-cmp-4.c
+@@ -0,0 +1,12 @@
++/* Use conditional compare */                                                                                         
++/* { dg-options "-O2" } */
++/* { dg-skip-if "" { arm_thumb1_ok } } */
++/* { dg-final { scan-assembler "cmpgt" } } */
++
++int f(int i, int j)
++{
++  if ( (i >= '+') ? (j <= '-') : 1)
++    return 1;
++  else
++    return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/thumb2-replicated-constant1.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb2-replicated-constant1.c
+@@ -0,0 +1,27 @@
++/* Ensure simple replicated constant immediates work.  */
++/* { dg-options "-mthumb -O2" } */
++/* { dg-require-effective-target arm_thumb2_ok } */
++
++int
++foo1 (int a)
++{
++  return a + 0xfefefefe;
++}
++
++/* { dg-final { scan-assembler "add.*#-16843010" } } */
++
++int
++foo2 (int a)
++{
++  return a - 0xab00ab00;
++}
++
++/* { dg-final { scan-assembler "sub.*#-1426019584" } } */
++
++int
++foo3 (int a)
++{
++  return a & 0x00cd00cd;
++}
++
++/* { dg-final { scan-assembler "and.*#13435085" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/thumb2-replicated-constant2.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb2-replicated-constant2.c
+@@ -0,0 +1,75 @@
++/* Ensure split constants can use replicated patterns.  */
++/* { dg-options "-mthumb -O2" } */
++/* { dg-require-effective-target arm_thumb2_ok } */
++
++int
++foo1 (int a)
++{
++  return a + 0xfe00fe01;
++}
++
++/* { dg-final { scan-assembler "add.*#-33489408" } } */
++/* { dg-final { scan-assembler "add.*#1" } } */
++
++int
++foo2 (int a)
++{
++  return a + 0xdd01dd00;
++}
++
++/* { dg-final { scan-assembler "add.*#-587145984" } } */
++/* { dg-final { scan-assembler "add.*#65536" } } */
++
++int
++foo3 (int a)
++{
++  return a + 0x00443344;
++}
++
++/* { dg-final { scan-assembler "add.*#4456516" } } */
++/* { dg-final { scan-assembler "add.*#13056" } } */
++
++int
++foo4 (int a)
++{
++  return a + 0x77330033;
++}
++
++/* { dg-final { scan-assembler "add.*#1996488704" } } */
++/* { dg-final { scan-assembler "add.*#3342387" } } */
++
++int
++foo5 (int a)
++{
++  return a + 0x11221122;
++}
++
++/* { dg-final { scan-assembler "add.*#285217024" } } */
++/* { dg-final { scan-assembler "add.*#2228258" } } */
++
++int
++foo6 (int a)
++{
++  return a + 0x66666677;
++}
++
++/* { dg-final { scan-assembler "add.*#1717986918" } } */
++/* { dg-final { scan-assembler "add.*#17" } } */
++
++int
++foo7 (int a)
++{
++  return a + 0x99888888;
++}
++
++/* { dg-final { scan-assembler "add.*#-2004318072" } } */
++/* { dg-final { scan-assembler "add.*#285212672" } } */
++
++int
++foo8 (int a)
++{
++  return a + 0xdddddfff;
++}
++
++/* { dg-final { scan-assembler "add.*#-572662307" } } */
++/* { dg-final { scan-assembler "addw.*#546" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/thumb2-replicated-constant3.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb2-replicated-constant3.c
+@@ -0,0 +1,28 @@
++/* Ensure negated/inverted replicated constant immediates work.  */
++/* { dg-options "-mthumb -O2" } */
++/* { dg-require-effective-target arm_thumb2_ok } */
++
++int
++foo1 (int a)
++{
++  return a | 0xffffff00;
++}
++
++/* { dg-final { scan-assembler "orn.*#255" } } */
++
++int
++foo2 (int a)
++{
++  return a & 0xffeeffee;
++}
++
++/* { dg-final { scan-assembler "bic.*#1114129" } } */
++
++int
++foo3 (int a)
++{
++  return a & 0xaaaaaa00;
++}
++
++/* { dg-final { scan-assembler "and.*#-1431655766" } } */
++/* { dg-final { scan-assembler "bic.*#170" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/thumb2-replicated-constant4.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb2-replicated-constant4.c
+@@ -0,0 +1,22 @@
++/* Ensure replicated constants don't make things worse.  */
++/* { dg-options "-mthumb -O2" } */
++/* { dg-require-effective-target arm_thumb2_ok } */
++
++int
++foo1 (int a)
++{
++  /* It might be tempting to use 0x01000100, but it wouldn't help. */
++  return a + 0x01f001e0;
++}
++
++/* { dg-final { scan-assembler "add.*#32505856" } } */
++/* { dg-final { scan-assembler "add.*#480" } } */
++
++int
++foo2 (int a)
++{
++  return a + 0x0f100e10;
++}
++
++/* { dg-final { scan-assembler "add.*#252706816" } } */
++/* { dg-final { scan-assembler "add.*#3600" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/unaligned-memcpy-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/unaligned-memcpy-1.c
+@@ -0,0 +1,19 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_unaligned } */
++/* { dg-options "-O2" } */
++
++#include <string.h>
++
++void unknown_alignment (char *dest, char *src)
++{
++  memcpy (dest, src, 15);
++}
++
++/* We should see three unaligned word loads and store pairs, one unaligned
++   ldrh/strh pair, and an ldrb/strb pair.  Sanity check that.  */
++
++/* { dg-final { scan-assembler-times "@ unaligned" 8 } } */
++/* { dg-final { scan-assembler-times "ldrh" 1 } } */
++/* { dg-final { scan-assembler-times "strh" 1 } } */
++/* { dg-final { scan-assembler-times "ldrb" 1 } } */
++/* { dg-final { scan-assembler-times "strb" 1 } } */
+--- a/src/gcc/testsuite/gcc.target/arm/unaligned-memcpy-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/unaligned-memcpy-2.c
+@@ -0,0 +1,21 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_unaligned } */
++/* { dg-options "-O2" } */
++
++#include <string.h>
++
++char dest[16];
++
++void aligned_dest (char *src)
++{
++  memcpy (dest, src, 15);
++}
++
++/* Expect a multi-word store for the main part of the copy, but subword
++   loads/stores for the remainder.  */
++
++/* { dg-final { scan-assembler-times "stmia" 1 } } */
++/* { dg-final { scan-assembler-times "ldrh" 1 } } */
++/* { dg-final { scan-assembler-times "strh" 1 } } */
++/* { dg-final { scan-assembler-times "ldrb" 1 } } */
++/* { dg-final { scan-assembler-times "strb" 1 } } */
+--- a/src/gcc/testsuite/gcc.target/arm/unaligned-memcpy-3.c
++++ b/src/gcc/testsuite/gcc.target/arm/unaligned-memcpy-3.c
+@@ -0,0 +1,21 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_unaligned } */
++/* { dg-options "-O2" } */
++
++#include <string.h>
++
++char src[16];
++
++void aligned_src (char *dest)
++{
++  memcpy (dest, src, 15);
++}
++
++/* Expect a multi-word load for the main part of the copy, but subword
++   loads/stores for the remainder.  */
++
++/* { dg-final { scan-assembler-times "ldmia" 1 } } */
++/* { dg-final { scan-assembler-times "ldrh" 1 } } */
++/* { dg-final { scan-assembler-times "strh" 1 } } */
++/* { dg-final { scan-assembler-times "ldrb" 1 } } */
++/* { dg-final { scan-assembler-times "strb" 1 } } */
+--- a/src/gcc/testsuite/gcc.target/arm/unaligned-memcpy-4.c
++++ b/src/gcc/testsuite/gcc.target/arm/unaligned-memcpy-4.c
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_unaligned } */
++/* { dg-options "-O2" } */
++
++#include <string.h>
++
++char src[16];
++char dest[16];
++
++void aligned_both (void)
++{
++  memcpy (dest, src, 15);
++}
++
++/* We know both src and dest to be aligned: expect multiword loads/stores.  */
++
++/* { dg-final { scan-assembler-times "ldmia" 1 } } */
++/* { dg-final { scan-assembler-times "stmia" 1 } } */
+--- a/src/gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv6" } */
++
++unsigned char foo (unsigned char c)
++{
++  return (c >= '0') && (c <= '9');
++}
++
++/* { dg-final { scan-assembler-not "uxtb" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/vfp-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/vfp-1.c
+@@ -127,13 +127,13 @@
+ 
+ void test_ldst (float f[], double d[]) {
+   /* { dg-final { scan-assembler "flds.+ \\\[r0, #1020\\\]" } } */
+-  /* { dg-final { scan-assembler "flds.+ \\\[r0, #-1020\\\]" } } */
++  /* { dg-final { scan-assembler "flds.+ \\\[r\[0-9\], #-1020\\\]" { target { arm32 && { ! arm_thumb2_ok } } } } } */
+   /* { dg-final { scan-assembler "add.+ r0, #1024" } } */
+-  /* { dg-final { scan-assembler "fsts.+ \\\[r0, #0\\\]\n" } } */
++  /* { dg-final { scan-assembler "fsts.+ \\\[r\[0-9\], #0\\\]\n" } } */
+   f[256] = f[255] + f[-255];
+ 
+   /* { dg-final { scan-assembler "fldd.+ \\\[r1, #1016\\\]" } } */
+-  /* { dg-final { scan-assembler "fldd.+ \\\[r1, #-1016\\\]" } } */
++  /* { dg-final { scan-assembler "fldd.+ \\\[r\[1-9\], #-1016\\\]" { target { arm32 && { ! arm_thumb2_ok } } } } } */
+   /* { dg-final { scan-assembler "fstd.+ \\\[r1, #256\\\]" } } */
+   d[32] = d[127] + d[-127];
+ }
+--- a/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c
++++ b/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c
+@@ -0,0 +1,30 @@
++/* { dg-require-effective-target arm_eabi } */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++/* { dg-final { scan-assembler-times "ldr\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
++/* { dg-final { scan-assembler-times "str\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
++/* { dg-final { scan-assembler-not "strb" } } */
++
++struct thing {
++  unsigned a: 8;
++  unsigned b: 8;
++  unsigned c: 8;
++  unsigned d: 8;
++};
++
++struct thing2 {
++  volatile unsigned a: 8;
++  volatile unsigned b: 8;
++  volatile unsigned c: 8;
++  volatile unsigned d: 8;
++};
++
++void test1(volatile struct thing *t)
++{
++  t->a = 5;
++}
++
++void test2(struct thing2 *t)
++{
++  t->a = 5;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-10.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-10.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++unsigned long long
++foo (unsigned short a, unsigned short *b, unsigned short *c)
++{
++  return (unsigned)a + (unsigned long long)*b * (unsigned long long)*c;
++}
++
++/* { dg-final { scan-assembler "umlal" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-11.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-11.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long
++foo (int *b)
++{
++  return 10 * (long long)*b;
++}
++
++/* { dg-final { scan-assembler "smull" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-12.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-12.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long
++foo (int *b, int *c)
++{
++  long long tmp = (long long)*b * *c;
++  return 10 + tmp;
++}
++
++/* { dg-final { scan-assembler "smlal" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-13.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-13.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long
++foo (int *a, int *b)
++{
++  return *a + (long long)*b * 10;
++}
++
++/* { dg-final { scan-assembler "smlal" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-5.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-5.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long
++foo (long long a, char *b, char *c)
++{
++  return a + *b * *c;
++}
++
++/* { dg-final { scan-assembler "umlal" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-6.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-6.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long
++foo (long long a, unsigned char *b, signed char *c)
++{
++  return a + (long long)*b * (long long)*c;
++}
++
++/* { dg-final { scan-assembler "smlal" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-7.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-7.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++unsigned long long
++foo (unsigned long long a, unsigned char *b, unsigned short *c)
++{
++  return a + *b * *c;
++}
++
++/* { dg-final { scan-assembler "umlal" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-8.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-8.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long
++foo (long long a, int *b, int *c)
++{
++  return a + (long long)*b * *c;
++}
++
++/* { dg-final { scan-assembler "smlal" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-9.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-9.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++long long
++foo (long long a, short *b, char *c)
++{
++  return a + *b * *c;
++}
++
++/* { dg-final { scan-assembler "smlalbb" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-bitfield-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-bitfield-1.c
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++struct bf
++{
++  int a : 3;
++  int b : 15;
++  int c : 3;
++};
++
++long long
++foo (long long a, struct bf b, struct bf c)
++{
++  return a + b.b * c.b;
++}
++
++/* { dg-final { scan-assembler "smlalbb" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/wmul-bitfield-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/wmul-bitfield-2.c
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv7-a" } */
++
++struct bf
++{
++  int a : 3;
++  unsigned int b : 15;
++  int c : 3;
++};
++
++long long
++foo (long long a, struct bf b, struct bf c)
++{
++  return a + b.b * c.c;
++}
++
++/* { dg-final { scan-assembler "smlalbb" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/xor-and.c
++++ b/src/gcc/testsuite/gcc.target/arm/xor-and.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-options "-O -march=armv6" } */
++
++unsigned short foo (unsigned short x)
++{
++  x ^= 0x4002;
++  x >>= 1;
++  x |= 0x8000;
++  return x;
++}
++
++/* { dg-final { scan-assembler "orr" } } */
++/* { dg-final { scan-assembler-not "mvn" } } */
++/* { dg-final { scan-assembler-not "uxth" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
+@@ -14,6 +14,6 @@
+     c[i] = a[i] * b[i+3];
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movups256/1" } } */
+-/* { dg-final { scan-assembler "\\*avx_movups/1" } } */
++/* { dg-final { scan-assembler-not "avx_movups256/1" } } */
++/* { dg-final { scan-assembler "avx_movups/1" } } */
+ /* { dg-final { scan-assembler "vinsertf128" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
+@@ -24,6 +24,6 @@
+     }
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movdqu256/1" } } */
+-/* { dg-final { scan-assembler "\\*avx_movdqu/1" } } */
++/* { dg-final { scan-assembler-not "avx_movdqu256/1" } } */
++/* { dg-final { scan-assembler "avx_movdqu/1" } } */
+ /* { dg-final { scan-assembler "vinsertf128" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
+@@ -14,6 +14,6 @@
+     c[i] = a[i] * b[i+3];
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movupd256/1" } } */
+-/* { dg-final { scan-assembler "\\*avx_movupd/1" } } */
++/* { dg-final { scan-assembler-not "avx_movupd256/1" } } */
++/* { dg-final { scan-assembler "avx_movupd/1" } } */
+ /* { dg-final { scan-assembler "vinsertf128" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
+@@ -14,6 +14,6 @@
+     b[i] = a[i+3] * 2;
+ }
+ 
+-/* { dg-final { scan-assembler "\\*avx_movups256/1" } } */
+-/* { dg-final { scan-assembler-not "\\*avx_movups/1" } } */
++/* { dg-final { scan-assembler "avx_movups256/1" } } */
++/* { dg-final { scan-assembler-not "avx_movups/1" } } */
+ /* { dg-final { scan-assembler-not "vinsertf128" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
+@@ -17,6 +17,6 @@
+     d[i] = c[i] * 20.0;
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movups256/2" } } */
++/* { dg-final { scan-assembler-not "avx_movups256/2" } } */
+ /* { dg-final { scan-assembler "movups.*\\*avx_movv4sf_internal/3" } } */
+ /* { dg-final { scan-assembler "vextractf128" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
+@@ -24,6 +24,6 @@
+     }
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movdqu256/2" } } */
++/* { dg-final { scan-assembler-not "avx_movdqu256/2" } } */
+ /* { dg-final { scan-assembler "movdqu.*\\*avx_movv16qi_internal/3" } } */
+ /* { dg-final { scan-assembler "vextractf128" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
+@@ -17,6 +17,6 @@
+     d[i] = c[i] * 20.0;
+ }
+ 
+-/* { dg-final { scan-assembler-not "\\*avx_movupd256/2" } } */
++/* { dg-final { scan-assembler-not "avx_movupd256/2" } } */
+ /* { dg-final { scan-assembler "movupd.*\\*avx_movv2df_internal/3" } } */
+ /* { dg-final { scan-assembler "vextractf128" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
+@@ -14,7 +14,7 @@
+     b[i+3] = a[i] * c[i];
+ }
+ 
+-/* { dg-final { scan-assembler "\\*avx_movups256/2" } } */
+-/* { dg-final { scan-assembler-not "\\*avx_movups/2" } } */
++/* { dg-final { scan-assembler "avx_movups256/2" } } */
++/* { dg-final { scan-assembler-not "avx_movups/2" } } */
+ /* { dg-final { scan-assembler-not "\\*avx_movv4sf_internal/3" } } */
+ /* { dg-final { scan-assembler-not "vextractf128" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr52736.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr52736.c
+@@ -0,0 +1,29 @@
++/* PR target/52736 */
++/* { dg-do run } */
++/* { dg-options "-O1 -msse2" } */
++/* { dg-require-effective-target sse2_runtime } */
++
++#include <x86intrin.h>
++
++typedef double D __attribute__((may_alias));
++__attribute__((aligned(16))) static const double r[4] = { 1., 5., 1., 3. };
++
++__attribute__((noinline, noclone))
++void
++foo (int x)
++{
++  asm volatile ("" : "+g" (x) : : "memory");
++  if (x != 3)
++    __builtin_abort ();
++}
++
++int
++main ()
++{
++  __m128d t = _mm_set1_pd (5.);
++  ((D *)(&t))[0] = 1.;
++  foo (_mm_movemask_pd (_mm_cmpeq_pd (t, _mm_load_pd (&r[0]))));
++  ((D *)(&t))[1] = 3.;
++  foo (_mm_movemask_pd (_mm_cmpeq_pd (t, _mm_load_pd (&r[2]))));
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/i386/pr53416.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr53416.c
+@@ -0,0 +1,17 @@
++/* PR target/53416 */
++/* { dg-options "-O2 -mrdrnd" } */
++
++int test (void)
++{
++  unsigned int number = 0;
++  int result0, result1, result2, result3;
++
++  result0 = __builtin_ia32_rdrand32_step (&number);
++  result1 = __builtin_ia32_rdrand32_step (&number);
++  result2 = __builtin_ia32_rdrand32_step (&number);
++  result3 = __builtin_ia32_rdrand32_step (&number);
++
++  return result0 + result1 +result2 + result3;
++}
++
++/* { dg-final { scan-assembler-times "rdrand" 4 } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "lvlx" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++vsc  lc1(long a, void *p)           { return __builtin_altivec_lvlx (a,p); }
++vsf  llx01(long a, vsf *p)          { return __builtin_vec_lvlx (a,p); }
++vsf  llx02(long a, sf *p)           { return __builtin_vec_lvlx (a,p); }
++vbi  llx03(long a, vbi *p)          { return __builtin_vec_lvlx (a,p); }
++vsi  llx04(long a, vsi *p)          { return __builtin_vec_lvlx (a,p); }
++vsi  llx05(long a, si *p)           { return __builtin_vec_lvlx (a,p); }
++vui  llx06(long a, vui *p)          { return __builtin_vec_lvlx (a,p); }
++vui  llx07(long a, ui *p)           { return __builtin_vec_lvlx (a,p); }
++vbs  llx08(long a, vbs *p)          { return __builtin_vec_lvlx (a,p); }
++vp   llx09(long a, vp *p)           { return __builtin_vec_lvlx (a,p); }
++vss  llx10(long a, vss *p)          { return __builtin_vec_lvlx (a,p); }
++vss  llx11(long a, ss *p)           { return __builtin_vec_lvlx (a,p); }
++vus  llx12(long a, vus *p)          { return __builtin_vec_lvlx (a,p); }
++vus  llx13(long a, us *p)           { return __builtin_vec_lvlx (a,p); }
++vbc  llx14(long a, vbc *p)          { return __builtin_vec_lvlx (a,p); }
++vsc  llx15(long a, vsc *p)          { return __builtin_vec_lvlx (a,p); }
++vsc  llx16(long a, sc *p)           { return __builtin_vec_lvlx (a,p); }
++vuc  llx17(long a, vuc *p)          { return __builtin_vec_lvlx (a,p); }
++vuc  llx18(long a, uc *p)           { return __builtin_vec_lvlx (a,p); }
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "lvlxl" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++vsc  lc2(long a, void *p)           { return __builtin_altivec_lvlxl (a,p); }
++vsf  llxl01(long a, vsf *p)         { return __builtin_vec_lvlxl (a,p); }
++vsf  llxl02(long a, sf *p)          { return __builtin_vec_lvlxl (a,p); }
++vbi  llxl03(long a, vbi *p)         { return __builtin_vec_lvlxl (a,p); }
++vsi  llxl04(long a, vsi *p)         { return __builtin_vec_lvlxl (a,p); }
++vsi  llxl05(long a, si *p)          { return __builtin_vec_lvlxl (a,p); }
++vui  llxl06(long a, vui *p)         { return __builtin_vec_lvlxl (a,p); }
++vui  llxl07(long a, ui *p)          { return __builtin_vec_lvlxl (a,p); }
++vbs  llxl08(long a, vbs *p)         { return __builtin_vec_lvlxl (a,p); }
++vp   llxl09(long a, vp *p)          { return __builtin_vec_lvlxl (a,p); }
++vss  llxl10(long a, vss *p)         { return __builtin_vec_lvlxl (a,p); }
++vss  llxl11(long a, ss *p)          { return __builtin_vec_lvlxl (a,p); }
++vus  llxl12(long a, vus *p)         { return __builtin_vec_lvlxl (a,p); }
++vus  llxl13(long a, us *p)          { return __builtin_vec_lvlxl (a,p); }
++vbc  llxl14(long a, vbc *p)         { return __builtin_vec_lvlxl (a,p); }
++vsc  llxl15(long a, vsc *p)         { return __builtin_vec_lvlxl (a,p); }
++vsc  llxl16(long a, sc *p)          { return __builtin_vec_lvlxl (a,p); }
++vuc  llxl17(long a, vuc *p)         { return __builtin_vec_lvlxl (a,p); }
++vuc  llxl18(long a, uc *p)          { return __builtin_vec_lvlxl (a,p); }
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "lvrx" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++vsc  lc3(long a, void *p)           { return __builtin_altivec_lvrx (a,p); }
++vsf  lrx01(long a, vsf *p)          { return __builtin_vec_lvrx (a,p); }
++vsf  lrx02(long a, sf *p)           { return __builtin_vec_lvrx (a,p); }
++vbi  lrx03(long a, vbi *p)          { return __builtin_vec_lvrx (a,p); }
++vsi  lrx04(long a, vsi *p)          { return __builtin_vec_lvrx (a,p); }
++vsi  lrx05(long a, si *p)           { return __builtin_vec_lvrx (a,p); }
++vui  lrx06(long a, vui *p)          { return __builtin_vec_lvrx (a,p); }
++vui  lrx07(long a, ui *p)           { return __builtin_vec_lvrx (a,p); }
++vbs  lrx08(long a, vbs *p)          { return __builtin_vec_lvrx (a,p); }
++vp   lrx09(long a, vp *p)           { return __builtin_vec_lvrx (a,p); }
++vss  lrx10(long a, vss *p)          { return __builtin_vec_lvrx (a,p); }
++vss  lrx11(long a, ss *p)           { return __builtin_vec_lvrx (a,p); }
++vus  lrx12(long a, vus *p)          { return __builtin_vec_lvrx (a,p); }
++vus  lrx13(long a, us *p)           { return __builtin_vec_lvrx (a,p); }
++vbc  lrx14(long a, vbc *p)          { return __builtin_vec_lvrx (a,p); }
++vsc  lrx15(long a, vsc *p)          { return __builtin_vec_lvrx (a,p); }
++vsc  lrx16(long a, sc *p)           { return __builtin_vec_lvrx (a,p); }
++vuc  lrx17(long a, vuc *p)          { return __builtin_vec_lvrx (a,p); }
++vuc  lrx18(long a, uc *p)           { return __builtin_vec_lvrx (a,p); }
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "lvrxl" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++vsc  lc4(long a, void *p)           { return __builtin_altivec_lvrxl (a,p); }
++vsf  lrxl01(long a, vsf *p)         { return __builtin_vec_lvrxl (a,p); }
++vsf  lrxl02(long a, sf *p)          { return __builtin_vec_lvrxl (a,p); }
++vbi  lrxl03(long a, vbi *p)         { return __builtin_vec_lvrxl (a,p); }
++vsi  lrxl04(long a, vsi *p)         { return __builtin_vec_lvrxl (a,p); }
++vsi  lrxl05(long a, si *p)          { return __builtin_vec_lvrxl (a,p); }
++vui  lrxl06(long a, vui *p)         { return __builtin_vec_lvrxl (a,p); }
++vui  lrxl07(long a, ui *p)          { return __builtin_vec_lvrxl (a,p); }
++vbs  lrxl08(long a, vbs *p)         { return __builtin_vec_lvrxl (a,p); }
++vp   lrxl09(long a, vp *p)          { return __builtin_vec_lvrxl (a,p); }
++vss  lrxl10(long a, vss *p)         { return __builtin_vec_lvrxl (a,p); }
++vss  lrxl11(long a, ss *p)          { return __builtin_vec_lvrxl (a,p); }
++vus  lrxl12(long a, vus *p)         { return __builtin_vec_lvrxl (a,p); }
++vus  lrxl13(long a, us *p)          { return __builtin_vec_lvrxl (a,p); }
++vbc  lrxl14(long a, vbc *p)         { return __builtin_vec_lvrxl (a,p); }
++vsc  lrxl15(long a, vsc *p)         { return __builtin_vec_lvrxl (a,p); }
++vsc  lrxl16(long a, sc *p)          { return __builtin_vec_lvrxl (a,p); }
++vuc  lrxl17(long a, vuc *p)         { return __builtin_vec_lvrxl (a,p); }
++vuc  lrxl18(long a, uc *p)          { return __builtin_vec_lvrxl (a,p); }
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "stvlx" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++void sc1(vsc v, long a, void *p)    { __builtin_altivec_stvlx (v,a,p); }
++void slx01(vsf v, long a, vsf *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx02(vsf v, long a, sf *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx03(vbi v, long a, vbi *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx04(vsi v, long a, vsi *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx05(vsi v, long a, si *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx06(vui v, long a, vui *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx07(vui v, long a, ui *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx08(vbs v, long a, vbs *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx09(vp v, long a, vp *p)     { __builtin_vec_stvlx (v,a,p); }
++void slx10(vss v, long a, vss *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx11(vss v, long a, ss *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx12(vus v, long a, vus *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx13(vus v, long a, us *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx14(vbc v, long a, vbc *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx15(vsc v, long a, vsc *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx16(vsc v, long a, sc *p)    { __builtin_vec_stvlx (v,a,p); }
++void slx17(vuc v, long a, vuc *p)   { __builtin_vec_stvlx (v,a,p); }
++void slx18(vuc v, long a, uc *p)    { __builtin_vec_stvlx (v,a,p); }
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "stvlxl" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++void sc2(vsc v, long a, void *p)    { __builtin_altivec_stvlxl (v,a,p); }
++void slxl01(vsf v, long a, vsf *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl02(vsf v, long a, sf *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl03(vbi v, long a, vbi *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl04(vsi v, long a, vsi *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl05(vsi v, long a, si *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl06(vui v, long a, vui *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl07(vui v, long a, ui *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl08(vbs v, long a, vbs *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl09(vp v, long a, vp *p)    { __builtin_vec_stvlxl (v,a,p); }
++void slxl10(vss v, long a, vss *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl11(vss v, long a, ss *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl12(vus v, long a, vus *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl13(vus v, long a, us *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl14(vbc v, long a, vbc *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl15(vsc v, long a, vsc *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl16(vsc v, long a, sc *p)   { __builtin_vec_stvlxl (v,a,p); }
++void slxl17(vuc v, long a, vuc *p)  { __builtin_vec_stvlxl (v,a,p); }
++void slxl18(vuc v, long a, uc *p)   { __builtin_vec_stvlxl (v,a,p); }
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "stvrx" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++void sc3(vsc v, long a, void *p)    { __builtin_altivec_stvrx (v,a,p); }
++void srx01(vsf v, long a, vsf *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx02(vsf v, long a, sf *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx03(vbi v, long a, vbi *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx04(vsi v, long a, vsi *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx05(vsi v, long a, si *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx06(vui v, long a, vui *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx07(vui v, long a, ui *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx08(vbs v, long a, vbs *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx09(vp v, long a, vp *p)     { __builtin_vec_stvrx (v,a,p); }
++void srx10(vss v, long a, vss *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx11(vss v, long a, ss *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx12(vus v, long a, vus *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx13(vus v, long a, us *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx14(vbc v, long a, vbc *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx15(vsc v, long a, vsc *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx16(vsc v, long a, sc *p)    { __builtin_vec_stvrx (v,a,p); }
++void srx17(vuc v, long a, vuc *p)   { __builtin_vec_stvrx (v,a,p); }
++void srx18(vuc v, long a, uc *p)    { __builtin_vec_stvrx (v,a,p); }
+--- a/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
+@@ -0,0 +1,48 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-O2 -maltivec -mcpu=cell" } */
++/* { dg-final { scan-assembler-times "stvrxl" 19 } } */
++
++#include <altivec.h>
++
++typedef __vector signed char vsc;
++typedef __vector signed short vss;
++typedef __vector signed int vsi;
++typedef __vector unsigned char vuc;
++typedef __vector unsigned short vus;
++typedef __vector unsigned int vui;
++typedef __vector bool char vbc;
++typedef __vector bool short vbs;
++typedef __vector bool int vbi;
++typedef __vector float vsf;
++typedef __vector pixel vp;
++typedef signed char sc;
++typedef signed short ss;
++typedef signed int si;
++typedef signed long sl;
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long ul;
++typedef float sf;
++
++void sc4(vsc v, long a, void *p)    { __builtin_altivec_stvrxl (v,a,p); }
++void srxl01(vsf v, long a, vsf *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl02(vsf v, long a, sf *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl03(vbi v, long a, vbi *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl04(vsi v, long a, vsi *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl05(vsi v, long a, si *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl06(vui v, long a, vui *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl07(vui v, long a, ui *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl08(vbs v, long a, vbs *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl09(vp v, long a, vp *p)    { __builtin_vec_stvrxl (v,a,p); }
++void srxl10(vss v, long a, vss *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl11(vss v, long a, ss *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl12(vus v, long a, vus *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl13(vus v, long a, us *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl14(vbc v, long a, vbc *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl15(vsc v, long a, vsc *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl16(vsc v, long a, sc *p)   { __builtin_vec_stvrxl (v,a,p); }
++void srxl17(vuc v, long a, vuc *p)  { __builtin_vec_stvrxl (v,a,p); }
++void srxl18(vuc v, long a, uc *p)   { __builtin_vec_stvrxl (v,a,p); }
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr52457.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr52457.c
+@@ -0,0 +1,34 @@
++/* { dg-do run { target { powerpc*-*-linux* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
++/* { dg-require-effective-target vsx_hw } */
++/* { dg-options "-O1 -mcpu=power7" } */
++
++extern void abort (void);
++
++typedef long long T;
++typedef T vl_t __attribute__((vector_size(2 * sizeof (T))));
++
++vl_t
++buggy_func (T x)
++{
++  vl_t w;
++  T *p = (T *)&w;
++  p[0] = p[1] = x;
++  return w;
++}
++
++int
++main(void)
++{
++  vl_t rval;
++  T *pl;
++
++  pl = (T *) &rval;
++  rval = buggy_func (2);
++
++  if (pl[0] != 2 || pl[1] != 2)
++    abort ();
++
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr52775.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr52775.c
+@@ -0,0 +1,16 @@
++/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O1 -mcpu=power4" } */
++/* { dg-final { scan-assembler-times "fcfid" 2 } } */
++
++double
++int_to_double (int *p)
++{
++  return (double)*p;
++}
++
++double
++long_long_to_double (long long *p)
++{
++  return (double)*p;
++}
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr53199.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr53199.c
+@@ -0,0 +1,50 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O2 -mcpu=power6 -mavoid-indexed-addresses" } */
++/* { dg-final { scan-assembler-times "lwbrx" 6 } } */
++/* { dg-final { scan-assembler-times "stwbrx" 6 } } */
++
++/* PR 51399: bswap gets an error if -mavoid-indexed-addresses was used in
++   creating the two lwbrx instructions.  */
++
++long long
++load64_reverse_1 (long long *p)
++{
++  return __builtin_bswap64 (*p);
++}
++
++long long
++load64_reverse_2 (long long *p)
++{
++  return __builtin_bswap64 (p[1]);
++}
++
++long long
++load64_reverse_3 (long long *p, int i)
++{
++  return __builtin_bswap64 (p[i]);
++}
++
++void
++store64_reverse_1 (long long *p, long long x)
++{
++  *p = __builtin_bswap64 (x);
++}
++
++void
++store64_reverse_2 (long long *p, long long x)
++{
++  p[1] = __builtin_bswap64 (x);
++}
++
++void
++store64_reverse_3 (long long *p, long long x, int i)
++{
++  p[i] = __builtin_bswap64 (x);
++}
++
++long long
++reg_reverse (long long x)
++{
++  return __builtin_bswap64 (x);
++}
+--- a/src/gcc/testsuite/gcc.target/sparc/ultrasp12.c
++++ b/src/gcc/testsuite/gcc.target/sparc/ultrasp12.c
+@@ -0,0 +1,64 @@
++/* PR rtl-optimization/48830 */
++/* Testcase by Hans-Peter Nilsson <hp@gcc.gnu.org> */
++
++/* { dg-do compile } */
++/* { dg-require-effective-target lp64 } */
++/* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
++
++typedef unsigned char uint8_t;
++typedef unsigned int uint32_t;
++typedef unsigned long int uint64_t;
++typedef unsigned long int uintmax_t;
++typedef unsigned char rc_vec_t __attribute__((__vector_size__(8)));
++typedef short rc_svec_type_ __attribute__((__vector_size__(8)));
++typedef unsigned char rc_vec4_type_ __attribute__((__vector_size__(4)));
++
++void
++rc_stat_xsum_acc(const uint8_t *__restrict src1, int src1_dim,
++                 const uint8_t *__restrict src2, int src2_dim,
++                 int len, int height, uintmax_t sum[5])
++{
++    uint32_t s1 = 0;
++    uint32_t s2 = 0;
++    uintmax_t s11 = 0;
++    uintmax_t s22 = 0;
++    uintmax_t s12 = 0;
++    int full = len / ((1024) < (1024) ? (1024) : (1024));
++    int rem = len % ((1024) < (1024) ? (1024) : (1024));
++    int rem1 = rem / 1;
++    int y;
++    unsigned int rc_gsr_scale_ __attribute__ ((__unused__)) = 7; unsigned int rc_gsr_align_ __attribute__ ((__unused__)) = 4; unsigned int rc_gsr_set_ __attribute__ ((__unused__)) = 0; register unsigned int rc_gsr_fakedep_ __attribute__ ((__unused__)) = 0; unsigned int rc_gsr_ldinit_ __attribute__ ((__unused__)) = 0;
++    for (y = 0; y < height; y++) {
++        rc_vec_t a1, a2, a11, a22, a12;
++        int i1 = (y)*(src1_dim);
++        int i2 = (y)*(src2_dim);
++        int x;
++        ((a1) = ((rc_vec_t) {0}));
++        ((a2) = ((rc_vec_t) {0}));
++        ((a11) = ((rc_vec_t) {0}));
++        ((a22) = ((rc_vec_t) {0}));
++        ((a12) = ((rc_vec_t) {0}));
++        for (x = 0; x < full; x++) {
++            int k;
++            for (k = 0; k < ((1024) < (1024) ? (1024) : (1024)) /
++                            1; k++)
++            {
++                do { rc_vec_t v1, v2; ((v1) = *(const rc_vec_t*)(&(src1)[i1])); ((v2) = *(const rc_vec_t*)(&(src2)[i2])); ((a1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(__builtin_vis_pdist (v1, ((rc_vec_t) {0}), (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)))).v)); ((a2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(__builtin_vis_pdist (v2, ((rc_vec_t) {0}), (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)))).v)); do { rc_vec_t s1_ = (v1); rc_vec_t s2_ = (v1); rc_vec_t accvin_ = (a11); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a11) = accvout_; } while (0); do { rc_vec_t s1_ = (v2); rc_vec_t s2_ = (v2); rc_vec_t accvin_ = (a22); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a22) = accvout_; } while (0); do { rc_vec_t s1_ = (v1); rc_vec_t s2_ = (v2); rc_vec_t accvin_ = (a12); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a12) = accvout_; } while (0); (i1) += 8; (i2) += 8; } while (0);
++
++            }
++            do { uint32_t t1, t2, t11, t22, t12; ((t1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)); ((t2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a11); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t11) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a22); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t22) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a12); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t12) = maclo_ + machi_ * 256; } while (0); ((a1) = ((rc_vec_t) {0})); ((a2) = ((rc_vec_t) {0})); ((a11) = ((rc_vec_t) {0})); ((a22) = ((rc_vec_t) {0})); ((a12) = ((rc_vec_t) {0})); (s1) += t1; (s2) += t2; (s11) += t11; (s22) += t22; (s12) += t12; } while (0);
++        }
++        for (x = 0; x < rem1; x++) {
++            do { rc_vec_t v1, v2; ((v1) = *(const rc_vec_t*)(&(src1)[i1])); ((v2) = *(const rc_vec_t*)(&(src2)[i2])); ((a1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(__builtin_vis_pdist (v1, ((rc_vec_t) {0}), (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)))).v)); ((a2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(__builtin_vis_pdist (v2, ((rc_vec_t) {0}), (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)))).v)); do { rc_vec_t s1_ = (v1); rc_vec_t s2_ = (v1); rc_vec_t accvin_ = (a11); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a11) = accvout_; } while (0); do { rc_vec_t s1_ = (v2); rc_vec_t s2_ = (v2); rc_vec_t accvin_ = (a22); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a22) = accvout_; } while (0); do { rc_vec_t s1_ = (v1); rc_vec_t s2_ = (v2); rc_vec_t accvin_ = (a12); rc_vec_t s1lo7_, s1msb_, accvout_; uint32_t maclo_, machi_; rc_svec_type_ masklow_ = (rc_svec_type_){(255), (255), (255), (255)}; rc_svec_type_ s1msbhi_, s1msblo_, s1lo7hi_, s1lo7lo_; rc_svec_type_ s1msbdiv2hi_, s1msbdiv2lo_; rc_vec4_type_ s1lo7hi4_, s1lo7lo4_, s1msbhi4_, s1msblo4_; rc_vec4_type_ s1msbdiv2hi4_, s1msbdiv2lo4_, s2hi4_, s2lo4_; rc_vec4_type_ accvhi4_, accvlo4_; rc_svec_type_ mulhilo7_, mullolo7_, mulhimsbdiv2_, mullomsbdiv2_; rc_svec_type_ mulhi_, mullo_, mulhihi_, mullohi_; rc_svec_type_ mulhilo_, mullolo_; rc_vec4_type_ zero4_ = (((union { rc_vec4_type_ v; uint64_t i; })(uint64_t)(0)).v); rc_vec_t msb_ = (rc_vec_t){(0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80), (0x80)}; ((s1msb_) = (s1_) & (msb_)); ((s1lo7_) = (s1_) & (~msb_)); do { if (rc_gsr_ldinit_) { extern void rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(void); rc_mixing_GSR_setting_with_RC_VEC_LDINIT_(); } if (!__builtin_constant_p(rc_gsr_align_) || !__builtin_constant_p(2) || !rc_gsr_set_ || (unsigned) (rc_gsr_align_) != rc_gsr_align_ || (unsigned) (2) != rc_gsr_scale_) { rc_gsr_set_ = 1; rc_gsr_align_ = (rc_gsr_align_); rc_gsr_scale_ = (2); unsigned int val_ = (rc_gsr_scale_ << 3) | rc_gsr_align_; if (__builtin_constant_p (val_)) { __asm__("wr %%g0,%[gsrval],%%gsr\n" ";# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "i" (val_), "1" (rc_gsr_fakedep_)); } else { __asm__("wr %[gsrval],0,%%gsr" "\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_), [fakegsr] "=rm" (rc_gsr_fakedep_) : "0" (s1msb_), [gsrval] "r" (val_), "1" (rc_gsr_fakedep_)); } } else { __asm__("\n;# dep %[depvec] on fake GSR %[fakegsr]" : [depvec] "=brm" (s1msb_) : "0" (s1msb_), [fakegsr] "g" (rc_gsr_fakedep_)); } } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1msb_); (s1msbhi4_) = hl_.hilo_.hi_; (s1msblo4_) = hl_.hilo_.lo_; } while (0); s1msbhi_ = __builtin_vis_fexpand(s1msbhi4_); s1msblo_ = __builtin_vis_fexpand(s1msblo4_); s1msbdiv2hi4_ = __builtin_vis_fpack16(s1msbhi_); s1msbdiv2lo4_ = __builtin_vis_fpack16(s1msblo_); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s2_); (s2hi4_) = hl_.hilo_.hi_; (s2lo4_) = hl_.hilo_.lo_; } while (0); do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (s1lo7_); (s1lo7hi4_) = hl_.hilo_.hi_; (s1lo7lo4_) = hl_.hilo_.lo_; } while (0); s1msbdiv2hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2hi4_, zero4_); s1msbdiv2lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1msbdiv2lo4_, zero4_); s1lo7hi_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7hi4_, zero4_); s1lo7lo_ = (rc_svec_type_)__builtin_vis_fpmerge(s1lo7lo4_, zero4_); mulhilo7_ = __builtin_vis_fmul8x16(s2hi4_, s1lo7hi_); mullolo7_ = __builtin_vis_fmul8x16(s2lo4_, s1lo7lo_); mulhimsbdiv2_ = __builtin_vis_fmul8x16(s2hi4_, s1msbdiv2hi_); mullomsbdiv2_ = __builtin_vis_fmul8x16(s2lo4_, s1msbdiv2lo_); mulhi_ = mulhilo7_ + mulhimsbdiv2_ + mulhimsbdiv2_; mullo_ = mullolo7_ + mullomsbdiv2_ + mullomsbdiv2_; mulhihi_ = mulhi_ & ~masklow_; mulhilo_ = mulhi_ & masklow_; mullohi_ = mullo_ & ~masklow_; mullolo_ = mullo_ & masklow_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (accvin_); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); maclo_ = __builtin_vis_pdist ((rc_vec_t)mullolo_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i)); maclo_ = __builtin_vis_pdist ((rc_vec_t)mulhilo_, ((rc_vec_t) {0}), maclo_); machi_ = __builtin_vis_pdist ((rc_vec_t)mullohi_, ((rc_vec_t) {0}), (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i)); machi_ = __builtin_vis_pdist ((rc_vec_t)mulhihi_, ((rc_vec_t) {0}), machi_); do { typedef union { struct { rc_vec4_type_ hi_, lo_; } hilo_; rc_vec_t v_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) {{((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)machi_)).v)), ((((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)((uint32_t)maclo_)).v))}}; (accvout_) = hl_.v_; } while (0); __asm__("\n;# dep fake GSR %[fakegsr] on %[xdep]" : [fakegsr] "=brm" (rc_gsr_fakedep_) : [xdep] "brm" (accvout_), "0" (rc_gsr_fakedep_)); (a12) = accvout_; } while (0); (i1) += 8; (i2) += 8; } while (0);
++        }
++        do { uint32_t t1, t2, t11, t22, t12; ((t1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)); ((t2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a11); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t11) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a22); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t22) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a12); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t12) = maclo_ + machi_ * 256; } while (0); ((a1) = ((rc_vec_t) {0})); ((a2) = ((rc_vec_t) {0})); ((a11) = ((rc_vec_t) {0})); ((a22) = ((rc_vec_t) {0})); ((a12) = ((rc_vec_t) {0})); (s1) += t1; (s2) += t2; (s11) += t11; (s22) += t22; (s12) += t12; } while (0);
++
++        do { uint32_t t1, t2, t11, t22, t12; ((t1) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a1)).i)); ((t2) = (((union { rc_vec_t v; uint64_t i; })(uint64_t)(a2)).i)); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a11); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t11) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a22); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t22) = maclo_ + machi_ * 256; } while (0); do { rc_vec4_type_ accvhi4_, accvlo4_; uint64_t machi_, maclo_; do { typedef union { rc_vec_t v_; struct { rc_vec4_type_ hi_, lo_; } hilo_; } RC_hl_type_; RC_hl_type_ hl_ = (RC_hl_type_) (a12); (accvhi4_) = hl_.hilo_.hi_; (accvlo4_) = hl_.hilo_.lo_; } while (0); machi_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvhi4_)).i); maclo_ = (((union { rc_vec4_type_ v; uint32_t i; })(uint32_t)(accvlo4_)).i); (t12) = maclo_ + machi_ * 256; } while (0); ((a1) = ((rc_vec_t) {0})); ((a2) = ((rc_vec_t) {0})); ((a11) = ((rc_vec_t) {0})); ((a22) = ((rc_vec_t) {0})); ((a12) = ((rc_vec_t) {0})); (s1) += t1; (s2) += t2; (s11) += t11; (s22) += t22; (s12) += t12; } while (0);
++    }
++    sum[0] = s1;
++    sum[1] = s2;
++    sum[2] = s11;
++    sum[3] = s22;
++    sum[4] = s12;
++    ;
++}
+--- a/src/gcc/testsuite/g++.dg/cpp0x/nullptr28.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/nullptr28.C
+@@ -0,0 +1,17 @@
++// { dg-do run }
++// { dg-options "-std=c++0x -pedantic-errors" }
++
++typedef decltype(nullptr) nullptr_t;
++
++int i;
++nullptr_t n;
++const nullptr_t& f() { ++i; return n; }
++
++nullptr_t g() { return f(); }
++
++int main()
++{
++  g();
++  if (i != 1)
++    __builtin_abort ();
++}
+--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-value1.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-value1.C
+@@ -0,0 +1,24 @@
++// PR c++/52796
++// { dg-options "-std=c++0x -pedantic-errors" }
++
++inline void *operator new(__SIZE_TYPE__ s, void *p) { return p; }
++
++struct A
++{
++  int i;
++  template<class... Ts>
++  A(Ts&&... ts): i(ts...) { }
++};
++
++static union {
++  unsigned char c[sizeof(A)];
++  int i;
++};
++
++int main()
++{
++  i = 0xdeadbeef;
++  new(c) A;
++  if (i != 0)
++    __builtin_abort();
++}
+--- a/src/gcc/testsuite/gfortran.dg/init_flag_10.f90
++++ b/src/gcc/testsuite/gfortran.dg/init_flag_10.f90
+@@ -0,0 +1,43 @@
++! { dg-do run }
++! { dg-options "-finit-real=NAN" }
++! { dg-add-options ieee }
++! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
++!
++! PR fortran/50619
++!
++! Contributed by Fred Krogh
++!
++! The NaN initialization used to set the associate name to NaN!
++!
++
++module testa2
++type, public ::  test_ty
++  real :: rmult = 1.0e0
++end type test_ty
++
++contains
++  subroutine test(e, var1)
++    type(test_ty) :: e
++    real :: var1, var2 ! Should get NaN initialized
++
++    ! Should be the default value
++    if (e%rmult /= 1.0) call abort ()
++
++    ! Check that NaN initialization is really turned on
++    if (var1 == var1) call abort () 
++    if (var2 == var2) call abort () 
++
++    ! The following was failing:
++    associate (rmult=>e%rmult)
++      if (e%rmult /= 1.0) call abort ()
++    end associate
++  end subroutine test
++end module testa2
++
++program testa1
++  use testa2
++  type(test_ty) :: e
++  real :: var1 ! Should get NaN initialized
++  call test(e, var1)
++  stop
++end program testa1
+--- a/src/gcc/testsuite/gfortran.dg/intrinsic_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/intrinsic_8.f90
+@@ -0,0 +1,23 @@
++! { dg-do compile }
++!
++! PR fortran/52452
++!
++! Contributed by Roger Ferrer Ibanez
++!
++PROGRAM test_etime
++    IMPLICIT NONE
++    INTRINSIC :: etime
++    REAL(4) :: tarray(1:2)
++    REAL(4) :: result
++
++    CALL etime(tarray, result)
++END PROGRAM test_etime
++
++subroutine test_etime2
++    IMPLICIT NONE
++    INTRINSIC :: etime
++    REAL(4) :: tarray(1:2)
++    REAL(4) :: result
++
++    result = etime(tarray)
++END subroutine test_etime2
+--- a/src/gcc/testsuite/gfortran.dg/optional_absent_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/optional_absent_2.f90
+@@ -0,0 +1,53 @@
++! { dg-do run }
++!
++! PR fortran/51758
++!
++! Contributed by Mikael Morin
++!
++! Check whether passing NULL() to an elemental procedure works,
++! where NULL() denotes an absent optional argument.
++!
++program p
++
++  integer :: a(2)
++  integer :: b
++
++  a = 0
++  a = foo((/ 1, 1 /), null())
++!  print *, a
++  if (any(a /= 2)) call abort
++
++  a = 0
++  a = bar((/ 1, 1 /), null())
++!  print *, a
++  if (any(a /= 2)) call abort
++
++  b = 0
++  b = bar(1, null())
++!  print *, b
++  if (b /= 2) call abort
++
++contains
++
++  function foo(a, b)
++    integer           :: a(:)
++    integer, optional :: b(:)
++    integer           :: foo(size(a))
++
++    if (present(b)) call abort
++
++    foo = 2
++  end function foo
++
++  elemental function bar(a, b)
++    integer, intent(in)           :: a
++    integer, intent(in), optional :: b
++    integer                       :: bar
++
++    bar = 2
++
++    if (present(b)) bar = 1
++
++  end function bar
++
++end program p
+--- a/src/gcc/testsuite/gfortran.dg/pointer_intent_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/pointer_intent_6.f90
+@@ -0,0 +1,19 @@
++! { dg-do compile }
++!
++! PR fortran/52864
++!
++! Assigning to an intent(in) pointer (which is valid).
++!
++      program test
++         type PoisFFT_Solver3D
++           complex, dimension(:,:,:), &
++                           pointer :: work => null()
++         end type PoisFFT_Solver3D
++      contains
++        subroutine PoisFFT_Solver3D_FullPeriodic(D, p)
++          type(PoisFFT_Solver3D), intent(in) :: D
++          real, intent(in), pointer :: p(:)
++          D%work(i,j,k) = 0.0
++          p = 0.0
++        end subroutine
++      end
+--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_34.f90
++++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_34.f90
+@@ -0,0 +1,79 @@
++! { dg-do compile }
++!
++! PR fortran/52469
++!
++! This was failing as the DECL of the proc pointer "func"
++! was used for the interface of the proc-pointer component "my_f_ptr"
++! rather than the decl of the proc-pointer target
++!
++! Contributed by palott@gmail.com
++!
++
++module ExampleFuncs
++  implicit none
++
++  ! NOTE: "func" is a procedure pointer!
++  pointer :: func
++  interface
++     function func (z)
++        real :: func
++        real, intent (in) :: z
++     end function func
++  end interface
++
++  type Contains_f_ptr
++     procedure (func), pointer, nopass :: my_f_ptr
++  end type Contains_f_ptr
++contains
++
++function f1 (x)
++  real :: f1
++  real, intent (in) :: x
++
++  f1 = 2.0 * x
++
++  return
++end function f1
++
++function f2 (x)
++   real :: f2
++   real, intent (in) :: x
++
++   f2 = 3.0 * x**2
++
++   return
++end function f2
++
++function fancy (func, x)
++   real :: fancy
++   real, intent (in) :: x
++
++   interface AFunc
++      function func (y)
++         real :: func
++         real, intent (in) ::y
++      end function func
++   end interface AFunc
++
++   fancy = func (x) + 3.3 * x
++end function fancy
++
++end module  ExampleFuncs
++
++
++program test_proc_ptr
++  use ExampleFuncs
++  implicit none
++
++  type (Contains_f_ptr), dimension (2) :: NewType
++ 
++  !NewType(1) % my_f_ptr => f1
++  NewType(2) % my_f_ptr => f2
++
++  !write (*, *) NewType(1) % my_f_ptr (3.0), NewType(2) % my_f_ptr (3.0)
++  write (6, *)  NewType(2) % my_f_ptr (3.0) ! < Shall print '27.0'
++
++  stop
++end program test_proc_ptr
++
++! { dg-final { cleanup-modules "examplefuncs" } }
+--- a/src/gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90
++++ b/src/gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90
+@@ -0,0 +1,40 @@
++! { dg-do run }
++!
++! PR fortran/53389
++!
++! The program was leaking memory before due to
++! realloc on assignment and nested functions.
++!
++module foo
++  implicit none
++  contains
++
++  function filler(array, val)
++    real, dimension(:), intent(in):: array
++    real, dimension(size(array)):: filler
++    real, intent(in):: val
++
++    filler=val
++
++  end function filler
++end module
++
++program test
++  use foo
++  implicit none
++
++  real, dimension(:), allocatable:: x, y
++  integer, parameter:: N=1000 !*1000
++  integer:: i
++
++!  allocate( x(N) )
++  allocate( y(N) )
++  y=0.0
++
++  do i=1, N
++!    print *,i
++    x=filler(filler(y, real(2*i)), real(i))
++    y=y+x
++  end do
++
++end program test
+--- a/src/gcc/testsuite/gfortran.dg/save_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/save_4.f90
+@@ -0,0 +1,13 @@
++! { dg-do compile }
++! { dg-options "-std=f2003" }
++!
++! PR fortran/53597
++!
++MODULE somemodule
++  IMPLICIT NONE
++  TYPE sometype
++    INTEGER :: i
++    DOUBLE PRECISION, POINTER, DIMENSION(:,:) :: coef => NULL()
++  END TYPE sometype
++  TYPE(sometype) :: somevariable ! { dg-error "Fortran 2008: Implied SAVE for module variable 'somevariable' at .1., needed due to the default initialization" }
++END MODULE somemodule
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr19049.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr19049.f90
+@@ -19,6 +19,7 @@
+       end
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } }
+-! { dg-final { scan-tree-dump-times "complicated access pattern" 1 "vect" } }
++! { dg-final { scan-tree-dump-times "complicated access pattern" 1 "vect" { xfail vect_multiple_sizes } } }
++! { dg-final { scan-tree-dump-times "complicated access pattern" 2 "vect" { target vect_multiple_sizes } } }
+ ! { dg-final { cleanup-tree-dump "vect" } }
+ 
+--- a/src/gcc/testsuite/lib/target-supports.exp
++++ b/src/gcc/testsuite/lib/target-supports.exp
+@@ -1894,6 +1894,18 @@
+     }]
+ }
+ 
++# Return 1 if this is an ARM target that supports unaligned word/halfword
++# load/store instructions.
++
++proc check_effective_target_arm_unaligned { } {
++    return [check_no_compiler_messages arm_unaligned assembly {
++	#ifndef __ARM_FEATURE_UNALIGNED
++	#error no unaligned support
++	#endif
++	int i;
++    }]
++}
++
+ # Add the options needed for NEON.  We need either -mfloat-abi=softfp
+ # or -mfloat-abi=hard, but if one is already specified by the
+ # multilib, use it.  Similarly, if a -mfpu option already enables
+@@ -1988,6 +2000,47 @@
+ 		check_effective_target_arm_fp16_ok_nocache]
+ }
+ 
++# Creates a series of routines that return 1 if the given architecture
++# can be selected and a routine to give the flags to select that architecture
++# Note: Extra flags may be added to disable options from newer compilers
++# (Thumb in particular - but others may be added in the future)
++# Usage: /* { dg-require-effective-target arm_arch_v5_ok } */
++#        /* { dg-add-options arm_arch_v5 } */
++foreach { armfunc armflag armdef } { v5 "-march=armv5 -marm" __ARM_ARCH_5__
++				     v6 "-march=armv6" __ARM_ARCH_6__
++				     v6k "-march=armv6k" __ARM_ARCH_6K__
++				     v7a "-march=armv7-a" __ARM_ARCH_7A__ } {
++    eval [string map [list FUNC $armfunc FLAG $armflag DEF $armdef ] {
++	proc check_effective_target_arm_arch_FUNC_ok { } {
++	    if { [ string match "*-marm*" "FLAG" ] &&
++		![check_effective_target_arm_arm_ok] } {
++		return 0
++	    }
++	    return [check_no_compiler_messages arm_arch_FUNC_ok assembly {
++		#if !defined (DEF)
++		#error FOO
++		#endif
++	    } "FLAG" ]
++	}
++
++	proc add_options_for_arm_arch_FUNC { flags } {
++	    return "$flags FLAG"
++	}
++    }]
++}
++
++# Return 1 if this is an ARM target where -marm causes ARM to be
++# used (not Thumb)
++
++proc check_effective_target_arm_arm_ok { } {
++    return [check_no_compiler_messages arm_arm_ok assembly {
++	#if !defined (__arm__) || defined (__thumb__) || defined (__thumb2__)
++	#error FOO
++	#endif
++    } "-marm"]
++}
++
++
+ # Return 1 is this is an ARM target where -mthumb causes Thumb-1 to be
+ # used.
+ 
+@@ -2338,6 +2391,26 @@
+ }
+ 
+ 
++# Return 1 if the target supports hardware vector shift operation for char.
++
++proc check_effective_target_vect_shift_char { } {
++    global et_vect_shift_char_saved
++
++    if [info exists et_vect_shift_char_saved] {
++	verbose "check_effective_target_vect_shift_char: using cached result" 2
++    } else {
++	set et_vect_shift_char_saved 0
++	if { ([istarget powerpc*-*-*]
++             && ![istarget powerpc-*-linux*paired*])
++	     || [check_effective_target_arm32] } {
++	   set et_vect_shift_char_saved 1
++	}
++    }
++
++    verbose "check_effective_target_vect_shift_char: returning $et_vect_shift_char_saved" 2
++    return $et_vect_shift_char_saved
++}
++
+ # Return 1 if the target supports hardware vectors of long, 0 otherwise.
+ #
+ # This can change for different subtargets so do not cache the result.
+@@ -2673,7 +2746,8 @@
+ 	} else {
+ 	    set et_vect_widen_mult_qi_to_hi_saved 0
+ 	}
+-        if { [istarget powerpc*-*-*] } {
++        if { [istarget powerpc*-*-*]
++              || ([istarget arm*-*-*] && [check_effective_target_arm_neon]) } {
+             set et_vect_widen_mult_qi_to_hi_saved 1
+         }
+     }
+@@ -2706,7 +2780,8 @@
+ 	      || [istarget spu-*-*]
+ 	      || [istarget ia64-*-*]
+ 	      || [istarget i?86-*-*]
+-	      || [istarget x86_64-*-*] } {
++	      || [istarget x86_64-*-*]
++              || ([istarget arm*-*-*] && [check_effective_target_arm_neon]) } {
+             set et_vect_widen_mult_hi_to_si_saved 1
+         }
+     }
+@@ -2715,6 +2790,72 @@
+ }
+ 
+ # Return 1 if the target plus current options supports a vector
++# widening multiplication of *char* args into *short* result, 0 otherwise.
++#
++# This won't change for different subtargets so cache the result.
++
++proc check_effective_target_vect_widen_mult_qi_to_hi_pattern { } {
++    global et_vect_widen_mult_qi_to_hi_pattern
++
++    if [info exists et_vect_widen_mult_qi_to_hi_pattern_saved] {
++        verbose "check_effective_target_vect_widen_mult_qi_to_hi_pattern: using cached result" 2
++    } else {
++        set et_vect_widen_mult_qi_to_hi_pattern_saved 0
++        if { [istarget powerpc*-*-*]
++              || ([istarget arm*-*-*] && [check_effective_target_arm_neon]) } {
++            set et_vect_widen_mult_qi_to_hi_pattern_saved 1
++        }
++    }
++    verbose "check_effective_target_vect_widen_mult_qi_to_hi_pattern: returning $et_vect_widen_mult_qi_to_hi_pattern_saved" 2
++    return $et_vect_widen_mult_qi_to_hi_pattern_saved
++}
++
++# Return 1 if the target plus current options supports a vector
++# widening multiplication of *short* args into *int* result, 0 otherwise.
++#
++# This won't change for different subtargets so cache the result.
++
++proc check_effective_target_vect_widen_mult_hi_to_si_pattern { } {
++    global et_vect_widen_mult_hi_to_si_pattern
++
++    if [info exists et_vect_widen_mult_hi_to_si_pattern_saved] {
++        verbose "check_effective_target_vect_widen_mult_hi_to_si_pattern: using cached result" 2
++    } else {
++        set et_vect_widen_mult_hi_to_si_pattern_saved 0
++        if { [istarget powerpc*-*-*]
++              || [istarget spu-*-*]
++              || [istarget ia64-*-*]
++              || [istarget i?86-*-*]
++              || [istarget x86_64-*-*]
++              || ([istarget arm*-*-*] && [check_effective_target_arm_neon]) } {
++            set et_vect_widen_mult_hi_to_si_pattern_saved 1
++        }
++    }
++    verbose "check_effective_target_vect_widen_mult_hi_to_si_pattern: returning $et_vect_widen_mult_hi_to_si_pattern_saved" 2
++    return $et_vect_widen_mult_hi_to_si_pattern_saved
++}
++
++# Return 1 if the target plus current options supports a vector
++# widening shift, 0 otherwise.
++#
++# This won't change for different subtargets so cache the result.
++
++proc check_effective_target_vect_widen_shift { } {
++    global et_vect_widen_shift_saved
++
++    if [info exists et_vect_shift_saved] {
++        verbose "check_effective_target_vect_widen_shift: using cached result" 2
++    } else {
++        set et_vect_widen_shift_saved 0
++        if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) } {
++            set et_vect_widen_shift_saved 1
++        }
++    }
++    verbose "check_effective_target_vect_widen_shift: returning $et_vect_widen_shift_saved" 2
++    return $et_vect_widen_shift_saved
++}
++
++# Return 1 if the target plus current options supports a vector
+ # dot-product of signed chars, 0 otherwise.
+ #
+ # This won't change for different subtargets so cache the result.
+@@ -2976,6 +3117,26 @@
+     return $et_natural_alignment_64_saved
+ }
+ 
++# Return 1 if all vector types are naturally aligned (aligned to their
++# type-size), 0 otherwise.
++#
++# This won't change for different subtargets so cache the result.
++
++proc check_effective_target_vect_natural_alignment { } {
++    global et_vect_natural_alignment
++
++    if [info exists et_vect_natural_alignment_saved] {
++        verbose "check_effective_target_vect_natural_alignment: using cached result" 2
++    } else {
++        set et_vect_natural_alignment_saved 1
++        if { [check_effective_target_arm_eabi] } {
++            set et_vect_natural_alignment_saved 0
++        }
++    }
++    verbose "check_effective_target_vect_natural_alignment: returning $et_vect_natural_alignment_saved" 2
++    return $et_vect_natural_alignment_saved
++}
++
+ # Return 1 if vector alignment (for types of size 32 bit or less) is reachable, 0 otherwise.
+ #
+ # This won't change for different subtargets so cache the result.
+@@ -3150,29 +3311,6 @@
+     return $et_vect_extract_even_odd_saved
+ }
+ 
+-# Return 1 if the target supports vector even/odd elements extraction of
+-# vectors with SImode elements or larger, 0 otherwise.
+-
+-proc check_effective_target_vect_extract_even_odd_wide { } {
+-    global et_vect_extract_even_odd_wide_saved
+-    
+-    if [info exists et_vect_extract_even_odd_wide_saved] {
+-        verbose "check_effective_target_vect_extract_even_odd_wide: using cached result" 2
+-    } else {
+-        set et_vect_extract_even_odd_wide_saved 0 
+-        if { [istarget powerpc*-*-*] 
+-             || [istarget i?86-*-*]
+-             || [istarget x86_64-*-*]
+-             || [istarget ia64-*-*]
+-             || [istarget spu-*-*] } {
+-           set et_vect_extract_even_odd_wide_saved 1
+-        }
+-    }
+-
+-    verbose "check_effective_target_vect_extract_even_wide_odd: returning $et_vect_extract_even_odd_wide_saved" 2
+-    return $et_vect_extract_even_odd_wide_saved
+-}
+-
+ # Return 1 if the target supports vector interleaving, 0 otherwise.
+ 
+ proc check_effective_target_vect_interleave { } {
+@@ -3195,41 +3333,66 @@
+     return $et_vect_interleave_saved
+ }
+ 
+-# Return 1 if the target supports vector interleaving and extract even/odd, 0 otherwise.
+-proc check_effective_target_vect_strided { } {
+-    global et_vect_strided_saved
++foreach N {2 3 4 8} {
++    eval [string map [list N $N] {
++	# Return 1 if the target supports 2-vector interleaving
++	proc check_effective_target_vect_stridedN { } {
++	    global et_vect_stridedN_saved
++
++	    if [info exists et_vect_stridedN_saved] {
++		verbose "check_effective_target_vect_stridedN: using cached result" 2
++	    } else {
++		set et_vect_stridedN_saved 0
++		if { (N & -N) == N
++		     && [check_effective_target_vect_interleave]
++		     && [check_effective_target_vect_extract_even_odd] } {
++		    set et_vect_stridedN_saved 1
++		}
++		if { [istarget arm*-*-*] && N >= 2 && N <= 4 } {
++		    set et_vect_stridedN_saved 1
++		}
++	    }
+ 
+-    if [info exists et_vect_strided_saved] {
+-        verbose "check_effective_target_vect_strided: using cached result" 2
++	    verbose "check_effective_target_vect_stridedN: returning $et_vect_stridedN_saved" 2
++	    return $et_vect_stridedN_saved
++	}
++    }]
++}
++
++# Return 1 if the target supports multiple vector sizes
++
++proc check_effective_target_vect_multiple_sizes { } {
++    global et_vect_multiple_sizes_saved
++
++    if [info exists et_vect_multiple_sizes_saved] {
++        verbose "check_effective_target_vect_multiple_sizes: using cached result" 2
+     } else {
+-        set et_vect_strided_saved 0
+-        if { [check_effective_target_vect_interleave]
+-             && [check_effective_target_vect_extract_even_odd] } {
+-           set et_vect_strided_saved 1
++        set et_vect_multiple_sizes_saved 0
++          if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) } {
++           set et_vect_multiple_sizes_saved 1
+         }
+     }
+ 
+-    verbose "check_effective_target_vect_strided: returning $et_vect_strided_saved" 2
+-    return $et_vect_strided_saved
++    verbose "check_effective_target_vect_multiple_sizes: returning $et_vect_multiple_sizes_saved" 2
++    return $et_vect_multiple_sizes_saved
+ }
+ 
+-# Return 1 if the target supports vector interleaving and extract even/odd
+-# for wide element types, 0 otherwise.
+-proc check_effective_target_vect_strided_wide { } {
+-    global et_vect_strided_wide_saved
++# Return 1 if the target supports vectors of 64 bits.
+ 
+-    if [info exists et_vect_strided_wide_saved] {
+-        verbose "check_effective_target_vect_strided_wide: using cached result" 2
++proc check_effective_target_vect64 { } {
++    global et_vect64_saved
++
++    if [info exists et_vect64_saved] {
++        verbose "check_effective_target_vect64: using cached result" 2
+     } else {
+-        set et_vect_strided_wide_saved 0
+-        if { [check_effective_target_vect_interleave]
+-             && [check_effective_target_vect_extract_even_odd_wide] } {
+-           set et_vect_strided_wide_saved 1
++        set et_vect64_saved 0
++        if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) } {
++           set et_vect64_saved 1
+         }
+     }
+ 
+-    verbose "check_effective_target_vect_strided_wide: returning $et_vect_strided_wide_saved" 2
+-    return $et_vect_strided_wide_saved
++    verbose "check_effective_target_vect64: returning $et_vect64_saved" 2
++    return $et_vect64_saved
+ }
+ 
+ # Return 1 if the target supports section-anchors
+@@ -3282,6 +3445,31 @@
+     return $et_sync_int_long_saved
+ }
+ 
++# Return 1 if the target supports atomic operations on "long long" and can
++# execute them
++# So far only put checks in for ARM, others may want to add their own
++proc check_effective_target_sync_longlong { } {
++    return [check_runtime sync_longlong_runtime {
++      #include <stdlib.h>
++      int main ()
++      {
++	long long l1;
++
++	if (sizeof (long long) != 8)
++	  exit (1);
++
++      #ifdef __arm__
++	/* Just check for native; checking for kernel fallback is tricky.  */
++	asm volatile ("ldrexd r0,r1, [%0]" : : "r" (&l1) : "r0", "r1");
++      #else
++      # error "Add other suitable archs here"
++      #endif
++
++	exit (0);
++      }
++    } "" ]
++}
++
+ # Return 1 if the target supports atomic operations on "char" and "short".
+ 
+ proc check_effective_target_sync_char_short { } {
+@@ -3615,11 +3803,11 @@
+     return $flags
+ }
+ 
+-# Add to FLAGS the flags needed to enable 128-bit vectors.
++# Add to FLAGS the flags needed to enable 64-bit vectors.
+ 
+-proc add_options_for_quad_vectors { flags } {
++proc add_options_for_double_vectors { flags } {
+     if [is-effective-target arm_neon_ok] {
+-	return "$flags -mvectorize-with-neon-quad"
++	return "$flags -mvectorize-with-neon-double"
+     }
+ 
+     return $flags
+--- a/src/gcc/toplev.c
++++ b/src/gcc/toplev.c
+@@ -1326,6 +1326,13 @@
+ 	   "and -ftree-loop-linear)");
+ #endif
+ 
++  if (flag_strict_volatile_bitfields > 0 && !abi_version_at_least (2))
++    {
++      warning (0, "-fstrict-volatile-bitfields disabled; "
++	       "it is incompatible with ABI versions < 2");
++      flag_strict_volatile_bitfields = 0;
++    }
++
+   /* Unrolling all loops implies that standard loop unrolling must also
+      be done.  */
+   if (flag_unroll_all_loops)
+--- a/src/gcc/tree-affine.c
++++ b/src/gcc/tree-affine.c
+@@ -887,3 +887,30 @@
+   *size = shwi_to_double_int ((bitsize + BITS_PER_UNIT - 1) / BITS_PER_UNIT);
+ }
+ 
++/* Returns true if a region of size SIZE1 at position 0 and a region of
++   size SIZE2 at position DIFF cannot overlap.  */
++
++bool
++aff_comb_cannot_overlap_p (aff_tree *diff, double_int size1, double_int size2)
++{
++  double_int d, bound;
++
++  /* Unless the difference is a constant, we fail.  */
++  if (diff->n != 0)
++    return false;
++
++  d = diff->offset;
++  if (double_int_negative_p (d))
++    {
++      /* The second object is before the first one, we succeed if the last
++	 element of the second object is before the start of the first one.  */
++      bound = double_int_add (d, double_int_add (size2, double_int_minus_one));
++      return double_int_negative_p (bound);
++    }
++  else
++    {
++      /* We succeed if the second object starts after the first one ends.  */
++      return double_int_scmp (size1, d) <= 0;
++    }
++}
++
+--- a/src/gcc/tree-affine.h
++++ b/src/gcc/tree-affine.h
+@@ -76,6 +76,7 @@
+ 				     struct pointer_map_t **);
+ void get_inner_reference_aff (tree, aff_tree *, double_int *);
+ void free_affine_expand_cache (struct pointer_map_t **);
++bool aff_comb_cannot_overlap_p (aff_tree *, double_int, double_int);
+ 
+ /* Debugging functions.  */
+ void print_aff (FILE *, aff_tree *);
+--- a/src/gcc/tree.c
++++ b/src/gcc/tree.c
+@@ -7321,6 +7321,15 @@
+   return build_array_type_1 (elt_type, index_type, false);
+ }
+ 
++/* Return a representation of ELT_TYPE[NELTS], using indices of type
++   sizetype.  */
++
++tree
++build_array_type_nelts (tree elt_type, unsigned HOST_WIDE_INT nelts)
++{
++  return build_array_type (elt_type, build_index_type (size_int (nelts - 1)));
++}
++
+ /* Recursively examines the array elements of TYPE, until a non-array
+    element type is found.  */
+ 
+--- a/src/gcc/tree-cfg.c
++++ b/src/gcc/tree-cfg.c
+@@ -3046,7 +3046,26 @@
+   tree fntype;
+   unsigned i;
+ 
+-  if (TREE_CODE (fn) != OBJ_TYPE_REF
++  if (gimple_call_internal_p (stmt))
++    {
++      if (fn)
++	{
++	  error ("gimple call has two targets");
++	  debug_generic_stmt (fn);
++	  return true;
++	}
++    }
++  else
++    {
++      if (!fn)
++	{
++	  error ("gimple call has no target");
++	  return true;
++	}
++    }
++
++  if (fn
++      && TREE_CODE (fn) != OBJ_TYPE_REF
+       && !is_gimple_val (fn))
+     {
+       error ("invalid function in gimple call");
+@@ -3054,9 +3073,10 @@
+       return true;
+     }
+ 
+-  if (!POINTER_TYPE_P (TREE_TYPE  (fn))
+-      || (TREE_CODE (TREE_TYPE (TREE_TYPE (fn))) != FUNCTION_TYPE
+-	  && TREE_CODE (TREE_TYPE (TREE_TYPE (fn))) != METHOD_TYPE))
++  if (fn
++      && (!POINTER_TYPE_P (TREE_TYPE  (fn))
++	  || (TREE_CODE (TREE_TYPE (TREE_TYPE (fn))) != FUNCTION_TYPE
++	      && TREE_CODE (TREE_TYPE (TREE_TYPE (fn))) != METHOD_TYPE)))
+     {
+       error ("non-function in gimple call");
+       return true;
+@@ -3076,8 +3096,12 @@
+       return true;
+     }
+ 
+-  fntype = TREE_TYPE (TREE_TYPE (fn));
+-  if (gimple_call_lhs (stmt)
++  if (fn)
++    fntype = TREE_TYPE (TREE_TYPE (fn));
++  else
++    fntype = NULL_TREE;
++  if (fntype
++      && gimple_call_lhs (stmt)
+       && !useless_type_conversion_p (TREE_TYPE (gimple_call_lhs (stmt)),
+ 				     TREE_TYPE (fntype))
+       /* ???  At least C++ misses conversions at assignments from
+@@ -3449,6 +3473,44 @@
+ 	return false;
+       }
+ 
++    case WIDEN_LSHIFT_EXPR:
++      {
++        if (!INTEGRAL_TYPE_P (lhs_type)
++            || !INTEGRAL_TYPE_P (rhs1_type)
++            || TREE_CODE (rhs2) != INTEGER_CST
++            || (2 * TYPE_PRECISION (rhs1_type) > TYPE_PRECISION (lhs_type)))
++          {
++            error ("type mismatch in widening vector shift expression");
++            debug_generic_expr (lhs_type);
++            debug_generic_expr (rhs1_type);
++            debug_generic_expr (rhs2_type);
++            return true;
++          }
++
++        return false;
++      }
++
++    case VEC_WIDEN_LSHIFT_HI_EXPR:
++    case VEC_WIDEN_LSHIFT_LO_EXPR:
++      {
++        if (TREE_CODE (rhs1_type) != VECTOR_TYPE
++            || TREE_CODE (lhs_type) != VECTOR_TYPE
++            || !INTEGRAL_TYPE_P (TREE_TYPE (rhs1_type))
++            || !INTEGRAL_TYPE_P (TREE_TYPE (lhs_type))
++            || TREE_CODE (rhs2) != INTEGER_CST
++            || (2 * TYPE_PRECISION (TREE_TYPE (rhs1_type))
++                > TYPE_PRECISION (TREE_TYPE (lhs_type))))
++          {
++            error ("type mismatch in widening vector shift expression");
++            debug_generic_expr (lhs_type);
++            debug_generic_expr (rhs1_type);
++            debug_generic_expr (rhs2_type);
++            return true;
++          }
++
++        return false;
++      }
++
+     case PLUS_EXPR:
+     case MINUS_EXPR:
+       {
+@@ -3550,7 +3612,7 @@
+     case WIDEN_MULT_EXPR:
+       if (TREE_CODE (lhs_type) != INTEGER_TYPE)
+ 	return true;
+-      return ((2 * TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (lhs_type))
++      return ((2 * TYPE_PRECISION (rhs1_type) > TYPE_PRECISION (lhs_type))
+ 	      || (TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (rhs2_type)));
+ 
+     case WIDEN_SUM_EXPR:
+@@ -3643,7 +3705,7 @@
+ 	   && !FIXED_POINT_TYPE_P (rhs1_type))
+ 	  || !useless_type_conversion_p (rhs1_type, rhs2_type)
+ 	  || !useless_type_conversion_p (lhs_type, rhs3_type)
+-	  || 2 * TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (lhs_type)
++	  || 2 * TYPE_PRECISION (rhs1_type) > TYPE_PRECISION (lhs_type)
+ 	  || TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (rhs2_type))
+ 	{
+ 	  error ("type mismatch in widening multiply-accumulate expression");
+@@ -4130,9 +4192,10 @@
+      didn't see a function declaration before the call.  */
+   if (is_gimple_call (stmt))
+     {
+-      tree decl;
++      tree fn, decl;
+ 
+-      if (!is_gimple_call_addr (gimple_call_fn (stmt)))
++      fn = gimple_call_fn (stmt);
++      if (fn && !is_gimple_call_addr (fn))
+ 	{
+ 	  error ("invalid function in call statement");
+ 	  return true;
+@@ -7503,6 +7566,8 @@
+ 	case GIMPLE_CALL:
+ 	  if (gimple_call_lhs (g))
+ 	    break;
++	  if (gimple_call_internal_p (g))
++	    break;
+ 
+ 	  /* This is a naked call, as opposed to a GIMPLE_CALL with an
+ 	     LHS.  All calls whose value is ignored should be
+--- a/src/gcc/tree-data-ref.c
++++ b/src/gcc/tree-data-ref.c
+@@ -84,6 +84,7 @@
+ #include "tree-scalar-evolution.h"
+ #include "tree-pass.h"
+ #include "langhooks.h"
++#include "tree-affine.h"
+ 
+ static struct datadep_stats
+ {
+@@ -721,11 +722,11 @@
+ }
+ 
+ /* Analyzes the behavior of the memory reference DR in the innermost loop or
+-   basic block that contains it. Returns true if analysis succeed or false
++   basic block that contains it.  Returns true if analysis succeed or false
+    otherwise.  */
+ 
+ bool
+-dr_analyze_innermost (struct data_reference *dr)
++dr_analyze_innermost (struct data_reference *dr, struct loop *nest)
+ {
+   gimple stmt = DR_STMT (dr);
+   struct loop *loop = loop_containing_stmt (stmt);
+@@ -768,14 +769,25 @@
+     }
+   else
+     base = build_fold_addr_expr (base);
++
+   if (in_loop)
+     {
+       if (!simple_iv (loop, loop_containing_stmt (stmt), base, &base_iv,
+                       false))
+         {
+-          if (dump_file && (dump_flags & TDF_DETAILS))
+-	    fprintf (dump_file, "failed: evolution of base is not affine.\n");
+-          return false;
++          if (nest)
++            {
++              if (dump_file && (dump_flags & TDF_DETAILS))
++                fprintf (dump_file, "failed: evolution of base is not"
++                                    " affine.\n");
++              return false;
++            }
++          else
++            {
++              base_iv.base = base;
++              base_iv.step = ssize_int (0);
++              base_iv.no_overflow = true;
++            }
+         }
+     }
+   else
+@@ -800,10 +812,18 @@
+       else if (!simple_iv (loop, loop_containing_stmt (stmt),
+                            poffset, &offset_iv, false))
+         {
+-          if (dump_file && (dump_flags & TDF_DETAILS))
+-            fprintf (dump_file, "failed: evolution of offset is not"
+-                                " affine.\n");
+-          return false;
++          if (nest)
++            {
++              if (dump_file && (dump_flags & TDF_DETAILS))
++                fprintf (dump_file, "failed: evolution of offset is not"
++                                    " affine.\n");
++              return false;
++            }
++          else
++            {
++              offset_iv.base = poffset;
++              offset_iv.step = ssize_int (0);
++            }
+         }
+     }
+ 
+@@ -842,30 +862,30 @@
+   tree base, off, access_fn = NULL_TREE;
+   basic_block before_loop = NULL;
+ 
+-  if (nest)
+-    before_loop = block_before_loop (nest);
++  if (!nest)
++    {
++      DR_BASE_OBJECT (dr) = ref;
++      DR_ACCESS_FNS (dr) = NULL;
++      return;
++    }
++
++  before_loop = block_before_loop (nest);
+ 
+   while (handled_component_p (aref))
+     {
+       if (TREE_CODE (aref) == ARRAY_REF)
+ 	{
+ 	  op = TREE_OPERAND (aref, 1);
+-	  if (nest)
+-	    {
+-  	      access_fn = analyze_scalar_evolution (loop, op);
+-	      access_fn = instantiate_scev (before_loop, loop, access_fn);
+-	      VEC_safe_push (tree, heap, access_fns, access_fn);
+-	    }
+-
++  	  access_fn = analyze_scalar_evolution (loop, op);
++	  access_fn = instantiate_scev (before_loop, loop, access_fn);
++	  VEC_safe_push (tree, heap, access_fns, access_fn);
+ 	  TREE_OPERAND (aref, 1) = build_int_cst (TREE_TYPE (op), 0);
+ 	}
+ 
+       aref = TREE_OPERAND (aref, 0);
+     }
+ 
+-  if (nest
+-      && (INDIRECT_REF_P (aref)
+-	  || TREE_CODE (aref) == MEM_REF))
++  if (INDIRECT_REF_P (aref) || TREE_CODE (aref) == MEM_REF)
+     {
+       op = TREE_OPERAND (aref, 0);
+       access_fn = analyze_scalar_evolution (loop, op);
+@@ -967,7 +987,7 @@
+   DR_REF (dr) = memref;
+   DR_IS_READ (dr) = is_read;
+ 
+-  dr_analyze_innermost (dr);
++  dr_analyze_innermost (dr, nest);
+   dr_analyze_indices (dr, nest, loop);
+   dr_analyze_alias (dr);
+ 
+@@ -991,6 +1011,48 @@
+   return dr;
+ }
+ 
++/* Check if OFFSET1 and OFFSET2 (DR_OFFSETs of some data-refs) are identical
++   expressions.  */
++static bool
++dr_equal_offsets_p1 (tree offset1, tree offset2)
++{
++  bool res;
++
++  STRIP_NOPS (offset1);
++  STRIP_NOPS (offset2);
++
++  if (offset1 == offset2)
++    return true;
++
++  if (TREE_CODE (offset1) != TREE_CODE (offset2)
++      || (!BINARY_CLASS_P (offset1) && !UNARY_CLASS_P (offset1)))
++    return false;
++
++  res = dr_equal_offsets_p1 (TREE_OPERAND (offset1, 0),
++                             TREE_OPERAND (offset2, 0));
++
++  if (!res || !BINARY_CLASS_P (offset1))
++    return res;
++
++  res = dr_equal_offsets_p1 (TREE_OPERAND (offset1, 1),
++                             TREE_OPERAND (offset2, 1));
++
++  return res;
++}
++
++/* Check if DRA and DRB have equal offsets.  */
++bool
++dr_equal_offsets_p (struct data_reference *dra,
++                    struct data_reference *drb)
++{
++  tree offset1, offset2;
++
++  offset1 = DR_OFFSET (dra);
++  offset2 = DR_OFFSET (drb);
++
++  return dr_equal_offsets_p1 (offset1, offset2);
++}
++
+ /* Returns true if FNA == FNB.  */
+ 
+ static bool
+@@ -1240,14 +1302,33 @@
+ }
+ 
+ /* Returns false if we can prove that data references A and B do not alias,
+-   true otherwise.  */
++   true otherwise.  If LOOP_NEST is false no cross-iteration aliases are
++   considered.  */
+ 
+ bool
+-dr_may_alias_p (const struct data_reference *a, const struct data_reference *b)
++dr_may_alias_p (const struct data_reference *a, const struct data_reference *b,
++		bool loop_nest)
+ {
+   tree addr_a = DR_BASE_OBJECT (a);
+   tree addr_b = DR_BASE_OBJECT (b);
+ 
++  /* If we are not processing a loop nest but scalar code we
++     do not need to care about possible cross-iteration dependences
++     and thus can process the full original reference.  Do so,
++     similar to how loop invariant motion applies extra offset-based
++     disambiguation.  */
++  if (!loop_nest)
++    {
++      aff_tree off1, off2;
++      double_int size1, size2;
++      get_inner_reference_aff (DR_REF (a), &off1, &size1);
++      get_inner_reference_aff (DR_REF (b), &off2, &size2);
++      aff_combination_scale (&off1, double_int_minus_one);
++      aff_combination_add (&off2, &off1);
++      if (aff_comb_cannot_overlap_p (&off2, size1, size2))
++	return false;
++    }
++
+   if (DR_IS_WRITE (a) && DR_IS_WRITE (b))
+     return refs_output_dependent_p (addr_a, addr_b);
+   else if (DR_IS_READ (a) && DR_IS_WRITE (b))
+@@ -1285,7 +1366,7 @@
+     }
+ 
+   /* If the data references do not alias, then they are independent.  */
+-  if (!dr_may_alias_p (a, b))
++  if (!dr_may_alias_p (a, b, loop_nest != NULL))
+     {
+       DDR_ARE_DEPENDENT (res) = chrec_known;
+       return res;
+@@ -4294,7 +4375,7 @@
+    DATAREFS.  Returns chrec_dont_know when failing to analyze a
+    difficult case, returns NULL_TREE otherwise.  */
+ 
+-static tree
++tree
+ find_data_references_in_bb (struct loop *loop, basic_block bb,
+                             VEC (data_reference_p, heap) **datarefs)
+ {
+@@ -5143,7 +5224,7 @@
+   DR_STMT (dr) = stmt;
+   DR_REF (dr) = op0;
+ 
+-  res = dr_analyze_innermost (dr)
++  res = dr_analyze_innermost (dr, loop_containing_stmt (stmt))
+     && stride_of_unit_type_p (DR_STEP (dr), TREE_TYPE (op0));
+ 
+   free_data_ref (dr);
+@@ -5183,7 +5264,7 @@
+ 
+   DR_STMT (dr) = stmt;
+   DR_REF (dr) = *ref->pos;
+-  dr_analyze_innermost (dr);
++  dr_analyze_innermost (dr, loop_containing_stmt (stmt));
+   base_address = DR_BASE_ADDRESS (dr);
+ 
+   if (!base_address)
+--- a/src/gcc/tree-data-ref.h
++++ b/src/gcc/tree-data-ref.h
+@@ -386,7 +386,7 @@
+ DEF_VEC_ALLOC_O (data_ref_loc, heap);
+ 
+ bool get_references_in_stmt (gimple, VEC (data_ref_loc, heap) **);
+-bool dr_analyze_innermost (struct data_reference *);
++bool dr_analyze_innermost (struct data_reference *, struct loop *);
+ extern bool compute_data_dependences_for_loop (struct loop *, bool,
+ 					       VEC (loop_p, heap) **,
+ 					       VEC (data_reference_p, heap) **,
+@@ -426,10 +426,14 @@
+ extern void compute_all_dependences (VEC (data_reference_p, heap) *,
+ 				     VEC (ddr_p, heap) **, VEC (loop_p, heap) *,
+ 				     bool);
++extern tree find_data_references_in_bb (struct loop *, basic_block,
++                                        VEC (data_reference_p, heap) **);
+ 
+ extern void create_rdg_vertices (struct graph *, VEC (gimple, heap) *);
+ extern bool dr_may_alias_p (const struct data_reference *,
+-			    const struct data_reference *);
++			    const struct data_reference *, bool);
++extern bool dr_equal_offsets_p (struct data_reference *,
++                                struct data_reference *);
+ 
+ 
+ /* Return true when the base objects of data references A and B are
+--- a/src/gcc/tree.def
++++ b/src/gcc/tree.def
+@@ -1092,6 +1092,19 @@
+    is subtracted from t3.  */
+ DEFTREECODE (WIDEN_MULT_MINUS_EXPR, "widen_mult_minus_expr", tcc_expression, 3)
+ 
++/* Widening shift left.
++   The first operand is of type t1.
++   The second operand is the number of bits to shift by; it need not be the
++   same type as the first operand and result.
++   Note that the result is undefined if the second operand is larger
++   than or equal to the first operand's type size.
++   The type of the entire expression is t2, such that t2 is at least twice
++   the size of t1.
++   WIDEN_LSHIFT_EXPR is equivalent to first widening (promoting)
++   the first argument from type t1 to type t2, and then shifting it
++   by the second argument.  */
++DEFTREECODE (WIDEN_LSHIFT_EXPR, "widen_lshift_expr", tcc_binary, 2)
++
+ /* Fused multiply-add.
+    All operands and the result are of the same type.  No intermediate
+    rounding is performed after multiplying operand one with operand two
+@@ -1147,6 +1160,16 @@
+ DEFTREECODE (VEC_INTERLEAVE_HIGH_EXPR, "vec_interleavehigh_expr", tcc_binary, 2)
+ DEFTREECODE (VEC_INTERLEAVE_LOW_EXPR, "vec_interleavelow_expr", tcc_binary, 2)
+ 
++/* Widening vector shift left in bits.
++   Operand 0 is a vector to be shifted with N elements of size S.
++   Operand 1 is an integer shift amount in bits.
++   The result of the operation is N elements of size 2*S.
++   VEC_WIDEN_LSHIFT_HI_EXPR computes the N/2 high results.
++   VEC_WIDEN_LSHIFT_LO_EXPR computes the N/2 low results.
++ */
++DEFTREECODE (VEC_WIDEN_LSHIFT_HI_EXPR, "widen_lshift_hi_expr", tcc_binary, 2)
++DEFTREECODE (VEC_WIDEN_LSHIFT_LO_EXPR, "widen_lshift_lo_expr", tcc_binary, 2)
++
+ /* PREDICT_EXPR.  Specify hint for branch prediction.  The
+    PREDICT_EXPR_PREDICTOR specify predictor and PREDICT_EXPR_OUTCOME the
+    outcome (0 for not taken and 1 for taken).  Once the profile is guessed
+--- a/src/gcc/tree-eh.c
++++ b/src/gcc/tree-eh.c
+@@ -2752,7 +2752,7 @@
+       || gimple_call_lhs (twos)
+       || gimple_call_chain (ones)
+       || gimple_call_chain (twos)
+-      || !operand_equal_p (gimple_call_fn (ones), gimple_call_fn (twos), 0)
++      || !gimple_call_same_target_p (ones, twos)
+       || gimple_call_num_args (ones) != gimple_call_num_args (twos))
+     return false;
+ 
+--- a/src/gcc/tree.h
++++ b/src/gcc/tree.h
+@@ -4197,6 +4197,7 @@
+ extern tree build_index_type (tree);
+ extern tree build_array_type (tree, tree);
+ extern tree build_nonshared_array_type (tree, tree);
++extern tree build_array_type_nelts (tree, unsigned HOST_WIDE_INT);
+ extern tree build_function_type (tree, tree);
+ extern tree build_function_type_list (tree, ...);
+ extern tree build_function_type_skip_args (tree, bitmap);
+@@ -4626,21 +4627,10 @@
+ 
+ extern VEC(tree,gc) *ctor_to_vec (tree);
+ 
+-/* Examine CTOR to discover:
+-   * how many scalar fields are set to nonzero values,
+-     and place it in *P_NZ_ELTS;
+-   * how many scalar fields in total are in CTOR,
+-     and place it in *P_ELT_COUNT.
+-   * if a type is a union, and the initializer from the constructor
+-     is not the largest element in the union, then set *p_must_clear.
++extern bool categorize_ctor_elements (const_tree, HOST_WIDE_INT *,
++				      HOST_WIDE_INT *, bool *);
+ 
+-   Return whether or not CTOR is a valid static constant initializer, the same
+-   as "initializer_constant_valid_p (CTOR, TREE_TYPE (CTOR)) != 0".  */
+-
+-extern bool categorize_ctor_elements (const_tree, HOST_WIDE_INT *, HOST_WIDE_INT *,
+-				      bool *);
+-
+-extern HOST_WIDE_INT count_type_elements (const_tree, bool);
++extern bool complete_ctor_at_level_p (const_tree, HOST_WIDE_INT, const_tree);
+ 
+ /* integer_zerop (tree x) is nonzero if X is an integer constant of value 0.  */
+ 
+--- a/src/gcc/tree-if-conv.c
++++ b/src/gcc/tree-if-conv.c
+@@ -464,8 +464,8 @@
+ /* Returns true when the memory references of STMT are read or written
+    unconditionally.  In other words, this function returns true when
+    for every data reference A in STMT there exist other accesses to
+-   the same data reference with predicates that add up (OR-up) to the
+-   true predicate: this ensures that the data reference A is touched
++   a data reference with the same base with predicates that add up (OR-up) to
++   the true predicate: this ensures that the data reference A is touched
+    (read or written) on every iteration of the if-converted loop.  */
+ 
+ static bool
+@@ -489,21 +489,38 @@
+ 	  continue;
+ 
+ 	for (j = 0; VEC_iterate (data_reference_p, drs, j, b); j++)
+-	  if (DR_STMT (b) != stmt
+-	      && same_data_refs (a, b))
+-	    {
+-	      tree cb = bb_predicate (gimple_bb (DR_STMT (b)));
+-
+-	      if (DR_RW_UNCONDITIONALLY (b) == 1
+-		  || is_true_predicate (cb)
+-		  || is_true_predicate (ca = fold_or_predicates (EXPR_LOCATION (cb),
+-								 ca, cb)))
+-		{
+-		  DR_RW_UNCONDITIONALLY (a) = 1;
+-		  DR_RW_UNCONDITIONALLY (b) = 1;
+-		  found = true;
+-		  break;
+-		}
++          {
++            tree ref_base_a = DR_REF (a);
++            tree ref_base_b = DR_REF (b);
++
++            if (DR_STMT (b) == stmt)
++              continue;
++
++            while (TREE_CODE (ref_base_a) == COMPONENT_REF
++                   || TREE_CODE (ref_base_a) == IMAGPART_EXPR
++                   || TREE_CODE (ref_base_a) == REALPART_EXPR)
++              ref_base_a = TREE_OPERAND (ref_base_a, 0);
++
++            while (TREE_CODE (ref_base_b) == COMPONENT_REF
++                   || TREE_CODE (ref_base_b) == IMAGPART_EXPR
++                   || TREE_CODE (ref_base_b) == REALPART_EXPR)
++              ref_base_b = TREE_OPERAND (ref_base_b, 0);
++
++  	    if (!operand_equal_p (ref_base_a, ref_base_b, 0))
++	      {
++	        tree cb = bb_predicate (gimple_bb (DR_STMT (b)));
++
++	        if (DR_RW_UNCONDITIONALLY (b) == 1
++		    || is_true_predicate (cb)
++		    || is_true_predicate (ca
++                        = fold_or_predicates (EXPR_LOCATION (cb), ca, cb)))
++		  {
++		    DR_RW_UNCONDITIONALLY (a) = 1;
++  		    DR_RW_UNCONDITIONALLY (b) = 1;
++		    found = true;
++		    break;
++		  }
++               }
+ 	    }
+ 
+ 	if (!found)
+--- a/src/gcc/tree-inline.c
++++ b/src/gcc/tree-inline.c
+@@ -3343,6 +3343,7 @@
+     case DOT_PROD_EXPR:
+     case WIDEN_MULT_PLUS_EXPR:
+     case WIDEN_MULT_MINUS_EXPR:
++    case WIDEN_LSHIFT_EXPR:
+ 
+     case VEC_WIDEN_MULT_HI_EXPR:
+     case VEC_WIDEN_MULT_LO_EXPR:
+@@ -3357,6 +3358,8 @@
+     case VEC_EXTRACT_ODD_EXPR:
+     case VEC_INTERLEAVE_HIGH_EXPR:
+     case VEC_INTERLEAVE_LOW_EXPR:
++    case VEC_WIDEN_LSHIFT_HI_EXPR:
++    case VEC_WIDEN_LSHIFT_LO_EXPR:
+ 
+       return 1;
+ 
+@@ -3474,10 +3477,13 @@
+       {
+ 	tree decl = gimple_call_fndecl (stmt);
+ 	tree addr = gimple_call_fn (stmt);
+-	tree funtype = TREE_TYPE (addr);
++	tree funtype = NULL_TREE;
+ 	bool stdarg = false;
+ 
+-	if (POINTER_TYPE_P (funtype))
++	if (addr)
++	  funtype = TREE_TYPE (addr);
++
++	if (funtype && POINTER_TYPE_P (funtype))
+ 	  funtype = TREE_TYPE (funtype);
+ 
+ 	/* Do not special case builtins where we see the body.
+@@ -3517,7 +3523,7 @@
+ 	if (decl)
+ 	  funtype = TREE_TYPE (decl);
+ 
+-	if (!VOID_TYPE_P (TREE_TYPE (funtype)))
++	if (funtype && !VOID_TYPE_P (TREE_TYPE (funtype)))
+ 	  cost += estimate_move_cost (TREE_TYPE (funtype));
+ 
+ 	if (funtype)
+@@ -4947,7 +4953,7 @@
+ 	        if ((e = cgraph_edge (id->dst_node, gsi_stmt (bsi))) != NULL)
+ 		  {
+ 		    if (!e->inline_failed)
+-		      cgraph_remove_node_and_inline_clones (e->callee);
++		      cgraph_remove_node_and_inline_clones (e->callee, id->dst_node);
+ 		    else
+ 	              cgraph_remove_edge (e);
+ 		  }
+@@ -4957,8 +4963,8 @@
+ 		    {
+ 	              if ((e = cgraph_edge (node, gsi_stmt (bsi))) != NULL)
+ 			{
+-		          if (!e->inline_failed)
+-		            cgraph_remove_node_and_inline_clones (e->callee);
++		          if (!e->inline_failed && e->callee != id->src_node)
++		            cgraph_remove_node_and_inline_clones (e->callee, id->dst_node);
+ 			  else
+ 	                    cgraph_remove_edge (e);
+ 			}
+--- a/src/gcc/tree-loop-distribution.c
++++ b/src/gcc/tree-loop-distribution.c
+@@ -312,7 +312,7 @@
+ 
+   DR_STMT (dr) = stmt;
+   DR_REF (dr) = op0;
+-  res = dr_analyze_innermost (dr);
++  res = dr_analyze_innermost (dr, loop_containing_stmt (stmt));
+   gcc_assert (res && stride_of_unit_type_p (DR_STEP (dr), TREE_TYPE (op0)));
+ 
+   nb_bytes = build_size_arg_loc (loc, nb_iter, op0, &stmt_list);
+--- a/src/gcc/tree-predcom.c
++++ b/src/gcc/tree-predcom.c
+@@ -1114,7 +1114,7 @@
+   memset (&init_dr, 0, sizeof (struct data_reference));
+   DR_REF (&init_dr) = init_ref;
+   DR_STMT (&init_dr) = phi;
+-  if (!dr_analyze_innermost (&init_dr))
++  if (!dr_analyze_innermost (&init_dr, loop))
+     return NULL;
+ 
+   if (!valid_initializer_p (&init_dr, ref->distance + 1, root->ref))
+--- a/src/gcc/tree-pretty-print.c
++++ b/src/gcc/tree-pretty-print.c
+@@ -805,6 +805,8 @@
+ 	       infer them and MEM_ATTR caching will share MEM_REFs
+ 	       with differently-typed op0s.  */
+ 	    && TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST
++	    /* Released SSA_NAMES have no TREE_TYPE.  */
++	    && TREE_TYPE (TREE_OPERAND (node, 0)) != NULL_TREE
+ 	    /* Same pointer types, but ignoring POINTER_TYPE vs.
+ 	       REFERENCE_TYPE.  */
+ 	    && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 0)))
+@@ -1171,6 +1173,8 @@
+ 		     can't infer them and MEM_ATTR caching will share
+ 		     MEM_REFs with differently-typed op0s.  */
+ 		  && TREE_CODE (TREE_OPERAND (op0, 0)) != INTEGER_CST
++		  /* Released SSA_NAMES have no TREE_TYPE.  */
++		  && TREE_TYPE (TREE_OPERAND (op0, 0)) != NULL_TREE
+ 		  /* Same pointer types, but ignoring POINTER_TYPE vs.
+ 		     REFERENCE_TYPE.  */
+ 		  && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0)))
+@@ -1539,6 +1543,7 @@
+     case RROTATE_EXPR:
+     case VEC_LSHIFT_EXPR:
+     case VEC_RSHIFT_EXPR:
++    case WIDEN_LSHIFT_EXPR:
+     case BIT_IOR_EXPR:
+     case BIT_XOR_EXPR:
+     case BIT_AND_EXPR:
+@@ -2209,6 +2214,22 @@
+       pp_string (buffer, " > ");
+       break;
+ 
++    case VEC_WIDEN_LSHIFT_HI_EXPR:
++      pp_string (buffer, " VEC_WIDEN_LSHIFT_HI_EXPR < ");
++      dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
++      pp_string (buffer, ", ");
++      dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false);
++      pp_string (buffer, " > ");
++      break;
++
++    case VEC_WIDEN_LSHIFT_LO_EXPR:
++      pp_string (buffer, " VEC_WIDEN_LSHIFT_HI_EXPR < ");
++      dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
++      pp_string (buffer, ", ");
++      dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false);
++      pp_string (buffer, " > ");
++      break;
++
+     case VEC_UNPACK_HI_EXPR:
+       pp_string (buffer, " VEC_UNPACK_HI_EXPR < ");
+       dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
+@@ -2531,6 +2552,9 @@
+     case RSHIFT_EXPR:
+     case LROTATE_EXPR:
+     case RROTATE_EXPR:
++    case VEC_WIDEN_LSHIFT_HI_EXPR:
++    case VEC_WIDEN_LSHIFT_LO_EXPR:
++    case WIDEN_LSHIFT_EXPR:
+       return 11;
+ 
+     case WIDEN_SUM_EXPR:
+@@ -2706,6 +2730,9 @@
+     case VEC_RSHIFT_EXPR:
+       return "v>>";
+ 
++    case WIDEN_LSHIFT_EXPR:
++      return "w<<";
++
+     case POINTER_PLUS_EXPR:
+       return "+";
+ 
+--- a/src/gcc/tree-sra.c
++++ b/src/gcc/tree-sra.c
+@@ -2937,7 +2937,13 @@
+     }
+   else
+     {
+-      if (access_has_children_p (lacc) && access_has_children_p (racc))
++      if (access_has_children_p (lacc)
++	  && access_has_children_p (racc)
++	  /* When an access represents an unscalarizable region, it usually
++	     represents accesses with variable offset and thus must not be used
++	     to generate new memory accesses.  */
++	  && !lacc->grp_unscalarizable_region
++	  && !racc->grp_unscalarizable_region)
+ 	{
+ 	  gimple_stmt_iterator orig_gsi = *gsi;
+ 	  enum unscalarized_data_handling refreshed;
+--- a/src/gcc/tree-ssa-ccp.c
++++ b/src/gcc/tree-ssa-ccp.c
+@@ -522,10 +522,6 @@
+     val = bit_value_binop (PLUS_EXPR, TREE_TYPE (expr),
+ 			   TREE_OPERAND (base, 0), TREE_OPERAND (base, 1));
+   else if (base
+-	   /* ???  While function decls have DECL_ALIGN their addresses
+-	      may encode extra information in the lower bits on some
+-	      targets (PR47239).  Simply punt for function decls for now.  */
+-	   && TREE_CODE (base) != FUNCTION_DECL
+ 	   && ((align = get_object_alignment (base, BIGGEST_ALIGNMENT))
+ 		> BITS_PER_UNIT))
+     {
+@@ -1279,7 +1275,10 @@
+ 
+     case GIMPLE_CALL:
+       {
+-	tree fn = valueize_op (gimple_call_fn (stmt));
++	tree fn = gimple_call_fn (stmt);
++	if (!fn)
++	  return NULL_TREE;
++	fn = valueize_op (fn);
+ 	if (TREE_CODE (fn) == ADDR_EXPR
+ 	    && TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL
+ 	    && DECL_BUILT_IN (TREE_OPERAND (fn, 0)))
+@@ -1364,6 +1363,10 @@
+       if (!DECL_INITIAL (base)
+ 	  && (TREE_STATIC (base) || DECL_EXTERNAL (base)))
+         return error_mark_node;
++      /* Do not return an error_mark_node DECL_INITIAL.  LTO uses this
++	 as special marker (_not_ zero ...) for its own purposes.  */
++      if (DECL_INITIAL (base) == error_mark_node)
++	return NULL_TREE;
+       return DECL_INITIAL (base);
+ 
+     case ARRAY_REF:
+@@ -2317,6 +2320,11 @@
+ 	    return true;
+ 	  }
+ 
++	/* Internal calls provide no argument types, so the extra laxity
++	   for normal calls does not apply.  */
++	if (gimple_call_internal_p (stmt))
++	  return false;
++
+ 	/* Propagate into the call arguments.  Compared to replace_uses_in
+ 	   this can use the argument slot types for type verification
+ 	   instead of the current argument type.  We also can safely
+--- a/src/gcc/tree-ssa-dom.c
++++ b/src/gcc/tree-ssa-dom.c
+@@ -64,7 +64,7 @@
+     struct { enum tree_code op;  tree opnd; } unary;
+     struct { enum tree_code op;  tree opnd0, opnd1; } binary;
+     struct { enum tree_code op;  tree opnd0, opnd1, opnd2; } ternary;
+-    struct { tree fn; bool pure; size_t nargs; tree *args; } call;
++    struct { gimple fn_from; bool pure; size_t nargs; tree *args; } call;
+   } ops;
+ };
+ 
+@@ -257,7 +257,7 @@
+ 
+       expr->type = TREE_TYPE (gimple_call_lhs (stmt));
+       expr->kind = EXPR_CALL;
+-      expr->ops.call.fn = gimple_call_fn (stmt);
++      expr->ops.call.fn_from = stmt;
+ 
+       if (gimple_call_flags (stmt) & (ECF_CONST | ECF_PURE))
+         expr->ops.call.pure = true;
+@@ -421,8 +421,8 @@
+ 
+         /* If the calls are to different functions, then they
+            clearly cannot be equal.  */
+-        if (! operand_equal_p (expr0->ops.call.fn,
+-                               expr1->ops.call.fn, 0))
++        if (!gimple_call_same_target_p (expr0->ops.call.fn_from,
++                                        expr1->ops.call.fn_from))
+           return false;
+ 
+         if (! expr0->ops.call.pure)
+@@ -502,9 +502,15 @@
+       {
+         size_t i;
+         enum tree_code code = CALL_EXPR;
++        gimple fn_from;
+ 
+         val = iterative_hash_object (code, val);
+-        val = iterative_hash_expr (expr->ops.call.fn, val);
++        fn_from = expr->ops.call.fn_from;
++        if (gimple_call_internal_p (fn_from))
++          val = iterative_hash_hashval_t
++            ((hashval_t) gimple_call_internal_fn (fn_from), val);
++        else
++          val = iterative_hash_expr (gimple_call_fn (fn_from), val);
+         for (i = 0; i < expr->ops.call.nargs; i++)
+           val = iterative_hash_expr (expr->ops.call.args[i], val);
+       }
+@@ -564,8 +570,14 @@
+         {
+           size_t i;
+           size_t nargs = element->expr.ops.call.nargs;
++          gimple fn_from;
+ 
+-          print_generic_expr (stream, element->expr.ops.call.fn, 0);
++          fn_from = element->expr.ops.call.fn_from;
++          if (gimple_call_internal_p (fn_from))
++            fputs (internal_fn_name (gimple_call_internal_fn (fn_from)),
++                   stream);
++          else
++            print_generic_expr (stream, gimple_call_fn (fn_from), 0);
+           fprintf (stream, " (");
+           for (i = 0; i < nargs; i++)
+             {
+--- a/src/gcc/tree-ssa-loop-im.c
++++ b/src/gcc/tree-ssa-loop-im.c
+@@ -1834,33 +1834,6 @@
+   create_vop_ref_mapping ();
+ }
+ 
+-/* Returns true if a region of size SIZE1 at position 0 and a region of
+-   size SIZE2 at position DIFF cannot overlap.  */
+-
+-static bool
+-cannot_overlap_p (aff_tree *diff, double_int size1, double_int size2)
+-{
+-  double_int d, bound;
+-
+-  /* Unless the difference is a constant, we fail.  */
+-  if (diff->n != 0)
+-    return false;
+-
+-  d = diff->offset;
+-  if (double_int_negative_p (d))
+-    {
+-      /* The second object is before the first one, we succeed if the last
+-	 element of the second object is before the start of the first one.  */
+-      bound = double_int_add (d, double_int_add (size2, double_int_minus_one));
+-      return double_int_negative_p (bound);
+-    }
+-  else
+-    {
+-      /* We succeed if the second object starts after the first one ends.  */
+-      return double_int_scmp (size1, d) <= 0;
+-    }
+-}
+-
+ /* Returns true if MEM1 and MEM2 may alias.  TTAE_CACHE is used as a cache in
+    tree_to_aff_combination_expand.  */
+ 
+@@ -1889,7 +1862,7 @@
+   aff_combination_scale (&off1, double_int_minus_one);
+   aff_combination_add (&off2, &off1);
+ 
+-  if (cannot_overlap_p (&off2, size1, size2))
++  if (aff_comb_cannot_overlap_p (&off2, size1, size2))
+     return false;
+ 
+   return true;
+--- a/src/gcc/tree-ssa-math-opts.c
++++ b/src/gcc/tree-ssa-math-opts.c
+@@ -1266,39 +1266,67 @@
+  }
+ };
+ 
+-/* Return true if RHS is a suitable operand for a widening multiplication.
++/* Build a gimple assignment to cast VAL to TARGET.  Insert the statement
++   prior to GSI's current position, and return the fresh SSA name.  */
++
++static tree
++build_and_insert_cast (gimple_stmt_iterator *gsi, location_t loc,
++		       tree target, tree val)
++{
++  tree result = make_ssa_name (target, NULL);
++  gimple stmt = gimple_build_assign_with_ops (CONVERT_EXPR, result, val, NULL);
++  gimple_set_location (stmt, loc);
++  gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
++  return result;
++}
++
++/* Return true if RHS is a suitable operand for a widening multiplication,
++   assuming a target type of TYPE.
+    There are two cases:
+ 
+-     - RHS makes some value twice as wide.  Store that value in *NEW_RHS_OUT
+-       if so, and store its type in *TYPE_OUT.
++     - RHS makes some value at least twice as wide.  Store that value
++       in *NEW_RHS_OUT if so, and store its type in *TYPE_OUT.
+ 
+      - RHS is an integer constant.  Store that value in *NEW_RHS_OUT if so,
+        but leave *TYPE_OUT untouched.  */
+ 
+ static bool
+-is_widening_mult_rhs_p (tree rhs, tree *type_out, tree *new_rhs_out)
++is_widening_mult_rhs_p (tree type, tree rhs, tree *type_out,
++			tree *new_rhs_out)
+ {
+   gimple stmt;
+-  tree type, type1, rhs1;
++  tree type1, rhs1;
+   enum tree_code rhs_code;
+ 
+   if (TREE_CODE (rhs) == SSA_NAME)
+     {
+-      type = TREE_TYPE (rhs);
+       stmt = SSA_NAME_DEF_STMT (rhs);
+-      if (!is_gimple_assign (stmt))
+-	return false;
++      if (is_gimple_assign (stmt))
++	{
++	  rhs_code = gimple_assign_rhs_code (stmt);
++	  if (TREE_CODE (type) == INTEGER_TYPE
++	      ? !CONVERT_EXPR_CODE_P (rhs_code)
++	      : rhs_code != FIXED_CONVERT_EXPR)
++	    rhs1 = rhs;
++	  else
++	    {
++	      rhs1 = gimple_assign_rhs1 (stmt);
+ 
+-      rhs_code = gimple_assign_rhs_code (stmt);
+-      if (TREE_CODE (type) == INTEGER_TYPE
+-	  ? !CONVERT_EXPR_CODE_P (rhs_code)
+-	  : rhs_code != FIXED_CONVERT_EXPR)
+-	return false;
++	      if (TREE_CODE (rhs1) == INTEGER_CST)
++		{
++		  *new_rhs_out = rhs1;
++		  *type_out = NULL;
++		  return true;
++		}
++	    }
++	}
++      else
++	rhs1 = rhs;
+ 
+-      rhs1 = gimple_assign_rhs1 (stmt);
+       type1 = TREE_TYPE (rhs1);
++
+       if (TREE_CODE (type1) != TREE_CODE (type)
+-	  || TYPE_PRECISION (type1) * 2 != TYPE_PRECISION (type))
++	  || TYPE_PRECISION (type1) * 2 > TYPE_PRECISION (type))
+ 	return false;
+ 
+       *new_rhs_out = rhs1;
+@@ -1316,28 +1344,29 @@
+   return false;
+ }
+ 
+-/* Return true if STMT performs a widening multiplication.  If so,
+-   store the unwidened types of the operands in *TYPE1_OUT and *TYPE2_OUT
+-   respectively.  Also fill *RHS1_OUT and *RHS2_OUT such that converting
+-   those operands to types *TYPE1_OUT and *TYPE2_OUT would give the
+-   operands of the multiplication.  */
++/* Return true if STMT performs a widening multiplication, assuming the
++   output type is TYPE.  If so, store the unwidened types of the operands
++   in *TYPE1_OUT and *TYPE2_OUT respectively.  Also fill *RHS1_OUT and
++   *RHS2_OUT such that converting those operands to types *TYPE1_OUT
++   and *TYPE2_OUT would give the operands of the multiplication.  */
+ 
+ static bool
+ is_widening_mult_p (gimple stmt,
+ 		    tree *type1_out, tree *rhs1_out,
+ 		    tree *type2_out, tree *rhs2_out)
+ {
+-  tree type;
++  tree type = TREE_TYPE (gimple_assign_lhs (stmt));
+ 
+-  type = TREE_TYPE (gimple_assign_lhs (stmt));
+   if (TREE_CODE (type) != INTEGER_TYPE
+       && TREE_CODE (type) != FIXED_POINT_TYPE)
+     return false;
+ 
+-  if (!is_widening_mult_rhs_p (gimple_assign_rhs1 (stmt), type1_out, rhs1_out))
++  if (!is_widening_mult_rhs_p (type, gimple_assign_rhs1 (stmt), type1_out,
++			       rhs1_out))
+     return false;
+ 
+-  if (!is_widening_mult_rhs_p (gimple_assign_rhs2 (stmt), type2_out, rhs2_out))
++  if (!is_widening_mult_rhs_p (type, gimple_assign_rhs2 (stmt), type2_out,
++			       rhs2_out))
+     return false;
+ 
+   if (*type1_out == NULL)
+@@ -1354,6 +1383,18 @@
+       *type2_out = *type1_out;
+     }
+ 
++  /* Ensure that the larger of the two operands comes first. */
++  if (TYPE_PRECISION (*type1_out) < TYPE_PRECISION (*type2_out))
++    {
++      tree tmp;
++      tmp = *type1_out;
++      *type1_out = *type2_out;
++      *type2_out = tmp;
++      tmp = *rhs1_out;
++      *rhs1_out = *rhs2_out;
++      *rhs2_out = tmp;
++    }
++
+   return true;
+ }
+ 
+@@ -1362,10 +1403,15 @@
+    value is true iff we converted the statement.  */
+ 
+ static bool
+-convert_mult_to_widen (gimple stmt)
++convert_mult_to_widen (gimple stmt, gimple_stmt_iterator *gsi)
+ {
+-  tree lhs, rhs1, rhs2, type, type1, type2;
++  tree lhs, rhs1, rhs2, type, type1, type2, tmp = NULL;
+   enum insn_code handler;
++  enum machine_mode to_mode, from_mode, actual_mode;
++  optab op;
++  int actual_precision;
++  location_t loc = gimple_location (stmt);
++  bool from_unsigned1, from_unsigned2;
+ 
+   lhs = gimple_assign_lhs (stmt);
+   type = TREE_TYPE (lhs);
+@@ -1375,18 +1421,82 @@
+   if (!is_widening_mult_p (stmt, &type1, &rhs1, &type2, &rhs2))
+     return false;
+ 
+-  if (TYPE_UNSIGNED (type1) && TYPE_UNSIGNED (type2))
+-    handler = optab_handler (umul_widen_optab, TYPE_MODE (type));
+-  else if (!TYPE_UNSIGNED (type1) && !TYPE_UNSIGNED (type2))
+-    handler = optab_handler (smul_widen_optab, TYPE_MODE (type));
++  to_mode = TYPE_MODE (type);
++  from_mode = TYPE_MODE (type1);
++  from_unsigned1 = TYPE_UNSIGNED (type1);
++  from_unsigned2 = TYPE_UNSIGNED (type2);
++
++  if (from_unsigned1 && from_unsigned2)
++    op = umul_widen_optab;
++  else if (!from_unsigned1 && !from_unsigned2)
++    op = smul_widen_optab;
+   else
+-    handler = optab_handler (usmul_widen_optab, TYPE_MODE (type));
++    op = usmul_widen_optab;
++
++  handler = find_widening_optab_handler_and_mode (op, to_mode, from_mode,
++						  0, &actual_mode);
+ 
+   if (handler == CODE_FOR_nothing)
+-    return false;
++    {
++      if (op != smul_widen_optab)
++	{
++	  /* We can use a signed multiply with unsigned types as long as
++	     there is a wider mode to use, or it is the smaller of the two
++	     types that is unsigned.  Note that type1 >= type2, always.  */
++	  if ((TYPE_UNSIGNED (type1)
++	       && TYPE_PRECISION (type1) == GET_MODE_PRECISION (from_mode))
++	      || (TYPE_UNSIGNED (type2)
++		  && TYPE_PRECISION (type2) == GET_MODE_PRECISION (from_mode)))
++	    {
++	      from_mode = GET_MODE_WIDER_MODE (from_mode);
++	      if (GET_MODE_SIZE (to_mode) <= GET_MODE_SIZE (from_mode))
++		return false;
++	    }
++
++	  op = smul_widen_optab;
++	  handler = find_widening_optab_handler_and_mode (op, to_mode,
++							  from_mode, 0,
++							  &actual_mode);
++
++	  if (handler == CODE_FOR_nothing)
++	    return false;
+ 
+-  gimple_assign_set_rhs1 (stmt, fold_convert (type1, rhs1));
+-  gimple_assign_set_rhs2 (stmt, fold_convert (type2, rhs2));
++	  from_unsigned1 = from_unsigned2 = false;
++	}
++      else
++	return false;
++    }
++
++  /* Ensure that the inputs to the handler are in the correct precison
++     for the opcode.  This will be the full mode size.  */
++  actual_precision = GET_MODE_PRECISION (actual_mode);
++  if (actual_precision != TYPE_PRECISION (type1)
++      || from_unsigned1 != TYPE_UNSIGNED (type1))
++    {
++      tmp = create_tmp_var (build_nonstandard_integer_type
++				(actual_precision, from_unsigned1),
++			    NULL);
++      rhs1 = build_and_insert_cast (gsi, loc, tmp, rhs1);
++    }
++  if (actual_precision != TYPE_PRECISION (type2)
++      || from_unsigned2 != TYPE_UNSIGNED (type2))
++    {
++      /* Reuse the same type info, if possible.  */
++      if (!tmp || from_unsigned1 != from_unsigned2)
++	tmp = create_tmp_var (build_nonstandard_integer_type
++				(actual_precision, from_unsigned2),
++			      NULL);
++      rhs2 = build_and_insert_cast (gsi, loc, tmp, rhs2);
++    }
++
++  /* Handle constants.  */
++  if (TREE_CODE (rhs1) == INTEGER_CST)
++    rhs1 = fold_convert (type1, rhs1);
++  if (TREE_CODE (rhs2) == INTEGER_CST)
++    rhs2 = fold_convert (type2, rhs2);
++
++  gimple_assign_set_rhs1 (stmt, rhs1);
++  gimple_assign_set_rhs2 (stmt, rhs2);
+   gimple_assign_set_rhs_code (stmt, WIDEN_MULT_EXPR);
+   update_stmt (stmt);
+   return true;
+@@ -1403,11 +1513,17 @@
+ 			    enum tree_code code)
+ {
+   gimple rhs1_stmt = NULL, rhs2_stmt = NULL;
+-  tree type, type1, type2;
++  gimple conv1_stmt = NULL, conv2_stmt = NULL, conv_stmt;
++  tree type, type1, type2, optype, tmp = NULL;
+   tree lhs, rhs1, rhs2, mult_rhs1, mult_rhs2, add_rhs;
+   enum tree_code rhs1_code = ERROR_MARK, rhs2_code = ERROR_MARK;
+   optab this_optab;
+   enum tree_code wmult_code;
++  enum insn_code handler;
++  enum machine_mode to_mode, from_mode, actual_mode;
++  location_t loc = gimple_location (stmt);
++  int actual_precision;
++  bool from_unsigned1, from_unsigned2;
+ 
+   lhs = gimple_assign_lhs (stmt);
+   type = TREE_TYPE (lhs);
+@@ -1429,8 +1545,6 @@
+       if (is_gimple_assign (rhs1_stmt))
+ 	rhs1_code = gimple_assign_rhs_code (rhs1_stmt);
+     }
+-  else
+-    return false;
+ 
+   if (TREE_CODE (rhs2) == SSA_NAME)
+     {
+@@ -1438,57 +1552,160 @@
+       if (is_gimple_assign (rhs2_stmt))
+ 	rhs2_code = gimple_assign_rhs_code (rhs2_stmt);
+     }
+-  else
+-    return false;
+ 
+-  if (code == PLUS_EXPR && rhs1_code == MULT_EXPR)
++  /* Allow for one conversion statement between the multiply
++     and addition/subtraction statement.  If there are more than
++     one conversions then we assume they would invalidate this
++     transformation.  If that's not the case then they should have
++     been folded before now.  */
++  if (CONVERT_EXPR_CODE_P (rhs1_code))
++    {
++      conv1_stmt = rhs1_stmt;
++      rhs1 = gimple_assign_rhs1 (rhs1_stmt);
++      if (TREE_CODE (rhs1) == SSA_NAME)
++	{
++	  rhs1_stmt = SSA_NAME_DEF_STMT (rhs1);
++	  if (is_gimple_assign (rhs1_stmt))
++	    rhs1_code = gimple_assign_rhs_code (rhs1_stmt);
++	}
++      else
++	return false;
++    }
++  if (CONVERT_EXPR_CODE_P (rhs2_code))
++    {
++      conv2_stmt = rhs2_stmt;
++      rhs2 = gimple_assign_rhs1 (rhs2_stmt);
++      if (TREE_CODE (rhs2) == SSA_NAME)
++	{
++	  rhs2_stmt = SSA_NAME_DEF_STMT (rhs2);
++	  if (is_gimple_assign (rhs2_stmt))
++	    rhs2_code = gimple_assign_rhs_code (rhs2_stmt);
++	}
++      else
++	return false;
++    }
++
++  /* If code is WIDEN_MULT_EXPR then it would seem unnecessary to call
++     is_widening_mult_p, but we still need the rhs returns.
++
++     It might also appear that it would be sufficient to use the existing
++     operands of the widening multiply, but that would limit the choice of
++     multiply-and-accumulate instructions.  */
++  if (code == PLUS_EXPR
++      && (rhs1_code == MULT_EXPR || rhs1_code == WIDEN_MULT_EXPR))
+     {
+       if (!is_widening_mult_p (rhs1_stmt, &type1, &mult_rhs1,
+ 			       &type2, &mult_rhs2))
+ 	return false;
+       add_rhs = rhs2;
++      conv_stmt = conv1_stmt;
+     }
+-  else if (rhs2_code == MULT_EXPR)
++  else if (rhs2_code == MULT_EXPR || rhs2_code == WIDEN_MULT_EXPR)
+     {
+       if (!is_widening_mult_p (rhs2_stmt, &type1, &mult_rhs1,
+ 			       &type2, &mult_rhs2))
+ 	return false;
+       add_rhs = rhs1;
+-    }
+-  else if (code == PLUS_EXPR && rhs1_code == WIDEN_MULT_EXPR)
+-    {
+-      mult_rhs1 = gimple_assign_rhs1 (rhs1_stmt);
+-      mult_rhs2 = gimple_assign_rhs2 (rhs1_stmt);
+-      type1 = TREE_TYPE (mult_rhs1);
+-      type2 = TREE_TYPE (mult_rhs2);
+-      add_rhs = rhs2;
+-    }
+-  else if (rhs2_code == WIDEN_MULT_EXPR)
+-    {
+-      mult_rhs1 = gimple_assign_rhs1 (rhs2_stmt);
+-      mult_rhs2 = gimple_assign_rhs2 (rhs2_stmt);
+-      type1 = TREE_TYPE (mult_rhs1);
+-      type2 = TREE_TYPE (mult_rhs2);
+-      add_rhs = rhs1;
++      conv_stmt = conv2_stmt;
+     }
+   else
+     return false;
+ 
+-  if (TYPE_UNSIGNED (type1) != TYPE_UNSIGNED (type2))
+-    return false;
++  to_mode = TYPE_MODE (type);
++  from_mode = TYPE_MODE (type1);
++  from_unsigned1 = TYPE_UNSIGNED (type1);
++  from_unsigned2 = TYPE_UNSIGNED (type2);
++
++  /* There's no such thing as a mixed sign madd yet, so use a wider mode.  */
++  if (from_unsigned1 != from_unsigned2)
++    {
++      /* We can use a signed multiply with unsigned types as long as
++	 there is a wider mode to use, or it is the smaller of the two
++	 types that is unsigned.  Note that type1 >= type2, always.  */
++      if ((from_unsigned1
++	   && TYPE_PRECISION (type1) == GET_MODE_PRECISION (from_mode))
++	  || (from_unsigned2
++	      && TYPE_PRECISION (type2) == GET_MODE_PRECISION (from_mode)))
++	{
++	  from_mode = GET_MODE_WIDER_MODE (from_mode);
++	  if (GET_MODE_SIZE (from_mode) >= GET_MODE_SIZE (to_mode))
++	    return false;
++	}
++
++      from_unsigned1 = from_unsigned2 = false;
++    }
++
++  /* If there was a conversion between the multiply and addition
++     then we need to make sure it fits a multiply-and-accumulate.
++     The should be a single mode change which does not change the
++     value.  */
++  if (conv_stmt)
++    {
++      /* We use the original, unmodified data types for this.  */
++      tree from_type = TREE_TYPE (gimple_assign_rhs1 (conv_stmt));
++      tree to_type = TREE_TYPE (gimple_assign_lhs (conv_stmt));
++      int data_size = TYPE_PRECISION (type1) + TYPE_PRECISION (type2);
++      bool is_unsigned = TYPE_UNSIGNED (type1) && TYPE_UNSIGNED (type2);
++
++      if (TYPE_PRECISION (from_type) > TYPE_PRECISION (to_type))
++	{
++	  /* Conversion is a truncate.  */
++	  if (TYPE_PRECISION (to_type) < data_size)
++	    return false;
++	}
++      else if (TYPE_PRECISION (from_type) < TYPE_PRECISION (to_type))
++	{
++	  /* Conversion is an extend.  Check it's the right sort.  */
++	  if (TYPE_UNSIGNED (from_type) != is_unsigned
++	      && !(is_unsigned && TYPE_PRECISION (from_type) > data_size))
++	    return false;
++	}
++      /* else convert is a no-op for our purposes.  */
++    }
+ 
+   /* Verify that the machine can perform a widening multiply
+      accumulate in this mode/signedness combination, otherwise
+      this transformation is likely to pessimize code.  */
+-  this_optab = optab_for_tree_code (wmult_code, type1, optab_default);
+-  if (optab_handler (this_optab, TYPE_MODE (type)) == CODE_FOR_nothing)
++  optype = build_nonstandard_integer_type (from_mode, from_unsigned1);
++  this_optab = optab_for_tree_code (wmult_code, optype, optab_default);
++  handler = find_widening_optab_handler_and_mode (this_optab, to_mode,
++						  from_mode, 0, &actual_mode);
++
++  if (handler == CODE_FOR_nothing)
+     return false;
+ 
+-  /* ??? May need some type verification here?  */
++  /* Ensure that the inputs to the handler are in the correct precison
++     for the opcode.  This will be the full mode size.  */
++  actual_precision = GET_MODE_PRECISION (actual_mode);
++  if (actual_precision != TYPE_PRECISION (type1)
++      || from_unsigned1 != TYPE_UNSIGNED (type1))
++    {
++      tmp = create_tmp_var (build_nonstandard_integer_type
++				(actual_precision, from_unsigned1),
++			    NULL);
++      mult_rhs1 = build_and_insert_cast (gsi, loc, tmp, mult_rhs1);
++    }
++  if (actual_precision != TYPE_PRECISION (type2)
++      || from_unsigned2 != TYPE_UNSIGNED (type2))
++    {
++      if (!tmp || from_unsigned1 != from_unsigned2)
++	tmp = create_tmp_var (build_nonstandard_integer_type
++				(actual_precision, from_unsigned2),
++			      NULL);
++      mult_rhs2 = build_and_insert_cast (gsi, loc, tmp, mult_rhs2);
++    }
++
++  if (!useless_type_conversion_p (type, TREE_TYPE (add_rhs)))
++    add_rhs = build_and_insert_cast (gsi, loc, create_tmp_var (type, NULL),
++				     add_rhs);
++
++  /* Handle constants.  */
++  if (TREE_CODE (mult_rhs1) == INTEGER_CST)
++    mult_rhs1 = fold_convert (type1, mult_rhs1);
++  if (TREE_CODE (mult_rhs2) == INTEGER_CST)
++    mult_rhs2 = fold_convert (type2, mult_rhs2);
+ 
+-  gimple_assign_set_rhs_with_ops_1 (gsi, wmult_code,
+-				    fold_convert (type1, mult_rhs1),
+-				    fold_convert (type2, mult_rhs2),
++  gimple_assign_set_rhs_with_ops_1 (gsi, wmult_code, mult_rhs1, mult_rhs2,
+ 				    add_rhs);
+   update_stmt (gsi_stmt (*gsi));
+   return true;
+@@ -1696,7 +1913,7 @@
+ 	      switch (code)
+ 		{
+ 		case MULT_EXPR:
+-		  if (!convert_mult_to_widen (stmt)
++		  if (!convert_mult_to_widen (stmt, &gsi)
+ 		      && convert_mult_to_fma (stmt,
+ 					      gimple_assign_rhs1 (stmt),
+ 					      gimple_assign_rhs2 (stmt)))
+--- a/src/gcc/tree-ssa-phiopt.c
++++ b/src/gcc/tree-ssa-phiopt.c
+@@ -34,6 +34,8 @@
+ #include "langhooks.h"
+ #include "pointer-set.h"
+ #include "domwalk.h"
++#include "cfgloop.h"
++#include "tree-data-ref.h"
+ 
+ static unsigned int tree_ssa_phiopt (void);
+ static unsigned int tree_ssa_phiopt_worker (bool);
+@@ -1292,35 +1294,18 @@
+   return true;
+ }
+ 
+-/* Do the main work of conditional store replacement.  We already know
+-   that the recognized pattern looks like so:
+-
+-   split:
+-     if (cond) goto THEN_BB; else goto ELSE_BB (edge E1)
+-   THEN_BB:
+-     X = Y;
+-     goto JOIN_BB;
+-   ELSE_BB:
+-     X = Z;
+-     fallthrough (edge E0)
+-   JOIN_BB:
+-     some more
+-
+-   We check that THEN_BB and ELSE_BB contain only one store
+-   that the stores have a "simple" RHS.  */
++/* Do the main work of conditional store replacement.  */
+ 
+ static bool
+-cond_if_else_store_replacement (basic_block then_bb, basic_block else_bb,
+-				basic_block join_bb)
++cond_if_else_store_replacement_1 (basic_block then_bb, basic_block else_bb,
++				  basic_block join_bb, gimple then_assign,
++				  gimple else_assign)
+ {
+-  gimple then_assign = last_and_only_stmt (then_bb);
+-  gimple else_assign = last_and_only_stmt (else_bb);
+   tree lhs_base, lhs, then_rhs, else_rhs;
+   source_location then_locus, else_locus;
+   gimple_stmt_iterator gsi;
+   gimple newphi, new_stmt;
+ 
+-  /* Check if then_bb and else_bb contain only one store each.  */
+   if (then_assign == NULL
+       || !gimple_assign_single_p (then_assign)
+       || else_assign == NULL
+@@ -1385,6 +1370,190 @@
+   return true;
+ }
+ 
++/* Conditional store replacement.  We already know
++   that the recognized pattern looks like so:
++
++   split:
++     if (cond) goto THEN_BB; else goto ELSE_BB (edge E1)
++   THEN_BB:
++     ...
++     X = Y;
++     ...
++     goto JOIN_BB;
++   ELSE_BB:
++     ...
++     X = Z;
++     ...
++     fallthrough (edge E0)
++   JOIN_BB:
++     some more
++
++   We check that it is safe to sink the store to JOIN_BB by verifying that
++   there are no read-after-write or write-after-write dependencies in
++   THEN_BB and ELSE_BB.  */
++
++static bool
++cond_if_else_store_replacement (basic_block then_bb, basic_block else_bb,
++                                basic_block join_bb)
++{
++  gimple then_assign = last_and_only_stmt (then_bb);
++  gimple else_assign = last_and_only_stmt (else_bb);
++  VEC (data_reference_p, heap) *then_datarefs, *else_datarefs;
++  VEC (ddr_p, heap) *then_ddrs, *else_ddrs;
++  gimple then_store, else_store;
++  bool found, ok = false, res;
++  struct data_dependence_relation *ddr;
++  data_reference_p then_dr, else_dr;
++  int i, j;
++  tree then_lhs, else_lhs;
++  VEC (gimple, heap) *then_stores, *else_stores;
++  basic_block blocks[3];
++
++  if (MAX_STORES_TO_SINK == 0)
++    return false;
++
++  /* Handle the case with single statement in THEN_BB and ELSE_BB.  */
++  if (then_assign && else_assign)
++    return cond_if_else_store_replacement_1 (then_bb, else_bb, join_bb,
++                                             then_assign, else_assign);
++
++  /* Find data references.  */
++  then_datarefs = VEC_alloc (data_reference_p, heap, 1);
++  else_datarefs = VEC_alloc (data_reference_p, heap, 1);
++  if ((find_data_references_in_bb (NULL, then_bb, &then_datarefs)
++        == chrec_dont_know)
++      || !VEC_length (data_reference_p, then_datarefs)
++      || (find_data_references_in_bb (NULL, else_bb, &else_datarefs)
++        == chrec_dont_know)
++      || !VEC_length (data_reference_p, else_datarefs))
++    {
++      free_data_refs (then_datarefs);
++      free_data_refs (else_datarefs);
++      return false;
++    }
++
++  /* Find pairs of stores with equal LHS.  */
++  then_stores = VEC_alloc (gimple, heap, 1);
++  else_stores = VEC_alloc (gimple, heap, 1);
++  FOR_EACH_VEC_ELT (data_reference_p, then_datarefs, i, then_dr)
++    {
++      if (DR_IS_READ (then_dr))
++        continue;
++
++      then_store = DR_STMT (then_dr);
++      then_lhs = gimple_assign_lhs (then_store);
++      found = false;
++
++      FOR_EACH_VEC_ELT (data_reference_p, else_datarefs, j, else_dr)
++        {
++          if (DR_IS_READ (else_dr))
++            continue;
++
++          else_store = DR_STMT (else_dr);
++          else_lhs = gimple_assign_lhs (else_store);
++
++          if (operand_equal_p (then_lhs, else_lhs, 0))
++            {
++              found = true;
++              break;
++            }
++        }
++
++      if (!found)
++        continue;
++
++      VEC_safe_push (gimple, heap, then_stores, then_store);
++      VEC_safe_push (gimple, heap, else_stores, else_store);
++    }
++
++  /* No pairs of stores found.  */
++  if (!VEC_length (gimple, then_stores)
++      || VEC_length (gimple, then_stores) > (unsigned) MAX_STORES_TO_SINK)
++    {
++      free_data_refs (then_datarefs);
++      free_data_refs (else_datarefs);
++      VEC_free (gimple, heap, then_stores);
++      VEC_free (gimple, heap, else_stores);
++      return false;
++    }
++
++  /* Compute and check data dependencies in both basic blocks.  */
++  then_ddrs = VEC_alloc (ddr_p, heap, 1);
++  else_ddrs = VEC_alloc (ddr_p, heap, 1);
++  compute_all_dependences (then_datarefs, &then_ddrs, NULL, false);
++  compute_all_dependences (else_datarefs, &else_ddrs, NULL, false);
++  blocks[0] = then_bb;
++  blocks[1] = else_bb;
++  blocks[2] = join_bb;
++  renumber_gimple_stmt_uids_in_blocks (blocks, 3);
++
++  /* Check that there are no read-after-write or write-after-write dependencies
++     in THEN_BB.  */
++  FOR_EACH_VEC_ELT (ddr_p, then_ddrs, i, ddr)
++    {
++      struct data_reference *dra = DDR_A (ddr);
++      struct data_reference *drb = DDR_B (ddr);
++
++      if (DDR_ARE_DEPENDENT (ddr) != chrec_known
++          && ((DR_IS_READ (dra) && DR_IS_WRITE (drb)
++               && gimple_uid (DR_STMT (dra)) > gimple_uid (DR_STMT (drb)))
++              || (DR_IS_READ (drb) && DR_IS_WRITE (dra)
++                  && gimple_uid (DR_STMT (drb)) > gimple_uid (DR_STMT (dra)))
++              || (DR_IS_WRITE (dra) && DR_IS_WRITE (drb))))
++        {
++          free_dependence_relations (then_ddrs);
++          free_dependence_relations (else_ddrs);
++          free_data_refs (then_datarefs);
++          free_data_refs (else_datarefs);
++          VEC_free (gimple, heap, then_stores);
++          VEC_free (gimple, heap, else_stores);
++          return false;
++        }
++    }
++
++  /* Check that there are no read-after-write or write-after-write dependencies
++     in ELSE_BB.  */
++  FOR_EACH_VEC_ELT (ddr_p, else_ddrs, i, ddr)
++    {
++      struct data_reference *dra = DDR_A (ddr);
++      struct data_reference *drb = DDR_B (ddr);
++
++      if (DDR_ARE_DEPENDENT (ddr) != chrec_known
++          && ((DR_IS_READ (dra) && DR_IS_WRITE (drb)
++               && gimple_uid (DR_STMT (dra)) > gimple_uid (DR_STMT (drb)))
++              || (DR_IS_READ (drb) && DR_IS_WRITE (dra)
++                  && gimple_uid (DR_STMT (drb)) > gimple_uid (DR_STMT (dra)))
++              || (DR_IS_WRITE (dra) && DR_IS_WRITE (drb))))
++        {
++          free_dependence_relations (then_ddrs);
++          free_dependence_relations (else_ddrs);
++          free_data_refs (then_datarefs);
++          free_data_refs (else_datarefs);
++          VEC_free (gimple, heap, then_stores);
++          VEC_free (gimple, heap, else_stores);
++          return false;
++        }
++    }
++
++  /* Sink stores with same LHS.  */
++  FOR_EACH_VEC_ELT (gimple, then_stores, i, then_store)
++    {
++      else_store = VEC_index (gimple, else_stores, i);
++      res = cond_if_else_store_replacement_1 (then_bb, else_bb, join_bb,
++                                              then_store, else_store);
++      ok = ok || res;
++    }
++
++  free_dependence_relations (then_ddrs);
++  free_dependence_relations (else_ddrs);
++  free_data_refs (then_datarefs);
++  free_data_refs (else_datarefs);
++  VEC_free (gimple, heap, then_stores);
++  VEC_free (gimple, heap, else_stores);
++
++  return ok;
++}
++
+ /* Always do these optimizations if we have SSA
+    trees to work on.  */
+ static bool
+--- a/src/gcc/tree-ssa-pre.c
++++ b/src/gcc/tree-ssa-pre.c
+@@ -2640,11 +2640,13 @@
+ }
+ 
+ /* Return true if we can value number the call in STMT.  This is true
+-   if we have a pure or constant call.  */
++   if we have a pure or constant call to a real function.  */
+ 
+ static bool
+ can_value_number_call (gimple stmt)
+ {
++  if (gimple_call_internal_p (stmt))
++    return false;
+   if (gimple_call_flags (stmt) & (ECF_PURE | ECF_CONST))
+     return true;
+   return false;
+@@ -4173,6 +4175,7 @@
+   gimple_stmt_iterator gsi;
+   gimple stmt;
+   unsigned i;
++  tree fn;
+ 
+   FOR_EACH_BB (b)
+     {
+@@ -4364,9 +4367,10 @@
+ 	  /* Visit indirect calls and turn them into direct calls if
+ 	     possible.  */
+ 	  if (is_gimple_call (stmt)
+-	      && TREE_CODE (gimple_call_fn (stmt)) == SSA_NAME)
++	      && (fn = gimple_call_fn (stmt))
++	      && TREE_CODE (fn) == SSA_NAME)
+ 	    {
+-	      tree fn = VN_INFO (gimple_call_fn (stmt))->valnum;
++	      fn = VN_INFO (fn)->valnum;
+ 	      if (TREE_CODE (fn) == ADDR_EXPR
+ 		  && TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL)
+ 		{
+--- a/src/gcc/tree-ssa-sccvn.c
++++ b/src/gcc/tree-ssa-sccvn.c
+@@ -2986,7 +2986,8 @@
+ 	  /* ???  We should handle stores from calls.  */
+ 	  else if (TREE_CODE (lhs) == SSA_NAME)
+ 	    {
+-	      if (gimple_call_flags (stmt) & (ECF_PURE | ECF_CONST))
++	      if (!gimple_call_internal_p (stmt)
++		  && gimple_call_flags (stmt) & (ECF_PURE | ECF_CONST))
+ 		changed = visit_reference_op_call (lhs, stmt);
+ 	      else
+ 		changed = defs_to_varying (stmt);
+--- a/src/gcc/tree-ssa-structalias.c
++++ b/src/gcc/tree-ssa-structalias.c
+@@ -4330,6 +4330,7 @@
+ 	    /* Fallthru to general call handling.  */;
+ 	  }
+       if (!in_ipa_mode
++	  || gimple_call_internal_p (t)
+ 	  || (fndecl
+ 	      && (!(fi = lookup_vi_for_tree (fndecl))
+ 		  || !fi->is_fn_info)))
+--- a/src/gcc/tree-vect-data-refs.c
++++ b/src/gcc/tree-vect-data-refs.c
+@@ -43,6 +43,45 @@
+ #include "expr.h"
+ #include "optabs.h"
+ 
++/* Return true if load- or store-lanes optab OPTAB is implemented for
++   COUNT vectors of type VECTYPE.  NAME is the name of OPTAB.  */
++
++static bool
++vect_lanes_optab_supported_p (const char *name, convert_optab optab,
++			      tree vectype, unsigned HOST_WIDE_INT count)
++{
++  enum machine_mode mode, array_mode;
++  bool limit_p;
++
++  mode = TYPE_MODE (vectype);
++  limit_p = !targetm.array_mode_supported_p (mode, count);
++  array_mode = mode_for_size (count * GET_MODE_BITSIZE (mode),
++			      MODE_INT, limit_p);
++
++  if (array_mode == BLKmode)
++    {
++      if (vect_print_dump_info (REPORT_DETAILS))
++	fprintf (vect_dump, "no array mode for %s[" HOST_WIDE_INT_PRINT_DEC "]",
++		 GET_MODE_NAME (mode), count);
++      return false;
++    }
++
++  if (convert_optab_handler (optab, array_mode, mode) == CODE_FOR_nothing)
++    {
++      if (vect_print_dump_info (REPORT_DETAILS))
++	fprintf (vect_dump, "cannot use %s<%s><%s>",
++		 name, GET_MODE_NAME (array_mode), GET_MODE_NAME (mode));
++      return false;
++    }
++
++  if (vect_print_dump_info (REPORT_DETAILS))
++    fprintf (vect_dump, "can use %s<%s><%s>",
++	     name, GET_MODE_NAME (array_mode), GET_MODE_NAME (mode));
++
++  return true;
++}
++
++
+ /* Return the smallest scalar part of STMT.
+    This is used to determine the vectype of the stmt.  We generally set the
+    vectype according to the type of the result (lhs).  For stmts whose
+@@ -72,6 +111,7 @@
+   if (is_gimple_assign (stmt)
+       && (gimple_assign_cast_p (stmt)
+           || gimple_assign_rhs_code (stmt) == WIDEN_MULT_EXPR
++          || gimple_assign_rhs_code (stmt) == WIDEN_LSHIFT_EXPR
+           || gimple_assign_rhs_code (stmt) == FLOAT_EXPR))
+     {
+       tree rhs_type = TREE_TYPE (gimple_assign_rhs1 (stmt));
+@@ -289,39 +329,6 @@
+     }
+ }
+ 
+-
+-/* Function vect_equal_offsets.
+-
+-   Check if OFFSET1 and OFFSET2 are identical expressions.  */
+-
+-static bool
+-vect_equal_offsets (tree offset1, tree offset2)
+-{
+-  bool res;
+-
+-  STRIP_NOPS (offset1);
+-  STRIP_NOPS (offset2);
+-
+-  if (offset1 == offset2)
+-    return true;
+-
+-  if (TREE_CODE (offset1) != TREE_CODE (offset2)
+-      || (!BINARY_CLASS_P (offset1) && !UNARY_CLASS_P (offset1)))
+-    return false;
+-
+-  res = vect_equal_offsets (TREE_OPERAND (offset1, 0),
+-			    TREE_OPERAND (offset2, 0));
+-
+-  if (!res || !BINARY_CLASS_P (offset1))
+-    return res;
+-
+-  res = vect_equal_offsets (TREE_OPERAND (offset1, 1),
+-			    TREE_OPERAND (offset2, 1));
+-
+-  return res;
+-}
+-
+-
+ /* Check dependence between DRA and DRB for basic block vectorization.
+    If the accesses share same bases and offsets, we can compare their initial
+    constant offsets to decide whether they differ or not.  In case of a read-
+@@ -347,12 +354,8 @@
+ 
+   /* Check that the data-refs have same bases and offsets.  If not, we can't
+      determine if they are dependent.  */
+-  if ((DR_BASE_ADDRESS (dra) != DR_BASE_ADDRESS (drb)
+-       && (TREE_CODE (DR_BASE_ADDRESS (dra)) != ADDR_EXPR
+-           || TREE_CODE (DR_BASE_ADDRESS (drb)) != ADDR_EXPR
+-           || TREE_OPERAND (DR_BASE_ADDRESS (dra), 0)
+-           != TREE_OPERAND (DR_BASE_ADDRESS (drb),0)))
+-      || !vect_equal_offsets (DR_OFFSET (dra), DR_OFFSET (drb)))
++  if (!operand_equal_p (DR_BASE_ADDRESS (dra), DR_BASE_ADDRESS (drb), 0)
++      || !dr_equal_offsets_p (dra, drb))
+     return true;
+ 
+   /* Check the types.  */
+@@ -397,12 +400,8 @@
+ 
+   /* Check that the data-refs have same first location (except init) and they
+      are both either store or load (not load and store).  */
+-  if ((DR_BASE_ADDRESS (dra) != DR_BASE_ADDRESS (drb)
+-       && (TREE_CODE (DR_BASE_ADDRESS (dra)) != ADDR_EXPR
+-	   || TREE_CODE (DR_BASE_ADDRESS (drb)) != ADDR_EXPR
+-	   || TREE_OPERAND (DR_BASE_ADDRESS (dra), 0)
+-	   != TREE_OPERAND (DR_BASE_ADDRESS (drb),0)))
+-      || !vect_equal_offsets (DR_OFFSET (dra), DR_OFFSET (drb))
++  if (!operand_equal_p (DR_BASE_ADDRESS (dra), DR_BASE_ADDRESS (drb), 0)
++      || !dr_equal_offsets_p (dra, drb)
+       || !tree_int_cst_compare (DR_INIT (dra), DR_INIT (drb))
+       || DR_IS_READ (dra) != DR_IS_READ (drb))
+     return false;
+@@ -609,6 +608,11 @@
+       if (vect_check_interleaving (dra, drb))
+          return false;
+ 
++      /* Read-read is OK (we need this check here, after checking for
++         interleaving).  */
++      if (DR_IS_READ (dra) && DR_IS_READ (drb))
++        return false;
++
+       if (vect_print_dump_info (REPORT_DR_DETAILS))
+         {
+           fprintf (vect_dump, "can't determine dependence between ");
+@@ -841,6 +845,24 @@
+ 	}
+     }
+ 
++  /* Similarly, if we're doing basic-block vectorization, we can only use
++     base and misalignment information relative to an innermost loop if the
++     misalignment stays the same throughout the execution of the loop.
++     As above, this is the case if the stride of the dataref evenly divides
++     by the vector size.  */
++  if (!loop)
++    {
++      tree step = DR_STEP (dr);
++      HOST_WIDE_INT dr_step = TREE_INT_CST_LOW (step);
++
++      if (dr_step % GET_MODE_SIZE (TYPE_MODE (vectype)) != 0)
++	{
++	  if (vect_print_dump_info (REPORT_ALIGNMENT))
++	    fprintf (vect_dump, "SLP: step doesn't divide the vector-size.");
++	  misalign = NULL_TREE;
++	}
++    }
++
+   base = build_fold_indirect_ref (base_addr);
+   alignment = ssize_int (TYPE_ALIGN (vectype)/BITS_PER_UNIT);
+ 
+@@ -1019,7 +1041,7 @@
+       int misal = DR_MISALIGNMENT (dr);
+       tree vectype = STMT_VINFO_VECTYPE (stmt_info);
+       misal += negative ? -npeel * dr_size : npeel * dr_size;
+-      misal &= GET_MODE_SIZE (TYPE_MODE (vectype)) - 1;
++      misal &= (TYPE_ALIGN (vectype) / BITS_PER_UNIT) - 1;
+       SET_DR_MISALIGNMENT (dr, misal);
+       return;
+     }
+@@ -1053,6 +1075,9 @@
+       gimple stmt = DR_STMT (dr);
+       stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+ 
++      if (!STMT_VINFO_RELEVANT_P (stmt_info))
++	continue;
++
+       /* For interleaving, only the alignment of the first access matters. 
+          Skip statements marked as not vectorizable.  */
+       if ((STMT_VINFO_STRIDED_ACCESS (stmt_info)
+@@ -1171,17 +1196,11 @@
+   loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
+   int vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
+   int ncopies = vf / nunits;
+-  bool supportable_dr_alignment = vect_supportable_dr_alignment (dr, true);
+ 
+-  if (!supportable_dr_alignment)
+-    *inside_cost = VECT_MAX_COST;
++  if (DR_IS_READ (dr))
++    vect_get_load_cost (dr, ncopies, true, inside_cost, outside_cost);
+   else
+-    {
+-      if (DR_IS_READ (dr))
+-        vect_get_load_cost (dr, ncopies, true, inside_cost, outside_cost);
+-      else
+-        vect_get_store_cost (dr, ncopies, inside_cost);
+-    }
++    vect_get_store_cost (dr, ncopies, inside_cost);
+ 
+   if (vect_print_dump_info (REPORT_COST))
+     fprintf (vect_dump, "vect_get_data_access_cost: inside_cost = %d, "
+@@ -1250,7 +1269,9 @@
+   vect_peel_info elem = (vect_peel_info) *slot;
+   vect_peel_extended_info max = (vect_peel_extended_info) data;
+ 
+-  if (elem->count > max->peel_info.count)
++  if (elem->count > max->peel_info.count
++      || (elem->count == max->peel_info.count
++          && max->peel_info.npeel > elem->npeel))
+     {
+       max->peel_info.npeel = elem->npeel;
+       max->peel_info.count = elem->count;
+@@ -1493,7 +1514,7 @@
+       stmt = DR_STMT (dr);
+       stmt_info = vinfo_for_stmt (stmt);
+ 
+-      if (!STMT_VINFO_RELEVANT (stmt_info))
++      if (!STMT_VINFO_RELEVANT_P (stmt_info))
+ 	continue;
+ 
+       /* For interleaving, only the alignment of the first access
+@@ -2256,19 +2277,6 @@
+           return false;
+         }
+ 
+-      /* FORNOW: we handle only interleaving that is a power of 2.
+-         We don't fail here if it may be still possible to vectorize the
+-         group using SLP.  If not, the size of the group will be checked in
+-         vect_analyze_operations, and the vectorization will fail.  */
+-      if (exact_log2 (stride) == -1)
+-	{
+-	  if (vect_print_dump_info (REPORT_DETAILS))
+-	    fprintf (vect_dump, "interleaving is not a power of 2");
+-
+-	  if (slp_impossible)
+-	    return false;
+-	}
+-
+       if (stride == 0)
+         stride = count;
+ 
+@@ -2993,31 +3001,33 @@
+ 
+ /* Function vect_create_data_ref_ptr.
+ 
+-   Create a new pointer to vector type (vp), that points to the first location
+-   accessed in the loop by STMT, along with the def-use update chain to
+-   appropriately advance the pointer through the loop iterations. Also set
+-   aliasing information for the pointer.  This vector pointer is used by the
+-   callers to this function to create a memory reference expression for vector
+-   load/store access.
++   Create a new pointer-to-AGGR_TYPE variable (ap), that points to the first
++   location accessed in the loop by STMT, along with the def-use update
++   chain to appropriately advance the pointer through the loop iterations.
++   Also set aliasing information for the pointer.  This pointer is used by
++   the callers to this function to create a memory reference expression for
++   vector load/store access.
+ 
+    Input:
+    1. STMT: a stmt that references memory. Expected to be of the form
+          GIMPLE_ASSIGN <name, data-ref> or
+ 	 GIMPLE_ASSIGN <data-ref, name>.
+-   2. AT_LOOP: the loop where the vector memref is to be created.
+-   3. OFFSET (optional): an offset to be added to the initial address accessed
++   2. AGGR_TYPE: the type of the reference, which should be either a vector
++        or an array.
++   3. AT_LOOP: the loop where the vector memref is to be created.
++   4. OFFSET (optional): an offset to be added to the initial address accessed
+         by the data-ref in STMT.
+-   4. ONLY_INIT: indicate if vp is to be updated in the loop, or remain
++   5. ONLY_INIT: indicate if vp is to be updated in the loop, or remain
+         pointing to the initial address.
+-   5. TYPE: if not NULL indicates the required type of the data-ref.
++   6. TYPE: if not NULL indicates the required type of the data-ref.
+ 
+    Output:
+    1. Declare a new ptr to vector_type, and have it point to the base of the
+       data reference (initial addressed accessed by the data reference).
+       For example, for vector of type V8HI, the following code is generated:
+ 
+-      v8hi *vp;
+-      vp = (v8hi *)initial_address;
++      v8hi *ap;
++      ap = (v8hi *)initial_address;
+ 
+       if OFFSET is not supplied:
+          initial_address = &a[init];
+@@ -3037,7 +3047,7 @@
+    4. Return the pointer.  */
+ 
+ tree
+-vect_create_data_ref_ptr (gimple stmt, struct loop *at_loop,
++vect_create_data_ref_ptr (gimple stmt, tree aggr_type, struct loop *at_loop,
+ 			  tree offset, tree *initial_address, gimple *ptr_incr,
+ 			  bool only_init, bool *inv_p)
+ {
+@@ -3047,17 +3057,16 @@
+   struct loop *loop = NULL;
+   bool nested_in_vect_loop = false;
+   struct loop *containing_loop = NULL;
+-  tree vectype = STMT_VINFO_VECTYPE (stmt_info);
+-  tree vect_ptr_type;
+-  tree vect_ptr;
++  tree aggr_ptr_type;
++  tree aggr_ptr;
+   tree new_temp;
+   gimple vec_stmt;
+   gimple_seq new_stmt_list = NULL;
+   edge pe = NULL;
+   basic_block new_bb;
+-  tree vect_ptr_init;
++  tree aggr_ptr_init;
+   struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info);
+-  tree vptr;
++  tree aptr;
+   gimple_stmt_iterator incr_gsi;
+   bool insert_after;
+   bool negative;
+@@ -3068,6 +3077,9 @@
+   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+   tree base;
+ 
++  gcc_assert (TREE_CODE (aggr_type) == ARRAY_TYPE
++	      || TREE_CODE (aggr_type) == VECTOR_TYPE);
++
+   if (loop_vinfo)
+     {
+       loop = LOOP_VINFO_LOOP (loop_vinfo);
+@@ -3102,8 +3114,9 @@
+   if (vect_print_dump_info (REPORT_DETAILS))
+     {
+       tree data_ref_base = base_name;
+-      fprintf (vect_dump, "create vector-pointer variable to type: ");
+-      print_generic_expr (vect_dump, vectype, TDF_SLIM);
++      fprintf (vect_dump, "create %s-pointer variable to type: ",
++	       tree_code_name[(int) TREE_CODE (aggr_type)]);
++      print_generic_expr (vect_dump, aggr_type, TDF_SLIM);
+       if (TREE_CODE (data_ref_base) == VAR_DECL
+           || TREE_CODE (data_ref_base) == ARRAY_REF)
+         fprintf (vect_dump, "  vectorizing an array ref: ");
+@@ -3114,27 +3127,28 @@
+       print_generic_expr (vect_dump, base_name, TDF_SLIM);
+     }
+ 
+-  /* (1) Create the new vector-pointer variable.  */
+-  vect_ptr_type = build_pointer_type (vectype);
++  /* (1) Create the new aggregate-pointer variable.  */
++  aggr_ptr_type = build_pointer_type (aggr_type);
+   base = get_base_address (DR_REF (dr));
+   if (base
+       && TREE_CODE (base) == MEM_REF)
+-    vect_ptr_type
+-      = build_qualified_type (vect_ptr_type,
++    aggr_ptr_type
++      = build_qualified_type (aggr_ptr_type,
+ 			      TYPE_QUALS (TREE_TYPE (TREE_OPERAND (base, 0))));
+-  vect_ptr = vect_get_new_vect_var (vect_ptr_type, vect_pointer_var,
++  aggr_ptr = vect_get_new_vect_var (aggr_ptr_type, vect_pointer_var,
+                                     get_name (base_name));
+ 
+-  /* Vector types inherit the alias set of their component type by default so
+-     we need to use a ref-all pointer if the data reference does not conflict
+-     with the created vector data reference because it is not addressable.  */
+-  if (!alias_sets_conflict_p (get_deref_alias_set (vect_ptr),
++  /* Vector and array types inherit the alias set of their component
++     type by default so we need to use a ref-all pointer if the data
++     reference does not conflict with the created aggregated data
++     reference because it is not addressable.  */
++  if (!alias_sets_conflict_p (get_deref_alias_set (aggr_ptr),
+ 			      get_alias_set (DR_REF (dr))))
+     {
+-      vect_ptr_type
+-	= build_pointer_type_for_mode (vectype,
+-				       TYPE_MODE (vect_ptr_type), true);
+-      vect_ptr = vect_get_new_vect_var (vect_ptr_type, vect_pointer_var,
++      aggr_ptr_type
++	= build_pointer_type_for_mode (aggr_type,
++				       TYPE_MODE (aggr_ptr_type), true);
++      aggr_ptr = vect_get_new_vect_var (aggr_ptr_type, vect_pointer_var,
+ 					get_name (base_name));
+     }
+ 
+@@ -3145,14 +3159,14 @@
+       do
+ 	{
+ 	  tree lhs = gimple_assign_lhs (orig_stmt);
+-	  if (!alias_sets_conflict_p (get_deref_alias_set (vect_ptr),
++	  if (!alias_sets_conflict_p (get_deref_alias_set (aggr_ptr),
+ 				      get_alias_set (lhs)))
+ 	    {
+-	      vect_ptr_type
+-		= build_pointer_type_for_mode (vectype,
+-					       TYPE_MODE (vect_ptr_type), true);
+-	      vect_ptr
+-		= vect_get_new_vect_var (vect_ptr_type, vect_pointer_var,
++	      aggr_ptr_type
++		= build_pointer_type_for_mode (aggr_type,
++					       TYPE_MODE (aggr_ptr_type), true);
++	      aggr_ptr
++		= vect_get_new_vect_var (aggr_ptr_type, vect_pointer_var,
+ 					 get_name (base_name));
+ 	      break;
+ 	    }
+@@ -3162,7 +3176,7 @@
+       while (orig_stmt);
+     }
+ 
+-  add_referenced_var (vect_ptr);
++  add_referenced_var (aggr_ptr);
+ 
+   /* Note: If the dataref is in an inner-loop nested in LOOP, and we are
+      vectorizing LOOP (i.e., outer-loop vectorization), we need to create two
+@@ -3195,8 +3209,8 @@
+ 		vp2 = vp1 + step
+ 		if () goto LOOP   */
+ 
+-  /* (2) Calculate the initial address the vector-pointer, and set
+-         the vector-pointer to point to it before the loop.  */
++  /* (2) Calculate the initial address of the aggregate-pointer, and set
++     the aggregate-pointer to point to it before the loop.  */
+ 
+   /* Create: (&(base[init_val+offset]) in the loop preheader.  */
+ 
+@@ -3215,17 +3229,17 @@
+ 
+   *initial_address = new_temp;
+ 
+-  /* Create: p = (vectype *) initial_base  */
++  /* Create: p = (aggr_type *) initial_base  */
+   if (TREE_CODE (new_temp) != SSA_NAME
+-      || !useless_type_conversion_p (vect_ptr_type, TREE_TYPE (new_temp)))
++      || !useless_type_conversion_p (aggr_ptr_type, TREE_TYPE (new_temp)))
+     {
+-      vec_stmt = gimple_build_assign (vect_ptr,
+-				      fold_convert (vect_ptr_type, new_temp));
+-      vect_ptr_init = make_ssa_name (vect_ptr, vec_stmt);
++      vec_stmt = gimple_build_assign (aggr_ptr,
++				      fold_convert (aggr_ptr_type, new_temp));
++      aggr_ptr_init = make_ssa_name (aggr_ptr, vec_stmt);
+       /* Copy the points-to information if it exists. */
+       if (DR_PTR_INFO (dr))
+-	duplicate_ssa_name_ptr_info (vect_ptr_init, DR_PTR_INFO (dr));
+-      gimple_assign_set_lhs (vec_stmt, vect_ptr_init);
++	duplicate_ssa_name_ptr_info (aggr_ptr_init, DR_PTR_INFO (dr));
++      gimple_assign_set_lhs (vec_stmt, aggr_ptr_init);
+       if (pe)
+ 	{
+ 	  new_bb = gsi_insert_on_edge_immediate (pe, vec_stmt);
+@@ -3235,19 +3249,19 @@
+ 	gsi_insert_before (&gsi, vec_stmt, GSI_SAME_STMT);
+     }
+   else
+-    vect_ptr_init = new_temp;
++    aggr_ptr_init = new_temp;
+ 
+-  /* (3) Handle the updating of the vector-pointer inside the loop.
++  /* (3) Handle the updating of the aggregate-pointer inside the loop.
+      This is needed when ONLY_INIT is false, and also when AT_LOOP is the
+      inner-loop nested in LOOP (during outer-loop vectorization).  */
+ 
+   /* No update in loop is required.  */
+   if (only_init && (!loop_vinfo || at_loop == loop))
+-    vptr = vect_ptr_init;
++    aptr = aggr_ptr_init;
+   else
+     {
+-      /* The step of the vector pointer is the Vector Size.  */
+-      tree step = TYPE_SIZE_UNIT (vectype);
++      /* The step of the aggregate pointer is the type size.  */
++      tree step = TYPE_SIZE_UNIT (aggr_type);
+       /* One exception to the above is when the scalar step of the load in
+ 	 LOOP is zero. In this case the step here is also zero.  */
+       if (*inv_p)
+@@ -3257,9 +3271,9 @@
+ 
+       standard_iv_increment_position (loop, &incr_gsi, &insert_after);
+ 
+-      create_iv (vect_ptr_init,
+-		 fold_convert (vect_ptr_type, step),
+-		 vect_ptr, loop, &incr_gsi, insert_after,
++      create_iv (aggr_ptr_init,
++		 fold_convert (aggr_ptr_type, step),
++		 aggr_ptr, loop, &incr_gsi, insert_after,
+ 		 &indx_before_incr, &indx_after_incr);
+       incr = gsi_stmt (incr_gsi);
+       set_vinfo_for_stmt (incr, new_stmt_vec_info (incr, loop_vinfo, NULL));
+@@ -3273,14 +3287,14 @@
+       if (ptr_incr)
+ 	*ptr_incr = incr;
+ 
+-      vptr = indx_before_incr;
++      aptr = indx_before_incr;
+     }
+ 
+   if (!nested_in_vect_loop || only_init)
+-    return vptr;
++    return aptr;
+ 
+ 
+-  /* (4) Handle the updating of the vector-pointer inside the inner-loop
++  /* (4) Handle the updating of the aggregate-pointer inside the inner-loop
+      nested in LOOP, if exists.  */
+ 
+   gcc_assert (nested_in_vect_loop);
+@@ -3288,7 +3302,7 @@
+     {
+       standard_iv_increment_position (containing_loop, &incr_gsi,
+ 				      &insert_after);
+-      create_iv (vptr, fold_convert (vect_ptr_type, DR_STEP (dr)), vect_ptr,
++      create_iv (aptr, fold_convert (aggr_ptr_type, DR_STEP (dr)), aggr_ptr,
+ 		 containing_loop, &incr_gsi, insert_after, &indx_before_incr,
+ 		 &indx_after_incr);
+       incr = gsi_stmt (incr_gsi);
+@@ -3425,13 +3439,22 @@
+    and FALSE otherwise.  */
+ 
+ bool
+-vect_strided_store_supported (tree vectype)
++vect_strided_store_supported (tree vectype, unsigned HOST_WIDE_INT count)
+ {
+   optab interleave_high_optab, interleave_low_optab;
+   enum machine_mode mode;
+ 
+   mode = TYPE_MODE (vectype);
+ 
++  /* vect_permute_store_chain requires the group size to be a power of two.  */
++  if (exact_log2 (count) == -1)
++    {
++      if (vect_print_dump_info (REPORT_DETAILS))
++	fprintf (vect_dump, "the size of the group of strided accesses"
++		 " is not a power of 2");
++      return false;
++    }
++
+   /* Check that the operation is supported.  */
+   interleave_high_optab = optab_for_tree_code (VEC_INTERLEAVE_HIGH_EXPR,
+ 					       vectype, optab_default);
+@@ -3456,6 +3479,18 @@
+ }
+ 
+ 
++/* Return TRUE if vec_store_lanes is available for COUNT vectors of
++   type VECTYPE.  */
++
++bool
++vect_store_lanes_supported (tree vectype, unsigned HOST_WIDE_INT count)
++{
++  return vect_lanes_optab_supported_p ("vec_store_lanes",
++				       vec_store_lanes_optab,
++				       vectype, count);
++}
++
++
+ /* Function vect_permute_store_chain.
+ 
+    Given a chain of interleaved stores in DR_CHAIN of LENGTH that must be
+@@ -3517,7 +3552,7 @@
+    I3:  4 12 20 28  5 13 21 30
+    I4:  6 14 22 30  7 15 23 31.  */
+ 
+-bool
++void
+ vect_permute_store_chain (VEC(tree,heap) *dr_chain,
+ 			  unsigned int length,
+ 			  gimple stmt,
+@@ -3531,9 +3566,7 @@
+   unsigned int j;
+   enum tree_code high_code, low_code;
+ 
+-  /* Check that the operation is supported.  */
+-  if (!vect_strided_store_supported (vectype))
+-    return false;
++  gcc_assert (vect_strided_store_supported (vectype, length));
+ 
+   *result_chain = VEC_copy (tree, heap, dr_chain);
+ 
+@@ -3586,7 +3619,6 @@
+ 	}
+       dr_chain = VEC_copy (tree, heap, *result_chain);
+     }
+-  return true;
+ }
+ 
+ /* Function vect_setup_realignment
+@@ -3756,8 +3788,9 @@
+ 
+       gcc_assert (!compute_in_loop);
+       vec_dest = vect_create_destination_var (scalar_dest, vectype);
+-      ptr = vect_create_data_ref_ptr (stmt, loop_for_initial_load, NULL_TREE,
+-				      &init_addr, &inc, true, &inv_p);
++      ptr = vect_create_data_ref_ptr (stmt, vectype, loop_for_initial_load,
++				      NULL_TREE, &init_addr, &inc,
++				      true, &inv_p);
+       new_stmt = gimple_build_assign_with_ops
+ 		   (BIT_AND_EXPR, NULL_TREE, ptr,
+ 		    build_int_cst (TREE_TYPE (ptr),
+@@ -3862,13 +3895,22 @@
+    and FALSE otherwise.  */
+ 
+ bool
+-vect_strided_load_supported (tree vectype)
++vect_strided_load_supported (tree vectype, unsigned HOST_WIDE_INT count)
+ {
+   optab perm_even_optab, perm_odd_optab;
+   enum machine_mode mode;
+ 
+   mode = TYPE_MODE (vectype);
+ 
++  /* vect_permute_load_chain requires the group size to be a power of two.  */
++  if (exact_log2 (count) == -1)
++    {
++      if (vect_print_dump_info (REPORT_DETAILS))
++	fprintf (vect_dump, "the size of the group of strided accesses"
++		 " is not a power of 2");
++      return false;
++    }
++
+   perm_even_optab = optab_for_tree_code (VEC_EXTRACT_EVEN_EXPR, vectype,
+ 					 optab_default);
+   if (!perm_even_optab)
+@@ -3903,6 +3945,16 @@
+   return true;
+ }
+ 
++/* Return TRUE if vec_load_lanes is available for COUNT vectors of
++   type VECTYPE.  */
++
++bool
++vect_load_lanes_supported (tree vectype, unsigned HOST_WIDE_INT count)
++{
++  return vect_lanes_optab_supported_p ("vec_load_lanes",
++				       vec_load_lanes_optab,
++				       vectype, count);
++}
+ 
+ /* Function vect_permute_load_chain.
+ 
+@@ -3980,7 +4032,7 @@
+    3rd vec (E2):  2 6 10 14 18 22 26 30
+    4th vec (E4):  3 7 11 15 19 23 27 31.  */
+ 
+-bool
++static void
+ vect_permute_load_chain (VEC(tree,heap) *dr_chain,
+ 			 unsigned int length,
+ 			 gimple stmt,
+@@ -3993,9 +4045,7 @@
+   int i;
+   unsigned int j;
+ 
+-  /* Check that the operation is supported.  */
+-  if (!vect_strided_load_supported (vectype))
+-    return false;
++  gcc_assert (vect_strided_load_supported (vectype, length));
+ 
+   *result_chain = VEC_copy (tree, heap, dr_chain);
+   for (i = 0; i < exact_log2 (length); i++)
+@@ -4038,7 +4088,6 @@
+ 	}
+       dr_chain = VEC_copy (tree, heap, *result_chain);
+     }
+-  return true;
+ }
+ 
+ 
+@@ -4049,24 +4098,32 @@
+    the scalar statements.
+ */
+ 
+-bool
++void
+ vect_transform_strided_load (gimple stmt, VEC(tree,heap) *dr_chain, int size,
+ 			     gimple_stmt_iterator *gsi)
+ {
+-  stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+-  gimple first_stmt = DR_GROUP_FIRST_DR (stmt_info);
+-  gimple next_stmt, new_stmt;
+   VEC(tree,heap) *result_chain = NULL;
+-  unsigned int i, gap_count;
+-  tree tmp_data_ref;
+ 
+   /* DR_CHAIN contains input data-refs that are a part of the interleaving.
+      RESULT_CHAIN is the output of vect_permute_load_chain, it contains permuted
+      vectors, that are ready for vector computation.  */
+   result_chain = VEC_alloc (tree, heap, size);
+-  /* Permute.  */
+-  if (!vect_permute_load_chain (dr_chain, size, stmt, gsi, &result_chain))
+-    return false;
++  vect_permute_load_chain (dr_chain, size, stmt, gsi, &result_chain);
++  vect_record_strided_load_vectors (stmt, result_chain);
++  VEC_free (tree, heap, result_chain);
++}
++
++/* RESULT_CHAIN contains the output of a group of strided loads that were
++   generated as part of the vectorization of STMT.  Assign the statement
++   for each vector to the associated scalar statement.  */
++
++void
++vect_record_strided_load_vectors (gimple stmt, VEC(tree,heap) *result_chain)
++{
++  gimple first_stmt = DR_GROUP_FIRST_DR (vinfo_for_stmt (stmt));
++  gimple next_stmt, new_stmt;
++  unsigned int i, gap_count;
++  tree tmp_data_ref;
+ 
+   /* Put a permuted data-ref in the VECTORIZED_STMT field.
+      Since we scan the chain starting from it's first node, their order
+@@ -4128,9 +4185,6 @@
+ 	    break;
+         }
+     }
+-
+-  VEC_free (tree, heap, result_chain);
+-  return true;
+ }
+ 
+ /* Function vect_force_dr_alignment_p.
+--- a/src/gcc/tree-vect-generic.c
++++ b/src/gcc/tree-vect-generic.c
+@@ -552,7 +552,9 @@
+       || code == VEC_UNPACK_LO_EXPR
+       || code == VEC_PACK_TRUNC_EXPR
+       || code == VEC_PACK_SAT_EXPR
+-      || code == VEC_PACK_FIX_TRUNC_EXPR)
++      || code == VEC_PACK_FIX_TRUNC_EXPR
++      || code == VEC_WIDEN_LSHIFT_HI_EXPR
++      || code == VEC_WIDEN_LSHIFT_LO_EXPR)
+     type = TREE_TYPE (rhs1);
+ 
+   /* Optabs will try converting a negation into a subtraction, so
+--- a/src/gcc/tree-vect-loop.c
++++ b/src/gcc/tree-vect-loop.c
+@@ -181,6 +181,8 @@
+   stmt_vec_info stmt_info;
+   int i;
+   HOST_WIDE_INT dummy;
++  gimple stmt, pattern_stmt = NULL, pattern_def_stmt = NULL;
++  bool analyze_pattern_stmt = false, pattern_def = false;
+ 
+   if (vect_print_dump_info (REPORT_DETAILS))
+     fprintf (vect_dump, "=== vect_determine_vectorization_factor ===");
+@@ -241,12 +243,20 @@
+ 	    }
+ 	}
+ 
+-      for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
++      for (si = gsi_start_bb (bb); !gsi_end_p (si) || analyze_pattern_stmt;)
+         {
+-	  tree vf_vectype;
+-	  gimple stmt = gsi_stmt (si);
+-	  stmt_info = vinfo_for_stmt (stmt);
++          tree vf_vectype;
++
++          if (analyze_pattern_stmt)
++            {
++              stmt = pattern_stmt;
++              analyze_pattern_stmt = false;
++            }
++          else
++            stmt = gsi_stmt (si);
+ 
++         stmt_info = vinfo_for_stmt (stmt);
++              
+ 	  if (vect_print_dump_info (REPORT_DETAILS))
+ 	    {
+ 	      fprintf (vect_dump, "==> examining statement: ");
+@@ -259,11 +269,57 @@
+ 	  if (!STMT_VINFO_RELEVANT_P (stmt_info)
+ 	      && !STMT_VINFO_LIVE_P (stmt_info))
+ 	    {
+-	      if (vect_print_dump_info (REPORT_DETAILS))
+-	        fprintf (vect_dump, "skip.");
+-	      continue;
++              if (STMT_VINFO_IN_PATTERN_P (stmt_info)
++                  && (pattern_stmt = STMT_VINFO_RELATED_STMT (stmt_info))
++                  && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_stmt))
++                      || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_stmt))))
++                {
++                  stmt = pattern_stmt;
++                  stmt_info = vinfo_for_stmt (pattern_stmt);
++                  if (vect_print_dump_info (REPORT_DETAILS))
++                    {
++                      fprintf (vect_dump, "==> examining pattern statement: ");
++                      print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
++                    }
++                }
++             else
++               {
++                 if (vect_print_dump_info (REPORT_DETAILS))
++                   fprintf (vect_dump, "skip.");
++                 gsi_next (&si);
++                 continue;
++               }
+ 	    }
+ 
++          else if (STMT_VINFO_IN_PATTERN_P (stmt_info)
++                   && (pattern_stmt = STMT_VINFO_RELATED_STMT (stmt_info))
++                   && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_stmt))
++                       || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_stmt))))
++            analyze_pattern_stmt = true;
++
++          /* If a pattern statement has a def stmt, analyze it too.  */
++          if (is_pattern_stmt_p (stmt_info)
++              && (pattern_def_stmt = STMT_VINFO_PATTERN_DEF_STMT (stmt_info))
++              && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_def_stmt))
++                  || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_def_stmt))))
++            {
++              if (pattern_def)
++                pattern_def = false;
++              else
++                {
++                  if (vect_print_dump_info (REPORT_DETAILS))
++                    {
++                      fprintf (vect_dump, "==> examining pattern def stmt: ");
++                      print_gimple_stmt (vect_dump, pattern_def_stmt, 0,
++                                         TDF_SLIM);
++                    }
++
++                  pattern_def = true;
++                  stmt = pattern_def_stmt;
++                  stmt_info = vinfo_for_stmt (stmt);
++                }
++            }
++
+ 	  if (gimple_get_lhs (stmt) == NULL_TREE)
+ 	    {
+ 	      if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
+@@ -295,9 +351,7 @@
+ 	    }
+ 	  else
+ 	    {
+-	      gcc_assert (!STMT_VINFO_DATA_REF (stmt_info)
+-			  && !is_pattern_stmt_p (stmt_info));
+-
++	      gcc_assert (!STMT_VINFO_DATA_REF (stmt_info));
+ 	      scalar_type = TREE_TYPE (gimple_get_lhs (stmt));
+ 	      if (vect_print_dump_info (REPORT_DETAILS))
+ 		{
+@@ -369,6 +423,9 @@
+ 	  if (!vectorization_factor
+ 	      || (nunits > vectorization_factor))
+ 	    vectorization_factor = nunits;
++
++          if (!analyze_pattern_stmt && !pattern_def)
++            gsi_next (&si);
+         }
+     }
+ 
+@@ -817,25 +874,17 @@
+ 
+           if (stmt_info)
+             {
+-              /* Check if this is a "pattern stmt" (introduced by the
+-                 vectorizer during the pattern recognition pass).  */
+-              bool remove_stmt_p = false;
+-              gimple orig_stmt = STMT_VINFO_RELATED_STMT (stmt_info);
+-              if (orig_stmt)
+-                {
+-                  stmt_vec_info orig_stmt_info = vinfo_for_stmt (orig_stmt);
+-                  if (orig_stmt_info
+-                      && STMT_VINFO_IN_PATTERN_P (orig_stmt_info))
+-                    remove_stmt_p = true;
+-                }
++              /* Check if this statement has a related "pattern stmt"
++                 (introduced by the vectorizer during the pattern recognition
++                 pass).  Free pattern's stmt_vec_info.  */
++              if (STMT_VINFO_IN_PATTERN_P (stmt_info)
++                  && vinfo_for_stmt (STMT_VINFO_RELATED_STMT (stmt_info)))
++                free_stmt_vec_info (STMT_VINFO_RELATED_STMT (stmt_info));
+ 
+               /* Free stmt_vec_info.  */
+               free_stmt_vec_info (stmt);
+-
+-              /* Remove dead "pattern stmts".  */
+-              if (remove_stmt_p)
+-                gsi_remove (&si, true);
+             }
++
+           gsi_next (&si);
+         }
+     }
+@@ -1409,7 +1458,7 @@
+ 
+   vect_analyze_scalar_cycles (loop_vinfo);
+ 
+-  vect_pattern_recog (loop_vinfo);
++  vect_pattern_recog (loop_vinfo, NULL);
+ 
+   /* Data-flow analysis to detect stmts that do not need to be vectorized.  */
+ 
+@@ -2104,7 +2153,8 @@
+           if (stmt_info
+               && !STMT_VINFO_RELEVANT_P (stmt_info)
+               && (!STMT_VINFO_LIVE_P (stmt_info)
+-                  || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def))
++                  || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info)))
++	      && !STMT_VINFO_IN_PATTERN_P (stmt_info))
+             continue;
+ 
+           if (STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt)))
+@@ -2251,11 +2301,19 @@
+ 	{
+ 	  gimple stmt = gsi_stmt (si);
+ 	  stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
++
++	  if (STMT_VINFO_IN_PATTERN_P (stmt_info))
++	    {
++	      stmt = STMT_VINFO_RELATED_STMT (stmt_info);
++	      stmt_info = vinfo_for_stmt (stmt);
++	    }
++
+ 	  /* Skip stmts that are not vectorized inside the loop.  */
+ 	  if (!STMT_VINFO_RELEVANT_P (stmt_info)
+ 	      && (!STMT_VINFO_LIVE_P (stmt_info)
+-		  || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def))
++		  || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info))))
+ 	    continue;
++
+ 	  vec_inside_cost += STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info) * factor;
+ 	  /* FIXME: for stmts in the inner-loop in outer-loop vectorization,
+ 	     some of the "outside" costs are generated inside the outer-loop.  */
+@@ -3233,8 +3291,8 @@
+ 
+   /* Get the loop-entry arguments.  */
+   if (slp_node)
+-    vect_get_slp_defs (reduction_op, NULL_TREE, slp_node, &vec_initial_defs,
+-                       NULL, reduc_index);
++    vect_get_vec_defs (reduction_op, NULL_TREE, stmt, &vec_initial_defs,
++                       NULL, slp_node, reduc_index);
+   else
+     {
+       vec_initial_defs = VEC_alloc (tree, heap, 1);
+@@ -3959,7 +4017,7 @@
+   VEC (tree, heap) *vec_oprnds0 = NULL, *vec_oprnds1 = NULL, *vect_defs = NULL;
+   VEC (gimple, heap) *phis = NULL;
+   int vec_num;
+-  tree def0, def1, tem;
++  tree def0, def1, tem, op0, op1 = NULL_TREE;
+ 
+   if (nested_in_vect_loop_p (loop, stmt))
+     {
+@@ -4038,6 +4096,9 @@
+       gcc_unreachable ();
+     }
+ 
++  if (code == COND_EXPR && slp_node)
++    return false;
++
+   scalar_dest = gimple_assign_lhs (stmt);
+   scalar_type = TREE_TYPE (scalar_dest);
+   if (!POINTER_TYPE_P (scalar_type) && !INTEGRAL_TYPE_P (scalar_type)
+@@ -4112,7 +4173,7 @@
+ 
+   if (code == COND_EXPR)
+     {
+-      if (!vectorizable_condition (stmt, gsi, NULL, ops[reduc_index], 0))
++      if (!vectorizable_condition (stmt, gsi, NULL, ops[reduc_index], 0, NULL))
+         {
+           if (vect_print_dump_info (REPORT_DETAILS))
+             fprintf (vect_dump, "unsupported condition in reduction");
+@@ -4267,6 +4328,25 @@
+       return false;
+     }
+ 
++  /* In case of widenning multiplication by a constant, we update the type
++     of the constant to be the type of the other operand.  We check that the
++     constant fits the type in the pattern recognition pass.  */
++  if (code == DOT_PROD_EXPR
++      && !types_compatible_p (TREE_TYPE (ops[0]), TREE_TYPE (ops[1])))
++    {
++      if (TREE_CODE (ops[0]) == INTEGER_CST)
++        ops[0] = fold_convert (TREE_TYPE (ops[1]), ops[0]);
++      else if (TREE_CODE (ops[1]) == INTEGER_CST)
++        ops[1] = fold_convert (TREE_TYPE (ops[0]), ops[1]);
++      else
++        {
++          if (vect_print_dump_info (REPORT_DETAILS))
++            fprintf (vect_dump, "invalid types in dot-prod");
++
++          return false;
++        }
++    }
++
+   if (!vec_stmt) /* transformation not required.  */
+     {
+       STMT_VINFO_TYPE (stmt_info) = reduc_vec_info_type;
+@@ -4365,7 +4445,7 @@
+           gcc_assert (!slp_node);
+           vectorizable_condition (stmt, gsi, vec_stmt, 
+                                   PHI_RESULT (VEC_index (gimple, phis, 0)), 
+-                                  reduc_index);
++                                  reduc_index, NULL);
+           /* Multiple types are not supported for condition.  */
+           break;
+         }
+@@ -4373,8 +4453,6 @@
+       /* Handle uses.  */
+       if (j == 0)
+         {
+-          tree op0, op1 = NULL_TREE;
+-
+           op0 = ops[!reduc_index];
+           if (op_type == ternary_op)
+             {
+@@ -4385,8 +4463,8 @@
+             }
+ 
+           if (slp_node)
+-            vect_get_slp_defs (op0, op1, slp_node, &vec_oprnds0, &vec_oprnds1,
+-                               -1);
++            vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1,
++                               slp_node, -1);
+           else
+             {
+               loop_vec_def0 = vect_get_vec_def_for_operand (ops[!reduc_index],
+@@ -4404,11 +4482,19 @@
+         {
+           if (!slp_node)
+             {
+-              enum vect_def_type dt = vect_unknown_def_type; /* Dummy */
+-              loop_vec_def0 = vect_get_vec_def_for_stmt_copy (dt, loop_vec_def0);
++              enum vect_def_type dt;
++              gimple dummy_stmt;
++              tree dummy;
++
++              vect_is_simple_use (ops[!reduc_index], loop_vinfo, NULL,
++                                  &dummy_stmt, &dummy, &dt);
++              loop_vec_def0 = vect_get_vec_def_for_stmt_copy (dt,
++                                                              loop_vec_def0);
+               VEC_replace (tree, vec_oprnds0, 0, loop_vec_def0);
+               if (op_type == ternary_op)
+                 {
++                  vect_is_simple_use (op1, loop_vinfo, NULL, &dummy_stmt,
++                                      &dummy, &dt);
+                   loop_vec_def1 = vect_get_vec_def_for_stmt_copy (dt,
+                                                                 loop_vec_def1);
+                   VEC_replace (tree, vec_oprnds1, 0, loop_vec_def1);
+@@ -4713,6 +4799,8 @@
+   tree cond_expr = NULL_TREE;
+   gimple_seq cond_expr_stmt_list = NULL;
+   bool do_peeling_for_loop_bound;
++  gimple stmt, pattern_stmt, pattern_def_stmt;
++  bool transform_pattern_stmt = false, pattern_def = false;
+ 
+   if (vect_print_dump_info (REPORT_DETAILS))
+     fprintf (vect_dump, "=== vec_transform_loop ===");
+@@ -4800,11 +4888,19 @@
+ 	    }
+ 	}
+ 
+-      for (si = gsi_start_bb (bb); !gsi_end_p (si);)
++      pattern_stmt = NULL;
++      for (si = gsi_start_bb (bb); !gsi_end_p (si) || transform_pattern_stmt;)
+ 	{
+-	  gimple stmt = gsi_stmt (si);
+ 	  bool is_store;
+ 
++          if (transform_pattern_stmt)
++            {
++              stmt = pattern_stmt;
++              transform_pattern_stmt = false;
++            }
++          else
++            stmt = gsi_stmt (si);
++
+ 	  if (vect_print_dump_info (REPORT_DETAILS))
+ 	    {
+ 	      fprintf (vect_dump, "------>vectorizing statement: ");
+@@ -4827,14 +4923,54 @@
+ 
+ 	  if (!STMT_VINFO_RELEVANT_P (stmt_info)
+ 	      && !STMT_VINFO_LIVE_P (stmt_info))
+-	    {
+-	      gsi_next (&si);
+-	      continue;
++            {
++              if (STMT_VINFO_IN_PATTERN_P (stmt_info)
++                  && (pattern_stmt = STMT_VINFO_RELATED_STMT (stmt_info))
++                  && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_stmt))
++                      || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_stmt))))
++                {
++                  stmt = pattern_stmt;
++                  stmt_info = vinfo_for_stmt (stmt);
++                }
++              else
++	        {
++   	          gsi_next (&si);
++	          continue;
++                }
+ 	    }
++          else if (STMT_VINFO_IN_PATTERN_P (stmt_info)
++                   && (pattern_stmt = STMT_VINFO_RELATED_STMT (stmt_info))
++                   && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_stmt))
++                       || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_stmt))))
++            transform_pattern_stmt = true;
++
++          /* If pattern statement has a def stmt, vectorize it too.  */
++          if (is_pattern_stmt_p (stmt_info)
++              && (pattern_def_stmt = STMT_VINFO_PATTERN_DEF_STMT (stmt_info))
++              && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_def_stmt))
++                  || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_def_stmt))))
++            {
++              if (pattern_def)
++                pattern_def = false;
++              else
++                {
++                  if (vect_print_dump_info (REPORT_DETAILS))
++                    {
++                      fprintf (vect_dump, "==> vectorizing pattern def"
++                                          " stmt: ");
++                      print_gimple_stmt (vect_dump, pattern_def_stmt, 0,
++                                         TDF_SLIM);
++                    }
++
++                  pattern_def = true;
++                  stmt = pattern_def_stmt;
++                  stmt_info = vinfo_for_stmt (stmt);
++                }
++            }
+ 
+ 	  gcc_assert (STMT_VINFO_VECTYPE (stmt_info));
+-	  nunits =
+-	    (unsigned int) TYPE_VECTOR_SUBPARTS (STMT_VINFO_VECTYPE (stmt_info));
++	  nunits = (unsigned int) TYPE_VECTOR_SUBPARTS (
++                                               STMT_VINFO_VECTYPE (stmt_info));
+ 	  if (!STMT_SLP_TYPE (stmt_info)
+ 	      && nunits != (unsigned int) vectorization_factor
+               && vect_print_dump_info (REPORT_DETAILS))
+@@ -4859,8 +4995,9 @@
+ 	      /* Hybrid SLP stmts must be vectorized in addition to SLP.  */
+ 	      if (!vinfo_for_stmt (stmt) || PURE_SLP_STMT (stmt_info))
+ 		{
+-		  gsi_next (&si);
+-		  continue;
++                  if (!transform_pattern_stmt && !pattern_def)
++ 		    gsi_next (&si);
++  		  continue;
+ 		}
+ 	    }
+ 
+@@ -4879,7 +5016,7 @@
+ 		     the chain.  */
+ 		  vect_remove_stores (DR_GROUP_FIRST_DR (stmt_info));
+ 		  gsi_remove (&si, true);
+-		  continue;
++ 		  continue;
+ 		}
+ 	      else
+ 		{
+@@ -4889,7 +5026,9 @@
+ 		  continue;
+ 		}
+ 	    }
+-	  gsi_next (&si);
++
++          if (!transform_pattern_stmt && !pattern_def)
++ 	    gsi_next (&si);
+ 	}		        /* stmts in BB */
+     }				/* BBs in loop */
+ 
+--- a/src/gcc/tree-vect-loop-manip.c
++++ b/src/gcc/tree-vect-loop-manip.c
+@@ -1105,35 +1105,6 @@
+   first_niters = PHI_RESULT (newphi);
+ }
+ 
+-
+-/* Remove dead assignments from loop NEW_LOOP.  */
+-
+-static void
+-remove_dead_stmts_from_loop (struct loop *new_loop)
+-{
+-  basic_block *bbs = get_loop_body (new_loop);
+-  unsigned i;
+-  for (i = 0; i < new_loop->num_nodes; ++i)
+-    {
+-      gimple_stmt_iterator gsi;
+-      for (gsi = gsi_start_bb (bbs[i]); !gsi_end_p (gsi);)
+-	{
+-	  gimple stmt = gsi_stmt (gsi);
+-	  if (is_gimple_assign (stmt)
+-	      && TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME
+-	      && has_zero_uses (gimple_assign_lhs (stmt)))
+-	    {
+-	      gsi_remove (&gsi, true);
+-	      release_defs (stmt);
+-	    }
+-	  else
+-	    gsi_next (&gsi);
+-	}
+-    }
+-  free (bbs);
+-}
+-
+-
+ /* Function slpeel_tree_peel_loop_to_edge.
+ 
+    Peel the first (last) iterations of LOOP into a new prolog (epilog) loop
+@@ -1445,13 +1416,6 @@
+   BITMAP_FREE (definitions);
+   delete_update_ssa ();
+ 
+-  /* Remove all pattern statements from the loop copy.  They will confuse
+-     the expander if DCE is disabled.
+-     ???  The pattern recognizer should be split into an analysis and
+-     a transformation phase that is then run only on the loop that is
+-     going to be transformed.  */
+-  remove_dead_stmts_from_loop (new_loop);
+-
+   adjust_vec_debug_stmts ();
+ 
+   return new_loop;
+@@ -2008,7 +1972,7 @@
+    If the misalignment of DR is known at compile time:
+      addr_mis = int mis = DR_MISALIGNMENT (dr);
+    Else, compute address misalignment in bytes:
+-     addr_mis = addr & (vectype_size - 1)
++     addr_mis = addr & (vectype_align - 1)
+ 
+    prolog_niters = min (LOOP_NITERS, ((VF - addr_mis/elem_size)&(VF-1))/step)
+ 
+@@ -2065,9 +2029,10 @@
+       tree ptr_type = TREE_TYPE (start_addr);
+       tree size = TYPE_SIZE (ptr_type);
+       tree type = lang_hooks.types.type_for_size (tree_low_cst (size, 1), 1);
+-      tree vectype_size_minus_1 = build_int_cst (type, vectype_align - 1);
+-      tree elem_size_log =
+-        build_int_cst (type, exact_log2 (vectype_align/nelements));
++      tree vectype_align_minus_1 = build_int_cst (type, vectype_align - 1);
++      HOST_WIDE_INT elem_size =
++		int_cst_value (TYPE_SIZE_UNIT (TREE_TYPE (vectype)));
++      tree elem_size_log = build_int_cst (type, exact_log2 (elem_size));
+       tree nelements_minus_1 = build_int_cst (type, nelements - 1);
+       tree nelements_tree = build_int_cst (type, nelements);
+       tree byte_misalign;
+@@ -2076,10 +2041,10 @@
+       new_bb = gsi_insert_seq_on_edge_immediate (pe, new_stmts);
+       gcc_assert (!new_bb);
+ 
+-      /* Create:  byte_misalign = addr & (vectype_size - 1)  */
++      /* Create:  byte_misalign = addr & (vectype_align - 1)  */
+       byte_misalign =
+         fold_build2 (BIT_AND_EXPR, type, fold_convert (type, start_addr), 
+-                     vectype_size_minus_1);
++                     vectype_align_minus_1);
+ 
+       /* Create:  elem_misalign = byte_misalign / element_size  */
+       elem_misalign =
+--- a/src/gcc/tree-vectorizer.h
++++ b/src/gcc/tree-vectorizer.h
+@@ -73,15 +73,15 @@
+ /************************************************************************
+   SLP
+  ************************************************************************/
++typedef void *slp_void_p;
++DEF_VEC_P (slp_void_p);
++DEF_VEC_ALLOC_P (slp_void_p, heap);
+ 
+-/* A computation tree of an SLP instance. Each node corresponds to a group of
++/* A computation tree of an SLP instance.  Each node corresponds to a group of
+    stmts to be packed in a SIMD stmt.  */
+ typedef struct _slp_tree {
+-  /* Only binary and unary operations are supported. LEFT child corresponds to
+-     the first operand and RIGHT child to the second if the operation is
+-     binary.  */
+-  struct _slp_tree *left;
+-  struct _slp_tree *right;
++  /* Nodes that contain def-stmts of this node statements operands.  */
++  VEC (slp_void_p, heap) *children;
+   /* A group of scalar stmts to be vectorized together.  */
+   VEC (gimple, heap) *stmts;
+   /* Vectorized stmt/s.  */
+@@ -146,14 +146,32 @@
+ #define SLP_INSTANCE_LOADS(S)                    (S)->loads
+ #define SLP_INSTANCE_FIRST_LOAD_STMT(S)          (S)->first_load
+ 
+-#define SLP_TREE_LEFT(S)                         (S)->left
+-#define SLP_TREE_RIGHT(S)                        (S)->right
++#define SLP_TREE_CHILDREN(S)                     (S)->children
+ #define SLP_TREE_SCALAR_STMTS(S)                 (S)->stmts
+ #define SLP_TREE_VEC_STMTS(S)                    (S)->vec_stmts
+ #define SLP_TREE_NUMBER_OF_VEC_STMTS(S)          (S)->vec_stmts_size
+ #define SLP_TREE_OUTSIDE_OF_LOOP_COST(S)         (S)->cost.outside_of_loop
+ #define SLP_TREE_INSIDE_OF_LOOP_COST(S)          (S)->cost.inside_of_loop
+ 
++/* This structure is used in creation of an SLP tree.  Each instance
++   corresponds to the same operand in a group of scalar stmts in an SLP
++   node.  */
++typedef struct _slp_oprnd_info
++{
++  /* Def-stmts for the operands.  */
++  VEC (gimple, heap) *def_stmts;
++  /* Information about the first statement, its vector def-type, type, the
++     operand itself in case it's constant, and an indication if it's a pattern
++     stmt.  */
++  enum vect_def_type first_dt;
++  tree first_def_type;
++  tree first_const_oprnd;
++  bool first_pattern;
++} *slp_oprnd_info;
++
++DEF_VEC_P(slp_oprnd_info);
++DEF_VEC_ALLOC_P(slp_oprnd_info, heap);
++
+ 
+ typedef struct _vect_peel_info
+ {
+@@ -464,6 +482,9 @@
+         pattern).  */
+   gimple related_stmt;
+ 
++  /* Used to keep a def stmt of a pattern stmt if such exists.  */
++  gimple pattern_def_stmt;
++
+   /* List of datarefs that are known to have the same alignment as the dataref
+      of this stmt.  */
+   VEC(dr_p,heap) *same_align_refs;
+@@ -531,6 +552,7 @@
+ 
+ #define STMT_VINFO_IN_PATTERN_P(S)         (S)->in_pattern_p
+ #define STMT_VINFO_RELATED_STMT(S)         (S)->related_stmt
++#define STMT_VINFO_PATTERN_DEF_STMT(S)     (S)->pattern_def_stmt
+ #define STMT_VINFO_SAME_ALIGN_REFS(S)      (S)->same_align_refs
+ #define STMT_VINFO_DEF_TYPE(S)             (S)->def_type
+ #define STMT_VINFO_DR_GROUP_FIRST_DR(S)    (S)->first_dr
+@@ -794,9 +816,9 @@
+ extern tree vectorizable_function (gimple, tree, tree);
+ extern void vect_model_simple_cost (stmt_vec_info, int, enum vect_def_type *,
+                                     slp_tree);
+-extern void vect_model_store_cost (stmt_vec_info, int, enum vect_def_type,
+-                                   slp_tree);
+-extern void vect_model_load_cost (stmt_vec_info, int, slp_tree);
++extern void vect_model_store_cost (stmt_vec_info, int, bool,
++				   enum vect_def_type, slp_tree);
++extern void vect_model_load_cost (stmt_vec_info, int, bool, slp_tree);
+ extern void vect_finish_stmt_generation (gimple, gimple,
+                                          gimple_stmt_iterator *);
+ extern bool vect_mark_stmts_to_be_vectorized (loop_vec_info);
+@@ -810,10 +832,13 @@
+ extern void vect_remove_stores (gimple);
+ extern bool vect_analyze_stmt (gimple, bool *, slp_tree);
+ extern bool vectorizable_condition (gimple, gimple_stmt_iterator *, gimple *,
+-                                    tree, int);
++                                    tree, int, slp_tree);
+ extern void vect_get_load_cost (struct data_reference *, int, bool,
+                                 unsigned int *, unsigned int *);
+ extern void vect_get_store_cost (struct data_reference *, int, unsigned int *);
++extern bool vect_supportable_shift (enum tree_code, tree);
++extern void vect_get_vec_defs (tree, tree, gimple, VEC (tree, heap) **,
++			       VEC (tree, heap) **, slp_tree, int);
+ 
+ /* In tree-vect-data-refs.c.  */
+ extern bool vect_can_force_dr_alignment_p (const_tree, unsigned int);
+@@ -829,21 +854,22 @@
+ extern bool vect_analyze_data_ref_accesses (loop_vec_info, bb_vec_info);
+ extern bool vect_prune_runtime_alias_test_list (loop_vec_info);
+ extern bool vect_analyze_data_refs (loop_vec_info, bb_vec_info, int *);
+-extern tree vect_create_data_ref_ptr (gimple, struct loop *, tree, tree *,
+-                                      gimple *, bool, bool *);
++extern tree vect_create_data_ref_ptr (gimple, tree, struct loop *, tree,
++				      tree *, gimple *, bool, bool *);
+ extern tree bump_vector_ptr (tree, gimple, gimple_stmt_iterator *, gimple, tree);
+ extern tree vect_create_destination_var (tree, tree);
+-extern bool vect_strided_store_supported (tree);
+-extern bool vect_strided_load_supported (tree);
+-extern bool vect_permute_store_chain (VEC(tree,heap) *,unsigned int, gimple,
++extern bool vect_strided_store_supported (tree, unsigned HOST_WIDE_INT);
++extern bool vect_store_lanes_supported (tree, unsigned HOST_WIDE_INT);
++extern bool vect_strided_load_supported (tree, unsigned HOST_WIDE_INT);
++extern bool vect_load_lanes_supported (tree, unsigned HOST_WIDE_INT);
++extern void vect_permute_store_chain (VEC(tree,heap) *,unsigned int, gimple,
+                                     gimple_stmt_iterator *, VEC(tree,heap) **);
+ extern tree vect_setup_realignment (gimple, gimple_stmt_iterator *, tree *,
+                                     enum dr_alignment_support, tree,
+                                     struct loop **);
+-extern bool vect_permute_load_chain (VEC(tree,heap) *,unsigned int, gimple,
+-                                    gimple_stmt_iterator *, VEC(tree,heap) **);
+-extern bool vect_transform_strided_load (gimple, VEC(tree,heap) *, int,
++extern void vect_transform_strided_load (gimple, VEC(tree,heap) *, int,
+                                          gimple_stmt_iterator *);
++extern void vect_record_strided_load_vectors (gimple, VEC(tree,heap) *);
+ extern int vect_get_place_in_interleaving_chain (gimple, gimple);
+ extern tree vect_get_new_vect_var (tree, enum vect_var_kind, const char *);
+ extern tree vect_create_addr_base_for_vector_ref (gimple, gimple_seq *,
+@@ -879,8 +905,9 @@
+ extern bool vect_analyze_slp (loop_vec_info, bb_vec_info);
+ extern void vect_make_slp_decision (loop_vec_info);
+ extern void vect_detect_hybrid_slp (loop_vec_info);
+-extern void vect_get_slp_defs (tree, tree, slp_tree, VEC (tree,heap) **,
+-                               VEC (tree,heap) **, int);
++extern void vect_get_slp_defs (VEC (tree, heap) *, slp_tree,
++			       VEC (slp_void_p, heap) **, int);
++
+ extern LOC find_bb_location (basic_block);
+ extern bb_vec_info vect_slp_analyze_bb (basic_block);
+ extern void vect_slp_transform_bb (basic_block);
+@@ -889,9 +916,9 @@
+ /* Pattern recognition functions.
+    Additional pattern recognition functions can (and will) be added
+    in the future.  */
+-typedef gimple (* vect_recog_func_ptr) (gimple, tree *, tree *);
+-#define NUM_PATTERNS 4
+-void vect_pattern_recog (loop_vec_info);
++typedef gimple (* vect_recog_func_ptr) (VEC (gimple, heap) **, tree *, tree *);
++#define NUM_PATTERNS 7 
++void vect_pattern_recog (loop_vec_info, bb_vec_info);
+ 
+ /* In tree-vectorizer.c.  */
+ unsigned vectorize_loops (void);
+--- a/src/gcc/tree-vect-patterns.c
++++ b/src/gcc/tree-vect-patterns.c
+@@ -38,33 +38,94 @@
+ #include "recog.h"
+ #include "diagnostic-core.h"
+ 
+-/* Function prototypes */
+-static void vect_pattern_recog_1
+-  (gimple (* ) (gimple, tree *, tree *), gimple_stmt_iterator);
+-static bool widened_name_p (tree, gimple, tree *, gimple *);
+-
+ /* Pattern recognition functions  */
+-static gimple vect_recog_widen_sum_pattern (gimple, tree *, tree *);
+-static gimple vect_recog_widen_mult_pattern (gimple, tree *, tree *);
+-static gimple vect_recog_dot_prod_pattern (gimple, tree *, tree *);
+-static gimple vect_recog_pow_pattern (gimple, tree *, tree *);
++static gimple vect_recog_widen_sum_pattern (VEC (gimple, heap) **, tree *,
++					    tree *);
++static gimple vect_recog_widen_mult_pattern (VEC (gimple, heap) **, tree *,
++					     tree *);
++static gimple vect_recog_dot_prod_pattern (VEC (gimple, heap) **, tree *,
++					   tree *);
++static gimple vect_recog_pow_pattern (VEC (gimple, heap) **, tree *, tree *);
++static gimple vect_recog_over_widening_pattern (VEC (gimple, heap) **, tree *,
++                                                 tree *);
++static gimple vect_recog_widen_shift_pattern (VEC (gimple, heap) **,
++                                       tree *, tree *);
++static gimple vect_recog_mixed_size_cond_pattern (VEC (gimple, heap) **,
++                                                 tree *, tree *);
+ static vect_recog_func_ptr vect_vect_recog_func_ptrs[NUM_PATTERNS] = {
+ 	vect_recog_widen_mult_pattern,
+ 	vect_recog_widen_sum_pattern,
+ 	vect_recog_dot_prod_pattern,
+-	vect_recog_pow_pattern};
++	vect_recog_pow_pattern,
++	vect_recog_widen_shift_pattern,
++        vect_recog_over_widening_pattern,
++	vect_recog_mixed_size_cond_pattern};
+ 
+ 
+-/* Function widened_name_p
++/* Check whether STMT2 is in the same loop or basic block as STMT1.
++   Which of the two applies depends on whether we're currently doing
++   loop-based or basic-block-based vectorization, as determined by
++   the vinfo_for_stmt for STMT1 (which must be defined).
+ 
+-   Check whether NAME, an ssa-name used in USE_STMT,
+-   is a result of a type-promotion, such that:
+-     DEF_STMT: NAME = NOP (name0)
+-   where the type of name0 (HALF_TYPE) is smaller than the type of NAME.
+-*/
++   If this returns true, vinfo_for_stmt for STMT2 is guaranteed
++   to be defined as well.  */
+ 
+ static bool
+-widened_name_p (tree name, gimple use_stmt, tree *half_type, gimple *def_stmt)
++vect_same_loop_or_bb_p (gimple stmt1, gimple stmt2)
++{
++  stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt1);
++  loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
++  bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_vinfo);
++
++  if (!gimple_bb (stmt2))
++    return false;
++
++  if (loop_vinfo)
++    {
++      struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
++      if (!flow_bb_inside_loop_p (loop, gimple_bb (stmt2)))
++	return false;
++    }
++  else
++    {
++      if (gimple_bb (stmt2) != BB_VINFO_BB (bb_vinfo)
++	  || gimple_code (stmt2) == GIMPLE_PHI)
++	return false;
++    }
++
++  gcc_assert (vinfo_for_stmt (stmt2));
++  return true;
++}
++
++/* If the LHS of DEF_STMT has a single use, and that statement is
++   in the same loop or basic block, return it.  */
++
++static gimple
++vect_single_imm_use (gimple def_stmt)
++{
++  tree lhs = gimple_assign_lhs (def_stmt);
++  use_operand_p use_p;
++  gimple use_stmt;
++
++  if (!single_imm_use (lhs, &use_p, &use_stmt))
++    return NULL;
++
++  if (!vect_same_loop_or_bb_p (def_stmt, use_stmt))
++    return NULL;
++
++  return use_stmt;
++}
++
++/* Check whether NAME, an ssa-name used in USE_STMT,
++   is a result of a type promotion or demotion, such that:
++      DEF_STMT: NAME = NOP (name0)
++   where the type of name0 (ORIG_TYPE) is smaller/bigger than the type of NAME.
++   If CHECK_SIGN is TRUE, check that either both types are signed or both are
++   unsigned.  */
++
++static bool
++type_conversion_p (tree name, gimple use_stmt, bool check_sign,
++                   tree *orig_type, gimple *def_stmt, bool *promotion)
+ {
+   tree dummy;
+   gimple dummy_gimple;
+@@ -74,35 +135,43 @@
+   tree oprnd0;
+   enum vect_def_type dt;
+   tree def;
++  bb_vec_info bb_vinfo;
+ 
+   stmt_vinfo = vinfo_for_stmt (use_stmt);
+   loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
++  bb_vinfo = STMT_VINFO_BB_VINFO (stmt_vinfo);
+ 
+-  if (!vect_is_simple_use (name, loop_vinfo, NULL, def_stmt, &def, &dt))
++  if (!vect_is_simple_use (name, loop_vinfo, bb_vinfo, def_stmt, &def, &dt))
+     return false;
+ 
+   if (dt != vect_internal_def
+       && dt != vect_external_def && dt != vect_constant_def)
+     return false;
+ 
+-  if (! *def_stmt)
++  if (!*def_stmt)
+     return false;
+ 
+   if (!is_gimple_assign (*def_stmt))
+     return false;
+ 
+-  if (gimple_assign_rhs_code (*def_stmt) != NOP_EXPR)
++  if (!CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (*def_stmt)))
+     return false;
+ 
+   oprnd0 = gimple_assign_rhs1 (*def_stmt);
+ 
+-  *half_type = TREE_TYPE (oprnd0);
+-  if (!INTEGRAL_TYPE_P (type) || !INTEGRAL_TYPE_P (*half_type)
+-      || (TYPE_UNSIGNED (type) != TYPE_UNSIGNED (*half_type))
+-      || (TYPE_PRECISION (type) < (TYPE_PRECISION (*half_type) * 2)))
++  *orig_type = TREE_TYPE (oprnd0);
++  if (!INTEGRAL_TYPE_P (type) || !INTEGRAL_TYPE_P (*orig_type)
++      || ((TYPE_UNSIGNED (type) != TYPE_UNSIGNED (*orig_type)) && check_sign))
++    return false;
++
++  if (TYPE_PRECISION (type) >= (TYPE_PRECISION (*orig_type) * 2))
++    *promotion = true;
++  else if (TYPE_PRECISION (*orig_type) >= (TYPE_PRECISION (type) * 2))
++    *promotion = false;
++  else
+     return false;
+ 
+-  if (!vect_is_simple_use (oprnd0, loop_vinfo, NULL, &dummy_gimple, &dummy,
++  if (!vect_is_simple_use (oprnd0, loop_vinfo, bb_vinfo, &dummy_gimple, &dummy,
+                            &dt))
+     return false;
+ 
+@@ -145,9 +214,9 @@
+ 
+    Input:
+ 
+-   * LAST_STMT: A stmt from which the pattern search begins. In the example,
+-   when this function is called with S7, the pattern {S3,S4,S5,S6,S7} will be
+-   detected.
++   * STMTS: Contains a stmt from which the pattern search begins.  In the
++   example, when this function is called with S7, the pattern {S3,S4,S5,S6,S7}
++   will be detected.
+ 
+    Output:
+ 
+@@ -168,9 +237,10 @@
+          inner-loop nested in an outer-loop that us being vectorized).  */
+ 
+ static gimple
+-vect_recog_dot_prod_pattern (gimple last_stmt, tree *type_in, tree *type_out)
++vect_recog_dot_prod_pattern (VEC (gimple, heap) **stmts, tree *type_in,
++			     tree *type_out)
+ {
+-  gimple stmt;
++  gimple stmt, last_stmt = VEC_index (gimple, *stmts, 0);
+   tree oprnd0, oprnd1;
+   tree oprnd00, oprnd01;
+   stmt_vec_info stmt_vinfo = vinfo_for_stmt (last_stmt);
+@@ -178,8 +248,14 @@
+   gimple pattern_stmt;
+   tree prod_type;
+   loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
+-  struct loop *loop = LOOP_VINFO_LOOP (loop_info);
++  struct loop *loop;
+   tree var, rhs;
++  bool promotion;
++
++  if (!loop_info)
++    return NULL;
++
++  loop = LOOP_VINFO_LOOP (loop_info);
+ 
+   if (!is_gimple_assign (last_stmt))
+     return NULL;
+@@ -238,7 +314,9 @@
+         return NULL;
+       stmt = last_stmt;
+ 
+-      if (widened_name_p (oprnd0, stmt, &half_type, &def_stmt))
++      if (type_conversion_p (oprnd0, stmt, true, &half_type, &def_stmt,
++                             &promotion)
++          && promotion)
+         {
+           stmt = def_stmt;
+           oprnd0 = gimple_assign_rhs1 (stmt);
+@@ -293,10 +371,14 @@
+       if (!types_compatible_p (TREE_TYPE (oprnd0), prod_type)
+           || !types_compatible_p (TREE_TYPE (oprnd1), prod_type))
+         return NULL;
+-      if (!widened_name_p (oprnd0, stmt, &half_type0, &def_stmt))
++      if (!type_conversion_p (oprnd0, stmt, true, &half_type0, &def_stmt,
++                              &promotion)
++          || !promotion)
+         return NULL;
+       oprnd00 = gimple_assign_rhs1 (def_stmt);
+-      if (!widened_name_p (oprnd1, stmt, &half_type1, &def_stmt))
++      if (!type_conversion_p (oprnd0, stmt, true, &half_type1, &def_stmt,
++                              &promotion)
++          || !promotion)
+         return NULL;
+       oprnd01 = gimple_assign_rhs1 (def_stmt);
+       if (!types_compatible_p (half_type0, half_type1))
+@@ -327,6 +409,88 @@
+   return pattern_stmt;
+ }
+ 
++
++/* Handle widening operation by a constant.  At the moment we support MULT_EXPR
++   and LSHIFT_EXPR.
++
++   For MULT_EXPR we check that CONST_OPRND fits HALF_TYPE, and for LSHIFT_EXPR
++   we check that CONST_OPRND is less or equal to the size of HALF_TYPE.
++
++   Otherwise, if the type of the result (TYPE) is at least 4 times bigger than
++   HALF_TYPE, and there is an intermediate type (2 times smaller than TYPE)
++   that satisfies the above restrictions,  we can perform a widening opeartion
++   from the intermediate type to TYPE and replace a_T = (TYPE) a_t;
++   with a_it = (interm_type) a_t;  */
++
++static bool
++vect_handle_widen_op_by_const (gimple stmt, enum tree_code code,
++                               tree const_oprnd, tree *oprnd,
++                               VEC (gimple, heap) **stmts, tree type,
++                               tree *half_type, gimple def_stmt)
++{
++  tree new_type, new_oprnd, tmp;
++  gimple new_stmt;
++
++  if (code != MULT_EXPR && code != LSHIFT_EXPR)
++    return false;
++
++  if (((code == MULT_EXPR && int_fits_type_p (const_oprnd, *half_type))
++        || (code == LSHIFT_EXPR
++            && compare_tree_int (const_oprnd, TYPE_PRECISION (*half_type))
++                != 1))
++      && TYPE_PRECISION (type) == (TYPE_PRECISION (*half_type) * 2))
++    {
++      /* CONST_OPRND is a constant of HALF_TYPE.  */
++      *oprnd = gimple_assign_rhs1 (def_stmt);
++      return true;
++    }
++
++  if (TYPE_PRECISION (type) < (TYPE_PRECISION (*half_type) * 4))
++    return false;
++
++  if (!vect_same_loop_or_bb_p (stmt, def_stmt))
++    return false;
++
++  /* TYPE is 4 times bigger than HALF_TYPE, try widening operation for
++     a type 2 times bigger than HALF_TYPE.  */
++  new_type = build_nonstandard_integer_type (TYPE_PRECISION (type) / 2,
++                                             TYPE_UNSIGNED (type));
++  if ((code == MULT_EXPR && !int_fits_type_p (const_oprnd, new_type))
++      || (code == LSHIFT_EXPR
++          && compare_tree_int (const_oprnd, TYPE_PRECISION (new_type)) == 1))
++    return false;
++
++  /* Use NEW_TYPE for widening operation.  */
++  if (STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt)))
++    {
++      new_stmt = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt));
++      /* Check if the already created pattern stmt is what we need.  */
++      if (!is_gimple_assign (new_stmt)
++          || gimple_assign_rhs_code (new_stmt) != NOP_EXPR
++          || TREE_TYPE (gimple_assign_lhs (new_stmt)) != new_type)
++        return false;
++
++      VEC_safe_push (gimple, heap, *stmts, def_stmt);
++      *oprnd = gimple_assign_lhs (new_stmt);
++    }
++  else
++    {
++      /* Create a_T = (NEW_TYPE) a_t;  */
++      *oprnd = gimple_assign_rhs1 (def_stmt);
++      tmp = create_tmp_var (new_type, NULL);
++      add_referenced_var (tmp);
++      new_oprnd = make_ssa_name (tmp, NULL);
++      new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd, *oprnd,
++                                               NULL_TREE);
++      STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt)) = new_stmt;
++      VEC_safe_push (gimple, heap, *stmts, def_stmt);
++      *oprnd = new_oprnd;
++    }
++
++  *half_type = new_type;
++  return true;
++}
++
+ /* Function vect_recog_widen_mult_pattern
+ 
+    Try to find the following pattern:
+@@ -342,37 +506,81 @@
+ 
+    where type 'TYPE' is at least double the size of type 'type'.
+ 
+-   Input:
++   Also detect unsgigned cases:
+ 
+-   * LAST_STMT: A stmt from which the pattern search begins. In the example,
+-   when this function is called with S5, the pattern {S3,S4,S5} is be detected.
++     unsigned type a_t, b_t;
++     unsigned TYPE u_prod_T;
++     TYPE a_T, b_T, prod_T;
++
++     S1  a_t = ;
++     S2  b_t = ;
++     S3  a_T = (TYPE) a_t;
++     S4  b_T = (TYPE) b_t;
++     S5  prod_T = a_T * b_T;
++     S6  u_prod_T = (unsigned TYPE) prod_T;
++
++   and multiplication by constants:
++
++     type a_t;
++     TYPE a_T, prod_T;
++
++     S1  a_t = ;
++     S3  a_T = (TYPE) a_t;
++     S5  prod_T = a_T * CONST;
++
++   A special case of multiplication by constants is when 'TYPE' is 4 times
++   bigger than 'type', but CONST fits an intermediate type 2 times smaller
++   than 'TYPE'.  In that case we create an additional pattern stmt for S3
++   to create a variable of the intermediate type, and perform widen-mult
++   on the intermediate type as well:
++
++     type a_t;
++     interm_type a_it;
++     TYPE a_T, prod_T,  prod_T';
++
++     S1  a_t = ;
++     S3  a_T = (TYPE) a_t;
++           '--> a_it = (interm_type) a_t;
++     S5  prod_T = a_T * CONST;
++           '--> prod_T' = a_it w* CONST;
++
++   Input/Output:
++
++   * STMTS: Contains a stmt from which the pattern search begins.  In the
++   example, when this function is called with S5, the pattern {S3,S4,S5,(S6)}
++   is detected.  In case of unsigned widen-mult, the original stmt (S5) is
++   replaced with S6 in STMTS.  In case of multiplication by a constant
++   of an intermediate type (the last case above), STMTS also contains S3
++   (inserted before S5).
+ 
+    Output:
+ 
+    * TYPE_IN: The type of the input arguments to the pattern.
+ 
+-   * TYPE_OUT: The type of the output  of this pattern.
++   * TYPE_OUT: The type of the output of this pattern.
+ 
+    * Return value: A new stmt that will be used to replace the sequence of
+-   stmts that constitute the pattern. In this case it will be:
++   stmts that constitute the pattern.  In this case it will be:
+         WIDEN_MULT <a_t, b_t>
+ */
+ 
+ static gimple
+-vect_recog_widen_mult_pattern (gimple last_stmt,
+-			       tree *type_in,
+-			       tree *type_out)
++vect_recog_widen_mult_pattern (VEC (gimple, heap) **stmts,
++                               tree *type_in, tree *type_out)
+ {
++  gimple last_stmt = VEC_pop (gimple, *stmts);
+   gimple def_stmt0, def_stmt1;
+   tree oprnd0, oprnd1;
+   tree type, half_type0, half_type1;
+   gimple pattern_stmt;
+-  tree vectype, vectype_out;
++  tree vectype, vectype_out = NULL_TREE;
+   tree dummy;
+   tree var;
+   enum tree_code dummy_code;
+   int dummy_int;
+   VEC (tree, heap) *dummy_vec;
++  bool op1_ok;
++  bool promotion;
+ 
+   if (!is_gimple_assign (last_stmt))
+     return NULL;
+@@ -391,15 +599,58 @@
+       || !types_compatible_p (TREE_TYPE (oprnd1), type))
+     return NULL;
+ 
+-  /* Check argument 0 */
+-  if (!widened_name_p (oprnd0, last_stmt, &half_type0, &def_stmt0))
++  /* Check argument 0.  */
++  if (!type_conversion_p (oprnd0, last_stmt, false, &half_type0, &def_stmt0,
++                          &promotion)
++      || !promotion)
+     return NULL;
+-  oprnd0 = gimple_assign_rhs1 (def_stmt0);
++   /* Check argument 1.  */
++  op1_ok = type_conversion_p (oprnd1, last_stmt, false, &half_type1,
++                              &def_stmt1, &promotion);
++  if (op1_ok && promotion)
++    {
++      oprnd0 = gimple_assign_rhs1 (def_stmt0);
++      oprnd1 = gimple_assign_rhs1 (def_stmt1);
++    }
++  else
++    {
++      if (TREE_CODE (oprnd1) == INTEGER_CST
++          && TREE_CODE (half_type0) == INTEGER_TYPE
++          && vect_handle_widen_op_by_const (last_stmt, MULT_EXPR, oprnd1,
++                                            &oprnd0, stmts, type,
++                                            &half_type0, def_stmt0))
++        half_type1 = half_type0;
++      else
++        return NULL;
++    }
+ 
+-  /* Check argument 1 */
+-  if (!widened_name_p (oprnd1, last_stmt, &half_type1, &def_stmt1))
+-    return NULL;
+-  oprnd1 = gimple_assign_rhs1 (def_stmt1);
++  /* Handle unsigned case.  Look for
++     S6  u_prod_T = (unsigned TYPE) prod_T;
++     Use unsigned TYPE as the type for WIDEN_MULT_EXPR.  */
++  if (TYPE_UNSIGNED (type) != TYPE_UNSIGNED (half_type0))
++    {
++      gimple use_stmt;
++      tree use_lhs;
++      tree use_type;
++
++      if (TYPE_UNSIGNED (type) == TYPE_UNSIGNED (half_type1))
++        return NULL;
++
++      use_stmt = vect_single_imm_use (last_stmt);
++      if (!use_stmt || !is_gimple_assign (use_stmt)
++	  || gimple_assign_rhs_code (use_stmt) != NOP_EXPR)
++        return NULL;
++
++      use_lhs = gimple_assign_lhs (use_stmt);
++      use_type = TREE_TYPE (use_lhs);
++      if (!INTEGRAL_TYPE_P (use_type)
++          || (TYPE_UNSIGNED (type) == TYPE_UNSIGNED (use_type))
++          || (TYPE_PRECISION (type) != TYPE_PRECISION (use_type)))
++        return NULL;
++
++      type = use_type;
++      last_stmt = use_stmt;
++    }
+ 
+   if (!types_compatible_p (half_type0, half_type1))
+     return NULL;
+@@ -431,6 +682,7 @@
+   if (vect_print_dump_info (REPORT_DETAILS))
+     print_gimple_stmt (vect_dump, pattern_stmt, 0, TDF_SLIM);
+ 
++  VEC_safe_push (gimple, heap, *stmts, last_stmt);
+   return pattern_stmt;
+ }
+ 
+@@ -462,8 +714,9 @@
+ */
+ 
+ static gimple
+-vect_recog_pow_pattern (gimple last_stmt, tree *type_in, tree *type_out)
++vect_recog_pow_pattern (VEC (gimple, heap) **stmts, tree *type_in, tree *type_out)
+ {
++  gimple last_stmt = VEC_index (gimple, *stmts, 0);
+   tree fn, base, exp = NULL;
+   gimple stmt;
+   tree var;
+@@ -574,16 +827,24 @@
+ 	 inner-loop nested in an outer-loop that us being vectorized).  */
+ 
+ static gimple
+-vect_recog_widen_sum_pattern (gimple last_stmt, tree *type_in, tree *type_out)
++vect_recog_widen_sum_pattern (VEC (gimple, heap) **stmts, tree *type_in,
++                              tree *type_out)
+ {
++  gimple last_stmt = VEC_index (gimple, *stmts, 0); 
+   gimple stmt;
+   tree oprnd0, oprnd1;
+   stmt_vec_info stmt_vinfo = vinfo_for_stmt (last_stmt);
+   tree type, half_type;
+   gimple pattern_stmt;
+   loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
+-  struct loop *loop = LOOP_VINFO_LOOP (loop_info);
++  struct loop *loop;
+   tree var;
++  bool promotion;
++
++  if (!loop_info)
++    return NULL;
++
++  loop = LOOP_VINFO_LOOP (loop_info);
+ 
+   if (!is_gimple_assign (last_stmt))
+     return NULL;
+@@ -612,14 +873,16 @@
+       || !types_compatible_p (TREE_TYPE (oprnd1), type))
+     return NULL;
+ 
+-  /* So far so good. Since last_stmt was detected as a (summation) reduction,
++  /* So far so good.  Since last_stmt was detected as a (summation) reduction,
+      we know that oprnd1 is the reduction variable (defined by a loop-header
+      phi), and oprnd0 is an ssa-name defined by a stmt in the loop body.
+      Left to check that oprnd0 is defined by a cast from type 'type' to type
+      'TYPE'.  */
+ 
+-  if (!widened_name_p (oprnd0, last_stmt, &half_type, &stmt))
+-    return NULL;
++  if (!type_conversion_p (oprnd0, last_stmt, true, &half_type, &stmt,
++                          &promotion)
++      || !promotion)
++     return NULL;
+ 
+   oprnd0 = gimple_assign_rhs1 (stmt);
+   *type_in = half_type;
+@@ -641,10 +904,715 @@
+      when doing outer-loop vectorization.  */
+   gcc_assert (!nested_in_vect_loop_p (loop, last_stmt));
+ 
++  VEC_safe_push (gimple, heap, *stmts, last_stmt);
+   return pattern_stmt;
+ }
+ 
+ 
++/* Return TRUE if the operation in STMT can be performed on a smaller type.
++
++   Input:
++   STMT - a statement to check.
++   DEF - we support operations with two operands, one of which is constant.
++         The other operand can be defined by a demotion operation, or by a
++         previous statement in a sequence of over-promoted operations.  In the
++         later case DEF is used to replace that operand.  (It is defined by a
++         pattern statement we created for the previous statement in the
++         sequence).
++
++   Input/output:
++   NEW_TYPE - Output: a smaller type that we are trying to use.  Input: if not
++         NULL, it's the type of DEF.
++   STMTS - additional pattern statements.  If a pattern statement (type
++         conversion) is created in this function, its original statement is
++         added to STMTS.
++
++   Output:
++   OP0, OP1 - if the operation fits a smaller type, OP0 and OP1 are the new
++         operands to use in the new pattern statement for STMT (will be created
++         in vect_recog_over_widening_pattern ()).
++   NEW_DEF_STMT - in case DEF has to be promoted, we create two pattern
++         statements for STMT: the first one is a type promotion and the second
++         one is the operation itself.  We return the type promotion statement
++         in NEW_DEF_STMT and further store it in STMT_VINFO_PATTERN_DEF_STMT of
++         the second pattern statement.  */
++
++static bool
++vect_operation_fits_smaller_type (gimple stmt, tree def, tree *new_type,
++                                  tree *op0, tree *op1, gimple *new_def_stmt,
++                                  VEC (gimple, heap) **stmts)
++{
++  enum tree_code code;
++  tree const_oprnd, oprnd;
++  tree interm_type = NULL_TREE, half_type, tmp, new_oprnd, type;
++  gimple def_stmt, new_stmt;
++  bool first = false;
++  bool promotion;
++
++  *new_def_stmt = NULL;
++
++  if (!is_gimple_assign (stmt))
++    return false;
++
++  code = gimple_assign_rhs_code (stmt);
++  if (code != LSHIFT_EXPR && code != RSHIFT_EXPR
++      && code != BIT_IOR_EXPR && code != BIT_XOR_EXPR && code != BIT_AND_EXPR)
++    return false;
++
++  oprnd = gimple_assign_rhs1 (stmt);
++  const_oprnd = gimple_assign_rhs2 (stmt);
++  type = gimple_expr_type (stmt);
++
++  if (TREE_CODE (oprnd) != SSA_NAME
++      || TREE_CODE (const_oprnd) != INTEGER_CST)
++    return false;
++
++  /* If we are in the middle of a sequence, we use DEF from a previous
++     statement.  Otherwise, OPRND has to be a result of type promotion.  */
++  if (*new_type)
++    {
++      half_type = *new_type;
++      oprnd = def;
++    }
++  else
++    {
++      first = true;
++      if (!type_conversion_p (oprnd, stmt, false, &half_type, &def_stmt,
++			      &promotion)
++	  || !promotion
++	  || !vect_same_loop_or_bb_p (stmt, def_stmt))
++        return false;
++    }
++
++  /* Can we perform the operation on a smaller type?  */
++  switch (code)
++    {
++      case BIT_IOR_EXPR:
++      case BIT_XOR_EXPR:
++      case BIT_AND_EXPR:
++        if (!int_fits_type_p (const_oprnd, half_type))
++          {
++            /* HALF_TYPE is not enough.  Try a bigger type if possible.  */
++            if (TYPE_PRECISION (type) < (TYPE_PRECISION (half_type) * 4))
++              return false;
++
++            interm_type = build_nonstandard_integer_type (
++                        TYPE_PRECISION (half_type) * 2, TYPE_UNSIGNED (type));
++            if (!int_fits_type_p (const_oprnd, interm_type))
++              return false;
++          }
++
++        break;
++
++      case LSHIFT_EXPR:
++        /* Try intermediate type - HALF_TYPE is not enough for sure.  */
++        if (TYPE_PRECISION (type) < (TYPE_PRECISION (half_type) * 4))
++          return false;
++
++        /* Check that HALF_TYPE size + shift amount <= INTERM_TYPE size.
++          (e.g., if the original value was char, the shift amount is at most 8
++           if we want to use short).  */
++        if (compare_tree_int (const_oprnd, TYPE_PRECISION (half_type)) == 1)
++          return false;
++
++        interm_type = build_nonstandard_integer_type (
++                        TYPE_PRECISION (half_type) * 2, TYPE_UNSIGNED (type));
++
++        if (!vect_supportable_shift (code, interm_type))
++          return false;
++
++        break;
++
++      case RSHIFT_EXPR:
++        if (vect_supportable_shift (code, half_type))
++          break;
++
++        /* Try intermediate type - HALF_TYPE is not supported.  */
++        if (TYPE_PRECISION (type) < (TYPE_PRECISION (half_type) * 4))
++          return false;
++
++        interm_type = build_nonstandard_integer_type (
++                        TYPE_PRECISION (half_type) * 2, TYPE_UNSIGNED (type));
++
++        if (!vect_supportable_shift (code, interm_type))
++          return false;
++
++        break;
++
++      default:
++        gcc_unreachable ();
++    }
++
++  /* There are four possible cases:
++     1. OPRND is defined by a type promotion (in that case FIRST is TRUE, it's
++        the first statement in the sequence)
++        a. The original, HALF_TYPE, is not enough - we replace the promotion
++           from HALF_TYPE to TYPE with a promotion to INTERM_TYPE.
++        b. HALF_TYPE is sufficient, OPRND is set as the RHS of the original
++           promotion.
++     2. OPRND is defined by a pattern statement we created.
++        a. Its type is not sufficient for the operation, we create a new stmt:
++           a type conversion for OPRND from HALF_TYPE to INTERM_TYPE.  We store
++           this statement in NEW_DEF_STMT, and it is later put in
++           STMT_VINFO_PATTERN_DEF_STMT of the pattern statement for STMT.
++        b. OPRND is good to use in the new statement.  */
++  if (first)
++    {
++      if (interm_type)
++        {
++          /* Replace the original type conversion HALF_TYPE->TYPE with
++             HALF_TYPE->INTERM_TYPE.  */
++          if (STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt)))
++            {
++              new_stmt = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt));
++              /* Check if the already created pattern stmt is what we need.  */
++              if (!is_gimple_assign (new_stmt)
++                  || gimple_assign_rhs_code (new_stmt) != NOP_EXPR
++                  || TREE_TYPE (gimple_assign_lhs (new_stmt)) != interm_type)
++                return false;
++
++              VEC_safe_push (gimple, heap, *stmts, def_stmt);
++              oprnd = gimple_assign_lhs (new_stmt);
++            }
++          else
++            {
++              /* Create NEW_OPRND = (INTERM_TYPE) OPRND.  */
++              oprnd = gimple_assign_rhs1 (def_stmt);
++              tmp = create_tmp_reg (interm_type, NULL);
++              add_referenced_var (tmp);
++              new_oprnd = make_ssa_name (tmp, NULL);
++              new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd,
++                                                       oprnd, NULL_TREE);
++              SSA_NAME_DEF_STMT (new_oprnd) = new_stmt;
++              STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt)) = new_stmt;
++              VEC_safe_push (gimple, heap, *stmts, def_stmt);
++              oprnd = new_oprnd;
++            }
++        }
++      else
++        {
++          /* Retrieve the operand before the type promotion.  */
++          oprnd = gimple_assign_rhs1 (def_stmt);
++        }
++    }
++  else
++    {
++      if (interm_type)
++        {
++          /* Create a type conversion HALF_TYPE->INTERM_TYPE.  */
++          tmp = create_tmp_reg (interm_type, NULL);
++          add_referenced_var (tmp);
++          new_oprnd = make_ssa_name (tmp, NULL);
++          new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd,
++                                                   oprnd, NULL_TREE);
++          SSA_NAME_DEF_STMT (new_oprnd) = new_stmt;
++          oprnd = new_oprnd;
++          *new_def_stmt = new_stmt;
++        }
++
++      /* Otherwise, OPRND is already set.  */
++    }
++
++  if (interm_type)
++    *new_type = interm_type;
++  else
++    *new_type = half_type;
++
++  *op0 = oprnd;
++  *op1 = fold_convert (*new_type, const_oprnd);
++
++  return true;
++}
++
++
++/* Try to find a statement or a sequence of statements that can be performed
++   on a smaller type:
++
++     type x_t;
++     TYPE x_T, res0_T, res1_T;
++   loop:
++     S1  x_t = *p;
++     S2  x_T = (TYPE) x_t;
++     S3  res0_T = op (x_T, C0);
++     S4  res1_T = op (res0_T, C1);
++     S5  ... = () res1_T;  - type demotion
++
++   where type 'TYPE' is at least double the size of type 'type', C0 and C1 are
++   constants.
++   Check if S3 and S4 can be done on a smaller type than 'TYPE', it can either
++   be 'type' or some intermediate type.  For now, we expect S5 to be a type
++   demotion operation.  We also check that S3 and S4 have only one use.
++.
++
++*/
++static gimple
++vect_recog_over_widening_pattern (VEC (gimple, heap) **stmts,
++                                  tree *type_in, tree *type_out)
++{
++  gimple stmt = VEC_pop (gimple, *stmts);
++  gimple pattern_stmt = NULL, new_def_stmt, prev_stmt = NULL, use_stmt = NULL;
++  tree op0, op1, vectype = NULL_TREE, use_lhs, use_type;
++  tree var = NULL_TREE, new_type = NULL_TREE, tmp, new_oprnd;
++  bool first;
++  tree type = NULL;
++
++  first = true;
++  while (1)
++    {
++      if (!vinfo_for_stmt (stmt)
++          || STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (stmt)))
++        return NULL;
++
++      new_def_stmt = NULL;
++      if (!vect_operation_fits_smaller_type (stmt, var, &new_type,
++                                             &op0, &op1, &new_def_stmt,
++                                             stmts))
++        {
++          if (first)
++            return NULL;
++          else
++            break;
++        }
++
++      /* STMT can be performed on a smaller type.  Check its uses.  */
++      use_stmt = vect_single_imm_use (stmt);
++      if (!use_stmt || !is_gimple_assign (use_stmt))
++        return NULL;
++
++      /* Create pattern statement for STMT.  */
++      vectype = get_vectype_for_scalar_type (new_type);
++      if (!vectype)
++        return NULL;
++
++      /* We want to collect all the statements for which we create pattern
++         statetments, except for the case when the last statement in the
++         sequence doesn't have a corresponding pattern statement.  In such
++         case we associate the last pattern statement with the last statement
++         in the sequence.  Therefore, we only add the original statement to
++         the list if we know that it is not the last.  */
++      if (prev_stmt)
++        VEC_safe_push (gimple, heap, *stmts, prev_stmt);
++
++      var = vect_recog_temp_ssa_var (new_type, NULL);
++      pattern_stmt = gimple_build_assign_with_ops (
++                          gimple_assign_rhs_code (stmt), var, op0, op1);
++      SSA_NAME_DEF_STMT (var) = pattern_stmt;
++      STMT_VINFO_RELATED_STMT (vinfo_for_stmt (stmt)) = pattern_stmt;
++      STMT_VINFO_PATTERN_DEF_STMT (vinfo_for_stmt (stmt)) = new_def_stmt;
++
++      if (vect_print_dump_info (REPORT_DETAILS))
++        {
++          fprintf (vect_dump, "created pattern stmt: ");
++          print_gimple_stmt (vect_dump, pattern_stmt, 0, TDF_SLIM);
++        }
++
++      type = gimple_expr_type (stmt);
++      prev_stmt = stmt;
++      stmt = use_stmt;
++
++      first = false;
++    }
++
++  /* We got a sequence.  We expect it to end with a type demotion operation.
++     Otherwise, we quit (for now).  There are three possible cases: the
++     conversion is to NEW_TYPE (we don't do anything), the conversion is to
++     a type bigger than NEW_TYPE and/or the signedness of USE_TYPE and
++     NEW_TYPE differs (we create a new conversion statement).  */
++  if (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (use_stmt)))
++    {
++      use_lhs = gimple_assign_lhs (use_stmt);
++      use_type = TREE_TYPE (use_lhs);
++      /* Support only type demotion or signedess change.  */
++      if (!INTEGRAL_TYPE_P (use_type)
++	  || TYPE_PRECISION (type) <= TYPE_PRECISION (use_type))
++        return NULL;
++
++      /* Check that NEW_TYPE is not bigger than the conversion result.  */
++      if (TYPE_PRECISION (new_type) > TYPE_PRECISION (use_type))
++	return NULL;
++
++      if (TYPE_UNSIGNED (new_type) != TYPE_UNSIGNED (use_type)
++          || TYPE_PRECISION (new_type) != TYPE_PRECISION (use_type))
++        {
++          /* Create NEW_TYPE->USE_TYPE conversion.  */
++          tmp = create_tmp_reg (use_type, NULL);
++          add_referenced_var (tmp);
++          new_oprnd = make_ssa_name (tmp, NULL);
++          pattern_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd,
++                                                       var, NULL_TREE);
++          SSA_NAME_DEF_STMT (new_oprnd) = pattern_stmt;
++          STMT_VINFO_RELATED_STMT (vinfo_for_stmt (use_stmt)) = pattern_stmt;
++
++          *type_in = get_vectype_for_scalar_type (new_type);
++          *type_out = get_vectype_for_scalar_type (use_type);
++
++          /* We created a pattern statement for the last statement in the
++             sequence, so we don't need to associate it with the pattern
++             statement created for PREV_STMT.  Therefore, we add PREV_STMT
++             to the list in order to mark it later in vect_pattern_recog_1.  */
++          if (prev_stmt)
++            VEC_safe_push (gimple, heap, *stmts, prev_stmt);
++        }
++      else
++        {
++          if (prev_stmt)
++            STMT_VINFO_PATTERN_DEF_STMT (vinfo_for_stmt (use_stmt))
++               = STMT_VINFO_PATTERN_DEF_STMT (vinfo_for_stmt (prev_stmt));
++
++          *type_in = vectype;
++          *type_out = NULL_TREE;
++        }
++
++      VEC_safe_push (gimple, heap, *stmts, use_stmt);
++    }
++  else
++    /* TODO: support general case, create a conversion to the correct type.  */
++    return NULL;
++
++  /* Pattern detected.  */
++  if (vect_print_dump_info (REPORT_DETAILS))
++    {
++      fprintf (vect_dump, "vect_recog_over_widening_pattern: detected: ");
++      print_gimple_stmt (vect_dump, pattern_stmt, 0, TDF_SLIM);
++    }
++
++  return pattern_stmt;
++}
++
++
++/* Detect widening shift pattern:
++
++   type a_t;
++   TYPE a_T, res_T;
++
++   S1 a_t = ;
++   S2 a_T = (TYPE) a_t;
++   S3 res_T = a_T << CONST;
++
++  where type 'TYPE' is at least double the size of type 'type'.
++
++  Also detect cases where the shift result is immediately converted
++  to another type 'result_type' that is no larger in size than 'TYPE'.
++  In those cases we perform a widen-shift that directly results in
++  'result_type', to avoid a possible over-widening situation:
++
++  type a_t;
++  TYPE a_T, res_T;
++  result_type res_result;
++
++  S1 a_t = ;
++  S2 a_T = (TYPE) a_t;
++  S3 res_T = a_T << CONST;
++  S4 res_result = (result_type) res_T;
++      '--> res_result' = a_t w<< CONST;
++
++  And a case when 'TYPE' is 4 times bigger than 'type'.  In that case we
++  create an additional pattern stmt for S2 to create a variable of an
++  intermediate type, and perform widen-shift on the intermediate type:
++
++  type a_t;
++  interm_type a_it;
++  TYPE a_T, res_T, res_T';
++
++  S1 a_t = ;
++  S2 a_T = (TYPE) a_t;
++      '--> a_it = (interm_type) a_t;
++  S3 res_T = a_T << CONST;
++      '--> res_T' = a_it <<* CONST;
++
++  Input/Output:
++
++  * STMTS: Contains a stmt from which the pattern search begins.
++    In case of unsigned widen-shift, the original stmt (S3) is replaced with S4
++    in STMTS.  When an intermediate type is used and a pattern statement is
++    created for S2, we also put S2 here (before S3).
++
++  Output:
++
++  * TYPE_IN: The type of the input arguments to the pattern.
++
++  * TYPE_OUT: The type of the output of this pattern.
++
++  * Return value: A new stmt that will be used to replace the sequence of
++    stmts that constitute the pattern.  In this case it will be:
++    WIDEN_LSHIFT_EXPR <a_t, CONST>.  */
++
++static gimple
++vect_recog_widen_shift_pattern (VEC (gimple, heap) **stmts,
++                                tree *type_in, tree *type_out)
++{
++  gimple last_stmt = VEC_pop (gimple, *stmts);
++  gimple def_stmt0;
++  tree oprnd0, oprnd1;
++  tree type, half_type0;
++  gimple pattern_stmt;
++  tree vectype, vectype_out = NULL_TREE;
++  tree dummy;
++  tree var;
++  enum tree_code dummy_code;
++  int dummy_int;
++  VEC (tree, heap) * dummy_vec;
++  gimple use_stmt;
++  bool promotion;
++
++  if (!is_gimple_assign (last_stmt) || !vinfo_for_stmt (last_stmt))
++    return NULL;
++
++  if (STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (last_stmt)))
++    return NULL;
++
++  if (gimple_assign_rhs_code (last_stmt) != LSHIFT_EXPR)
++    return NULL;
++
++  oprnd0 = gimple_assign_rhs1 (last_stmt);
++  oprnd1 = gimple_assign_rhs2 (last_stmt);
++  if (TREE_CODE (oprnd0) != SSA_NAME || TREE_CODE (oprnd1) != INTEGER_CST)
++    return NULL;
++
++  /* Check operand 0: it has to be defined by a type promotion.  */
++  if (!type_conversion_p (oprnd0, last_stmt, false, &half_type0, &def_stmt0,
++                          &promotion)
++      || !promotion)
++     return NULL;
++
++  /* Check operand 1: has to be positive.  We check that it fits the type
++     in vect_handle_widen_op_by_const ().  */
++  if (tree_int_cst_compare (oprnd1, size_zero_node) <= 0)
++    return NULL;
++
++  oprnd0 = gimple_assign_rhs1 (def_stmt0);
++  type = gimple_expr_type (last_stmt);
++
++  /* Check for subsequent conversion to another type.  */
++  use_stmt = vect_single_imm_use (last_stmt);
++  if (use_stmt && is_gimple_assign (use_stmt)
++      && CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (use_stmt))
++      && !STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (use_stmt)))
++    {
++      tree use_lhs = gimple_assign_lhs (use_stmt);
++      tree use_type = TREE_TYPE (use_lhs);
++
++      if (INTEGRAL_TYPE_P (use_type)
++	  && TYPE_PRECISION (use_type) <= TYPE_PRECISION (type))
++	{
++	  last_stmt = use_stmt;
++	  type = use_type;
++	}
++    }
++
++  /* Check if this a widening operation.  */
++  if (!vect_handle_widen_op_by_const (last_stmt, LSHIFT_EXPR, oprnd1,
++                                      &oprnd0, stmts,
++                                      type, &half_type0, def_stmt0))
++    return NULL;
++
++  /* Pattern detected.  */
++  if (vect_print_dump_info (REPORT_DETAILS))
++    fprintf (vect_dump, "vect_recog_widen_shift_pattern: detected: ");
++
++  /* Check target support.  */
++  vectype = get_vectype_for_scalar_type (half_type0);
++  vectype_out = get_vectype_for_scalar_type (type);
++
++  if (!vectype
++      || !vectype_out
++      || !supportable_widening_operation (WIDEN_LSHIFT_EXPR, last_stmt,
++                                          vectype_out, vectype,
++                                          &dummy, &dummy, &dummy_code,
++                                          &dummy_code, &dummy_int,
++                                          &dummy_vec))
++    return NULL;
++
++  *type_in = vectype;
++  *type_out = vectype_out;
++
++  /* Pattern supported.  Create a stmt to be used to replace the pattern.  */
++  var = vect_recog_temp_ssa_var (type, NULL);
++  pattern_stmt =
++    gimple_build_assign_with_ops (WIDEN_LSHIFT_EXPR, var, oprnd0, oprnd1);
++
++  if (vect_print_dump_info (REPORT_DETAILS))
++    print_gimple_stmt (vect_dump, pattern_stmt, 0, TDF_SLIM);
++
++  VEC_safe_push (gimple, heap, *stmts, last_stmt);
++  return pattern_stmt;
++}
++
++/* Function vect_recog_mixed_size_cond_pattern
++
++   Try to find the following pattern:
++
++     type x_t, y_t;
++     TYPE a_T, b_T, c_T;
++   loop:
++     S1  a_T = x_t CMP y_t ? b_T : c_T;
++
++   where type 'TYPE' is an integral type which has different size
++   from 'type'.  b_T and c_T are either constants (and if 'TYPE' is wider
++   than 'type', the constants need to fit into an integer type
++   with the same width as 'type') or results of conversion from 'type'.
++
++   Input:
++
++   * LAST_STMT: A stmt from which the pattern search begins.
++
++   Output:
++
++   * TYPE_IN: The type of the input arguments to the pattern.
++
++   * TYPE_OUT: The type of the output of this pattern.
++
++   * Return value: A new stmt that will be used to replace the pattern.
++	Additionally a def_stmt is added.
++
++	a_it = x_t CMP y_t ? b_it : c_it;
++	a_T = (TYPE) a_it;  */
++
++static gimple
++vect_recog_mixed_size_cond_pattern (VEC (gimple, heap) **stmts, tree *type_in,
++				    tree *type_out)
++{
++  gimple last_stmt = VEC_index (gimple, *stmts, 0);
++  tree cond_expr, then_clause, else_clause;
++  stmt_vec_info stmt_vinfo = vinfo_for_stmt (last_stmt), def_stmt_info;
++  tree type, vectype, comp_vectype, comp_type, op, tmp;
++  enum machine_mode cmpmode;
++  gimple pattern_stmt, def_stmt;
++  loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
++  tree orig_type0 = NULL_TREE, orig_type1 = NULL_TREE;
++  gimple def_stmt0 = NULL, def_stmt1 = NULL;
++  bool promotion;
++  bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_vinfo);
++
++  if (!is_gimple_assign (last_stmt)
++      || gimple_assign_rhs_code (last_stmt) != COND_EXPR
++      || STMT_VINFO_DEF_TYPE (stmt_vinfo) != vect_internal_def)
++    return NULL;
++
++  op = gimple_assign_rhs1 (last_stmt);
++  cond_expr = TREE_OPERAND (op, 0);
++  then_clause = TREE_OPERAND (op, 1);
++  else_clause = TREE_OPERAND (op, 2);
++
++  if (!COMPARISON_CLASS_P (cond_expr))
++    return NULL;
++
++  type = gimple_expr_type (last_stmt);
++  comp_type = TREE_TYPE (TREE_OPERAND (cond_expr, 0));
++  comp_vectype = get_vectype_for_scalar_type (comp_type);
++  if (comp_vectype == NULL_TREE)
++    return NULL;
++
++  if (types_compatible_p (type, comp_type)
++      || !INTEGRAL_TYPE_P (comp_type)
++      || !INTEGRAL_TYPE_P (type))
++    return NULL;
++
++  if ((TREE_CODE (then_clause) != INTEGER_CST
++       && !type_conversion_p (then_clause, last_stmt, false, &orig_type0,
++			      &def_stmt0, &promotion))
++      || (TREE_CODE (else_clause) != INTEGER_CST
++	  && !type_conversion_p (else_clause, last_stmt, false, &orig_type1,
++				 &def_stmt1, &promotion)))
++    return NULL;
++
++  if (orig_type0 && orig_type1
++      && (!types_compatible_p (orig_type0, orig_type1)
++	  || !types_compatible_p (orig_type0, comp_type)))
++    return NULL;
++
++  if (orig_type0)
++    then_clause = gimple_assign_rhs1 (def_stmt0);
++
++  if (orig_type1)
++    else_clause = gimple_assign_rhs1 (def_stmt1);
++
++  cmpmode = GET_MODE_INNER (TYPE_MODE (comp_vectype));
++  if (GET_MODE_BITSIZE (TYPE_MODE (type)) == GET_MODE_BITSIZE (cmpmode))
++    return NULL;
++
++  vectype = get_vectype_for_scalar_type (type);
++  if (vectype == NULL_TREE)
++    return NULL;
++
++  if (!expand_vec_cond_expr_p (comp_vectype, TYPE_MODE (comp_vectype)))
++    return NULL;
++
++  if (GET_MODE_BITSIZE (TYPE_MODE (type)) > GET_MODE_BITSIZE (cmpmode)
++      && ((TREE_CODE (then_clause) == INTEGER_CST
++           && !int_fits_type_p (then_clause, comp_type))
++          || (TREE_CODE (else_clause) == INTEGER_CST
++              && !int_fits_type_p (else_clause, comp_type))))
++    return NULL;
++
++  tmp = build3 (COND_EXPR, comp_type, unshare_expr (cond_expr),
++		fold_convert (comp_type, then_clause),
++	       	fold_convert (comp_type, else_clause));
++  def_stmt = gimple_build_assign (vect_recog_temp_ssa_var (comp_type, NULL),
++				  tmp);
++
++  pattern_stmt
++    = gimple_build_assign_with_ops (NOP_EXPR,
++				    vect_recog_temp_ssa_var (type, NULL),
++				    gimple_assign_lhs (def_stmt), NULL_TREE);
++
++  STMT_VINFO_PATTERN_DEF_STMT (stmt_vinfo) = def_stmt;
++  def_stmt_info = new_stmt_vec_info (def_stmt, loop_vinfo, bb_vinfo);
++  set_vinfo_for_stmt (def_stmt, def_stmt_info);
++  STMT_VINFO_VECTYPE (def_stmt_info) = comp_vectype;
++  *type_in = vectype;
++  *type_out = vectype;
++
++  if (vect_print_dump_info (REPORT_DETAILS))
++    fprintf (vect_dump, "vect_recog_mixed_size_cond_pattern: detected: ");
++
++  return pattern_stmt;
++}
++
++
++/* Mark statements that are involved in a pattern.  */
++
++static inline void
++vect_mark_pattern_stmts (gimple orig_stmt, gimple pattern_stmt,
++                         tree pattern_vectype)
++{
++  stmt_vec_info pattern_stmt_info, def_stmt_info;
++  stmt_vec_info orig_stmt_info = vinfo_for_stmt (orig_stmt);
++  loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (orig_stmt_info);
++  bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (orig_stmt_info);
++  gimple def_stmt;
++
++  set_vinfo_for_stmt (pattern_stmt,
++                      new_stmt_vec_info (pattern_stmt, loop_vinfo, bb_vinfo));
++  gimple_set_bb (pattern_stmt, gimple_bb (orig_stmt));
++  pattern_stmt_info = vinfo_for_stmt (pattern_stmt);
++
++  STMT_VINFO_RELATED_STMT (pattern_stmt_info) = orig_stmt;
++  STMT_VINFO_DEF_TYPE (pattern_stmt_info)
++	= STMT_VINFO_DEF_TYPE (orig_stmt_info);
++  STMT_VINFO_VECTYPE (pattern_stmt_info) = pattern_vectype;
++  STMT_VINFO_IN_PATTERN_P (orig_stmt_info) = true;
++  STMT_VINFO_RELATED_STMT (orig_stmt_info) = pattern_stmt;
++  STMT_VINFO_PATTERN_DEF_STMT (pattern_stmt_info)
++	= STMT_VINFO_PATTERN_DEF_STMT (orig_stmt_info);
++  if (STMT_VINFO_PATTERN_DEF_STMT (pattern_stmt_info))
++    {
++      def_stmt = STMT_VINFO_PATTERN_DEF_STMT (pattern_stmt_info);
++      def_stmt_info = vinfo_for_stmt (def_stmt);
++      if (def_stmt_info == NULL)
++	{
++	  def_stmt_info = new_stmt_vec_info (def_stmt, loop_vinfo, bb_vinfo);
++	  set_vinfo_for_stmt (def_stmt, def_stmt_info);
++	}
++      gimple_set_bb (def_stmt, gimple_bb (orig_stmt));
++      STMT_VINFO_RELATED_STMT (def_stmt_info) = orig_stmt;
++      STMT_VINFO_DEF_TYPE (def_stmt_info)
++	= STMT_VINFO_DEF_TYPE (orig_stmt_info);
++      if (STMT_VINFO_VECTYPE (def_stmt_info) == NULL_TREE)
++	STMT_VINFO_VECTYPE (def_stmt_info) = pattern_vectype;
++    }
++}
++
+ /* Function vect_pattern_recog_1
+ 
+    Input:
+@@ -669,29 +1637,33 @@
+ 
+ static void
+ vect_pattern_recog_1 (
+-	gimple (* vect_recog_func) (gimple, tree *, tree *),
+-	gimple_stmt_iterator si)
++	gimple (* vect_recog_func) (VEC (gimple, heap) **, tree *, tree *),
++	gimple_stmt_iterator si,
++	VEC (gimple, heap) **stmts_to_replace)
+ {
+   gimple stmt = gsi_stmt (si), pattern_stmt;
+-  stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+-  stmt_vec_info pattern_stmt_info;
+-  loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
++  stmt_vec_info stmt_info;
++  loop_vec_info loop_vinfo;
+   tree pattern_vectype;
+   tree type_in, type_out;
+   enum tree_code code;
+   int i;
+   gimple next;
+ 
+-  pattern_stmt = (* vect_recog_func) (stmt, &type_in, &type_out);
++  VEC_truncate (gimple, *stmts_to_replace, 0);
++  VEC_quick_push (gimple, *stmts_to_replace, stmt);
++  pattern_stmt = (* vect_recog_func) (stmts_to_replace, &type_in, &type_out);
+   if (!pattern_stmt)
+     return;
+ 
++  stmt = VEC_last (gimple, *stmts_to_replace);
++  stmt_info = vinfo_for_stmt (stmt);
++  loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
++ 
+   if (VECTOR_MODE_P (TYPE_MODE (type_in)))
+     {
+       /* No need to check target support (already checked by the pattern
+          recognition function).  */
+-      if (type_out)
+-	gcc_assert (VECTOR_MODE_P (TYPE_MODE (type_out)));
+       pattern_vectype = type_out ? type_out : type_in;
+     }
+   else
+@@ -736,22 +1708,32 @@
+     }
+ 
+   /* Mark the stmts that are involved in the pattern. */
+-  gsi_insert_before (&si, pattern_stmt, GSI_SAME_STMT);
+-  set_vinfo_for_stmt (pattern_stmt,
+-		      new_stmt_vec_info (pattern_stmt, loop_vinfo, NULL));
+-  pattern_stmt_info = vinfo_for_stmt (pattern_stmt);
+-
+-  STMT_VINFO_RELATED_STMT (pattern_stmt_info) = stmt;
+-  STMT_VINFO_DEF_TYPE (pattern_stmt_info) = STMT_VINFO_DEF_TYPE (stmt_info);
+-  STMT_VINFO_VECTYPE (pattern_stmt_info) = pattern_vectype;
+-  STMT_VINFO_IN_PATTERN_P (stmt_info) = true;
+-  STMT_VINFO_RELATED_STMT (stmt_info) = pattern_stmt;
++  vect_mark_pattern_stmts (stmt, pattern_stmt, pattern_vectype);
+ 
+   /* Patterns cannot be vectorized using SLP, because they change the order of
+      computation.  */
+-  FOR_EACH_VEC_ELT (gimple, LOOP_VINFO_REDUCTIONS (loop_vinfo), i, next)
+-    if (next == stmt)
+-      VEC_ordered_remove (gimple, LOOP_VINFO_REDUCTIONS (loop_vinfo), i); 
++  if (loop_vinfo)
++    FOR_EACH_VEC_ELT (gimple, LOOP_VINFO_REDUCTIONS (loop_vinfo), i, next)
++      if (next == stmt)
++        VEC_ordered_remove (gimple, LOOP_VINFO_REDUCTIONS (loop_vinfo), i);
++
++  /* It is possible that additional pattern stmts are created and inserted in
++     STMTS_TO_REPLACE.  We create a stmt_info for each of them, and mark the
++     relevant statements.  */
++  for (i = 0; VEC_iterate (gimple, *stmts_to_replace, i, stmt)
++	      && (unsigned) i < (VEC_length (gimple, *stmts_to_replace) - 1);
++       i++)
++    {
++      stmt_info = vinfo_for_stmt (stmt);
++      pattern_stmt = STMT_VINFO_RELATED_STMT (stmt_info);
++      if (vect_print_dump_info (REPORT_DETAILS))
++        {
++          fprintf (vect_dump, "additional pattern stmt: ");
++          print_gimple_stmt (vect_dump, pattern_stmt, 0, TDF_SLIM);
++        }
++
++      vect_mark_pattern_stmts (stmt, pattern_stmt, NULL_TREE);
++    }
+ }
+ 
+ 
+@@ -761,8 +1743,8 @@
+    LOOP_VINFO - a struct_loop_info of a loop in which we want to look for
+         computation idioms.
+ 
+-   Output - for each computation idiom that is detected we insert a new stmt
+-        that provides the same functionality and that can be vectorized. We
++   Output - for each computation idiom that is detected we create a new stmt
++        that provides the same functionality and that can be vectorized.  We
+         also record some information in the struct_stmt_info of the relevant
+         stmts, as explained below:
+ 
+@@ -777,79 +1759,113 @@
+          S5: ... = ..use(a_0)..         -       -               -
+ 
+    Say the sequence {S1,S2,S3,S4} was detected as a pattern that can be
+-   represented by a single stmt. We then:
+-   - create a new stmt S6 that will replace the pattern.
+-   - insert the new stmt S6 before the last stmt in the pattern
++   represented by a single stmt.  We then:
++   - create a new stmt S6 equivalent to the pattern (the stmt is not
++     inserted into the code)
+    - fill in the STMT_VINFO fields as follows:
+ 
+                                   in_pattern_p  related_stmt    vec_stmt
+          S1: a_i = ....                 -       -               -
+          S2: a_2 = ..use(a_i)..         -       -               -
+          S3: a_1 = ..use(a_2)..         -       -               -
+-       > S6: a_new = ....               -       S4              -
+          S4: a_0 = ..use(a_1)..         true    S6              -
++          '---> S6: a_new = ....        -       S4              -
+          S5: ... = ..use(a_0)..         -       -               -
+ 
+    (the last stmt in the pattern (S4) and the new pattern stmt (S6) point
+-    to each other through the RELATED_STMT field).
++   to each other through the RELATED_STMT field).
+ 
+    S6 will be marked as relevant in vect_mark_stmts_to_be_vectorized instead
+    of S4 because it will replace all its uses.  Stmts {S1,S2,S3} will
+    remain irrelevant unless used by stmts other than S4.
+ 
+    If vectorization succeeds, vect_transform_stmt will skip over {S1,S2,S3}
+-   (because they are marked as irrelevant). It will vectorize S6, and record
+-   a pointer to the new vector stmt VS6 both from S6 (as usual), and also
+-   from S4. We do that so that when we get to vectorizing stmts that use the
+-   def of S4 (like S5 that uses a_0), we'll know where to take the relevant
+-   vector-def from. S4 will be skipped, and S5 will be vectorized as usual:
++   (because they are marked as irrelevant).  It will vectorize S6, and record
++   a pointer to the new vector stmt VS6 from S6 (as usual).
++   S4 will be skipped, and S5 will be vectorized as usual:
+ 
+                                   in_pattern_p  related_stmt    vec_stmt
+          S1: a_i = ....                 -       -               -
+          S2: a_2 = ..use(a_i)..         -       -               -
+          S3: a_1 = ..use(a_2)..         -       -               -
+        > VS6: va_new = ....             -       -               -
+-         S6: a_new = ....               -       S4              VS6
+          S4: a_0 = ..use(a_1)..         true    S6              VS6
++          '---> S6: a_new = ....        -       S4              VS6
+        > VS5: ... = ..vuse(va_new)..    -       -               -
+          S5: ... = ..use(a_0)..         -       -               -
+ 
+-   DCE could then get rid of {S1,S2,S3,S4,S5,S6} (if their defs are not used
++   DCE could then get rid of {S1,S2,S3,S4,S5} (if their defs are not used
+    elsewhere), and we'll end up with:
+ 
+         VS6: va_new = ....
+-        VS5: ... = ..vuse(va_new)..
++        VS5: ... = ..vuse(va_new)..  
+ 
+-   If vectorization does not succeed, DCE will clean S6 away (its def is
+-   not used), and we'll end up with the original sequence.
+-*/
++   In case of more than one pattern statements, e.g., widen-mult with
++   intermediate type:
++
++     S1  a_t = ;
++     S2  a_T = (TYPE) a_t;
++           '--> S3: a_it = (interm_type) a_t;
++     S4  prod_T = a_T * CONST;
++           '--> S5: prod_T' = a_it w* CONST;
++   
++   there may be other users of a_T outside the pattern. In that case S2 will
++   be marked as relevant (as well as S3), and both S2 and S3 will be analyzed
++   and vectorized.  The vector stmt VS2 will be recorded in S2, and VS3 will
++   be recorded in S3.  */
+ 
+ void
+-vect_pattern_recog (loop_vec_info loop_vinfo)
++vect_pattern_recog (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
+ {
+-  struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
+-  basic_block *bbs = LOOP_VINFO_BBS (loop_vinfo);
+-  unsigned int nbbs = loop->num_nodes;
++  struct loop *loop;
++  basic_block *bbs, bb;
++  unsigned int nbbs;
+   gimple_stmt_iterator si;
+   unsigned int i, j;
+-  gimple (* vect_recog_func_ptr) (gimple, tree *, tree *);
++  gimple (* vect_recog_func_ptr) (VEC (gimple, heap) **, tree *, tree *);
++  VEC (gimple, heap) *stmts_to_replace = VEC_alloc (gimple, heap, 1);
++  gimple stmt;
+ 
+   if (vect_print_dump_info (REPORT_DETAILS))
+     fprintf (vect_dump, "=== vect_pattern_recog ===");
+ 
+-  /* Scan through the loop stmts, applying the pattern recognition
++  if (loop_vinfo)
++    {
++      loop = LOOP_VINFO_LOOP (loop_vinfo);
++      bbs = LOOP_VINFO_BBS (loop_vinfo);
++      nbbs = loop->num_nodes;
++    }
++  else
++    {
++      bb = BB_VINFO_BB (bb_vinfo);
++      nbbs = 1;
++      bbs = XNEW (basic_block);
++      bbs[0] = bb;
++    }
++
++  /* Scan through the stmts, applying the pattern recognition
+      functions starting at each stmt visited:  */
+   for (i = 0; i < nbbs; i++)
+     {
+       basic_block bb = bbs[i];
+       for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
+         {
++	  if (bb_vinfo && (stmt = gsi_stmt (si))
++	      && vinfo_for_stmt (stmt)
++	      && !STMT_VINFO_VECTORIZABLE (vinfo_for_stmt (stmt)))
++	   continue;
++
+           /* Scan over all generic vect_recog_xxx_pattern functions.  */
+           for (j = 0; j < NUM_PATTERNS; j++)
+             {
+               vect_recog_func_ptr = vect_vect_recog_func_ptrs[j];
+-              vect_pattern_recog_1 (vect_recog_func_ptr, si);
++	      vect_pattern_recog_1 (vect_recog_func_ptr, si,
++				    &stmts_to_replace);
+             }
+         }
+     }
++
++  VEC_free (gimple, heap, stmts_to_replace);
++  if (bb_vinfo)
++    free (bbs);
+ }
+--- a/src/gcc/tree-vect-slp.c
++++ b/src/gcc/tree-vect-slp.c
+@@ -67,15 +67,16 @@
+ static void
+ vect_free_slp_tree (slp_tree node)
+ {
++  int i;
++  slp_void_p child;
++
+   if (!node)
+     return;
+ 
+-  if (SLP_TREE_LEFT (node))
+-    vect_free_slp_tree (SLP_TREE_LEFT (node));
+-
+-  if (SLP_TREE_RIGHT (node))
+-    vect_free_slp_tree (SLP_TREE_RIGHT (node));
++  FOR_EACH_VEC_ELT (slp_void_p, SLP_TREE_CHILDREN (node), i, child)
++    vect_free_slp_tree ((slp_tree) child);
+ 
++  VEC_free (slp_void_p, heap, SLP_TREE_CHILDREN (node));
+   VEC_free (gimple, heap, SLP_TREE_SCALAR_STMTS (node));
+ 
+   if (SLP_TREE_VEC_STMTS (node))
+@@ -96,46 +97,151 @@
+ }
+ 
+ 
+-/* Get the defs for the rhs of STMT (collect them in DEF_STMTS0/1), check that
+-   they are of a legal type and that they match the defs of the first stmt of
+-   the SLP group (stored in FIRST_STMT_...).  */
++/* Create an SLP node for SCALAR_STMTS.  */
++
++static slp_tree
++vect_create_new_slp_node (VEC (gimple, heap) *scalar_stmts)
++{
++  slp_tree node;
++  gimple stmt = VEC_index (gimple, scalar_stmts, 0);
++  unsigned int nops;
++
++  if (is_gimple_call (stmt))
++    nops = gimple_call_num_args (stmt);
++  else if (is_gimple_assign (stmt))
++    {
++      nops = gimple_num_ops (stmt) - 1;
++      if (gimple_assign_rhs_code (stmt) == COND_EXPR)
++	nops = 4;
++    }
++  else
++    return NULL;
++
++  node = XNEW (struct _slp_tree);
++  SLP_TREE_SCALAR_STMTS (node) = scalar_stmts;
++  SLP_TREE_VEC_STMTS (node) = NULL;
++  SLP_TREE_CHILDREN (node) = VEC_alloc (slp_void_p, heap, nops);
++  SLP_TREE_OUTSIDE_OF_LOOP_COST (node) = 0;
++  SLP_TREE_INSIDE_OF_LOOP_COST (node) = 0;
++
++  return node;
++}
++
++
++/* Allocate operands info for NOPS operands, and GROUP_SIZE def-stmts for each
++   operand.  */
++static VEC (slp_oprnd_info, heap) *
++vect_create_oprnd_info (int nops, int group_size)
++{
++  int i;
++  slp_oprnd_info oprnd_info;
++  VEC (slp_oprnd_info, heap) *oprnds_info;
++
++  oprnds_info = VEC_alloc (slp_oprnd_info, heap, nops);
++  for (i = 0; i < nops; i++)
++    {
++      oprnd_info = XNEW (struct _slp_oprnd_info);
++      oprnd_info->def_stmts = VEC_alloc (gimple, heap, group_size);
++      oprnd_info->first_dt = vect_uninitialized_def;
++      oprnd_info->first_def_type = NULL_TREE;
++      oprnd_info->first_const_oprnd = NULL_TREE;
++      oprnd_info->first_pattern = false;
++      VEC_quick_push (slp_oprnd_info, oprnds_info, oprnd_info);
++    }
++
++  return oprnds_info;
++}
++
++
++/* Free operands info.  */
++
++static void
++vect_free_oprnd_info (VEC (slp_oprnd_info, heap) **oprnds_info)
++{
++  int i;
++  slp_oprnd_info oprnd_info;
++
++  FOR_EACH_VEC_ELT (slp_oprnd_info, *oprnds_info, i, oprnd_info)
++    {
++      VEC_free (gimple, heap, oprnd_info->def_stmts);
++      XDELETE (oprnd_info);
++    }
++
++  VEC_free (slp_oprnd_info, heap, *oprnds_info);
++}
++
++
++/* Get the defs for the rhs of STMT (collect them in OPRNDS_INFO), check that
++   they are of a valid type and that they match the defs of the first stmt of
++   the SLP group (stored in OPRNDS_INFO).  */
+ 
+ static bool
+ vect_get_and_check_slp_defs (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
+                              slp_tree slp_node, gimple stmt,
+-			     VEC (gimple, heap) **def_stmts0,
+-			     VEC (gimple, heap) **def_stmts1,
+-			     enum vect_def_type *first_stmt_dt0,
+-			     enum vect_def_type *first_stmt_dt1,
+-			     tree *first_stmt_def0_type,
+-			     tree *first_stmt_def1_type,
+-			     tree *first_stmt_const_oprnd,
+-			     int ncopies_for_cost,
+-                             bool *pattern0, bool *pattern1)
++			     int ncopies_for_cost, bool first,
++                             VEC (slp_oprnd_info, heap) **oprnds_info)
+ {
+   tree oprnd;
+   unsigned int i, number_of_oprnds;
+-  tree def;
++  tree def, def_op0 = NULL_TREE;
+   gimple def_stmt;
+-  enum vect_def_type dt[2] = {vect_unknown_def_type, vect_unknown_def_type};
+-  stmt_vec_info stmt_info =
+-    vinfo_for_stmt (VEC_index (gimple, SLP_TREE_SCALAR_STMTS (slp_node), 0));
+-  enum gimple_rhs_class rhs_class;
++  enum vect_def_type dt = vect_uninitialized_def;
++  enum vect_def_type dt_op0 = vect_uninitialized_def;
++  stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
++  tree lhs = gimple_get_lhs (stmt);
+   struct loop *loop = NULL;
++  enum tree_code rhs_code;
++  bool different_types = false;
++  bool pattern = false;
++  slp_oprnd_info oprnd_info, oprnd0_info, oprnd1_info;
++  int op_idx = 1;
++  tree compare_rhs = NULL_TREE, rhs = NULL_TREE;
++  int cond_idx = -1;
+ 
+   if (loop_vinfo)
+     loop = LOOP_VINFO_LOOP (loop_vinfo);
+ 
+-  rhs_class = get_gimple_rhs_class (gimple_assign_rhs_code (stmt));
+-  number_of_oprnds = gimple_num_ops (stmt) - 1;	/* RHS only */
++  if (is_gimple_call (stmt))
++    number_of_oprnds = gimple_call_num_args (stmt);
++  else if (is_gimple_assign (stmt))
++    {
++      number_of_oprnds = gimple_num_ops (stmt) - 1;
++      if (gimple_assign_rhs_code (stmt) == COND_EXPR)
++	{ 	      
++          number_of_oprnds = 4;
++	  cond_idx = 0;
++	  rhs = gimple_assign_rhs1 (stmt);
++	}	  
++    }
++  else
++    return false;
+ 
+   for (i = 0; i < number_of_oprnds; i++)
+     {
+-      oprnd = gimple_op (stmt, i + 1);
++      if (compare_rhs)
++	oprnd = compare_rhs;
++      else
++        oprnd = gimple_op (stmt, op_idx++);
++
++      oprnd_info = VEC_index (slp_oprnd_info, *oprnds_info, i);
++
++      if (-1 < cond_idx && cond_idx < 4)
++	{
++  	  if (compare_rhs)
++	    compare_rhs = NULL_TREE;
++	  else	  
++	    oprnd = TREE_OPERAND (rhs, cond_idx++);
++	}
++		      
++      if (COMPARISON_CLASS_P (oprnd))
++        {
++          compare_rhs = TREE_OPERAND (oprnd, 1);
++          oprnd = TREE_OPERAND (oprnd, 0);
++	}
+ 
+       if (!vect_is_simple_use (oprnd, loop_vinfo, bb_vinfo, &def_stmt, &def,
+-                               &dt[i])
+-	  || (!def_stmt && dt[i] != vect_constant_def))
++                               &dt)
++	  || (!def_stmt && dt != vect_constant_def))
+ 	{
+ 	  if (vect_print_dump_info (REPORT_SLP))
+ 	    {
+@@ -149,34 +255,32 @@
+       /* Check if DEF_STMT is a part of a pattern in LOOP and get the def stmt
+          from the pattern.  Check that all the stmts of the node are in the
+          pattern.  */
+-      if (loop && def_stmt && gimple_bb (def_stmt)
+-          && flow_bb_inside_loop_p (loop, gimple_bb (def_stmt))
++      if (def_stmt && gimple_bb (def_stmt)
++          && ((loop && flow_bb_inside_loop_p (loop, gimple_bb (def_stmt)))
++	      || (!loop && gimple_bb (def_stmt) == BB_VINFO_BB (bb_vinfo)
++		  && gimple_code (def_stmt) != GIMPLE_PHI))
+           && vinfo_for_stmt (def_stmt)
+-          && STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (def_stmt)))
++          && STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (def_stmt))
++	  && !STMT_VINFO_RELEVANT (vinfo_for_stmt (def_stmt))
++	  && !STMT_VINFO_LIVE_P (vinfo_for_stmt (def_stmt)))
+         {
+-          if (!*first_stmt_dt0)
+-            *pattern0 = true;
+-          else
+-            {
+-              if (i == 1 && !*first_stmt_dt1)
+-                *pattern1 = true;
+-              else if ((i == 0 && !*pattern0) || (i == 1 && !*pattern1))
+-                {
+-                  if (vect_print_dump_info (REPORT_DETAILS))
+-                    {
+-                      fprintf (vect_dump, "Build SLP failed: some of the stmts"
+-                                     " are in a pattern, and others are not ");
+-                      print_generic_expr (vect_dump, oprnd, TDF_SLIM);
+-                    }
++          pattern = true;
++          if (!first && !oprnd_info->first_pattern)
++	    {
++	      if (vect_print_dump_info (REPORT_DETAILS))
++		{
++		  fprintf (vect_dump, "Build SLP failed: some of the stmts"
++				" are in a pattern, and others are not ");
++		  print_generic_expr (vect_dump, oprnd, TDF_SLIM);
++		}
+ 
+-                  return false;
+-                }
++	      return false;
+             }
+ 
+           def_stmt = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (def_stmt));
+-          dt[i] = STMT_VINFO_DEF_TYPE (vinfo_for_stmt (def_stmt));
++          dt = STMT_VINFO_DEF_TYPE (vinfo_for_stmt (def_stmt));
+ 
+-          if (*dt == vect_unknown_def_type)
++          if (dt == vect_unknown_def_type)
+             {
+               if (vect_print_dump_info (REPORT_DETAILS))
+                 fprintf (vect_dump, "Unsupported pattern.");
+@@ -200,85 +304,125 @@
+             }
+         }
+ 
+-      if (!*first_stmt_dt0)
++      if (first)
+ 	{
+-	  /* op0 of the first stmt of the group - store its info.  */
+-	  *first_stmt_dt0 = dt[i];
+-	  if (def)
+-	    *first_stmt_def0_type = TREE_TYPE (def);
+-	  else
+-	    *first_stmt_const_oprnd = oprnd;
++          oprnd_info->first_dt = dt;
++          oprnd_info->first_pattern = pattern;
++          if (def)
++            {
++              oprnd_info->first_def_type = TREE_TYPE (def);
++              oprnd_info->first_const_oprnd = NULL_TREE;
++            }
++          else
++            {
++              oprnd_info->first_def_type = NULL_TREE;
++              oprnd_info->first_const_oprnd = oprnd;
++            }
+ 
+-	  /* Analyze costs (for the first stmt of the group only).  */
+-	  if (rhs_class != GIMPLE_SINGLE_RHS)
+-	    /* Not memory operation (we don't call this functions for loads).  */
+-	    vect_model_simple_cost (stmt_info, ncopies_for_cost, dt, slp_node);
+-	  else
+-	    /* Store.  */
+-	    vect_model_store_cost (stmt_info, ncopies_for_cost, dt[0], slp_node);
++          if (i == 0)
++            {
++              def_op0 = def;
++              dt_op0 = dt;
++              /* Analyze costs (for the first stmt of the group only).  */
++              if (REFERENCE_CLASS_P (lhs))
++                /* Store.  */
++                vect_model_store_cost (stmt_info, ncopies_for_cost, false,
++                                       dt, slp_node);
++              else
++                /* Not memory operation (we don't call this function for
++                   loads).  */
++                vect_model_simple_cost (stmt_info, ncopies_for_cost, &dt,
++                                        slp_node);
++            }
+ 	}
+ 
+       else
+ 	{
+-	  if (!*first_stmt_dt1 && i == 1)
++          /* Not first stmt of the group, check that the def-stmt/s match
++             the def-stmt/s of the first stmt.  Allow different definition
++             types for reduction chains: the first stmt must be a
++             vect_reduction_def (a phi node), and the rest
++             vect_internal_def.  */
++          if (((oprnd_info->first_dt != dt
++                && !(oprnd_info->first_dt == vect_reduction_def
++                     && dt == vect_internal_def))
++               || (oprnd_info->first_def_type != NULL_TREE
++                   && def
++                   && !types_compatible_p (oprnd_info->first_def_type,
++                                           TREE_TYPE (def))))
++               || (!def
++                   && !types_compatible_p (TREE_TYPE (oprnd_info->first_const_oprnd),
++                                           TREE_TYPE (oprnd)))
++               || different_types)
+ 	    {
+-	      /* op1 of the first stmt of the group - store its info.  */
+-	      *first_stmt_dt1 = dt[i];
+-	      if (def)
+-		*first_stmt_def1_type = TREE_TYPE (def);
+-	      else
++              if (number_of_oprnds != 2)
+ 		{
+-		  /* We assume that the stmt contains only one constant
+-		     operand. We fail otherwise, to be on the safe side.  */
+-		  if (*first_stmt_const_oprnd)
+-		    {
+-		      if (vect_print_dump_info (REPORT_SLP))
+-			fprintf (vect_dump, "Build SLP failed: two constant "
+-				 "oprnds in stmt");
+-		      return false;
+-		    }
+-		  *first_stmt_const_oprnd = oprnd;
+-		}
+-	    }
+-	  else
+-	    {
+-	      /* Not first stmt of the group, check that the def-stmt/s match
+-		 the def-stmt/s of the first stmt.  */
+-	      if ((i == 0
+-		   && (*first_stmt_dt0 != dt[i]
+-		       || (*first_stmt_def0_type && def
+-			   && !types_compatible_p (*first_stmt_def0_type,
+-						   TREE_TYPE (def)))))
+-		  || (i == 1
+-		      && (*first_stmt_dt1 != dt[i]
+-			  || (*first_stmt_def1_type && def
+-			      && !types_compatible_p (*first_stmt_def1_type,
+-						      TREE_TYPE (def)))))
+-		  || (!def
+-		      && !types_compatible_p (TREE_TYPE (*first_stmt_const_oprnd),
+-					      TREE_TYPE (oprnd))))
++                  if (vect_print_dump_info (REPORT_SLP))
++                    fprintf (vect_dump, "Build SLP failed: different types ");
++
++                  return false;
++                }
++
++              /* Try to swap operands in case of binary operation.  */
++              if (i == 0)
++                different_types = true;
++              else
+ 		{
+-		  if (vect_print_dump_info (REPORT_SLP))
+-		    fprintf (vect_dump, "Build SLP failed: different types ");
++                  oprnd0_info = VEC_index (slp_oprnd_info, *oprnds_info, 0);
++                  if (is_gimple_assign (stmt)
++                      && (rhs_code = gimple_assign_rhs_code (stmt))
++                      && TREE_CODE_CLASS (rhs_code) == tcc_binary
++                      && commutative_tree_code (rhs_code)
++                      && oprnd0_info->first_dt == dt
++                      && oprnd_info->first_dt == dt_op0
++                      && def_op0 && def
++                      && !(oprnd0_info->first_def_type
++                           && !types_compatible_p (oprnd0_info->first_def_type,
++                                                   TREE_TYPE (def)))
++                      && !(oprnd_info->first_def_type
++                           && !types_compatible_p (oprnd_info->first_def_type,
++                                                   TREE_TYPE (def_op0))))
++                    {
++                      if (vect_print_dump_info (REPORT_SLP))
++                       {
++                         fprintf (vect_dump, "Swapping operands of ");
++                         print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
++                       }
+ 
+-		  return false;
++                      swap_tree_operands (stmt, gimple_assign_rhs1_ptr (stmt),
++                                          gimple_assign_rhs2_ptr (stmt));
++                    }
++                  else
++                    {
++                      if (vect_print_dump_info (REPORT_SLP))
++                        fprintf (vect_dump, "Build SLP failed: different types ");
++ 
++                      return false;
++                    }
+ 		}
+ 	    }
+ 	}
+ 
+       /* Check the types of the definitions.  */
+-      switch (dt[i])
++      switch (dt)
+ 	{
+ 	case vect_constant_def:
+ 	case vect_external_def:
++        case vect_reduction_def:
+ 	  break;
+ 
+ 	case vect_internal_def:
+-        case vect_reduction_def:
+-	  if (i == 0)
+-	    VEC_safe_push (gimple, heap, *def_stmts0, def_stmt);
++          if (different_types)
++            {
++              oprnd0_info = VEC_index (slp_oprnd_info, *oprnds_info, 0);
++              oprnd1_info = VEC_index (slp_oprnd_info, *oprnds_info, 0);
++              if (i == 0)
++                VEC_quick_push (gimple, oprnd1_info->def_stmts, def_stmt);
++              else
++                VEC_quick_push (gimple, oprnd0_info->def_stmts, def_stmt);
++            }
+ 	  else
+-	    VEC_safe_push (gimple, heap, *def_stmts1, def_stmt);
++ 	    VEC_quick_push (gimple, oprnd_info->def_stmts, def_stmt);
+ 	  break;
+ 
+ 	default:
+@@ -309,17 +453,13 @@
+                      int ncopies_for_cost, unsigned int *max_nunits,
+                      VEC (int, heap) **load_permutation,
+                      VEC (slp_tree, heap) **loads,
+-                     unsigned int vectorization_factor)
++                     unsigned int vectorization_factor, bool *loads_permuted)
+ {
+-  VEC (gimple, heap) *def_stmts0 = VEC_alloc (gimple, heap, group_size);
+-  VEC (gimple, heap) *def_stmts1 =  VEC_alloc (gimple, heap, group_size);
+   unsigned int i;
+   VEC (gimple, heap) *stmts = SLP_TREE_SCALAR_STMTS (*node);
+   gimple stmt = VEC_index (gimple, stmts, 0);
+-  enum vect_def_type first_stmt_dt0 = vect_uninitialized_def;
+-  enum vect_def_type first_stmt_dt1 = vect_uninitialized_def;
+   enum tree_code first_stmt_code = ERROR_MARK, rhs_code = ERROR_MARK;
+-  tree first_stmt_def1_type = NULL_TREE, first_stmt_def0_type = NULL_TREE;
++  enum tree_code first_cond_code = ERROR_MARK;
+   tree lhs;
+   bool stop_recursion = false, need_same_oprnds = false;
+   tree vectype, scalar_type, first_op1 = NULL_TREE;
+@@ -328,13 +468,28 @@
+   int icode;
+   enum machine_mode optab_op2_mode;
+   enum machine_mode vec_mode;
+-  tree first_stmt_const_oprnd = NULL_TREE;
+   struct data_reference *first_dr;
+-  bool pattern0 = false, pattern1 = false;
+   HOST_WIDE_INT dummy;
+   bool permutation = false;
+   unsigned int load_place;
+   gimple first_load, prev_first_load = NULL;
++  VEC (slp_oprnd_info, heap) *oprnds_info;
++  unsigned int nops;
++  slp_oprnd_info oprnd_info;
++  tree cond;
++
++  if (is_gimple_call (stmt))
++    nops = gimple_call_num_args (stmt);
++  else if (is_gimple_assign (stmt))
++    {
++      nops = gimple_num_ops (stmt) - 1;
++      if (gimple_assign_rhs_code (stmt) == COND_EXPR)
++	nops = 4;
++    }
++  else
++    return false;
++
++  oprnds_info = vect_create_oprnd_info (nops, group_size);
+ 
+   /* For every stmt in NODE find its def stmt/s.  */
+   FOR_EACH_VEC_ELT (gimple, stmts, i, stmt)
+@@ -355,6 +510,7 @@
+               print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+             }
+ 
++	  vect_free_oprnd_info (&oprnds_info);
+           return false;
+         }
+ 
+@@ -364,13 +520,30 @@
+ 	  if (vect_print_dump_info (REPORT_SLP))
+ 	    {
+ 	      fprintf (vect_dump,
+-		       "Build SLP failed: not GIMPLE_ASSIGN nor GIMPLE_CALL");
++		       "Build SLP failed: not GIMPLE_ASSIGN nor GIMPLE_CALL ");
+ 	      print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+ 	    }
+ 
++	  vect_free_oprnd_info (&oprnds_info);
+ 	  return false;
+ 	}
+ 
++       if (is_gimple_assign (stmt)
++	   && gimple_assign_rhs_code (stmt) == COND_EXPR
++           && (cond = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0))
++           && !COMPARISON_CLASS_P (cond))
++        {
++          if (vect_print_dump_info (REPORT_SLP))
++            {
++              fprintf (vect_dump,
++                       "Build SLP failed: condition is not comparison ");
++              print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
++            }
++
++          vect_free_oprnd_info (&oprnds_info);
++          return false;
++        }
++
+       scalar_type = vect_get_smallest_scalar_type (stmt, &dummy, &dummy);
+       vectype = get_vectype_for_scalar_type (scalar_type);
+       if (!vectype)
+@@ -380,23 +553,20 @@
+               fprintf (vect_dump, "Build SLP failed: unsupported data-type ");
+               print_generic_expr (vect_dump, scalar_type, TDF_SLIM);
+             }
++
++	  vect_free_oprnd_info (&oprnds_info);
+           return false;
+         }
+ 
+-      ncopies = vectorization_factor / TYPE_VECTOR_SUBPARTS (vectype);
+-      if (ncopies != 1)
++      /* In case of multiple types we need to detect the smallest type.  */
++      if (*max_nunits < TYPE_VECTOR_SUBPARTS (vectype))
+         {
+-	  if (vect_print_dump_info (REPORT_SLP))
+-            fprintf (vect_dump, "SLP with multiple types ");
+-
+-          /* FORNOW: multiple types are unsupported in BB SLP.  */
+-	  if (bb_vinfo)
+-	    return false;
++          *max_nunits = TYPE_VECTOR_SUBPARTS (vectype);
++          if (bb_vinfo)
++            vectorization_factor = *max_nunits;
+         }
+ 
+-      /* In case of multiple types we need to detect the smallest type.  */
+-      if (*max_nunits < TYPE_VECTOR_SUBPARTS (vectype))
+-        *max_nunits = TYPE_VECTOR_SUBPARTS (vectype);
++      ncopies = vectorization_factor / TYPE_VECTOR_SUBPARTS (vectype);
+ 
+       if (is_gimple_call (stmt))
+ 	rhs_code = CALL_EXPR;
+@@ -431,6 +601,7 @@
+ 		    {
+ 		      if (vect_print_dump_info (REPORT_SLP))
+ 			fprintf (vect_dump, "Build SLP failed: no optab.");
++	  	      vect_free_oprnd_info (&oprnds_info);
+ 		      return false;
+ 		    }
+ 		  icode = (int) optab_handler (optab, vec_mode);
+@@ -439,6 +610,7 @@
+ 		      if (vect_print_dump_info (REPORT_SLP))
+ 			fprintf (vect_dump, "Build SLP failed: "
+ 				            "op not supported by target.");
++	  	      vect_free_oprnd_info (&oprnds_info);
+ 		      return false;
+ 		    }
+ 		  optab_op2_mode = insn_data[icode].operand[2].mode;
+@@ -449,6 +621,11 @@
+ 		    }
+ 		}
+ 	    }
++	  else if (rhs_code == WIDEN_LSHIFT_EXPR)
++            {
++              need_same_oprnds = true;
++              first_op1 = gimple_assign_rhs2 (stmt);
++            }
+ 	}
+       else
+ 	{
+@@ -470,6 +647,7 @@
+ 		  print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+ 		}
+ 
++	      vect_free_oprnd_info (&oprnds_info);
+ 	      return false;
+ 	    }
+ 
+@@ -483,6 +661,7 @@
+ 		  print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+ 		}
+ 
++	      vect_free_oprnd_info (&oprnds_info);
+ 	      return false;
+ 	    }
+ 	}
+@@ -494,15 +673,12 @@
+ 	    {
+ 	      /* Store.  */
+ 	      if (!vect_get_and_check_slp_defs (loop_vinfo, bb_vinfo, *node,
+-						stmt, &def_stmts0, &def_stmts1,
+-						&first_stmt_dt0,
+-						&first_stmt_dt1,
+-						&first_stmt_def0_type,
+-						&first_stmt_def1_type,
+-						&first_stmt_const_oprnd,
+-						ncopies_for_cost,
+-                                                &pattern0, &pattern1))
+-		return false;
++						stmt, ncopies_for_cost,
++						(i == 0), &oprnds_info))
++		{
++	  	  vect_free_oprnd_info (&oprnds_info);
++ 		  return false;
++		}
+ 	    }
+ 	  else
+ 	    {
+@@ -520,12 +696,15 @@
+                       print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+                     }
+ 
++	  	  vect_free_oprnd_info (&oprnds_info);
+                   return false;
+                 }
+ 
+               /* Check that the size of interleaved loads group is not
+                  greater than the SLP group size.  */
+-              if (DR_GROUP_SIZE (vinfo_for_stmt (stmt)) > ncopies * group_size)
++              if (loop_vinfo
++                  && DR_GROUP_SIZE (vinfo_for_stmt (stmt)) 
++			> ncopies * group_size)
+                 {
+                   if (vect_print_dump_info (REPORT_SLP))
+                     {
+@@ -535,6 +714,7 @@
+                       print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+                     }
+ 
++	  	  vect_free_oprnd_info (&oprnds_info);
+                   return false;
+                 }
+ 
+@@ -555,6 +735,7 @@
+                           print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+                         }
+  
++	  	      vect_free_oprnd_info (&oprnds_info);
+                       return false;
+                     }
+                 }
+@@ -574,12 +755,13 @@
+                           print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+                         }
+ 
++	  	      vect_free_oprnd_info (&oprnds_info);
+                       return false;
+                     }
+ 
+                   /* Analyze costs (for the first stmt in the group).  */
+                   vect_model_load_cost (vinfo_for_stmt (stmt),
+-                                        ncopies_for_cost, *node);
++                                        ncopies_for_cost, false, *node);
+                 }
+ 
+               /* Store the place of this load in the interleaving chain.  In
+@@ -601,7 +783,7 @@
+ 	{
+ 	  if (TREE_CODE_CLASS (rhs_code) == tcc_reference)
+ 	    {
+-	      /* Not strided load. */
++	      /* Not strided load.  */
+ 	      if (vect_print_dump_info (REPORT_SLP))
+ 		{
+ 		  fprintf (vect_dump, "Build SLP failed: not strided load ");
+@@ -609,12 +791,14 @@
+ 		}
+ 
+ 	      /* FORNOW: Not strided loads are not supported.  */
++	      vect_free_oprnd_info (&oprnds_info);
+ 	      return false;
+ 	    }
+ 
+ 	  /* Not memory operation.  */
+ 	  if (TREE_CODE_CLASS (rhs_code) != tcc_binary
+-	      && TREE_CODE_CLASS (rhs_code) != tcc_unary)
++	      && TREE_CODE_CLASS (rhs_code) != tcc_unary
++              && rhs_code != COND_EXPR)
+ 	    {
+ 	      if (vect_print_dump_info (REPORT_SLP))
+ 		{
+@@ -623,19 +807,38 @@
+ 		  print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+ 		}
+ 
++	      vect_free_oprnd_info (&oprnds_info);
+ 	      return false;
+ 	    }
+ 
++          if (rhs_code == COND_EXPR)
++            {
++              tree cond_expr = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0);
++
++	      if (i == 0)
++		first_cond_code = TREE_CODE (cond_expr);
++              else if (first_cond_code != TREE_CODE (cond_expr))
++                {
++                  if (vect_print_dump_info (REPORT_SLP))
++                    {
++                      fprintf (vect_dump, "Build SLP failed: different"
++					  " operation");
++                      print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
++                    }
++
++		  vect_free_oprnd_info (&oprnds_info);
++                  return false;
++		}
++            }
++
+ 	  /* Find the def-stmts.  */
+ 	  if (!vect_get_and_check_slp_defs (loop_vinfo, bb_vinfo, *node, stmt,
+-					    &def_stmts0, &def_stmts1,
+-					    &first_stmt_dt0, &first_stmt_dt1,
+-					    &first_stmt_def0_type,
+-					    &first_stmt_def1_type,
+-					    &first_stmt_const_oprnd,
+-					    ncopies_for_cost,
+-                                            &pattern0, &pattern1))
+-	    return false;
++					    ncopies_for_cost, (i == 0),
++					    &oprnds_info))
++	    {
++	      vect_free_oprnd_info (&oprnds_info);
++	      return false;
++	    }
+ 	}
+     }
+ 
+@@ -646,61 +849,55 @@
+   /* Strided loads were reached - stop the recursion.  */
+   if (stop_recursion)
+     {
++      VEC_safe_push (slp_tree, heap, *loads, *node);
+       if (permutation)
+         {
+-          VEC_safe_push (slp_tree, heap, *loads, *node);
++
++          *loads_permuted = true;
+           *inside_cost 
+             += targetm.vectorize.builtin_vectorization_cost (vec_perm, NULL, 0) 
+                * group_size;
+         }
+       else
+-        { 
+-          /* We don't check here complex numbers chains, so we keep them in
+-	     LOADS for further check in vect_supported_load_permutation_p.  */ 
++        {
++          /* We don't check here complex numbers chains, so we set
++             LOADS_PERMUTED for further check in
++             vect_supported_load_permutation_p.  */
+           if (rhs_code == REALPART_EXPR || rhs_code == IMAGPART_EXPR)
+-            VEC_safe_push (slp_tree, heap, *loads, *node);
++            *loads_permuted = true;
+         }
+ 
++      vect_free_oprnd_info (&oprnds_info);
+       return true;
+     }
+ 
+   /* Create SLP_TREE nodes for the definition node/s.  */
+-  if (first_stmt_dt0 == vect_internal_def)
++  FOR_EACH_VEC_ELT (slp_oprnd_info, oprnds_info, i, oprnd_info)
+     {
+-      slp_tree left_node = XNEW (struct _slp_tree);
+-      SLP_TREE_SCALAR_STMTS (left_node) = def_stmts0;
+-      SLP_TREE_VEC_STMTS (left_node) = NULL;
+-      SLP_TREE_LEFT (left_node) = NULL;
+-      SLP_TREE_RIGHT (left_node) = NULL;
+-      SLP_TREE_OUTSIDE_OF_LOOP_COST (left_node) = 0;
+-      SLP_TREE_INSIDE_OF_LOOP_COST (left_node) = 0;
+-      if (!vect_build_slp_tree (loop_vinfo, bb_vinfo, &left_node, group_size,
+-				inside_cost, outside_cost, ncopies_for_cost,
+-				max_nunits, load_permutation, loads,
+-				vectorization_factor))
+-	return false;
++      slp_tree child;
+ 
+-      SLP_TREE_LEFT (*node) = left_node;
+-    }
++      if (oprnd_info->first_dt != vect_internal_def)
++        continue;
+ 
+-  if (first_stmt_dt1 == vect_internal_def)
+-    {
+-      slp_tree right_node = XNEW (struct _slp_tree);
+-      SLP_TREE_SCALAR_STMTS (right_node) = def_stmts1;
+-      SLP_TREE_VEC_STMTS (right_node) = NULL;
+-      SLP_TREE_LEFT (right_node) = NULL;
+-      SLP_TREE_RIGHT (right_node) = NULL;
+-      SLP_TREE_OUTSIDE_OF_LOOP_COST (right_node) = 0;
+-      SLP_TREE_INSIDE_OF_LOOP_COST (right_node) = 0;
+-      if (!vect_build_slp_tree (loop_vinfo, bb_vinfo, &right_node, group_size,
++      child = vect_create_new_slp_node (oprnd_info->def_stmts);
++      if (!child
++          || !vect_build_slp_tree (loop_vinfo, bb_vinfo, &child, group_size,
+ 				inside_cost, outside_cost, ncopies_for_cost,
+ 				max_nunits, load_permutation, loads,
+-				vectorization_factor))
+-	return false;
++				vectorization_factor, loads_permuted))
++        {
++	  if (child)
++	    oprnd_info->def_stmts = NULL;
++	  vect_free_slp_tree (child);
++	  vect_free_oprnd_info (&oprnds_info);
++   	  return false;
++	}
+ 
+-      SLP_TREE_RIGHT (*node) = right_node;
++      oprnd_info->def_stmts = NULL;
++      VEC_quick_push (slp_void_p, SLP_TREE_CHILDREN (*node), child);
+     }
+ 
++  vect_free_oprnd_info (&oprnds_info);
+   return true;
+ }
+ 
+@@ -710,6 +907,7 @@
+ {
+   int i;
+   gimple stmt;
++  slp_void_p child;
+ 
+   if (!node)
+     return;
+@@ -722,8 +920,8 @@
+     }
+   fprintf (vect_dump, "\n");
+ 
+-  vect_print_slp_tree (SLP_TREE_LEFT (node));
+-  vect_print_slp_tree (SLP_TREE_RIGHT (node));
++  FOR_EACH_VEC_ELT (slp_void_p, SLP_TREE_CHILDREN (node), i, child)
++    vect_print_slp_tree ((slp_tree) child);
+ }
+ 
+ 
+@@ -737,6 +935,7 @@
+ {
+   int i;
+   gimple stmt;
++  slp_void_p child;
+ 
+   if (!node)
+     return;
+@@ -745,8 +944,8 @@
+     if (j < 0 || i == j)
+       STMT_SLP_TYPE (vinfo_for_stmt (stmt)) = mark;
+ 
+-  vect_mark_slp_stmts (SLP_TREE_LEFT (node), mark, j);
+-  vect_mark_slp_stmts (SLP_TREE_RIGHT (node), mark, j);
++  FOR_EACH_VEC_ELT (slp_void_p, SLP_TREE_CHILDREN (node), i, child)
++    vect_mark_slp_stmts ((slp_tree) child, mark, j);
+ }
+ 
+ 
+@@ -758,6 +957,7 @@
+   int i;
+   gimple stmt;
+   stmt_vec_info stmt_info;
++  slp_void_p child;
+ 
+   if (!node)
+     return;
+@@ -770,8 +970,8 @@
+       STMT_VINFO_RELEVANT (stmt_info) = vect_used_in_scope;
+     }
+ 
+-  vect_mark_slp_stmts_relevant (SLP_TREE_LEFT (node));
+-  vect_mark_slp_stmts_relevant (SLP_TREE_RIGHT (node));
++  FOR_EACH_VEC_ELT (slp_void_p, SLP_TREE_CHILDREN (node), i, child)
++    vect_mark_slp_stmts_relevant ((slp_tree) child);
+ }
+ 
+ 
+@@ -844,12 +1044,13 @@
+   gimple stmt;
+   VEC (gimple, heap) *tmp_stmts;
+   unsigned int index, i;
++  slp_void_p child;
+ 
+   if (!node)
+     return;
+ 
+-  vect_slp_rearrange_stmts (SLP_TREE_LEFT (node), group_size, permutation);
+-  vect_slp_rearrange_stmts (SLP_TREE_RIGHT (node), group_size, permutation);
++  FOR_EACH_VEC_ELT (slp_void_p, SLP_TREE_CHILDREN (node), i, child)
++    vect_slp_rearrange_stmts ((slp_tree) child, group_size, permutation);
+ 
+   gcc_assert (group_size == VEC_length (gimple, SLP_TREE_SCALAR_STMTS (node)));
+   tmp_stmts = VEC_alloc (gimple, heap, group_size);
+@@ -881,8 +1082,10 @@
+   bool supported, bad_permutation = false;
+   sbitmap load_index;
+   slp_tree node, other_complex_node;
+-  gimple stmt, first = NULL, other_node_first;
++  gimple stmt, first = NULL, other_node_first, load, next_load, first_load;
+   unsigned complex_numbers = 0;
++  struct data_reference *dr;
++  bb_vec_info bb_vinfo;
+ 
+   /* FORNOW: permutations are only supported in SLP.  */
+   if (!slp_instn)
+@@ -1042,6 +1245,76 @@
+         }
+     }
+ 
++  /* In basic block vectorization we allow any subchain of an interleaving
++     chain.
++     FORNOW: not supported in loop SLP because of realignment compications.  */
++  bb_vinfo = STMT_VINFO_BB_VINFO (vinfo_for_stmt (stmt));
++  bad_permutation = false;
++  /* Check that for every node in the instance teh loads form a subchain.  */
++  if (bb_vinfo)
++    {
++      FOR_EACH_VEC_ELT (slp_tree, SLP_INSTANCE_LOADS (slp_instn), i, node)
++        {
++          next_load = NULL;
++          first_load = NULL;
++          FOR_EACH_VEC_ELT (gimple, SLP_TREE_SCALAR_STMTS (node), j, load)
++            {
++              if (!first_load)
++                first_load = DR_GROUP_FIRST_DR (vinfo_for_stmt (load));
++              else if (first_load
++                         != DR_GROUP_FIRST_DR (vinfo_for_stmt (load)))
++                {
++                  bad_permutation = true;
++	          break;
++	        }
++
++              if (j != 0 && next_load != load)
++                {
++                  bad_permutation = true;
++                  break;
++                }
++
++              next_load = DR_GROUP_NEXT_DR (vinfo_for_stmt (load));
++            }
++
++          if (bad_permutation)
++            break;
++        }
++
++      /* Check that the alignment of the first load in every subchain, i.e.,
++         the first statement in every load node, is supported.  */
++      if (!bad_permutation)
++        {
++          FOR_EACH_VEC_ELT (slp_tree, SLP_INSTANCE_LOADS (slp_instn), i, node)
++            {
++              first_load = VEC_index (gimple, SLP_TREE_SCALAR_STMTS (node), 0);
++              if (first_load 
++		      != DR_GROUP_FIRST_DR (vinfo_for_stmt (first_load)))
++                {
++                  dr = STMT_VINFO_DATA_REF (vinfo_for_stmt (first_load));
++                  if (vect_supportable_dr_alignment (dr, false)
++ 	               == dr_unaligned_unsupported)
++                    {
++   		      if (vect_print_dump_info (REPORT_SLP))
++		        {
++  	                  fprintf (vect_dump, "unsupported unaligned load ");
++                          print_gimple_stmt (vect_dump, first_load, 0,
++					     TDF_SLIM);
++                        }
++  		      bad_permutation = true;
++                      break;
++                    }
++	        }
++            }
++
++          if (!bad_permutation)
++            {
++              VEC_free (int, heap, SLP_INSTANCE_LOAD_PERMUTATION (slp_instn));
++              return true;
++    	    }
++        }
++    }
++
+   /* FORNOW: the only supported permutation is 0..01..1.. of length equal to
+      GROUP_SIZE and where each sequence of same drs is of GROUP_SIZE length as
+      well (unless it's reduction).  */
+@@ -1140,7 +1413,7 @@
+                            gimple stmt)
+ {
+   slp_instance new_instance;
+-  slp_tree node = XNEW (struct _slp_tree);
++  slp_tree node;
+   unsigned int group_size = DR_GROUP_SIZE (vinfo_for_stmt (stmt));
+   unsigned int unrolling_factor = 1, nunits;
+   tree vectype, scalar_type = NULL_TREE;
+@@ -1151,6 +1424,8 @@
+   VEC (int, heap) *load_permutation;
+   VEC (slp_tree, heap) *loads;
+   struct data_reference *dr = STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt));
++  bool loads_permuted = false;
++  VEC (gimple, heap) *scalar_stmts;
+ 
+   if (dr)
+     {
+@@ -1180,7 +1455,6 @@
+   if (loop_vinfo)
+     vectorization_factor = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
+   else
+-    /* No multitypes in BB SLP.  */
+     vectorization_factor = nunits;
+ 
+   /* Calculate the unrolling factor.  */
+@@ -1195,39 +1469,31 @@
+     }
+ 
+   /* Create a node (a root of the SLP tree) for the packed strided stores.  */
+-  SLP_TREE_SCALAR_STMTS (node) = VEC_alloc (gimple, heap, group_size);
++  scalar_stmts = VEC_alloc (gimple, heap, group_size);
+   next = stmt;
+   if (dr)
+     {
+       /* Collect the stores and store them in SLP_TREE_SCALAR_STMTS.  */
+       while (next)
+         {
+-          VEC_safe_push (gimple, heap, SLP_TREE_SCALAR_STMTS (node), next);
++          if (STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (next))
++              && STMT_VINFO_RELATED_STMT (vinfo_for_stmt (next)))
++            VEC_safe_push (gimple, heap, scalar_stmts,
++                       STMT_VINFO_RELATED_STMT (vinfo_for_stmt (next)));
++          else
++            VEC_safe_push (gimple, heap, scalar_stmts, next);
+           next = DR_GROUP_NEXT_DR (vinfo_for_stmt (next));
+         }
+     }
+   else
+     {
+       /* Collect reduction statements.  */
+-      for (i = 0; VEC_iterate (gimple, LOOP_VINFO_REDUCTIONS (loop_vinfo), i, 
+-                               next); 
+-           i++)
+-        {
+-          VEC_safe_push (gimple, heap, SLP_TREE_SCALAR_STMTS (node), next);
+-          if (vect_print_dump_info (REPORT_DETAILS))
+-            {
+-              fprintf (vect_dump, "pushing reduction into node: ");
+-              print_gimple_stmt (vect_dump, next, 0, TDF_SLIM);
+-            }
+-        }
++      VEC (gimple, heap) *reductions = LOOP_VINFO_REDUCTIONS (loop_vinfo);
++      for (i = 0; VEC_iterate (gimple, reductions, i, next); i++)
++	VEC_safe_push (gimple, heap, scalar_stmts, next);
+     }
+ 
+-  SLP_TREE_VEC_STMTS (node) = NULL;
+-  SLP_TREE_NUMBER_OF_VEC_STMTS (node) = 0;
+-  SLP_TREE_LEFT (node) = NULL;
+-  SLP_TREE_RIGHT (node) = NULL;
+-  SLP_TREE_OUTSIDE_OF_LOOP_COST (node) = 0;
+-  SLP_TREE_INSIDE_OF_LOOP_COST (node) = 0;
++  node = vect_create_new_slp_node (scalar_stmts);
+ 
+   /* Calculate the number of vector stmts to create based on the unrolling
+      factor (number of vectors is 1 if NUNITS >= GROUP_SIZE, and is
+@@ -1241,25 +1507,33 @@
+   if (vect_build_slp_tree (loop_vinfo, bb_vinfo, &node, group_size,
+                            &inside_cost, &outside_cost, ncopies_for_cost,
+ 			   &max_nunits, &load_permutation, &loads,
+-			   vectorization_factor))
++			   vectorization_factor, &loads_permuted))
+     {
+-      /* Create a new SLP instance.  */
+-      new_instance = XNEW (struct _slp_instance);
+-      SLP_INSTANCE_TREE (new_instance) = node;
+-      SLP_INSTANCE_GROUP_SIZE (new_instance) = group_size;
+-      /* Calculate the unrolling factor based on the smallest type in the
+-         loop.  */
++      /* Calculate the unrolling factor based on the smallest type.  */
+       if (max_nunits > nunits)
+         unrolling_factor = least_common_multiple (max_nunits, group_size)
+                            / group_size;
+ 
++      if (unrolling_factor != 1 && !loop_vinfo)
++        {
++          if (vect_print_dump_info (REPORT_SLP))
++            fprintf (vect_dump, "Build SLP failed: unrolling required in basic"
++                               " block SLP");
++          return false;
++        }
++
++      /* Create a new SLP instance.  */
++      new_instance = XNEW (struct _slp_instance);
++      SLP_INSTANCE_TREE (new_instance) = node;
++      SLP_INSTANCE_GROUP_SIZE (new_instance) = group_size;
+       SLP_INSTANCE_UNROLLING_FACTOR (new_instance) = unrolling_factor;
+       SLP_INSTANCE_OUTSIDE_OF_LOOP_COST (new_instance) = outside_cost;
+       SLP_INSTANCE_INSIDE_OF_LOOP_COST (new_instance) = inside_cost;
+       SLP_INSTANCE_LOADS (new_instance) = loads;
+       SLP_INSTANCE_FIRST_LOAD_STMT (new_instance) = NULL;
+       SLP_INSTANCE_LOAD_PERMUTATION (new_instance) = load_permutation;
+-      if (VEC_length (slp_tree, loads))
++
++      if (loads_permuted)
+         {
+           if (!vect_supported_load_permutation_p (new_instance, group_size,
+                                                   load_permutation))
+@@ -1396,6 +1670,7 @@
+   imm_use_iterator imm_iter;
+   gimple use_stmt;
+   stmt_vec_info stmt_vinfo; 
++  slp_void_p child;
+ 
+   if (!node)
+     return;
+@@ -1413,8 +1688,8 @@
+                      == vect_reduction_def))
+ 	  vect_mark_slp_stmts (node, hybrid, i);
+ 
+-  vect_detect_hybrid_slp_stmts (SLP_TREE_LEFT (node));
+-  vect_detect_hybrid_slp_stmts (SLP_TREE_RIGHT (node));
++  FOR_EACH_VEC_ELT (slp_void_p, SLP_TREE_CHILDREN (node), i, child)
++    vect_detect_hybrid_slp_stmts ((slp_tree) child);
+ }
+ 
+ 
+@@ -1504,13 +1779,14 @@
+   bool dummy;
+   int i;
+   gimple stmt;
++  slp_void_p child;
+ 
+   if (!node)
+     return true;
+ 
+-  if (!vect_slp_analyze_node_operations (bb_vinfo, SLP_TREE_LEFT (node))
+-      || !vect_slp_analyze_node_operations (bb_vinfo, SLP_TREE_RIGHT (node)))
+-    return false;
++  FOR_EACH_VEC_ELT (slp_void_p, SLP_TREE_CHILDREN (node), i, child)
++    if (!vect_slp_analyze_node_operations (bb_vinfo, (slp_tree) child))
++      return false;
+ 
+   FOR_EACH_VEC_ELT (gimple, SLP_TREE_SCALAR_STMTS (node), i, stmt)
+     {
+@@ -1661,42 +1937,18 @@
+ 
+ /* Check if the basic block can be vectorized.  */
+ 
+-bb_vec_info
+-vect_slp_analyze_bb (basic_block bb)
++static bb_vec_info
++vect_slp_analyze_bb_1 (basic_block bb)
+ {
+   bb_vec_info bb_vinfo;
+   VEC (ddr_p, heap) *ddrs;
+   VEC (slp_instance, heap) *slp_instances;
+   slp_instance instance;
+-  int i, insns = 0;
+-  gimple_stmt_iterator gsi;
++  int i;
+   int min_vf = 2;
+   int max_vf = MAX_VECTORIZATION_FACTOR;
+   bool data_dependence_in_bb = false;
+ 
+-  current_vector_size = 0;
+-
+-  if (vect_print_dump_info (REPORT_DETAILS))
+-    fprintf (vect_dump, "===vect_slp_analyze_bb===\n");
+-
+-  for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+-    {
+-      gimple stmt = gsi_stmt (gsi);
+-      if (!is_gimple_debug (stmt)
+-	  && !gimple_nop_p (stmt)
+-	  && gimple_code (stmt) != GIMPLE_LABEL)
+-	insns++;
+-    }
+-
+-  if (insns > PARAM_VALUE (PARAM_SLP_MAX_INSNS_IN_BB))
+-    {
+-      if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
+-        fprintf (vect_dump, "not vectorized: too many instructions in basic "
+-                            "block.\n");
+-
+-      return NULL;
+-    }
+-
+   bb_vinfo = new_bb_vec_info (bb);
+   if (!bb_vinfo)
+     return NULL;
+@@ -1722,6 +1974,8 @@
+       return NULL;
+     }
+ 
++   vect_pattern_recog (NULL, bb_vinfo);
++
+    if (!vect_analyze_data_ref_dependences (NULL, bb_vinfo, &max_vf, 
+                                            &data_dependence_in_bb)
+        || min_vf > max_vf
+@@ -1756,16 +2010,6 @@
+       return NULL;
+     }
+ 
+-   if (!vect_verify_datarefs_alignment (NULL, bb_vinfo))
+-    {
+-      if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
+-        fprintf (vect_dump, "not vectorized: unsupported alignment in basic "
+-                            "block.\n");
+-
+-      destroy_bb_vec_info (bb_vinfo);
+-      return NULL;
+-    }
+-
+   /* Check the SLP opportunities in the basic block, analyze and build SLP
+      trees.  */
+   if (!vect_analyze_slp (NULL, bb_vinfo))
+@@ -1788,6 +2032,16 @@
+       vect_mark_slp_stmts_relevant (SLP_INSTANCE_TREE (instance));
+     }
+ 
++   if (!vect_verify_datarefs_alignment (NULL, bb_vinfo))
++    {
++      if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
++        fprintf (vect_dump, "not vectorized: unsupported alignment in basic "
++                            "block.\n");
++
++      destroy_bb_vec_info (bb_vinfo);
++      return NULL;
++    }
++
+   if (!vect_slp_analyze_operations (bb_vinfo))
+     {
+       if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
+@@ -1816,6 +2070,61 @@
+ }
+ 
+ 
++bb_vec_info
++vect_slp_analyze_bb (basic_block bb)
++{
++  bb_vec_info bb_vinfo;
++  int insns = 0;
++  gimple_stmt_iterator gsi;
++  unsigned int vector_sizes;
++
++  if (vect_print_dump_info (REPORT_DETAILS))
++    fprintf (vect_dump, "===vect_slp_analyze_bb===\n");
++
++  for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
++    {
++      gimple stmt = gsi_stmt (gsi);
++      if (!is_gimple_debug (stmt)
++          && !gimple_nop_p (stmt)
++          && gimple_code (stmt) != GIMPLE_LABEL)
++        insns++;
++    }
++
++  if (insns > PARAM_VALUE (PARAM_SLP_MAX_INSNS_IN_BB))
++    {
++      if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
++        fprintf (vect_dump, "not vectorized: too many instructions in basic "
++                            "block.\n");
++
++      return NULL;
++    }
++
++  /* Autodetect first vector size we try.  */
++  current_vector_size = 0;
++  vector_sizes = targetm.vectorize.autovectorize_vector_sizes ();
++
++  while (1)
++    {
++      bb_vinfo = vect_slp_analyze_bb_1 (bb);
++      if (bb_vinfo)
++        return bb_vinfo;
++
++      destroy_bb_vec_info (bb_vinfo);
++
++      vector_sizes &= ~current_vector_size;
++      if (vector_sizes == 0
++          || current_vector_size == 0)
++        return NULL;
++
++      /* Try the next biggest vector size.  */
++      current_vector_size = 1 << floor_log2 (vector_sizes);
++      if (vect_print_dump_info (REPORT_DETAILS))
++        fprintf (vect_dump, "***** Re-trying analysis with "
++                 "vector size %d\n", current_vector_size);
++    }
++}
++
++
+ /* SLP costs are calculated according to SLP instance unrolling factor (i.e.,
+    the number of created vector stmts depends on the unrolling factor).
+    However, the actual number of vector stmts for every SLP node depends on
+@@ -1939,15 +2248,15 @@
+ 
+      For example, we have two scalar operands, s1 and s2 (e.g., group of
+      strided accesses of size two), while NUNITS is four (i.e., four scalars
+-     of this type can be packed in a vector). The output vector will contain
+-     two copies of each scalar operand: {s1, s2, s1, s2}. (NUMBER_OF_COPIES
++     of this type can be packed in a vector).  The output vector will contain
++     two copies of each scalar operand: {s1, s2, s1, s2}.  (NUMBER_OF_COPIES
+      will be 2).
+ 
+      If GROUP_SIZE > NUNITS, the scalars will be split into several vectors
+      containing the operands.
+ 
+      For example, NUNITS is four as before, and the group size is 8
+-     (s1, s2, ..., s8). We will create two vectors {s1, s2, s3, s4} and
++     (s1, s2, ..., s8).  We will create two vectors {s1, s2, s3, s4} and
+      {s5, s6, s7, s8}.  */
+ 
+   number_of_copies = least_common_multiple (nunits, group_size) / group_size;
+@@ -1959,8 +2268,18 @@
+         {
+           if (is_store)
+             op = gimple_assign_rhs1 (stmt);
+-          else
++          else if (gimple_assign_rhs_code (stmt) != COND_EXPR)
+             op = gimple_op (stmt, op_num + 1);
++	  else
++	    {
++	      if (op_num == 0 || op_num == 1)
++		{
++		  tree cond = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0);
++		  op = TREE_OPERAND (cond, op_num);
++		}
++	      else
++		op = TREE_OPERAND (gimple_assign_rhs1 (stmt), op_num - 1);
++	    }
+ 
+           if (reduc_index != -1)
+             {
+@@ -2055,88 +2374,102 @@
+    If the scalar definitions are loop invariants or constants, collect them and
+    call vect_get_constant_vectors() to create vector stmts.
+    Otherwise, the def-stmts must be already vectorized and the vectorized stmts
+-   must be stored in the LEFT/RIGHT node of SLP_NODE, and we call
+-   vect_get_slp_vect_defs() to retrieve them.
+-   If VEC_OPRNDS1 is NULL, don't get vector defs for the second operand (from
+-   the right node. This is used when the second operand must remain scalar.  */
++   must be stored in the corresponding child of SLP_NODE, and we call
++   vect_get_slp_vect_defs () to retrieve them.  */
+ 
+ void
+-vect_get_slp_defs (tree op0, tree op1, slp_tree slp_node,
+-                   VEC (tree,heap) **vec_oprnds0,
+-                   VEC (tree,heap) **vec_oprnds1, int reduc_index)
+-{
+-  gimple first_stmt;
+-  enum tree_code code;
+-  int number_of_vects;
++vect_get_slp_defs (VEC (tree, heap) *ops, slp_tree slp_node,
++                   VEC (slp_void_p, heap) **vec_oprnds, int reduc_index)
++{
++  gimple first_stmt, first_def;
++  int number_of_vects = 0, i;
++  unsigned int child_index = 0;
+   HOST_WIDE_INT lhs_size_unit, rhs_size_unit;
++  slp_tree child = NULL;
++  VEC (tree, heap) *vec_defs;
++  tree oprnd, def_lhs;
++  bool vectorized_defs;
+ 
+   first_stmt = VEC_index (gimple, SLP_TREE_SCALAR_STMTS (slp_node), 0);
+-  /* The number of vector defs is determined by the number of vector statements
+-     in the node from which we get those statements.  */
+-  if (SLP_TREE_LEFT (slp_node))
+-    number_of_vects = SLP_TREE_NUMBER_OF_VEC_STMTS (SLP_TREE_LEFT (slp_node));
+-  else
+-    {
+-      number_of_vects = SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node);
+-      /* Number of vector stmts was calculated according to LHS in
+-         vect_schedule_slp_instance(), fix it by replacing LHS with RHS, if
+-         necessary.  See vect_get_smallest_scalar_type () for details.  */
+-      vect_get_smallest_scalar_type (first_stmt, &lhs_size_unit,
+-                                     &rhs_size_unit);
+-      if (rhs_size_unit != lhs_size_unit)
+-        {
+-          number_of_vects *= rhs_size_unit;
+-          number_of_vects /= lhs_size_unit;
+-        }
+-    }
++  FOR_EACH_VEC_ELT (tree, ops, i, oprnd)
++   {
++     /* For each operand we check if it has vectorized definitions in a child
++        node or we need to create them (for invariants and constants).  We
++        check if the LHS of the first stmt of the next child matches OPRND.
++        If it does, we found the correct child.  Otherwise, we call
++        vect_get_constant_vectors (), and not advance CHILD_INDEX in order
++        to check this child node for the next operand.  */
++      vectorized_defs = false;
++      if (VEC_length (slp_void_p, SLP_TREE_CHILDREN (slp_node)) > child_index)
++        {
++          child = (slp_tree) VEC_index (slp_void_p,
++                                        SLP_TREE_CHILDREN (slp_node),
++                                        child_index);
++          first_def = VEC_index (gimple, SLP_TREE_SCALAR_STMTS (child), 0);
++
++          /* In the end of a pattern sequence we have a use of the original stmt,
++             so we need to compare OPRND with the original def.  */
++          if (is_pattern_stmt_p (vinfo_for_stmt (first_def))
++              && !STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (first_stmt))
++              && !is_pattern_stmt_p (vinfo_for_stmt (first_stmt)))
++            first_def = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (first_def));
+ 
+-  /* Allocate memory for vectorized defs.  */
+-  *vec_oprnds0 = VEC_alloc (tree, heap, number_of_vects);
+-
+-  /* SLP_NODE corresponds either to a group of stores or to a group of
+-     unary/binary operations.  We don't call this function for loads.
+-     For reduction defs we call vect_get_constant_vectors(), since we are
+-     looking for initial loop invariant values.  */
+-  if (SLP_TREE_LEFT (slp_node) && reduc_index == -1)
+-    /* The defs are already vectorized.  */
+-    vect_get_slp_vect_defs (SLP_TREE_LEFT (slp_node), vec_oprnds0);
+-  else
+-    /* Build vectors from scalar defs.  */
+-    vect_get_constant_vectors (op0, slp_node, vec_oprnds0, 0, number_of_vects,
+-                               reduc_index);
+-
+-  if (STMT_VINFO_DATA_REF (vinfo_for_stmt (first_stmt)))
+-    /* Since we don't call this function with loads, this is a group of
+-       stores.  */
+-    return;
+-
+-  /* For reductions, we only need initial values.  */
+-  if (reduc_index != -1)
+-    return;
++          if (is_gimple_call (first_def))
++            def_lhs = gimple_call_lhs (first_def);
++          else
++            def_lhs = gimple_assign_lhs (first_def);
+ 
+-  code = gimple_assign_rhs_code (first_stmt);
+-  if (get_gimple_rhs_class (code) != GIMPLE_BINARY_RHS || !vec_oprnds1)
+-    return;
++          if (operand_equal_p (oprnd, def_lhs, 0))
++            {
++              /* The number of vector defs is determined by the number of
++                 vector statements in the node from which we get those
++                 statements.  */
++               number_of_vects = SLP_TREE_NUMBER_OF_VEC_STMTS (child);
++               vectorized_defs = true;
++               child_index++;
++            }
++        }
+ 
+-  /* The number of vector defs is determined by the number of vector statements
+-     in the node from which we get those statements.  */
+-  if (SLP_TREE_RIGHT (slp_node))
+-    number_of_vects = SLP_TREE_NUMBER_OF_VEC_STMTS (SLP_TREE_RIGHT (slp_node));
+-  else
+-    number_of_vects = SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node);
++      if (!vectorized_defs)
++        {
++          if (i == 0)
++            {
++              number_of_vects = SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node);
++              /* Number of vector stmts was calculated according to LHS in
++                 vect_schedule_slp_instance (), fix it by replacing LHS with
++                 RHS, if necessary.  See vect_get_smallest_scalar_type () for
++                 details.  */
++              vect_get_smallest_scalar_type (first_stmt, &lhs_size_unit,
++                                             &rhs_size_unit);
++              if (rhs_size_unit != lhs_size_unit)
++                {
++                  number_of_vects *= rhs_size_unit;
++                  number_of_vects /= lhs_size_unit;
++                }
++            }
++        }
+ 
+-  *vec_oprnds1 = VEC_alloc (tree, heap, number_of_vects);
++      /* Allocate memory for vectorized defs.  */
++      vec_defs = VEC_alloc (tree, heap, number_of_vects);
+ 
+-  if (SLP_TREE_RIGHT (slp_node))
+-    /* The defs are already vectorized.  */
+-    vect_get_slp_vect_defs (SLP_TREE_RIGHT (slp_node), vec_oprnds1);
+-  else
+-    /* Build vectors from scalar defs.  */
+-    vect_get_constant_vectors (op1, slp_node, vec_oprnds1, 1, number_of_vects,
+-                               -1);
++      /* For reduction defs we call vect_get_constant_vectors (), since we are
++         looking for initial loop invariant values.  */
++      if (vectorized_defs && reduc_index == -1)
++        /* The defs are already vectorized.  */
++        vect_get_slp_vect_defs (child, &vec_defs);
++      else
++        /* Build vectors from scalar defs.  */
++        vect_get_constant_vectors (oprnd, slp_node, &vec_defs, i,
++                                   number_of_vects, reduc_index);
++
++      VEC_quick_push (slp_void_p, *vec_oprnds, (slp_void_p) vec_defs);
++
++      /* For reductions, we only need initial values.  */
++      if (reduc_index != -1)
++        return;
++    }
+ }
+ 
+-
+ /* Create NCOPIES permutation statements using the mask MASK_BYTES (by
+    building a vector of type MASK_TYPE from it) and two input vectors placed in
+    DR_CHAIN at FIRST_VEC_INDX and SECOND_VEC_INDX for the first copy and
+@@ -2453,14 +2786,14 @@
+   tree vectype;
+   int i;
+   slp_tree loads_node;
++  slp_void_p child;
+ 
+   if (!node)
+     return false;
+ 
+-  vect_schedule_slp_instance (SLP_TREE_LEFT (node), instance,
+-                              vectorization_factor);
+-  vect_schedule_slp_instance (SLP_TREE_RIGHT (node), instance,
+-                              vectorization_factor);
++  FOR_EACH_VEC_ELT (slp_void_p, SLP_TREE_CHILDREN (node), i, child)
++    vect_schedule_slp_instance ((slp_tree) child, instance,
++                                vectorization_factor);
+ 
+   stmt = VEC_index (gimple, SLP_TREE_SCALAR_STMTS (node), 0);
+   stmt_info = vinfo_for_stmt (stmt);
+@@ -2507,8 +2840,11 @@
+   /* Loads should be inserted before the first load.  */
+   if (SLP_INSTANCE_FIRST_LOAD_STMT (instance)
+       && STMT_VINFO_STRIDED_ACCESS (stmt_info)
+-      && !REFERENCE_CLASS_P (gimple_get_lhs (stmt)))
++      && !REFERENCE_CLASS_P (gimple_get_lhs (stmt))
++      && SLP_INSTANCE_LOAD_PERMUTATION (instance))
+     si = gsi_for_stmt (SLP_INSTANCE_FIRST_LOAD_STMT (instance));
++  else if (is_pattern_stmt_p (stmt_info))
++    si = gsi_for_stmt (STMT_VINFO_RELATED_STMT (stmt_info));
+   else
+     si = gsi_for_stmt (stmt);
+ 
+--- a/src/gcc/tree-vect-stmts.c
++++ b/src/gcc/tree-vect-stmts.c
+@@ -42,6 +42,82 @@
+ #include "langhooks.h"
+ 
+ 
++/* Return a variable of type ELEM_TYPE[NELEMS].  */
++
++static tree
++create_vector_array (tree elem_type, unsigned HOST_WIDE_INT nelems)
++{
++  return create_tmp_var (build_array_type_nelts (elem_type, nelems),
++			 "vect_array");
++}
++
++/* ARRAY is an array of vectors created by create_vector_array.
++   Return an SSA_NAME for the vector in index N.  The reference
++   is part of the vectorization of STMT and the vector is associated
++   with scalar destination SCALAR_DEST.  */
++
++static tree
++read_vector_array (gimple stmt, gimple_stmt_iterator *gsi, tree scalar_dest,
++		   tree array, unsigned HOST_WIDE_INT n)
++{
++  tree vect_type, vect, vect_name, array_ref;
++  gimple new_stmt;
++
++  gcc_assert (TREE_CODE (TREE_TYPE (array)) == ARRAY_TYPE);
++  vect_type = TREE_TYPE (TREE_TYPE (array));
++  vect = vect_create_destination_var (scalar_dest, vect_type);
++  array_ref = build4 (ARRAY_REF, vect_type, array,
++		      build_int_cst (size_type_node, n),
++		      NULL_TREE, NULL_TREE);
++
++  new_stmt = gimple_build_assign (vect, array_ref);
++  vect_name = make_ssa_name (vect, new_stmt);
++  gimple_assign_set_lhs (new_stmt, vect_name);
++  vect_finish_stmt_generation (stmt, new_stmt, gsi);
++  mark_symbols_for_renaming (new_stmt);
++
++  return vect_name;
++}
++
++/* ARRAY is an array of vectors created by create_vector_array.
++   Emit code to store SSA_NAME VECT in index N of the array.
++   The store is part of the vectorization of STMT.  */
++
++static void
++write_vector_array (gimple stmt, gimple_stmt_iterator *gsi, tree vect,
++		    tree array, unsigned HOST_WIDE_INT n)
++{
++  tree array_ref;
++  gimple new_stmt;
++
++  array_ref = build4 (ARRAY_REF, TREE_TYPE (vect), array,
++		      build_int_cst (size_type_node, n),
++		      NULL_TREE, NULL_TREE);
++
++  new_stmt = gimple_build_assign (array_ref, vect);
++  vect_finish_stmt_generation (stmt, new_stmt, gsi);
++  mark_symbols_for_renaming (new_stmt);
++}
++
++/* PTR is a pointer to an array of type TYPE.  Return a representation
++   of *PTR.  The memory reference replaces those in FIRST_DR
++   (and its group).  */
++
++static tree
++create_array_ref (tree type, tree ptr, struct data_reference *first_dr)
++{
++  struct ptr_info_def *pi;
++  tree mem_ref, alias_ptr_type;
++
++  alias_ptr_type = reference_alias_ptr_type (DR_REF (first_dr));
++  mem_ref = build2 (MEM_REF, type, ptr, build_int_cst (alias_ptr_type, 0));
++  /* Arrays have the same alignment as their type.  */
++  pi = get_ptr_info (ptr);
++  pi->align = TYPE_ALIGN_UNIT (type);
++  pi->misalign = 0;
++  return mem_ref;
++}
++
+ /* Utility functions used by vect_mark_stmts_to_be_vectorized.  */
+ 
+ /* Function vect_mark_relevant.
+@@ -50,33 +126,72 @@
+ 
+ static void
+ vect_mark_relevant (VEC(gimple,heap) **worklist, gimple stmt,
+-		    enum vect_relevant relevant, bool live_p)
++		    enum vect_relevant relevant, bool live_p,
++		    bool used_in_pattern)
+ {
+   stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+   enum vect_relevant save_relevant = STMT_VINFO_RELEVANT (stmt_info);
+   bool save_live_p = STMT_VINFO_LIVE_P (stmt_info);
++  gimple pattern_stmt;
+ 
+   if (vect_print_dump_info (REPORT_DETAILS))
+     fprintf (vect_dump, "mark relevant %d, live %d.", relevant, live_p);
+ 
++  /* If this stmt is an original stmt in a pattern, we might need to mark its
++     related pattern stmt instead of the original stmt.  However, such stmts 
++     may have their own uses that are not in any pattern, in such cases the
++     stmt itself should be marked.  */
+   if (STMT_VINFO_IN_PATTERN_P (stmt_info))
+     {
+-      gimple pattern_stmt;
++      bool found = false;
++      if (!used_in_pattern)
++        {
++          imm_use_iterator imm_iter;
++          use_operand_p use_p;
++          gimple use_stmt;
++          tree lhs;
++
++          if (is_gimple_assign (stmt))
++            lhs = gimple_assign_lhs (stmt);
++          else
++            lhs = gimple_call_lhs (stmt);
++
++          /* This use is out of pattern use, if LHS has other uses that are
++             pattern uses, we should mark the stmt itself, and not the pattern
++             stmt.  */
++          FOR_EACH_IMM_USE_FAST (use_p, imm_iter, lhs)
++            {
++              if (is_gimple_debug (USE_STMT (use_p)))
++                continue;
++              use_stmt = USE_STMT (use_p);
++
++              if (vinfo_for_stmt (use_stmt)
++                  && STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (use_stmt)))
++                {
++                  found = true;
++                  break;
++                }
++            }
++        }
++
++      if (!found)
++        {
++          /* This is the last stmt in a sequence that was detected as a
++             pattern that can potentially be vectorized.  Don't mark the stmt
++             as relevant/live because it's not going to be vectorized.
++             Instead mark the pattern-stmt that replaces it.  */
+ 
+-      /* This is the last stmt in a sequence that was detected as a
+-         pattern that can potentially be vectorized.  Don't mark the stmt
+-         as relevant/live because it's not going to be vectorized.
+-         Instead mark the pattern-stmt that replaces it.  */
+-
+-      pattern_stmt = STMT_VINFO_RELATED_STMT (stmt_info);
+-
+-      if (vect_print_dump_info (REPORT_DETAILS))
+-        fprintf (vect_dump, "last stmt in pattern. don't mark relevant/live.");
+-      stmt_info = vinfo_for_stmt (pattern_stmt);
+-      gcc_assert (STMT_VINFO_RELATED_STMT (stmt_info) == stmt);
+-      save_relevant = STMT_VINFO_RELEVANT (stmt_info);
+-      save_live_p = STMT_VINFO_LIVE_P (stmt_info);
+-      stmt = pattern_stmt;
++          pattern_stmt = STMT_VINFO_RELATED_STMT (stmt_info);
++
++          if (vect_print_dump_info (REPORT_DETAILS))
++            fprintf (vect_dump, "last stmt in pattern. don't mark"
++                                " relevant/live.");
++          stmt_info = vinfo_for_stmt (pattern_stmt);
++          gcc_assert (STMT_VINFO_RELATED_STMT (stmt_info) == stmt);
++          save_relevant = STMT_VINFO_RELEVANT (stmt_info);
++          save_live_p = STMT_VINFO_LIVE_P (stmt_info);
++          stmt = pattern_stmt;
++        }
+     }
+ 
+   STMT_VINFO_LIVE_P (stmt_info) |= live_p;
+@@ -361,7 +476,8 @@
+         }
+     }
+ 
+-  vect_mark_relevant (worklist, def_stmt, relevant, live_p);
++  vect_mark_relevant (worklist, def_stmt, relevant, live_p,
++                      is_pattern_stmt_p (stmt_vinfo));
+   return true;
+ }
+ 
+@@ -418,7 +534,7 @@
+ 	    }
+ 
+ 	  if (vect_stmt_relevant_p (phi, loop_vinfo, &relevant, &live_p))
+-	    vect_mark_relevant (&worklist, phi, relevant, live_p);
++	    vect_mark_relevant (&worklist, phi, relevant, live_p, false);
+ 	}
+       for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
+ 	{
+@@ -430,7 +546,7 @@
+ 	    }
+ 
+ 	  if (vect_stmt_relevant_p (stmt, loop_vinfo, &relevant, &live_p))
+-            vect_mark_relevant (&worklist, stmt, relevant, live_p);
++            vect_mark_relevant (&worklist, stmt, relevant, live_p, false);
+ 	}
+     }
+ 
+@@ -529,15 +645,109 @@
+             break;
+         }
+ 
+-      FOR_EACH_PHI_OR_STMT_USE (use_p, stmt, iter, SSA_OP_USE)
+-	{
+-	  tree op = USE_FROM_PTR (use_p);
+-	  if (!process_use (stmt, op, loop_vinfo, live_p, relevant, &worklist))
+-	    {
+-	      VEC_free (gimple, heap, worklist);
+-	      return false;
+-	    }
+-	}
++      if (is_pattern_stmt_p (vinfo_for_stmt (stmt)))
++        {
++          /* Pattern statements are not inserted into the code, so
++             FOR_EACH_PHI_OR_STMT_USE optimizes their operands out, and we
++             have to scan the RHS or function arguments instead.  */
++          if (is_gimple_assign (stmt))
++            {
++              tree rhs = gimple_assign_rhs1 (stmt);
++              unsigned int op_num;
++              tree op;
++	      enum tree_code rhs_code;
++              switch (get_gimple_rhs_class (gimple_assign_rhs_code (stmt)))
++                {
++                  case GIMPLE_SINGLE_RHS:
++                    op = gimple_assign_rhs1 (stmt);
++                    rhs_code = gimple_assign_rhs_code (stmt);
++		    i = 0;
++		    if (rhs_code == COND_EXPR
++			&& COMPARISON_CLASS_P (TREE_OPERAND (op, 0)))
++		      {
++			op = TREE_OPERAND (op, 0);
++			if (!process_use (stmt, TREE_OPERAND (op, 0),
++				   	  loop_vinfo,
++					  live_p, relevant, &worklist)
++			    || !process_use (stmt, TREE_OPERAND (op, 1),
++				   	 loop_vinfo,
++				         live_p, relevant, &worklist))
++		    	  {
++			    VEC_free (gimple, heap, worklist);
++			    return false;
++			  }
++		  	i = 1;
++		      }
++                    op_num = TREE_OPERAND_LENGTH (gimple_assign_rhs1 (stmt));
++                    for (i; i < op_num; i++)
++                      {
++                        op = TREE_OPERAND (rhs, i);
++                        if (!process_use (stmt, op, loop_vinfo, live_p, relevant,
++                                          &worklist))
++                          {
++                            VEC_free (gimple, heap, worklist);
++                            return false;
++                          }
++                      }
++                    break;
++                   
++                  case GIMPLE_BINARY_RHS:
++                    op = gimple_assign_rhs1 (stmt);
++                    if (!process_use (stmt, op, loop_vinfo, live_p, relevant,
++                                      &worklist))
++                      {
++                        VEC_free (gimple, heap, worklist);
++                        return false;
++                      }
++                    op = gimple_assign_rhs2 (stmt);
++                    if (!process_use (stmt, op, loop_vinfo, live_p, relevant,
++                                      &worklist))
++                      {
++                        VEC_free (gimple, heap, worklist);
++                        return false;
++                      }
++                    break;
++
++                  case GIMPLE_UNARY_RHS:
++                    op = gimple_assign_rhs1 (stmt);
++                    if (!process_use (stmt, op, loop_vinfo, live_p, relevant,
++                                      &worklist))
++                      {
++                        VEC_free (gimple, heap, worklist);
++                        return false;
++                      }
++
++                    break;
++                  
++                  default: 
++                    return false;
++                }
++            }
++          else if (is_gimple_call (stmt))
++            {
++              for (i = 0; i < gimple_call_num_args (stmt); i++)
++                {
++                  tree arg = gimple_call_arg (stmt, i);
++                  if (!process_use (stmt, arg, loop_vinfo, live_p, relevant,
++                                    &worklist))
++                    {
++                      VEC_free (gimple, heap, worklist);
++                      return false;
++                    }
++                }
++            }
++        }
++      else
++        FOR_EACH_PHI_OR_STMT_USE (use_p, stmt, iter, SSA_OP_USE)
++          {
++            tree op = USE_FROM_PTR (use_p);
++            if (!process_use (stmt, op, loop_vinfo, live_p, relevant,
++                              &worklist))
++              {
++                VEC_free (gimple, heap, worklist);
++                return false;
++              }
++          }
+     } /* while worklist */
+ 
+   VEC_free (gimple, heap, worklist);
+@@ -623,6 +833,46 @@
+ }
+ 
+ 
++/* Model cost for type demotion and promotion operations.  PWR is normally
++   zero for single-step promotions and demotions.  It will be one if 
++   two-step promotion/demotion is required, and so on.  Each additional
++   step doubles the number of instructions required.  */
++
++static void
++vect_model_promotion_demotion_cost (stmt_vec_info stmt_info,
++				    enum vect_def_type *dt, int pwr)
++{
++  int i, tmp;
++  int inside_cost = 0, outside_cost = 0, single_stmt_cost;
++
++  /* The SLP costs were already calculated during SLP tree build.  */
++  if (PURE_SLP_STMT (stmt_info))
++    return;
++
++  single_stmt_cost = vect_get_stmt_cost (vec_promote_demote);
++  for (i = 0; i < pwr + 1; i++)
++    {
++      tmp = (STMT_VINFO_TYPE (stmt_info) == type_promotion_vec_info_type) ?
++	(i + 1) : i;
++      inside_cost += vect_pow2 (tmp) * single_stmt_cost;
++    }
++
++  /* FORNOW: Assuming maximum 2 args per stmts.  */
++  for (i = 0; i < 2; i++)
++    {
++      if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
++        outside_cost += vect_get_stmt_cost (vector_stmt);
++    }
++
++  if (vect_print_dump_info (REPORT_COST))
++    fprintf (vect_dump, "vect_model_promotion_demotion_cost: inside_cost = %d, "
++             "outside_cost = %d .", inside_cost, outside_cost);
++
++  /* Set the costs in STMT_INFO.  */
++  stmt_vinfo_set_inside_of_loop_cost (stmt_info, NULL, inside_cost);
++  stmt_vinfo_set_outside_of_loop_cost (stmt_info, NULL, outside_cost);
++}
++
+ /* Function vect_cost_strided_group_size
+ 
+    For strided load or store, return the group_size only if it is the first
+@@ -648,7 +898,8 @@
+ 
+ void
+ vect_model_store_cost (stmt_vec_info stmt_info, int ncopies,
+-		       enum vect_def_type dt, slp_tree slp_node)
++		       bool store_lanes_p, enum vect_def_type dt,
++		       slp_tree slp_node)
+ {
+   int group_size;
+   unsigned int inside_cost = 0, outside_cost = 0;
+@@ -685,13 +936,15 @@
+       first_dr = STMT_VINFO_DATA_REF (stmt_info);
+     }
+ 
+-  /* Is this an access in a group of stores, which provide strided access?
+-     If so, add in the cost of the permutes.  */
+-  if (group_size > 1)
++  /* We assume that the cost of a single store-lanes instruction is
++     equivalent to the cost of GROUP_SIZE separate stores.  If a strided
++     access is instead being provided by a permute-and-store operation,
++     include the cost of the permutes.  */
++  if (!store_lanes_p && group_size > 1)
+     {
+       /* Uses a high and low interleave operation for each needed permute.  */
+       inside_cost = ncopies * exact_log2(group_size) * group_size
+-        * vect_get_stmt_cost (vector_stmt);
++        * vect_get_stmt_cost (vec_perm);
+ 
+       if (vect_print_dump_info (REPORT_COST))
+         fprintf (vect_dump, "vect_model_store_cost: strided group_size = %d .",
+@@ -749,6 +1002,16 @@
+         break;
+       }
+ 
++    case dr_unaligned_unsupported:
++      {
++        *inside_cost = VECT_MAX_COST;
++
++        if (vect_print_dump_info (REPORT_COST))
++          fprintf (vect_dump, "vect_model_store_cost: unsupported access.");
++
++        break;
++      }
++
+     default:
+       gcc_unreachable ();
+     }
+@@ -763,8 +1026,8 @@
+    access scheme chosen.  */
+ 
+ void
+-vect_model_load_cost (stmt_vec_info stmt_info, int ncopies, slp_tree slp_node)
+-
++vect_model_load_cost (stmt_vec_info stmt_info, int ncopies, bool load_lanes_p,
++		      slp_tree slp_node)
+ {
+   int group_size;
+   gimple first_stmt;
+@@ -789,13 +1052,15 @@
+       first_dr = dr;
+     }
+ 
+-  /* Is this an access in a group of loads providing strided access?
+-     If so, add in the cost of the permutes.  */
+-  if (group_size > 1)
++  /* We assume that the cost of a single load-lanes instruction is
++     equivalent to the cost of GROUP_SIZE separate loads.  If a strided
++     access is instead being provided by a load-and-permute operation,
++     include the cost of the permutes.  */
++  if (!load_lanes_p && group_size > 1)
+     {
+       /* Uses an even and odd extract operations for each needed permute.  */
+       inside_cost = ncopies * exact_log2(group_size) * group_size
+-	* vect_get_stmt_cost (vector_stmt);
++	* vect_get_stmt_cost (vec_perm);
+ 
+       if (vect_print_dump_info (REPORT_COST))
+         fprintf (vect_dump, "vect_model_load_cost: strided group_size = %d .",
+@@ -855,7 +1120,7 @@
+     case dr_explicit_realign:
+       {
+         *inside_cost += ncopies * (2 * vect_get_stmt_cost (vector_load)
+-           + vect_get_stmt_cost (vector_stmt));
++				   + vect_get_stmt_cost (vec_perm));
+ 
+         /* FIXME: If the misalignment remains fixed across the iterations of
+            the containing loop, the following cost should be added to the
+@@ -863,6 +1128,9 @@
+         if (targetm.vectorize.builtin_mask_for_load)
+           *inside_cost += vect_get_stmt_cost (vector_stmt);
+ 
++        if (vect_print_dump_info (REPORT_COST))
++          fprintf (vect_dump, "vect_model_load_cost: explicit realign");
++
+         break;
+       }
+     case dr_explicit_realign_optimized:
+@@ -886,7 +1154,22 @@
+           }
+ 
+         *inside_cost += ncopies * (vect_get_stmt_cost (vector_load)
+-          + vect_get_stmt_cost (vector_stmt));
++				   + vect_get_stmt_cost (vec_perm));
++
++        if (vect_print_dump_info (REPORT_COST))
++          fprintf (vect_dump,
++		   "vect_model_load_cost: explicit realign optimized");
++
++        break;
++      }
++
++    case dr_unaligned_unsupported:
++      {
++        *inside_cost = VECT_MAX_COST;
++
++        if (vect_print_dump_info (REPORT_COST))
++          fprintf (vect_dump, "vect_model_load_cost: unsupported access.");
++
+         break;
+       }
+ 
+@@ -1068,7 +1351,14 @@
+ 
+         /* Get the def from the vectorized stmt.  */
+         def_stmt_info = vinfo_for_stmt (def_stmt);
++
+         vec_stmt = STMT_VINFO_VEC_STMT (def_stmt_info);
++        /* Get vectorized pattern statement.  */
++        if (!vec_stmt
++            && STMT_VINFO_IN_PATTERN_P (def_stmt_info)
++            && !STMT_VINFO_RELEVANT (def_stmt_info))
++          vec_stmt = STMT_VINFO_VEC_STMT (vinfo_for_stmt (
++                       STMT_VINFO_RELATED_STMT (def_stmt_info)));
+         gcc_assert (vec_stmt);
+ 	if (gimple_code (vec_stmt) == GIMPLE_PHI)
+ 	  vec_oprnd = PHI_RESULT (vec_stmt);
+@@ -1217,16 +1507,35 @@
+ }
+ 
+ 
+-/* Get vectorized definitions for OP0 and OP1, or SLP_NODE if it is not
+-   NULL.  */
++/* Get vectorized definitions for OP0 and OP1.
++   REDUC_INDEX is the index of reduction operand in case of reduction,
++   and -1 otherwise.  */
+ 
+-static void
++void
+ vect_get_vec_defs (tree op0, tree op1, gimple stmt,
+-		   VEC(tree,heap) **vec_oprnds0, VEC(tree,heap) **vec_oprnds1,
+-		   slp_tree slp_node)
++		   VEC (tree, heap) **vec_oprnds0,
++		   VEC (tree, heap) **vec_oprnds1,
++		   slp_tree slp_node, int reduc_index)
+ {
+   if (slp_node)
+-    vect_get_slp_defs (op0, op1, slp_node, vec_oprnds0, vec_oprnds1, -1);
++    {
++      int nops = (op1 == NULL_TREE) ? 1 : 2;
++      VEC (tree, heap) *ops = VEC_alloc (tree, heap, nops);
++      VEC (slp_void_p, heap) *vec_defs = VEC_alloc (slp_void_p, heap, nops);
++
++      VEC_quick_push (tree, ops, op0);
++      if (op1)
++        VEC_quick_push (tree, ops, op1);
++
++      vect_get_slp_defs (ops, slp_node, &vec_defs, reduc_index);
++
++      *vec_oprnds0 = (VEC (tree, heap) *) VEC_index (slp_void_p, vec_defs, 0);
++      if (op1)
++        *vec_oprnds1 = (VEC (tree, heap) *) VEC_index (slp_void_p, vec_defs, 1);
++
++      VEC_free (tree, heap, ops);
++      VEC_free (slp_void_p, heap, vec_defs);
++    }
+   else
+     {
+       tree vec_oprnd;
+@@ -1324,6 +1633,7 @@
+   VEC(tree, heap) *vargs = NULL;
+   enum { NARROW, NONE, WIDEN } modifier;
+   size_t i, nargs;
++  tree lhs;
+ 
+   /* FORNOW: unsupported in basic block SLP.  */
+   gcc_assert (loop_vinfo);
+@@ -1461,7 +1771,7 @@
+   /** Transform.  **/
+ 
+   if (vect_print_dump_info (REPORT_DETAILS))
+-    fprintf (vect_dump, "transform operation.");
++    fprintf (vect_dump, "transform call.");
+ 
+   /* Handle def.  */
+   scalar_dest = gimple_call_lhs (stmt);
+@@ -1580,8 +1890,11 @@
+      rhs of the statement with something harmless.  */
+ 
+   type = TREE_TYPE (scalar_dest);
+-  new_stmt = gimple_build_assign (gimple_call_lhs (stmt),
+-				  build_zero_cst (type));
++  if (is_pattern_stmt_p (stmt_info))
++    lhs = gimple_call_lhs (STMT_VINFO_RELATED_STMT (stmt_info));
++  else
++    lhs = gimple_call_lhs (stmt);
++  new_stmt = gimple_build_assign (lhs, build_zero_cst (type));
+   set_vinfo_for_stmt (new_stmt, stmt_info);
+   /* For pattern statements make the related statement to point to
+      NEW_STMT in order to be able to retrieve the original statement
+@@ -1810,7 +2123,8 @@
+       for (j = 0; j < ncopies; j++)
+ 	{
+ 	  if (j == 0)
+-	    vect_get_vec_defs (op0, NULL, stmt, &vec_oprnds0, NULL, slp_node);
++	    vect_get_vec_defs (op0, NULL, stmt, &vec_oprnds0, NULL, slp_node,
++			       -1);
+ 	  else
+ 	    vect_get_vec_defs_for_stmt_copy (dt, &vec_oprnds0, NULL);
+ 
+@@ -2015,7 +2329,7 @@
+     {
+       /* Handle uses.  */
+       if (j == 0)
+-        vect_get_vec_defs (op, NULL, stmt, &vec_oprnds, NULL, slp_node);
++        vect_get_vec_defs (op, NULL, stmt, &vec_oprnds, NULL, slp_node, -1);
+       else
+         vect_get_vec_defs_for_stmt_copy (dt, &vec_oprnds, NULL);
+ 
+@@ -2048,6 +2362,42 @@
+ }
+ 
+ 
++/* Return TRUE if CODE (a shift operation) is supported for SCALAR_TYPE
++   either as shift by a scalar or by a vector.  */
++
++bool
++vect_supportable_shift (enum tree_code code, tree scalar_type)
++{
++
++  enum machine_mode vec_mode;
++  optab optab;
++  int icode;
++  tree vectype;
++
++  vectype = get_vectype_for_scalar_type (scalar_type);
++  if (!vectype)
++    return false;
++
++  optab = optab_for_tree_code (code, vectype, optab_scalar);
++  if (!optab
++      || optab_handler (optab, TYPE_MODE (vectype)) == CODE_FOR_nothing)
++    {
++      optab = optab_for_tree_code (code, vectype, optab_vector);
++      if (!optab
++          || (optab_handler (optab, TYPE_MODE (vectype))
++                      == CODE_FOR_nothing))
++        return false;
++    }
++
++  vec_mode = TYPE_MODE (vectype);
++  icode = (int) optab_handler (optab, vec_mode);
++  if (icode == CODE_FOR_nothing)
++    return false;
++
++  return true;
++}
++
++
+ /* Function vectorizable_shift.
+ 
+    Check if STMT performs a shift operation that can be vectorized.
+@@ -2334,10 +2684,10 @@
+              operand 1 should be of a vector type (the usual case).  */
+           if (vec_oprnd1)
+             vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL,
+-                               slp_node);
++                               slp_node, -1);
+           else
+             vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1,
+-                               slp_node);
++                               slp_node, -1);
+         }
+       else
+         vect_get_vec_defs_for_stmt_copy (dt, &vec_oprnds0, &vec_oprnds1);
+@@ -2645,10 +2995,10 @@
+ 	{
+ 	  if (op_type == binary_op || op_type == ternary_op)
+ 	    vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1,
+-			       slp_node);
++			       slp_node, -1);
+ 	  else
+ 	    vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL,
+-			       slp_node);
++			       slp_node, -1);
+ 	  if (op_type == ternary_op)
+ 	    {
+ 	      vec_oprnds2 = VEC_alloc (tree, heap, 1);
+@@ -2839,11 +3189,9 @@
+   VEC (tree, heap) *vec_oprnds0 = NULL;
+   VEC (tree, heap) *vec_dsts = NULL, *interm_types = NULL, *tmp_vec_dsts = NULL;
+   tree last_oprnd, intermediate_type;
++  bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
+ 
+-  /* FORNOW: not supported by basic block SLP vectorization.  */
+-  gcc_assert (loop_vinfo);
+-
+-  if (!STMT_VINFO_RELEVANT_P (stmt_info))
++  if (!STMT_VINFO_RELEVANT_P (stmt_info) && !bb_vinfo)
+     return false;
+ 
+   if (STMT_VINFO_DEF_TYPE (stmt_info) != vect_internal_def)
+@@ -2871,7 +3219,7 @@
+ 	     && SCALAR_FLOAT_TYPE_P (TREE_TYPE (op0))
+ 	     && CONVERT_EXPR_CODE_P (code))))
+     return false;
+-  if (!vect_is_simple_use_1 (op0, loop_vinfo, NULL,
++  if (!vect_is_simple_use_1 (op0, loop_vinfo, bb_vinfo,
+ 			     &def_stmt, &def, &dt[0], &vectype_in))
+     {
+       if (vect_print_dump_info (REPORT_DETAILS))
+@@ -2919,7 +3267,7 @@
+       STMT_VINFO_TYPE (stmt_info) = type_demotion_vec_info_type;
+       if (vect_print_dump_info (REPORT_DETAILS))
+         fprintf (vect_dump, "=== vectorizable_demotion ===");
+-      vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
++      vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt);
+       return true;
+     }
+ 
+@@ -2962,7 +3310,8 @@
+     {
+       /* Handle uses.  */
+       if (slp_node)
+-        vect_get_slp_defs (op0, NULL_TREE, slp_node, &vec_oprnds0, NULL, -1);
++        vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL,
++			   slp_node, -1);
+       else
+         {
+           VEC_free (tree, heap, vec_oprnds0);
+@@ -3118,11 +3467,10 @@
+   int multi_step_cvt = 0;
+   VEC (tree, heap) *vec_oprnds0 = NULL, *vec_oprnds1 = NULL;
+   VEC (tree, heap) *vec_dsts = NULL, *interm_types = NULL, *tmp_vec_dsts = NULL;
++  bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
++  unsigned int k;
+ 
+-  /* FORNOW: not supported by basic block SLP vectorization.  */
+-  gcc_assert (loop_vinfo);
+-
+-  if (!STMT_VINFO_RELEVANT_P (stmt_info))
++  if (!STMT_VINFO_RELEVANT_P (stmt_info) && !bb_vinfo)
+     return false;
+ 
+   if (STMT_VINFO_DEF_TYPE (stmt_info) != vect_internal_def)
+@@ -3137,7 +3485,8 @@
+ 
+   code = gimple_assign_rhs_code (stmt);
+   if (!CONVERT_EXPR_CODE_P (code)
+-      && code != WIDEN_MULT_EXPR)
++      && code != WIDEN_MULT_EXPR
++      && code != WIDEN_LSHIFT_EXPR)
+     return false;
+ 
+   scalar_dest = gimple_assign_lhs (stmt);
+@@ -3151,13 +3500,40 @@
+ 	     && SCALAR_FLOAT_TYPE_P (TREE_TYPE (op0))
+ 	     && CONVERT_EXPR_CODE_P (code))))
+     return false;
+-  if (!vect_is_simple_use_1 (op0, loop_vinfo, NULL,
++  if (!vect_is_simple_use_1 (op0, loop_vinfo, bb_vinfo,
+ 			     &def_stmt, &def, &dt[0], &vectype_in))
+     {
+       if (vect_print_dump_info (REPORT_DETAILS))
+ 	fprintf (vect_dump, "use not simple.");
+       return false;
+     }
++
++  op_type = TREE_CODE_LENGTH (code);
++  if (op_type == binary_op)
++    {
++      bool ok;
++
++      op1 = gimple_assign_rhs2 (stmt);
++      if (code == WIDEN_MULT_EXPR || code == WIDEN_LSHIFT_EXPR)
++        {
++	  /* For WIDEN_MULT_EXPR, if OP0 is a constant, use the type of
++	     OP1.  */
++          if (CONSTANT_CLASS_P (op0))
++            ok = vect_is_simple_use_1 (op1, loop_vinfo, bb_vinfo,
++                             &def_stmt, &def, &dt[1], &vectype_in);
++          else
++            ok = vect_is_simple_use (op1, loop_vinfo, bb_vinfo, &def_stmt,
++				     &def, &dt[1]);
++
++          if (!ok)
++            {
++	      if (vect_print_dump_info (REPORT_DETAILS))
++	        fprintf (vect_dump, "use not simple.");
++              return false;
++            }
++        }        
++    }
++
+   /* If op0 is an external or constant def use a vector type with
+      the same size as the output vector type.  */
+   if (!vectype_in)
+@@ -3190,18 +3566,6 @@
+ 
+   gcc_assert (ncopies >= 1);
+ 
+-  op_type = TREE_CODE_LENGTH (code);
+-  if (op_type == binary_op)
+-    {
+-      op1 = gimple_assign_rhs2 (stmt);
+-      if (!vect_is_simple_use (op1, loop_vinfo, NULL, &def_stmt, &def, &dt[1]))
+-        {
+-	  if (vect_print_dump_info (REPORT_DETAILS))
+-	    fprintf (vect_dump, "use not simple.");
+-          return false;
+-        }
+-    }
+-
+   /* Supportable by target?  */
+   if (!supportable_widening_operation (code, stmt, vectype_out, vectype_in,
+ 				       &decl1, &decl2, &code1, &code2,
+@@ -3217,7 +3581,7 @@
+       STMT_VINFO_TYPE (stmt_info) = type_promotion_vec_info_type;
+       if (vect_print_dump_info (REPORT_DETAILS))
+         fprintf (vect_dump, "=== vectorizable_promotion ===");
+-      vect_model_simple_cost (stmt_info, 2*ncopies, dt, NULL);
++      vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt);
+       return true;
+     }
+ 
+@@ -3227,6 +3591,14 @@
+     fprintf (vect_dump, "transform type promotion operation. ncopies = %d.",
+                         ncopies);
+ 
++  if (code == WIDEN_MULT_EXPR || code == WIDEN_LSHIFT_EXPR)
++    {
++      if (CONSTANT_CLASS_P (op0))
++	op0 = fold_convert (TREE_TYPE (op1), op0);
++      else if (CONSTANT_CLASS_P (op1))
++	op1 = fold_convert (TREE_TYPE (op0), op1);
++    }
++
+   /* Handle def.  */
+   /* In case of multi-step promotion, we first generate promotion operations
+      to the intermediate types, and then from that types to the final one.
+@@ -3260,6 +3632,8 @@
+       if (op_type == binary_op)
+         vec_oprnds1 = VEC_alloc (tree, heap, 1);
+     }
++  else if (code == WIDEN_LSHIFT_EXPR)
++    vec_oprnds1 = VEC_alloc (tree, heap, slp_node->vec_stmts_size);
+ 
+   /* In case the vectorization factor (VF) is bigger than the number
+      of elements that we can fit in a vectype (nunits), we have to generate
+@@ -3273,15 +3647,33 @@
+       if (j == 0)
+         {
+           if (slp_node)
+-              vect_get_slp_defs (op0, op1, slp_node, &vec_oprnds0,
+-                                 &vec_oprnds1, -1);
+-          else
++	    {
++	      if (code == WIDEN_LSHIFT_EXPR)
++                {
++                  vec_oprnd1 = op1;
++		  /* Store vec_oprnd1 for every vector stmt to be created
++		     for SLP_NODE.  We check during the analysis that all
++		     the shift arguments are the same.  */
++                  for (k = 0; k < slp_node->vec_stmts_size - 1; k++)
++                    VEC_quick_push (tree, vec_oprnds1, vec_oprnd1);
++
++    		  vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL,
++ 	                             slp_node, -1);
++                }
++              else
++                vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0,
++                                   &vec_oprnds1, slp_node, -1);
++	    }
++	  else
+             {
+               vec_oprnd0 = vect_get_vec_def_for_operand (op0, stmt, NULL);
+               VEC_quick_push (tree, vec_oprnds0, vec_oprnd0);
+               if (op_type == binary_op)
+                 {
+-                  vec_oprnd1 = vect_get_vec_def_for_operand (op1, stmt, NULL);
++                  if (code == WIDEN_LSHIFT_EXPR)
++                    vec_oprnd1 = op1;
++                  else
++                    vec_oprnd1 = vect_get_vec_def_for_operand (op1, stmt, NULL);
+                   VEC_quick_push (tree, vec_oprnds1, vec_oprnd1);
+                 }
+             }
+@@ -3292,7 +3684,10 @@
+           VEC_replace (tree, vec_oprnds0, 0, vec_oprnd0);
+           if (op_type == binary_op)
+             {
+-              vec_oprnd1 = vect_get_vec_def_for_stmt_copy (dt[1], vec_oprnd1);
++              if (code == WIDEN_LSHIFT_EXPR)
++                vec_oprnd1 = op1;
++              else
++                vec_oprnd1 = vect_get_vec_def_for_stmt_copy (dt[1], vec_oprnd1);
+               VEC_replace (tree, vec_oprnds1, 0, vec_oprnd1);
+             }
+         }
+@@ -3337,6 +3732,7 @@
+   stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+   struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info), *first_dr = NULL;
+   tree vectype = STMT_VINFO_VECTYPE (stmt_info);
++  tree elem_type;
+   loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
+   struct loop *loop = NULL;
+   enum machine_mode vec_mode;
+@@ -3352,6 +3748,7 @@
+   int j;
+   gimple next_stmt, first_stmt = NULL;
+   bool strided_store = false;
++  bool store_lanes_p = false;
+   unsigned int group_size, i;
+   VEC(tree,heap) *dr_chain = NULL, *oprnds = NULL, *result_chain = NULL;
+   bool inv_p;
+@@ -3359,6 +3756,7 @@
+   bool slp = (slp_node != NULL);
+   unsigned int vec_num;
+   bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
++  tree aggr_type;
+ 
+   if (loop_vinfo)
+     loop = LOOP_VINFO_LOOP (loop_vinfo);
+@@ -3412,7 +3810,8 @@
+ 
+   /* The scalar rhs type needs to be trivially convertible to the vector
+      component type.  This should always be the case.  */
+-  if (!useless_type_conversion_p (TREE_TYPE (vectype), TREE_TYPE (op)))
++  elem_type = TREE_TYPE (vectype);
++  if (!useless_type_conversion_p (elem_type, TREE_TYPE (op)))
+     {
+       if (vect_print_dump_info (REPORT_DETAILS))
+         fprintf (vect_dump, "???  operands of different types");
+@@ -3439,9 +3838,14 @@
+     {
+       strided_store = true;
+       first_stmt = DR_GROUP_FIRST_DR (stmt_info);
+-      if (!vect_strided_store_supported (vectype)
+-	  && !PURE_SLP_STMT (stmt_info) && !slp)
+-	return false;
++      if (!slp && !PURE_SLP_STMT (stmt_info))
++	{
++	  group_size = DR_GROUP_SIZE (vinfo_for_stmt (first_stmt));
++	  if (vect_store_lanes_supported (vectype, group_size))
++	    store_lanes_p = true;
++	  else if (!vect_strided_store_supported (vectype, group_size))
++	    return false;
++	}
+ 
+       if (first_stmt == stmt)
+ 	{
+@@ -3467,7 +3871,7 @@
+   if (!vec_stmt) /* transformation not required.  */
+     {
+       STMT_VINFO_TYPE (stmt_info) = store_vec_info_type;
+-      vect_model_store_cost (stmt_info, ncopies, dt, NULL);
++      vect_model_store_cost (stmt_info, ncopies, store_lanes_p, dt, NULL);
+       return true;
+     }
+ 
+@@ -3501,6 +3905,7 @@
+           vec_num = SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node);
+           first_stmt = VEC_index (gimple, SLP_TREE_SCALAR_STMTS (slp_node), 0); 
+           first_dr = STMT_VINFO_DATA_REF (vinfo_for_stmt (first_stmt));
++	  op = gimple_assign_rhs1 (first_stmt);
+         } 
+       else
+         /* VEC_NUM is the number of vect stmts to be created for this 
+@@ -3522,6 +3927,16 @@
+ 
+   alignment_support_scheme = vect_supportable_dr_alignment (first_dr, false);
+   gcc_assert (alignment_support_scheme);
++  /* Targets with store-lane instructions must not require explicit
++     realignment.  */
++  gcc_assert (!store_lanes_p
++	      || alignment_support_scheme == dr_aligned
++	      || alignment_support_scheme == dr_unaligned_supported);
++
++  if (store_lanes_p)
++    aggr_type = build_array_type_nelts (elem_type, vec_num * nunits);
++  else
++    aggr_type = vectype;
+ 
+   /* In case the vectorization factor (VF) is bigger than the number
+      of elements that we can fit in a vectype (nunits), we have to generate
+@@ -3573,8 +3988,8 @@
+           if (slp)
+             {
+ 	      /* Get vectorized arguments for SLP_NODE.  */
+-              vect_get_slp_defs (NULL_TREE, NULL_TREE, slp_node, &vec_oprnds,
+-                                 NULL, -1);
++              vect_get_vec_defs (op, NULL_TREE, stmt, &vec_oprnds,
++                                 NULL, slp_node, -1);
+ 
+               vec_oprnd = VEC_index (tree, vec_oprnds, 0);
+             }
+@@ -3610,9 +4025,9 @@
+ 	  /* We should have catched mismatched types earlier.  */
+ 	  gcc_assert (useless_type_conversion_p (vectype,
+ 						 TREE_TYPE (vec_oprnd)));
+-	  dataref_ptr = vect_create_data_ref_ptr (first_stmt, NULL, NULL_TREE,
+-						  &dummy, &ptr_incr, false,
+-						  &inv_p);
++	  dataref_ptr = vect_create_data_ref_ptr (first_stmt, aggr_type, NULL,
++						  NULL_TREE, &dummy,
++						  &ptr_incr, false, &inv_p);
+ 	  gcc_assert (bb_vinfo || !inv_p);
+ 	}
+       else
+@@ -3633,76 +4048,101 @@
+ 	      VEC_replace(tree, dr_chain, i, vec_oprnd);
+ 	      VEC_replace(tree, oprnds, i, vec_oprnd);
+ 	    }
+-	  dataref_ptr =
+-		bump_vector_ptr (dataref_ptr, ptr_incr, gsi, stmt, NULL_TREE);
+-	}
+-
+-      if (strided_store)
+-	{
+-	  result_chain = VEC_alloc (tree, heap, group_size);
+-	  /* Permute.  */
+-	  if (!vect_permute_store_chain (dr_chain, group_size, stmt, gsi,
+-					 &result_chain))
+-	    return false;
++	  dataref_ptr = bump_vector_ptr (dataref_ptr, ptr_incr, gsi, stmt,
++					 TYPE_SIZE_UNIT (aggr_type));
+ 	}
+ 
+-      next_stmt = first_stmt;
+-      for (i = 0; i < vec_num; i++)
++      if (store_lanes_p)
+ 	{
+-	  struct ptr_info_def *pi;
++	  tree vec_array;
+ 
+-	  if (i > 0)
+-	    /* Bump the vector pointer.  */
+-	    dataref_ptr = bump_vector_ptr (dataref_ptr, ptr_incr, gsi, stmt,
+-					   NULL_TREE);
+-
+-	  if (slp)
+-	    vec_oprnd = VEC_index (tree, vec_oprnds, i);
+-	  else if (strided_store)
+-	    /* For strided stores vectorized defs are interleaved in
+-	       vect_permute_store_chain().  */
+-	    vec_oprnd = VEC_index (tree, result_chain, i);
+-
+-	  data_ref = build2 (MEM_REF, TREE_TYPE (vec_oprnd), dataref_ptr,
+-			     build_int_cst (reference_alias_ptr_type
+-					    (DR_REF (first_dr)), 0));
+-	  pi = get_ptr_info (dataref_ptr);
+-	  pi->align = TYPE_ALIGN_UNIT (vectype);
+-          if (aligned_access_p (first_dr))
+-	    pi->misalign = 0;
+-          else if (DR_MISALIGNMENT (first_dr) == -1)
++	  /* Combine all the vectors into an array.  */
++	  vec_array = create_vector_array (vectype, vec_num);
++	  for (i = 0; i < vec_num; i++)
+ 	    {
+-	      TREE_TYPE (data_ref)
+-		= build_aligned_type (TREE_TYPE (data_ref),
+-				      TYPE_ALIGN (TREE_TYPE (vectype)));
+-	      pi->align = TYPE_ALIGN_UNIT (TREE_TYPE (vectype));
+-	      pi->misalign = 0;
+-	    }
+-	  else
+-	    {
+-	      TREE_TYPE (data_ref)
+-		= build_aligned_type (TREE_TYPE (data_ref),
+-				      TYPE_ALIGN (TREE_TYPE (vectype)));
+-	      pi->misalign = DR_MISALIGNMENT (first_dr);
++	      vec_oprnd = VEC_index (tree, dr_chain, i);
++	      write_vector_array (stmt, gsi, vec_oprnd, vec_array, i);
+ 	    }
+ 
+-	  /* Arguments are ready.  Create the new vector stmt.  */
+-	  new_stmt = gimple_build_assign (data_ref, vec_oprnd);
++	  /* Emit:
++	       MEM_REF[...all elements...] = STORE_LANES (VEC_ARRAY).  */
++	  data_ref = create_array_ref (aggr_type, dataref_ptr, first_dr);
++	  new_stmt = gimple_build_call_internal (IFN_STORE_LANES, 1, vec_array);
++	  gimple_call_set_lhs (new_stmt, data_ref);
+ 	  vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ 	  mark_symbols_for_renaming (new_stmt);
++	}
++      else
++	{
++	  new_stmt = NULL;
++	  if (strided_store)
++	    {
++	      result_chain = VEC_alloc (tree, heap, group_size);
++	      /* Permute.  */
++	      vect_permute_store_chain (dr_chain, group_size, stmt, gsi,
++					&result_chain);
++	    }
+ 
+-          if (slp)
+-            continue;
++	  next_stmt = first_stmt;
++	  for (i = 0; i < vec_num; i++)
++	    {
++	      struct ptr_info_def *pi;
+ 
+-          if (j == 0)
+-            STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt =  new_stmt;
++	      if (i > 0)
++		/* Bump the vector pointer.  */
++		dataref_ptr = bump_vector_ptr (dataref_ptr, ptr_incr, gsi,
++					       stmt, NULL_TREE);
++
++	      if (slp)
++		vec_oprnd = VEC_index (tree, vec_oprnds, i);
++	      else if (strided_store)
++		/* For strided stores vectorized defs are interleaved in
++		   vect_permute_store_chain().  */
++		vec_oprnd = VEC_index (tree, result_chain, i);
++
++	      data_ref = build2 (MEM_REF, TREE_TYPE (vec_oprnd), dataref_ptr,
++				 build_int_cst (reference_alias_ptr_type
++						(DR_REF (first_dr)), 0));
++	      pi = get_ptr_info (dataref_ptr);
++	      pi->align = TYPE_ALIGN_UNIT (vectype);
++	      if (aligned_access_p (first_dr))
++		pi->misalign = 0;
++	      else if (DR_MISALIGNMENT (first_dr) == -1)
++		{
++		  TREE_TYPE (data_ref)
++		    = build_aligned_type (TREE_TYPE (data_ref),
++					  TYPE_ALIGN (elem_type));
++		  pi->align = TYPE_ALIGN_UNIT (elem_type);
++		  pi->misalign = 0;
++		}
++	      else
++		{
++		  TREE_TYPE (data_ref)
++		    = build_aligned_type (TREE_TYPE (data_ref),
++					  TYPE_ALIGN (elem_type));
++		  pi->misalign = DR_MISALIGNMENT (first_dr);
++		}
++
++	      /* Arguments are ready.  Create the new vector stmt.  */
++	      new_stmt = gimple_build_assign (data_ref, vec_oprnd);
++	      vect_finish_stmt_generation (stmt, new_stmt, gsi);
++	      mark_symbols_for_renaming (new_stmt);
++
++	      if (slp)
++		continue;
++
++	      next_stmt = DR_GROUP_NEXT_DR (vinfo_for_stmt (next_stmt));
++	      if (!next_stmt)
++		break;
++	    }
++	}
++      if (!slp)
++	{
++	  if (j == 0)
++	    STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ 	  else
+ 	    STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+-
+ 	  prev_stmt_info = vinfo_for_stmt (new_stmt);
+-	  next_stmt = DR_GROUP_NEXT_DR (vinfo_for_stmt (next_stmt));
+-	  if (!next_stmt)
+-	    break;
+ 	}
+     }
+ 
+@@ -3813,6 +4253,7 @@
+   bool nested_in_vect_loop = false;
+   struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info), *first_dr;
+   tree vectype = STMT_VINFO_VECTYPE (stmt_info);
++  tree elem_type;
+   tree new_temp;
+   enum machine_mode mode;
+   gimple new_stmt = NULL;
+@@ -3829,6 +4270,7 @@
+   gimple phi = NULL;
+   VEC(tree,heap) *dr_chain = NULL;
+   bool strided_load = false;
++  bool load_lanes_p = false;
+   gimple first_stmt;
+   tree scalar_type;
+   bool inv_p;
+@@ -3841,6 +4283,7 @@
+   enum tree_code code;
+   bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
+   int vf;
++  tree aggr_type;
+ 
+   if (loop_vinfo)
+     {
+@@ -3917,7 +4360,8 @@
+ 
+   /* The vector component type needs to be trivially convertible to the
+      scalar lhs.  This should always be the case.  */
+-  if (!useless_type_conversion_p (TREE_TYPE (scalar_dest), TREE_TYPE (vectype)))
++  elem_type = TREE_TYPE (vectype);
++  if (!useless_type_conversion_p (TREE_TYPE (scalar_dest), elem_type))
+     {
+       if (vect_print_dump_info (REPORT_DETAILS))
+         fprintf (vect_dump, "???  operands of different types");
+@@ -3931,10 +4375,15 @@
+       /* FORNOW */
+       gcc_assert (! nested_in_vect_loop);
+ 
+-      /* Check if interleaving is supported.  */
+-      if (!vect_strided_load_supported (vectype)
+-	  && !PURE_SLP_STMT (stmt_info) && !slp)
+-	return false;
++      first_stmt = DR_GROUP_FIRST_DR (stmt_info);
++      if (!slp && !PURE_SLP_STMT (stmt_info))
++	{
++	  group_size = DR_GROUP_SIZE (vinfo_for_stmt (first_stmt));
++	  if (vect_load_lanes_supported (vectype, group_size))
++	    load_lanes_p = true;
++	  else if (!vect_strided_load_supported (vectype, group_size))
++	    return false;
++	}
+     }
+ 
+   if (negative)
+@@ -3959,18 +4408,23 @@
+   if (!vec_stmt) /* transformation not required.  */
+     {
+       STMT_VINFO_TYPE (stmt_info) = load_vec_info_type;
+-      vect_model_load_cost (stmt_info, ncopies, NULL);
++      vect_model_load_cost (stmt_info, ncopies, load_lanes_p, NULL);
+       return true;
+     }
+ 
+   if (vect_print_dump_info (REPORT_DETAILS))
+-    fprintf (vect_dump, "transform load.");
++    fprintf (vect_dump, "transform load. ncopies = %d", ncopies);
+ 
+   /** Transform.  **/
+ 
+   if (strided_load)
+     {
+       first_stmt = DR_GROUP_FIRST_DR (stmt_info);
++      if (slp
++          && !SLP_INSTANCE_LOAD_PERMUTATION (slp_node_instance)
++          && first_stmt != VEC_index (gimple, SLP_TREE_SCALAR_STMTS (slp_node), 0))
++        first_stmt = VEC_index (gimple, SLP_TREE_SCALAR_STMTS (slp_node), 0);
++
+       /* Check if the chain of loads is already vectorized.  */
+       if (STMT_VINFO_VEC_STMT (vinfo_for_stmt (first_stmt)))
+ 	{
+@@ -3990,8 +4444,6 @@
+     	}
+       else
+ 	vec_num = group_size;
+-
+-      dr_chain = VEC_alloc (tree, heap, vec_num);
+     }
+   else
+     {
+@@ -4002,6 +4454,11 @@
+ 
+   alignment_support_scheme = vect_supportable_dr_alignment (first_dr, false);
+   gcc_assert (alignment_support_scheme);
++  /* Targets with load-lane instructions must not require explicit
++     realignment.  */
++  gcc_assert (!load_lanes_p
++	      || alignment_support_scheme == dr_aligned
++	      || alignment_support_scheme == dr_unaligned_supported);
+ 
+   /* In case the vectorization factor (VF) is bigger than the number
+      of elements that we can fit in a vectype (nunits), we have to generate
+@@ -4133,208 +4590,252 @@
+   if (negative)
+     offset = size_int (-TYPE_VECTOR_SUBPARTS (vectype) + 1);
+ 
++  if (load_lanes_p)
++    aggr_type = build_array_type_nelts (elem_type, vec_num * nunits);
++  else
++    aggr_type = vectype;
++
+   prev_stmt_info = NULL;
+   for (j = 0; j < ncopies; j++)
+     {
+       /* 1. Create the vector pointer update chain.  */
+       if (j == 0)
+-        dataref_ptr = vect_create_data_ref_ptr (first_stmt,
++        dataref_ptr = vect_create_data_ref_ptr (first_stmt, aggr_type,
+ 					        at_loop, offset,
+ 						&dummy, &ptr_incr, false,
+ 						&inv_p);
+       else
+-        dataref_ptr =
+-		bump_vector_ptr (dataref_ptr, ptr_incr, gsi, stmt, NULL_TREE);
++        dataref_ptr = bump_vector_ptr (dataref_ptr, ptr_incr, gsi, stmt,
++				       TYPE_SIZE_UNIT (aggr_type));
+ 
+-      for (i = 0; i < vec_num; i++)
++      if (strided_load || slp_perm)
++	dr_chain = VEC_alloc (tree, heap, vec_num);
++
++      if (load_lanes_p)
+ 	{
+-	  if (i > 0)
+-	    dataref_ptr = bump_vector_ptr (dataref_ptr, ptr_incr, gsi, stmt,
+-					   NULL_TREE);
++	  tree vec_array;
+ 
+-	  /* 2. Create the vector-load in the loop.  */
+-	  switch (alignment_support_scheme)
+-	    {
+-	    case dr_aligned:
+-	    case dr_unaligned_supported:
+-	      {
+-		struct ptr_info_def *pi;
+-		data_ref
+-		  = build2 (MEM_REF, vectype, dataref_ptr,
+-			    build_int_cst (reference_alias_ptr_type
+-					   (DR_REF (first_dr)), 0));
+-		pi = get_ptr_info (dataref_ptr);
+-		pi->align = TYPE_ALIGN_UNIT (vectype);
+-		if (alignment_support_scheme == dr_aligned)
+-		  {
+-		    gcc_assert (aligned_access_p (first_dr));
+-		    pi->misalign = 0;
+-		  }
+-		else if (DR_MISALIGNMENT (first_dr) == -1)
+-		  {
+-		    TREE_TYPE (data_ref)
+-		      = build_aligned_type (TREE_TYPE (data_ref),
+-					    TYPE_ALIGN (TREE_TYPE (vectype)));
+-		    pi->align = TYPE_ALIGN_UNIT (TREE_TYPE (vectype));
+-		    pi->misalign = 0;
+-		  }
+-		else
+-		  {
+-		    TREE_TYPE (data_ref)
+-		      = build_aligned_type (TREE_TYPE (data_ref),
+-					    TYPE_ALIGN (TREE_TYPE (vectype)));
+-		    pi->misalign = DR_MISALIGNMENT (first_dr);
+-		  }
+-		break;
+-	      }
+-	    case dr_explicit_realign:
+-	      {
+-		tree ptr, bump;
+-		tree vs_minus_1 = size_int (TYPE_VECTOR_SUBPARTS (vectype) - 1);
++	  vec_array = create_vector_array (vectype, vec_num);
+ 
+-		if (compute_in_loop)
+-		  msq = vect_setup_realignment (first_stmt, gsi,
+-						&realignment_token,
+-						dr_explicit_realign,
+-						dataref_ptr, NULL);
+-
+-		new_stmt = gimple_build_assign_with_ops
+-			     (BIT_AND_EXPR, NULL_TREE, dataref_ptr,
+-			      build_int_cst
+-			        (TREE_TYPE (dataref_ptr),
+-				 -(HOST_WIDE_INT)TYPE_ALIGN_UNIT (vectype)));
+-		ptr = make_ssa_name (SSA_NAME_VAR (dataref_ptr), new_stmt);
+-		gimple_assign_set_lhs (new_stmt, ptr);
+-		vect_finish_stmt_generation (stmt, new_stmt, gsi);
+-		data_ref
+-		  = build2 (MEM_REF, vectype, ptr,
+-			    build_int_cst (reference_alias_ptr_type
+-					     (DR_REF (first_dr)), 0));
+-		vec_dest = vect_create_destination_var (scalar_dest, vectype);
+-		new_stmt = gimple_build_assign (vec_dest, data_ref);
+-		new_temp = make_ssa_name (vec_dest, new_stmt);
+-		gimple_assign_set_lhs (new_stmt, new_temp);
+-		gimple_set_vdef (new_stmt, gimple_vdef (stmt));
+-		gimple_set_vuse (new_stmt, gimple_vuse (stmt));
+-		vect_finish_stmt_generation (stmt, new_stmt, gsi);
+-		msq = new_temp;
+-
+-		bump = size_binop (MULT_EXPR, vs_minus_1,
+-				   TYPE_SIZE_UNIT (scalar_type));
+-		ptr = bump_vector_ptr (dataref_ptr, NULL, gsi, stmt, bump);
+-		new_stmt = gimple_build_assign_with_ops
+-			     (BIT_AND_EXPR, NULL_TREE, ptr,
+-			      build_int_cst
+-			        (TREE_TYPE (ptr),
+-				 -(HOST_WIDE_INT)TYPE_ALIGN_UNIT (vectype)));
+-		ptr = make_ssa_name (SSA_NAME_VAR (dataref_ptr), new_stmt);
+-		gimple_assign_set_lhs (new_stmt, ptr);
+-		vect_finish_stmt_generation (stmt, new_stmt, gsi);
+-		data_ref
+-		  = build2 (MEM_REF, vectype, ptr,
+-			    build_int_cst (reference_alias_ptr_type
+-					     (DR_REF (first_dr)), 0));
+-	        break;
+-	      }
+-	    case dr_explicit_realign_optimized:
+-	      new_stmt = gimple_build_assign_with_ops
+-			   (BIT_AND_EXPR, NULL_TREE, dataref_ptr,
+-			    build_int_cst
+-			      (TREE_TYPE (dataref_ptr),
+-			       -(HOST_WIDE_INT)TYPE_ALIGN_UNIT (vectype)));
+-	      new_temp = make_ssa_name (SSA_NAME_VAR (dataref_ptr), new_stmt);
+-	      gimple_assign_set_lhs (new_stmt, new_temp);
+-	      vect_finish_stmt_generation (stmt, new_stmt, gsi);
+-	      data_ref
+-		= build2 (MEM_REF, vectype, new_temp,
+-			  build_int_cst (reference_alias_ptr_type
+-					   (DR_REF (first_dr)), 0));
+-	      break;
+-	    default:
+-	      gcc_unreachable ();
+-	    }
+-	  vec_dest = vect_create_destination_var (scalar_dest, vectype);
+-	  new_stmt = gimple_build_assign (vec_dest, data_ref);
+-	  new_temp = make_ssa_name (vec_dest, new_stmt);
+-	  gimple_assign_set_lhs (new_stmt, new_temp);
++	  /* Emit:
++	       VEC_ARRAY = LOAD_LANES (MEM_REF[...all elements...]).  */
++	  data_ref = create_array_ref (aggr_type, dataref_ptr, first_dr);
++	  new_stmt = gimple_build_call_internal (IFN_LOAD_LANES, 1, data_ref);
++	  gimple_call_set_lhs (new_stmt, vec_array);
+ 	  vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ 	  mark_symbols_for_renaming (new_stmt);
+ 
+-	  /* 3. Handle explicit realignment if necessary/supported.  Create in
+-		loop: vec_dest = realign_load (msq, lsq, realignment_token)  */
+-	  if (alignment_support_scheme == dr_explicit_realign_optimized
+-	      || alignment_support_scheme == dr_explicit_realign)
++	  /* Extract each vector into an SSA_NAME.  */
++	  for (i = 0; i < vec_num; i++)
++	    {
++	      new_temp = read_vector_array (stmt, gsi, scalar_dest,
++					    vec_array, i);
++	      VEC_quick_push (tree, dr_chain, new_temp);
++	    }
++
++	  /* Record the mapping between SSA_NAMEs and statements.  */
++	  vect_record_strided_load_vectors (stmt, dr_chain);
++	}
++      else
++	{
++	  for (i = 0; i < vec_num; i++)
+ 	    {
+-	      tree tmp;
++	      if (i > 0)
++		dataref_ptr = bump_vector_ptr (dataref_ptr, ptr_incr, gsi,
++					       stmt, NULL_TREE);
+ 
+-	      lsq = gimple_assign_lhs (new_stmt);
+-	      if (!realignment_token)
+-		realignment_token = dataref_ptr;
++	      /* 2. Create the vector-load in the loop.  */
++	      switch (alignment_support_scheme)
++		{
++		case dr_aligned:
++		case dr_unaligned_supported:
++		  {
++		    struct ptr_info_def *pi;
++		    data_ref
++		      = build2 (MEM_REF, vectype, dataref_ptr,
++				build_int_cst (reference_alias_ptr_type
++					       (DR_REF (first_dr)), 0));
++		    pi = get_ptr_info (dataref_ptr);
++		    pi->align = TYPE_ALIGN_UNIT (vectype);
++		    if (alignment_support_scheme == dr_aligned)
++		      {
++			gcc_assert (aligned_access_p (first_dr));
++			pi->misalign = 0;
++		      }
++		    else if (DR_MISALIGNMENT (first_dr) == -1)
++		      {
++			TREE_TYPE (data_ref)
++			  = build_aligned_type (TREE_TYPE (data_ref),
++						TYPE_ALIGN (elem_type));
++			pi->align = TYPE_ALIGN_UNIT (elem_type);
++			pi->misalign = 0;
++		      }
++		    else
++		      {
++			TREE_TYPE (data_ref)
++			  = build_aligned_type (TREE_TYPE (data_ref),
++						TYPE_ALIGN (elem_type));
++			pi->misalign = DR_MISALIGNMENT (first_dr);
++		      }
++		    break;
++		  }
++		case dr_explicit_realign:
++		  {
++		    tree ptr, bump;
++		    tree vs_minus_1
++		      = size_int (TYPE_VECTOR_SUBPARTS (vectype) - 1);
++
++		    if (compute_in_loop)
++		      msq = vect_setup_realignment (first_stmt, gsi,
++						    &realignment_token,
++						    dr_explicit_realign,
++						    dataref_ptr, NULL);
++
++		    new_stmt = gimple_build_assign_with_ops
++				 (BIT_AND_EXPR, NULL_TREE, dataref_ptr,
++				  build_int_cst
++				    (TREE_TYPE (dataref_ptr),
++				     -(HOST_WIDE_INT)
++				     TYPE_ALIGN_UNIT (vectype)));
++		    ptr = make_ssa_name (SSA_NAME_VAR (dataref_ptr), new_stmt);
++		    gimple_assign_set_lhs (new_stmt, ptr);
++		    vect_finish_stmt_generation (stmt, new_stmt, gsi);
++		    data_ref
++		      = build2 (MEM_REF, vectype, ptr,
++				build_int_cst (reference_alias_ptr_type
++						 (DR_REF (first_dr)), 0));
++		    vec_dest = vect_create_destination_var (scalar_dest,
++							    vectype);
++		    new_stmt = gimple_build_assign (vec_dest, data_ref);
++		    new_temp = make_ssa_name (vec_dest, new_stmt);
++		    gimple_assign_set_lhs (new_stmt, new_temp);
++		    gimple_set_vdef (new_stmt, gimple_vdef (stmt));
++		    gimple_set_vuse (new_stmt, gimple_vuse (stmt));
++		    vect_finish_stmt_generation (stmt, new_stmt, gsi);
++		    msq = new_temp;
++
++		    bump = size_binop (MULT_EXPR, vs_minus_1,
++				       TYPE_SIZE_UNIT (scalar_type));
++		    ptr = bump_vector_ptr (dataref_ptr, NULL, gsi, stmt, bump);
++		    new_stmt = gimple_build_assign_with_ops
++				 (BIT_AND_EXPR, NULL_TREE, ptr,
++				  build_int_cst
++				    (TREE_TYPE (ptr),
++				     -(HOST_WIDE_INT)
++				     TYPE_ALIGN_UNIT (vectype)));
++		    ptr = make_ssa_name (SSA_NAME_VAR (dataref_ptr), new_stmt);
++		    gimple_assign_set_lhs (new_stmt, ptr);
++		    vect_finish_stmt_generation (stmt, new_stmt, gsi);
++		    data_ref
++		      = build2 (MEM_REF, vectype, ptr,
++				build_int_cst (reference_alias_ptr_type
++						 (DR_REF (first_dr)), 0));
++		    break;
++		  }
++		case dr_explicit_realign_optimized:
++		  new_stmt = gimple_build_assign_with_ops
++			       (BIT_AND_EXPR, NULL_TREE, dataref_ptr,
++				build_int_cst
++				  (TREE_TYPE (dataref_ptr),
++				   -(HOST_WIDE_INT)TYPE_ALIGN_UNIT (vectype)));
++		  new_temp = make_ssa_name (SSA_NAME_VAR (dataref_ptr),
++					    new_stmt);
++		  gimple_assign_set_lhs (new_stmt, new_temp);
++		  vect_finish_stmt_generation (stmt, new_stmt, gsi);
++		  data_ref
++		    = build2 (MEM_REF, vectype, new_temp,
++			      build_int_cst (reference_alias_ptr_type
++					       (DR_REF (first_dr)), 0));
++		  break;
++		default:
++		  gcc_unreachable ();
++		}
+ 	      vec_dest = vect_create_destination_var (scalar_dest, vectype);
+-	      tmp = build3 (REALIGN_LOAD_EXPR, vectype, msq, lsq,
+-			    realignment_token);
+-	      new_stmt = gimple_build_assign (vec_dest, tmp);
++	      new_stmt = gimple_build_assign (vec_dest, data_ref);
+ 	      new_temp = make_ssa_name (vec_dest, new_stmt);
+ 	      gimple_assign_set_lhs (new_stmt, new_temp);
+ 	      vect_finish_stmt_generation (stmt, new_stmt, gsi);
++	      mark_symbols_for_renaming (new_stmt);
+ 
+-	      if (alignment_support_scheme == dr_explicit_realign_optimized)
++	      /* 3. Handle explicit realignment if necessary/supported.
++		    Create in loop:
++		       vec_dest = realign_load (msq, lsq, realignment_token)  */
++	      if (alignment_support_scheme == dr_explicit_realign_optimized
++		  || alignment_support_scheme == dr_explicit_realign)
+ 		{
+-		  gcc_assert (phi);
+-		  if (i == vec_num - 1 && j == ncopies - 1)
+-		    add_phi_arg (phi, lsq, loop_latch_edge (containing_loop),
+-				 UNKNOWN_LOCATION);
+-		  msq = lsq;
+-		}
+-	    }
++		  tree tmp;
+ 
+-	  /* 4. Handle invariant-load.  */
+-	  if (inv_p && !bb_vinfo)
+-	    {
+-	      gcc_assert (!strided_load);
+-	      gcc_assert (nested_in_vect_loop_p (loop, stmt));
+-	      if (j == 0)
+-		{
+-		  int k;
+-		  tree t = NULL_TREE;
+-		  tree vec_inv, bitpos, bitsize = TYPE_SIZE (scalar_type);
+-
+-		  /* CHECKME: bitpos depends on endianess?  */
+-		  bitpos = bitsize_zero_node;
+-		  vec_inv = build3 (BIT_FIELD_REF, scalar_type, new_temp,
+-				    bitsize, bitpos);
+-		  vec_dest =
+-			vect_create_destination_var (scalar_dest, NULL_TREE);
+-		  new_stmt = gimple_build_assign (vec_dest, vec_inv);
+-                  new_temp = make_ssa_name (vec_dest, new_stmt);
++		  lsq = gimple_assign_lhs (new_stmt);
++		  if (!realignment_token)
++		    realignment_token = dataref_ptr;
++		  vec_dest = vect_create_destination_var (scalar_dest, vectype);
++		  tmp = build3 (REALIGN_LOAD_EXPR, vectype, msq, lsq,
++				realignment_token);
++		  new_stmt = gimple_build_assign (vec_dest, tmp);
++		  new_temp = make_ssa_name (vec_dest, new_stmt);
+ 		  gimple_assign_set_lhs (new_stmt, new_temp);
+ 		  vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ 
+-		  for (k = nunits - 1; k >= 0; --k)
+-		    t = tree_cons (NULL_TREE, new_temp, t);
+-		  /* FIXME: use build_constructor directly.  */
+-		  vec_inv = build_constructor_from_list (vectype, t);
+-		  new_temp = vect_init_vector (stmt, vec_inv, vectype, gsi);
+-		  new_stmt = SSA_NAME_DEF_STMT (new_temp);
++		  if (alignment_support_scheme == dr_explicit_realign_optimized)
++		    {
++		      gcc_assert (phi);
++		      if (i == vec_num - 1 && j == ncopies - 1)
++			add_phi_arg (phi, lsq,
++				     loop_latch_edge (containing_loop),
++				     UNKNOWN_LOCATION);
++		      msq = lsq;
++		    }
+ 		}
+-	      else
+-		gcc_unreachable (); /* FORNOW. */
+-	    }
+ 
+-	  if (negative)
+-	    {
+-	      new_temp = reverse_vec_elements (new_temp, stmt, gsi);
+-	      new_stmt = SSA_NAME_DEF_STMT (new_temp);
+-	    }
++	      /* 4. Handle invariant-load.  */
++	      if (inv_p && !bb_vinfo)
++		{
++		  gcc_assert (!strided_load);
++		  gcc_assert (nested_in_vect_loop_p (loop, stmt));
++		  if (j == 0)
++		    {
++		      int k;
++		      tree t = NULL_TREE;
++		      tree vec_inv, bitpos, bitsize = TYPE_SIZE (scalar_type);
++
++		      /* CHECKME: bitpos depends on endianess?  */
++		      bitpos = bitsize_zero_node;
++		      vec_inv = build3 (BIT_FIELD_REF, scalar_type, new_temp,
++					bitsize, bitpos);
++		      vec_dest = vect_create_destination_var (scalar_dest,
++							      NULL_TREE);
++		      new_stmt = gimple_build_assign (vec_dest, vec_inv);
++		      new_temp = make_ssa_name (vec_dest, new_stmt);
++		      gimple_assign_set_lhs (new_stmt, new_temp);
++		      vect_finish_stmt_generation (stmt, new_stmt, gsi);
++
++		      for (k = nunits - 1; k >= 0; --k)
++			t = tree_cons (NULL_TREE, new_temp, t);
++		      /* FIXME: use build_constructor directly.  */
++		      vec_inv = build_constructor_from_list (vectype, t);
++		      new_temp = vect_init_vector (stmt, vec_inv, vectype, gsi);
++		      new_stmt = SSA_NAME_DEF_STMT (new_temp);
++		    }
++		  else
++		    gcc_unreachable (); /* FORNOW. */
++		}
+ 
+-	  /* Collect vector loads and later create their permutation in
+-	     vect_transform_strided_load ().  */
+-          if (strided_load || slp_perm)
+-            VEC_quick_push (tree, dr_chain, new_temp);
++	      if (negative)
++		{
++		  new_temp = reverse_vec_elements (new_temp, stmt, gsi);
++		  new_stmt = SSA_NAME_DEF_STMT (new_temp);
++		}
+ 
+-         /* Store vector loads in the corresponding SLP_NODE.  */
+-	  if (slp && !slp_perm)
+-	    VEC_quick_push (gimple, SLP_TREE_VEC_STMTS (slp_node), new_stmt);
++	      /* Collect vector loads and later create their permutation in
++		 vect_transform_strided_load ().  */
++	      if (strided_load || slp_perm)
++		VEC_quick_push (tree, dr_chain, new_temp);
++
++	      /* Store vector loads in the corresponding SLP_NODE.  */
++	      if (slp && !slp_perm)
++		VEC_quick_push (gimple, SLP_TREE_VEC_STMTS (slp_node),
++				new_stmt);
++	    }
+ 	}
+ 
+       if (slp && !slp_perm)
+@@ -4353,12 +4854,9 @@
+         {
+           if (strided_load)
+   	    {
+-	      if (!vect_transform_strided_load (stmt, dr_chain, group_size, gsi))
+-	        return false;
+-
++	      if (!load_lanes_p)
++		vect_transform_strided_load (stmt, dr_chain, group_size, gsi);
+ 	      *vec_stmt = STMT_VINFO_VEC_STMT (stmt_info);
+-              VEC_free (tree, heap, dr_chain);
+-	      dr_chain = VEC_alloc (tree, heap, group_size);
+ 	    }
+           else
+ 	    {
+@@ -4369,11 +4867,10 @@
+ 	      prev_stmt_info = vinfo_for_stmt (new_stmt);
+ 	    }
+         }
++      if (dr_chain)
++	VEC_free (tree, heap, dr_chain);
+     }
+ 
+-  if (dr_chain)
+-    VEC_free (tree, heap, dr_chain);
+-
+   return true;
+ }
+ 
+@@ -4387,7 +4884,7 @@
+    condition operands are supportable using vec_is_simple_use.  */
+ 
+ static bool
+-vect_is_simple_cond (tree cond, loop_vec_info loop_vinfo)
++vect_is_simple_cond (tree cond, loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
+ {
+   tree lhs, rhs;
+   tree def;
+@@ -4402,7 +4899,7 @@
+   if (TREE_CODE (lhs) == SSA_NAME)
+     {
+       gimple lhs_def_stmt = SSA_NAME_DEF_STMT (lhs);
+-      if (!vect_is_simple_use (lhs, loop_vinfo, NULL, &lhs_def_stmt, &def,
++      if (!vect_is_simple_use (lhs, loop_vinfo, bb_vinfo, &lhs_def_stmt, &def,
+                                &dt))
+ 	return false;
+     }
+@@ -4413,7 +4910,7 @@
+   if (TREE_CODE (rhs) == SSA_NAME)
+     {
+       gimple rhs_def_stmt = SSA_NAME_DEF_STMT (rhs);
+-      if (!vect_is_simple_use (rhs, loop_vinfo, NULL, &rhs_def_stmt, &def,
++      if (!vect_is_simple_use (rhs, loop_vinfo, bb_vinfo, &rhs_def_stmt, &def,
+                                &dt))
+ 	return false;
+     }
+@@ -4439,7 +4936,8 @@
+ 
+ bool
+ vectorizable_condition (gimple stmt, gimple_stmt_iterator *gsi,
+-			gimple *vec_stmt, tree reduc_def, int reduc_index)
++			gimple *vec_stmt, tree reduc_def, int reduc_index,
++			slp_tree slp_node)
+ {
+   tree scalar_dest = NULL_TREE;
+   tree vec_dest = NULL_TREE;
+@@ -4456,19 +4954,24 @@
+   tree def;
+   enum vect_def_type dt, dts[4];
+   int nunits = TYPE_VECTOR_SUBPARTS (vectype);
+-  int ncopies = LOOP_VINFO_VECT_FACTOR (loop_vinfo) / nunits;
++  int ncopies;
+   enum tree_code code;
+   stmt_vec_info prev_stmt_info = NULL;
+-  int j;
++  int i, j;
++  bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
++  VEC (tree, heap) *vec_oprnds0 = NULL, *vec_oprnds1 = NULL;
++  VEC (tree, heap) *vec_oprnds2 = NULL, *vec_oprnds3 = NULL;
+ 
+-  /* FORNOW: unsupported in basic block SLP.  */
+-  gcc_assert (loop_vinfo);
++  if (slp_node || PURE_SLP_STMT (stmt_info))
++    ncopies = 1;
++  else
++    ncopies = LOOP_VINFO_VECT_FACTOR (loop_vinfo) / nunits;
+ 
+   gcc_assert (ncopies >= 1);
+-  if (reduc_index && ncopies > 1)
++  if (reduc_index && (ncopies > 1 || STMT_SLP_TYPE (stmt_info)))
+     return false; /* FORNOW */
+ 
+-  if (!STMT_VINFO_RELEVANT_P (stmt_info))
++  if (!STMT_VINFO_RELEVANT_P (stmt_info) && !bb_vinfo) 
+     return false;
+ 
+   if (STMT_VINFO_DEF_TYPE (stmt_info) != vect_internal_def
+@@ -4476,10 +4979,6 @@
+            && reduc_def))
+     return false;
+ 
+-  /* FORNOW: SLP not supported.  */
+-  if (STMT_SLP_TYPE (stmt_info))
+-    return false;
+-
+   /* FORNOW: not yet supported.  */
+   if (STMT_VINFO_LIVE_P (stmt_info))
+     {
+@@ -4503,7 +5002,7 @@
+   then_clause = TREE_OPERAND (op, 1);
+   else_clause = TREE_OPERAND (op, 2);
+ 
+-  if (!vect_is_simple_cond (cond_expr, loop_vinfo))
++  if (!vect_is_simple_cond (cond_expr, loop_vinfo, bb_vinfo))
+     return false;
+ 
+   /* We do not handle two different vector types for the condition
+@@ -4515,7 +5014,7 @@
+   if (TREE_CODE (then_clause) == SSA_NAME)
+     {
+       gimple then_def_stmt = SSA_NAME_DEF_STMT (then_clause);
+-      if (!vect_is_simple_use (then_clause, loop_vinfo, NULL,
++      if (!vect_is_simple_use (then_clause, loop_vinfo, bb_vinfo,
+ 			       &then_def_stmt, &def, &dt))
+ 	return false;
+     }
+@@ -4527,7 +5026,7 @@
+   if (TREE_CODE (else_clause) == SSA_NAME)
+     {
+       gimple else_def_stmt = SSA_NAME_DEF_STMT (else_clause);
+-      if (!vect_is_simple_use (else_clause, loop_vinfo, NULL,
++      if (!vect_is_simple_use (else_clause, loop_vinfo, bb_vinfo,
+ 			       &else_def_stmt, &def, &dt))
+ 	return false;
+     }
+@@ -4545,7 +5044,15 @@
+       return expand_vec_cond_expr_p (TREE_TYPE (op), vec_mode);
+     }
+ 
+-  /* Transform */
++  /* Transform.  */
++
++  if (!slp_node)
++    {
++      vec_oprnds0 = VEC_alloc (tree, heap, 1);
++      vec_oprnds1 = VEC_alloc (tree, heap, 1);
++      vec_oprnds2 = VEC_alloc (tree, heap, 1);
++      vec_oprnds3 = VEC_alloc (tree, heap, 1);
++    }
+ 
+   /* Handle def.  */
+   scalar_dest = gimple_assign_lhs (stmt);
+@@ -4554,67 +5061,118 @@
+   /* Handle cond expr.  */
+   for (j = 0; j < ncopies; j++)
+     {
+-      gimple new_stmt;
++      gimple new_stmt = NULL;
+       if (j == 0)
+ 	{
+-	  gimple gtemp;
+-	  vec_cond_lhs =
++          if (slp_node)
++            {
++              VEC (tree, heap) *ops = VEC_alloc (tree, heap, 4);
++              VEC (slp_void_p, heap) *vec_defs;
++
++	      vec_defs = VEC_alloc (slp_void_p, heap, 4);
++              VEC_safe_push (tree, heap, ops, TREE_OPERAND (cond_expr, 0));
++              VEC_safe_push (tree, heap, ops, TREE_OPERAND (cond_expr, 1));
++              VEC_safe_push (tree, heap, ops, then_clause);
++              VEC_safe_push (tree, heap, ops, else_clause);
++              vect_get_slp_defs (ops, slp_node, &vec_defs, -1);
++              vec_oprnds3 = (VEC (tree, heap) *) VEC_pop (slp_void_p, vec_defs);
++              vec_oprnds2 = (VEC (tree, heap) *) VEC_pop (slp_void_p, vec_defs);
++              vec_oprnds1 = (VEC (tree, heap) *) VEC_pop (slp_void_p, vec_defs);
++              vec_oprnds0 = (VEC (tree, heap) *) VEC_pop (slp_void_p, vec_defs);
++
++              VEC_free (tree, heap, ops);
++              VEC_free (slp_void_p, heap, vec_defs);
++            }
++          else
++            {
++	      gimple gtemp;
++	      vec_cond_lhs =
+ 	      vect_get_vec_def_for_operand (TREE_OPERAND (cond_expr, 0),
+ 					    stmt, NULL);
+-	  vect_is_simple_use (TREE_OPERAND (cond_expr, 0), loop_vinfo,
++	      vect_is_simple_use (TREE_OPERAND (cond_expr, 0), loop_vinfo,
+ 			      NULL, &gtemp, &def, &dts[0]);
+-	  vec_cond_rhs =
+-	      vect_get_vec_def_for_operand (TREE_OPERAND (cond_expr, 1),
+-					    stmt, NULL);
+-	  vect_is_simple_use (TREE_OPERAND (cond_expr, 1), loop_vinfo,
+-			      NULL, &gtemp, &def, &dts[1]);
+-	  if (reduc_index == 1)
+-	    vec_then_clause = reduc_def;
+-	  else
+-	    {
+-	      vec_then_clause = vect_get_vec_def_for_operand (then_clause,
+-							      stmt, NULL);
+-	      vect_is_simple_use (then_clause, loop_vinfo,
+-				  NULL, &gtemp, &def, &dts[2]);
+-	    }
+-	  if (reduc_index == 2)
+-	    vec_else_clause = reduc_def;
+-	  else
+-	    {
+-	      vec_else_clause = vect_get_vec_def_for_operand (else_clause,
++
++	      vec_cond_rhs =
++		vect_get_vec_def_for_operand (TREE_OPERAND (cond_expr, 1),
++						stmt, NULL);
++	      vect_is_simple_use (TREE_OPERAND (cond_expr, 1), loop_vinfo,
++					NULL, &gtemp, &def, &dts[1]);
++	      if (reduc_index == 1)
++		vec_then_clause = reduc_def;
++	      else
++		{
++		  vec_then_clause = vect_get_vec_def_for_operand (then_clause,
++		 		  			      stmt, NULL);
++	          vect_is_simple_use (then_clause, loop_vinfo,
++					  NULL, &gtemp, &def, &dts[2]);
++		}
++	      if (reduc_index == 2)
++		vec_else_clause = reduc_def;
++	      else
++		{
++		  vec_else_clause = vect_get_vec_def_for_operand (else_clause,
+ 							      stmt, NULL);
+-	      vect_is_simple_use (else_clause, loop_vinfo,
++		  vect_is_simple_use (else_clause, loop_vinfo,
+ 				  NULL, &gtemp, &def, &dts[3]);
++		}
+ 	    }
+ 	}
+       else
+ 	{
+-	  vec_cond_lhs = vect_get_vec_def_for_stmt_copy (dts[0], vec_cond_lhs);
+-	  vec_cond_rhs = vect_get_vec_def_for_stmt_copy (dts[1], vec_cond_rhs);
++	  vec_cond_lhs = vect_get_vec_def_for_stmt_copy (dts[0],
++						VEC_pop (tree, vec_oprnds0));
++	  vec_cond_rhs = vect_get_vec_def_for_stmt_copy (dts[1],
++						VEC_pop (tree, vec_oprnds1));
+ 	  vec_then_clause = vect_get_vec_def_for_stmt_copy (dts[2],
+-							    vec_then_clause);
++						VEC_pop (tree, vec_oprnds2));
+ 	  vec_else_clause = vect_get_vec_def_for_stmt_copy (dts[3],
+-							    vec_else_clause);
++						VEC_pop (tree, vec_oprnds3));
++	}
++
++      if (!slp_node)
++        {
++	  VEC_quick_push (tree, vec_oprnds0, vec_cond_lhs);
++	  VEC_quick_push (tree, vec_oprnds1, vec_cond_rhs);
++	  VEC_quick_push (tree, vec_oprnds2, vec_then_clause);
++	  VEC_quick_push (tree, vec_oprnds3, vec_else_clause);
+ 	}
+ 
+       /* Arguments are ready.  Create the new vector stmt.  */
+-      vec_compare = build2 (TREE_CODE (cond_expr), vectype,
+-			    vec_cond_lhs, vec_cond_rhs);
+-      vec_cond_expr = build3 (VEC_COND_EXPR, vectype,
+-			      vec_compare, vec_then_clause, vec_else_clause);
++      FOR_EACH_VEC_ELT (tree, vec_oprnds0, i, vec_cond_lhs)
++        {
++          vec_cond_rhs = VEC_index (tree, vec_oprnds1, i);
++          vec_then_clause = VEC_index (tree, vec_oprnds2, i);
++          vec_else_clause = VEC_index (tree, vec_oprnds3, i);
++
++          vec_compare = build2 (TREE_CODE (cond_expr), vectype,
++  			       vec_cond_lhs, vec_cond_rhs);
++          vec_cond_expr = build3 (VEC_COND_EXPR, vectype,
++ 		         vec_compare, vec_then_clause, vec_else_clause);
+ 
+-      new_stmt = gimple_build_assign (vec_dest, vec_cond_expr);
+-      new_temp = make_ssa_name (vec_dest, new_stmt);
+-      gimple_assign_set_lhs (new_stmt, new_temp);
+-      vect_finish_stmt_generation (stmt, new_stmt, gsi);
+-      if (j == 0)
+-        STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+-      else
+-        STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
++          new_stmt = gimple_build_assign (vec_dest, vec_cond_expr);
++          new_temp = make_ssa_name (vec_dest, new_stmt);
++          gimple_assign_set_lhs (new_stmt, new_temp);
++          vect_finish_stmt_generation (stmt, new_stmt, gsi);
++          if (slp_node)
++            VEC_quick_push (gimple, SLP_TREE_VEC_STMTS (slp_node), new_stmt);
++        }
+ 
+-      prev_stmt_info = vinfo_for_stmt (new_stmt);
++        if (slp_node)
++          continue;
++
++        if (j == 0)
++          STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
++        else
++          STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
++
++        prev_stmt_info = vinfo_for_stmt (new_stmt);
+     }
+ 
++  VEC_free (tree, heap, vec_oprnds0);
++  VEC_free (tree, heap, vec_oprnds1);
++  VEC_free (tree, heap, vec_oprnds2);
++  VEC_free (tree, heap, vec_oprnds3);
++
+   return true;
+ }
+ 
+@@ -4629,6 +5187,7 @@
+   enum vect_relevant relevance = STMT_VINFO_RELEVANT (stmt_info);
+   bool ok;
+   tree scalar_type, vectype;
++  gimple pattern_stmt, pattern_def_stmt;
+ 
+   if (vect_print_dump_info (REPORT_DETAILS))
+     {
+@@ -4650,16 +5209,70 @@
+      - any LABEL_EXPRs in the loop
+      - computations that are used only for array indexing or loop control.
+      In basic blocks we only analyze statements that are a part of some SLP
+-     instance, therefore, all the statements are relevant.  */
++     instance, therefore, all the statements are relevant.  
+ 
++     Pattern statement needs to be analyzed instead of the original statement
++     if the original statement is not relevant. Otherwise, we analyze both
++     statements.  */
++
++  pattern_stmt = STMT_VINFO_RELATED_STMT (stmt_info);
+   if (!STMT_VINFO_RELEVANT_P (stmt_info)
+       && !STMT_VINFO_LIVE_P (stmt_info))
+     {
+-      if (vect_print_dump_info (REPORT_DETAILS))
+-        fprintf (vect_dump, "irrelevant.");
++      if (STMT_VINFO_IN_PATTERN_P (stmt_info)
++          && pattern_stmt
++          && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_stmt))
++              || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_stmt))))
++        {
++          /* Analyze PATTERN_STMT instead of the original stmt.  */
++          stmt = pattern_stmt;
++          stmt_info = vinfo_for_stmt (pattern_stmt);
++          if (vect_print_dump_info (REPORT_DETAILS))
++            {
++              fprintf (vect_dump, "==> examining pattern statement: ");
++              print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
++            }
++        }
++      else
++        {
++          if (vect_print_dump_info (REPORT_DETAILS))
++            fprintf (vect_dump, "irrelevant.");
+ 
+-      return true;
++          return true;
++        }
+     }
++  else if (STMT_VINFO_IN_PATTERN_P (stmt_info)
++           && pattern_stmt
++           && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_stmt))
++               || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_stmt))))
++    {
++      /* Analyze PATTERN_STMT too.  */
++      if (vect_print_dump_info (REPORT_DETAILS))
++        {
++          fprintf (vect_dump, "==> examining pattern statement: ");
++          print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
++        }
++
++      if (!vect_analyze_stmt (pattern_stmt, need_to_vectorize, node))
++        return false;
++   }
++
++  if (is_pattern_stmt_p (stmt_info)
++      && (pattern_def_stmt = STMT_VINFO_PATTERN_DEF_STMT (stmt_info))
++      && (STMT_VINFO_RELEVANT_P (vinfo_for_stmt (pattern_def_stmt))
++          || STMT_VINFO_LIVE_P (vinfo_for_stmt (pattern_def_stmt))))
++    {
++      /* Analyze def stmt of STMT if it's a pattern stmt.  */
++      if (vect_print_dump_info (REPORT_DETAILS))
++        {
++          fprintf (vect_dump, "==> examining pattern def statement: ");
++          print_gimple_stmt (vect_dump, pattern_def_stmt, 0, TDF_SLIM);
++        }
++
++      if (!vect_analyze_stmt (pattern_def_stmt, need_to_vectorize, node))
++        return false;
++   }
++
+ 
+   switch (STMT_VINFO_DEF_TYPE (stmt_info))
+     {
+@@ -4733,15 +5346,18 @@
+             || vectorizable_call (stmt, NULL, NULL)
+             || vectorizable_store (stmt, NULL, NULL, NULL)
+             || vectorizable_reduction (stmt, NULL, NULL, NULL)
+-            || vectorizable_condition (stmt, NULL, NULL, NULL, 0));
++            || vectorizable_condition (stmt, NULL, NULL, NULL, 0, NULL));
+     else
+       {
+         if (bb_vinfo)
+-          ok = (vectorizable_shift (stmt, NULL, NULL, node)
++          ok = (vectorizable_type_promotion (stmt, NULL, NULL, node)
++                || vectorizable_type_demotion (stmt, NULL, NULL, node)
++               || vectorizable_shift (stmt, NULL, NULL, node)
+                 || vectorizable_operation (stmt, NULL, NULL, node)
+                 || vectorizable_assignment (stmt, NULL, NULL, node)
+                 || vectorizable_load (stmt, NULL, NULL, node, NULL)
+-                || vectorizable_store (stmt, NULL, NULL, node));
++                || vectorizable_store (stmt, NULL, NULL, node)
++                || vectorizable_condition (stmt, NULL, NULL, NULL, 0, node));
+       }
+ 
+   if (!ok)
+@@ -4777,27 +5393,6 @@
+        return false;
+     }
+ 
+-  if (!PURE_SLP_STMT (stmt_info))
+-    {
+-      /* Groups of strided accesses whose size is not a power of 2 are not
+-         vectorizable yet using loop-vectorization.  Therefore, if this stmt
+-	 feeds non-SLP-able stmts (i.e., this stmt has to be both SLPed and
+-	 loop-based vectorized), the loop cannot be vectorized.  */
+-      if (STMT_VINFO_STRIDED_ACCESS (stmt_info)
+-          && exact_log2 (DR_GROUP_SIZE (vinfo_for_stmt (
+-                                        DR_GROUP_FIRST_DR (stmt_info)))) == -1)
+-        {
+-          if (vect_print_dump_info (REPORT_DETAILS))
+-            {
+-              fprintf (vect_dump, "not vectorized: the size of group "
+-                                  "of strided accesses is not a power of 2");
+-              print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+-            }
+-
+-          return false;
+-        }
+-    }
+-
+   return true;
+ }
+ 
+@@ -4814,7 +5409,6 @@
+   bool is_store = false;
+   gimple vec_stmt = NULL;
+   stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+-  gimple orig_stmt_in_pattern;
+   bool done;
+ 
+   switch (STMT_VINFO_TYPE (stmt_info))
+@@ -4879,8 +5473,7 @@
+       break;
+ 
+     case condition_vec_info_type:
+-      gcc_assert (!slp_node);
+-      done = vectorizable_condition (stmt, gsi, &vec_stmt, NULL, 0);
++      done = vectorizable_condition (stmt, gsi, &vec_stmt, NULL, 0, slp_node);
+       gcc_assert (done);
+       break;
+ 
+@@ -4953,21 +5546,7 @@
+     }
+ 
+   if (vec_stmt)
+-    {
+-      STMT_VINFO_VEC_STMT (stmt_info) = vec_stmt;
+-      orig_stmt_in_pattern = STMT_VINFO_RELATED_STMT (stmt_info);
+-      if (orig_stmt_in_pattern)
+-	{
+-	  stmt_vec_info stmt_vinfo = vinfo_for_stmt (orig_stmt_in_pattern);
+-	  /* STMT was inserted by the vectorizer to replace a computation idiom.
+-	     ORIG_STMT_IN_PATTERN is a stmt in the original sequence that
+-	     computed this idiom.  We need to record a pointer to VEC_STMT in
+-	     the stmt_info of ORIG_STMT_IN_PATTERN.  See more details in the
+-	     documentation of vect_pattern_recog.  */
+-	  if (STMT_VINFO_IN_PATTERN_P (stmt_vinfo))
+-	    STMT_VINFO_VEC_STMT (stmt_vinfo) = vec_stmt;
+-	}
+-    }
++    STMT_VINFO_VEC_STMT (stmt_info) = vec_stmt;
+ 
+   return is_store;
+ }
+@@ -5017,6 +5596,7 @@
+   STMT_VINFO_VECTORIZABLE (res) = true;
+   STMT_VINFO_IN_PATTERN_P (res) = false;
+   STMT_VINFO_RELATED_STMT (res) = NULL;
++  STMT_VINFO_PATTERN_DEF_STMT (res) = NULL;
+   STMT_VINFO_DATA_REF (res) = NULL;
+ 
+   STMT_VINFO_DR_BASE_ADDRESS (res) = NULL;
+@@ -5354,8 +5934,12 @@
+       || *dt == vect_nested_cycle)
+     {
+       stmt_vec_info stmt_info = vinfo_for_stmt (*def_stmt);
+-      if (STMT_VINFO_IN_PATTERN_P (stmt_info))
++
++      if (STMT_VINFO_IN_PATTERN_P (stmt_info) 
++          && !STMT_VINFO_RELEVANT (stmt_info)
++          && !STMT_VINFO_LIVE_P (stmt_info))
+ 	stmt_info = vinfo_for_stmt (STMT_VINFO_RELATED_STMT (stmt_info));
++
+       *vectype = STMT_VINFO_VECTYPE (stmt_info);
+       gcc_assert (*vectype != NULL_TREE);
+     }
+@@ -5404,7 +5988,7 @@
+ {
+   stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+   loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_info);
+-  struct loop *vect_loop = LOOP_VINFO_LOOP (loop_info);
++  struct loop *vect_loop = NULL;
+   bool ordered_p;
+   enum machine_mode vec_mode;
+   enum insn_code icode1, icode2;
+@@ -5413,6 +5997,9 @@
+   tree wide_vectype = vectype_out;
+   enum tree_code c1, c2;
+ 
++  if (loop_info)
++    vect_loop = LOOP_VINFO_LOOP (loop_info);
++
+   /* The result of a vectorized widening operation usually requires two vectors
+      (because the widened results do not fit int one vector). The generated
+      vector results would normally be expected to be generated in the same
+@@ -5433,7 +6020,8 @@
+      iterations in parallel).  We therefore don't allow to change the order
+      of the computation in the inner-loop during outer-loop vectorization.  */
+ 
+-   if (STMT_VINFO_RELEVANT (stmt_info) == vect_used_by_reduction
++   if (vect_loop
++       && STMT_VINFO_RELEVANT (stmt_info) == vect_used_by_reduction
+        && !nested_in_vect_loop_p (vect_loop, stmt))
+      ordered_p = false;
+    else
+@@ -5470,6 +6058,19 @@
+         }
+       break;
+ 
++    case WIDEN_LSHIFT_EXPR:
++      if (BYTES_BIG_ENDIAN)
++        {
++          c1 = VEC_WIDEN_LSHIFT_HI_EXPR;
++          c2 = VEC_WIDEN_LSHIFT_LO_EXPR;
++        }
++      else
++        {
++          c2 = VEC_WIDEN_LSHIFT_HI_EXPR;
++          c1 = VEC_WIDEN_LSHIFT_LO_EXPR;
++        }
++      break;
++
+     CASE_CONVERT:
+       if (BYTES_BIG_ENDIAN)
+         {
+--- a/src/gcc/value-prof.c
++++ b/src/gcc/value-prof.c
+@@ -1252,6 +1252,9 @@
+   if (TREE_CODE (callee) == FUNCTION_DECL)
+     return false;
+ 
++  if (gimple_call_internal_p (stmt))
++    return false;
++
+   histogram = gimple_histogram_value_of_type (cfun, stmt, HIST_TYPE_INDIR_CALL);
+   if (!histogram)
+     return false;
+@@ -1640,6 +1643,7 @@
+   tree callee;
+ 
+   if (gimple_code (stmt) != GIMPLE_CALL
++      || gimple_call_internal_p (stmt)
+       || gimple_call_fndecl (stmt) != NULL_TREE)
+     return;
+ 
+--- a/src/gcc/varasm.c
++++ b/src/gcc/varasm.c
+@@ -1,7 +1,7 @@
+ /* Output variables, constants and external declarations, for GNU compiler.
+    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
+    1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+-   2010, 2011  Free Software Foundation, Inc.
++   2010, 2011, 2012  Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -30,6 +30,7 @@
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
++#include "pointer-set.h"
+ #include "tm.h"
+ #include "rtl.h"
+ #include "tree.h"
+@@ -2097,6 +2098,19 @@
+    it all the way to final.  See PR 17982 for further discussion.  */
+ static GTY(()) tree pending_assemble_externals;
+ 
++/* FIXME: Trunk is at GCC 4.8 now and the above problem still hasn't been
++   addressed properly.  This caused PR 52640 due to O(external_decls**2)
++   lookups in the pending_assemble_externals TREE_LIST in assemble_external.
++   Paper over with this pointer set, which we use to see if we have already
++   added a decl to pending_assemble_externals without first traversing
++   the entire pending_assemble_externals list.  See assemble_external().  */
++static struct pointer_set_t *pending_assemble_externals_set;
++
++/* Some targets delay some output to final using TARGET_ASM_FILE_END.
++   As a result, assemble_external can be called after the list of externals
++   is processed and the pointer set destroyed.  */
++static bool pending_assemble_externals_processed;
++
+ #ifdef ASM_OUTPUT_EXTERNAL
+ /* True if DECL is a function decl for which no out-of-line copy exists.
+    It is assumed that DECL's assembler name has been set.  */
+@@ -2146,6 +2160,8 @@
+     assemble_external_real (TREE_VALUE (list));
+ 
+   pending_assemble_externals = 0;
++  pending_assemble_externals_processed = true;
++  pointer_set_destroy (pending_assemble_externals_set);
+ #endif
+ }
+ 
+@@ -2186,7 +2202,13 @@
+     weak_decls = tree_cons (NULL, decl, weak_decls);
+ 
+ #ifdef ASM_OUTPUT_EXTERNAL
+-  if (value_member (decl, pending_assemble_externals) == NULL_TREE)
++  if (pending_assemble_externals_processed)
++    {
++      assemble_external_real (decl);
++      return;
++    }
++
++  if (! pointer_set_insert (pending_assemble_externals_set, decl))
+     pending_assemble_externals = tree_cons (NULL, decl,
+ 					    pending_assemble_externals);
+ #endif
+@@ -3922,6 +3944,13 @@
+ 	   tem = TREE_OPERAND (tem, 0))
+ 	;
+ 
++      if (TREE_CODE (tem) == MEM_REF
++	  && TREE_CODE (TREE_OPERAND (tem, 0)) == ADDR_EXPR)
++	{
++	  reloc = compute_reloc_for_constant (TREE_OPERAND (tem, 0));
++	  break;
++	}
++
+       if (TREE_PUBLIC (tem))
+ 	reloc |= 2;
+       else
+@@ -3990,6 +4019,9 @@
+ 
+       if (CONSTANT_CLASS_P (tem) || TREE_CODE (tem) == CONSTRUCTOR)
+ 	output_constant_def (tem, 0);
++
++      if (TREE_CODE (tem) == MEM_REF)
++	output_addressed_constants (TREE_OPERAND (tem, 0));
+       break;
+ 
+     case PLUS_EXPR:
+@@ -6019,6 +6051,10 @@
+ 
+   if (readonly_data_section == NULL)
+     readonly_data_section = text_section;
++
++#ifdef ASM_OUTPUT_EXTERNAL
++  pending_assemble_externals_set = pointer_set_create ();
++#endif
+ }
+ 
+ enum tls_model
+--- a/src/INSTALL/configure.html
++++ b/src/INSTALL/configure.html
+@@ -563,7 +563,7 @@
+      <!-- If you make -with-llsc the default for additional targets, -->
+      <!-- update the -with-llsc description in the MIPS section below. -->
+      <br><dt><code>--with-llsc</code><dd>On MIPS targets, make <samp><span class="option">-mllsc</span></samp> the default when no
+-<samp><span class="option">-mno-lsc</span></samp> option is passed.  This is the default for
++<samp><span class="option">-mno-llsc</span></samp> option is passed.  This is the default for
+ Linux-based targets, as the kernel will emulate them if the ISA does
+ not provide them.
+ 
+--- a/src/libffi/ChangeLog
++++ b/src/libffi/ChangeLog
+@@ -1,3 +1,17 @@
++2012-03-22  David Edelsohn  <dje.gcc@gmail.com>
++
++	Backport from mainline:
++	2012-03-09  David Edelsohn  <dje.gcc@gmail.com>
++
++	* src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
++	change to return value of ffi_closure_helper_DARWIN and load type
++	from return type.
++
++	From Tom Honermann <tom.honermann@oracle.com>:
++	* src/powerpc/aix.S: Declare .ffi_prep_args.  Insert nops after
++	branch instructions.
++	* src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/libffi/src/powerpc/aix_closure.S
++++ b/src/libffi/src/powerpc/aix_closure.S
+@@ -79,6 +79,8 @@
+ 	.set f20,20
+ 	.set f21,21
+ 
++	.extern .ffi_closure_helper_DARWIN
++
+ #define LIBFFI_ASM
+ #define JUMPTARGET(name) name
+ #define L(x) x
+@@ -165,6 +167,7 @@
+ 
+ 	/* look up the proper starting point in table  */
+ 	/* by using return type as offset */
++	lhz	r3, 10(r3)	/* load type from return type */
+ 	ld	r4, LC..60(2)	/* get address of jump table */
+ 	sldi	r3, r3, 4	/* now multiply return type by 16 */
+ 	ld	r0, 240+16(r1)	/* load return address */
+@@ -337,8 +340,9 @@
+ 
+ 	/* look up the proper starting point in table  */
+ 	/* by using return type as offset */
++	lhz	r3, 6(r3)	/* load type from return type */
+ 	lwz	r4, LC..60(2)	/* get address of jump table */
+-	slwi	r3, r3, 4	/* now multiply return type by 4 */
++	slwi	r3, r3, 4	/* now multiply return type by 16 */
+ 	lwz	r0, 176+8(r1)	/* load return address */
+ 	add	r3, r3, r4	/* add contents of table to table address */
+ 	mtctr	r3
+--- a/src/libffi/src/powerpc/aix.S
++++ b/src/libffi/src/powerpc/aix.S
+@@ -1,5 +1,5 @@
+ /* -----------------------------------------------------------------------
+-   aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc.
++   aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
+    based on darwin.S by John Hornkvist
+ 
+    PowerPC Assembly glue.
+@@ -79,6 +79,8 @@
+ 	.set f20,20
+ 	.set f21,21
+ 
++	.extern .ffi_prep_args
++
+ #define LIBFFI_ASM
+ #include <fficonfig.h>
+ #include <ffi.h>
+@@ -125,6 +127,7 @@
+ 	/* Call ffi_prep_args.  */
+ 	mr	r4, r1
+ 	bl	.ffi_prep_args
++	nop
+ 
+ 	/* Now do the call.  */
+ 	ld	r0, 0(r29)
+@@ -226,6 +229,7 @@
+ 	/* Call ffi_prep_args.  */
+ 	mr	r4, r1
+ 	bl	.ffi_prep_args
++	nop
+ 
+ 	/* Now do the call.  */
+ 	lwz	r0, 0(r29)
+--- a/src/libgfortran/ChangeLog
++++ b/src/libgfortran/ChangeLog
+@@ -1,3 +1,9 @@
++2012-05-12  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/53310
++	* intrinsics/eoshift2.c (eoshift2): Do not leak
++	memory by allocating it in the loop.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/libgfortran/intrinsics/eoshift2.c
++++ b/src/libgfortran/intrinsics/eoshift2.c
+@@ -77,6 +77,12 @@
+ 
+       ret->offset = 0;
+       ret->dtype = array->dtype;
++
++      if (arraysize > 0)
++	ret->data = internal_malloc_size (size * arraysize);
++      else
++	ret->data = internal_malloc_size (1);
++
+       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
+         {
+ 	  index_type ub, str;
+@@ -90,12 +96,6 @@
+ 	      * GFC_DESCRIPTOR_STRIDE(ret,i-1);
+ 
+ 	  GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
+-
+-	  if (arraysize > 0)
+-	    ret->data = internal_malloc_size (size * arraysize);
+-	  else
+-	    ret->data = internal_malloc_size (1);
+-
+         }
+     }
+   else if (unlikely (compile_options.bounds_check))
+--- a/src/libjava/ChangeLog
++++ b/src/libjava/ChangeLog
+@@ -1,3 +1,13 @@
++2012-03-02  Jack Howarth  <howarth@bromo.med.uc.edu>
++
++	Backport from mainline
++	2012-02-23  Patrick Marlier  <patrick.marlier@gmail.com>
++       	    Jack Howarth  <howarth@bromo.med.uc.edu>
++
++	PR target/49461
++	* configure.ac (SYSTEMSPEC): No longer pass -no_pie for darwin11.
++	* configure: Regenerate.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/libjava/configure
++++ b/src/libjava/configure
+@@ -19775,14 +19775,9 @@
+         SYSTEMSPEC="-lunicows $SYSTEMSPEC"
+       fi
+     ;;
+-    *-*-darwin9*)
++    *-*-darwin[912]*)
+       SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
+     ;;
+-    *-*-darwin[12]*)
+-      # Something is incompatible with pie, would be nice to fix it and
+-      # remove -no_pie.  PR49461
+-      SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
+-    ;;
+     *)
+       SYSTEMSPEC=
+     ;;
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -886,14 +886,9 @@
+         SYSTEMSPEC="-lunicows $SYSTEMSPEC"
+       fi
+     ;;
+-    *-*-darwin9*)
++    *-*-darwin[[912]]*)
+       SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
+     ;;
+-    *-*-darwin[[12]]*)
+-      # Something is incompatible with pie, would be nice to fix it and
+-      # remove -no_pie.  PR49461
+-      SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
+-    ;;
+     *)
+       SYSTEMSPEC=
+     ;;
+--- a/src/libstdc++-v3/acinclude.m4
++++ b/src/libstdc++-v3/acinclude.m4
+@@ -3213,6 +3213,58 @@
+   ])
+ ])
+ 
++dnl
++dnl Check whether gthreads types can be copy-assigned in C++11 mode.
++dnl
++AC_DEFUN([GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN], [
++
++  AC_LANG_SAVE
++  AC_LANG_CPLUSPLUS
++  ac_save_CXXFLAGS="$CXXFLAGS"
++  CXXFLAGS="$CXXFLAGS -std=c++0x -I${toplevel_srcdir}/gcc"
++
++  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
++  case $target_thread_file in
++    posix)
++      CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
++  esac
++
++  AC_MSG_CHECKING([whether gthreads types are copy-assignable in C++11 mode])
++
++  AC_TRY_COMPILE([#include "gthr.h"],
++    [
++      #ifdef __GTHREAD_MUTEX_INIT
++      __gthread_mutex_t m1;
++      __gthread_mutex_t m2 = __GTHREAD_MUTEX_INIT;
++      m1 = m2;
++      #endif
++      #ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
++      __gthread_recursive_mutex_t r1;
++      __gthread_recursive_mutex_t r2 = __GTHREAD_RECURSIVE_MUTEX_INIT;
++      r1 = r2;
++      #endif
++      #ifdef __GTHREAD_HAS_COND
++      #ifdef __GTHREAD_COND_INIT
++      __gthread_cond_t c1;
++      __gthread_cond_t c2 = __GTHREAD_COND_INIT;
++      c1 = c2;
++      #endif
++      #endif
++    ], [ac_gthread_cxx11_copy_assign=1], [ac_gthread_cxx11_copy_assign=0])
++
++  if test $ac_gthread_cxx11_copy_assign = 1 ; then res_gthr_copy_assign=yes ;
++  else res_gthr_copy_assign=no ; fi
++  AC_MSG_RESULT([$res_gthr_copy_assign])
++
++  if test x"$res_gthr_copy_assign" = x"no"; then
++    AC_DEFINE(_GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11, 1,
++	      [Define if gthreads types cannot be copy-assigned in C++11.])
++  fi
++
++  CXXFLAGS="$ac_save_CXXFLAGS"
++  AC_LANG_RESTORE
++])
++
+ # Macros from the top-level gcc directory.
+ m4_include([../config/gc++filt.m4])
+ m4_include([../config/tls.m4])
+--- a/src/libstdc++-v3/ChangeLog
++++ b/src/libstdc++-v3/ChangeLog
+@@ -1,3 +1,65 @@
++2012-07-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/53270
++	* acinclude.m4 (GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN): Define.
++	* configure.ac (GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN): Use it.
++	* config.h.in: Regenerate.
++	* configure: Likewise.
++	* include/ext/concurrence.h (__copy_gthr_type): Define.
++	(__mutex::__mutex, __recursive_mutex::__recursive_mutex,
++	__cond::__cond): Use it.
++	* include/ext/rope (__copy_gthr_mutex): Define.
++	(_Refcount_Base::_Refcount_Base, _Rope_RopeRep::_Rope_RopeRep): Use
++	it.
++	* src/condition_variable.cc (condition_variable::condition_variable):
++	Use memcpy instead of assignment.
++
++2012-07-07  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/53578
++	* include/ext/concurrence.h (__recursive_mutex::_S_destroy): Fix
++	narrowing conversion.
++	* include/std/mutex (__recursive_mutex_base::_S_destroy): Likewise.
++
++2012-07-05  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/53830
++	* include/std/condition_variable (condition_variable_any::wait):
++	Move _Unlock type to class scope.
++	(condition_variable_any::wait_until): Reuse it.
++	* testsuite/30_threads/condition_variable_any/53830.cc: New.
++
++2012-06-20  J�ĥrg Sonnenberger <joerg@britannica.bec.de>
++	    Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/53678
++	* config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U.
++	* testsuite/22_locale/ctype_base/53678.cc: New.
++
++2012-04-12   Jeffrey Yasskin  <jyasskin@google.com>
++
++	PR libstdc++/52822
++	* include/bits/stl_algo.h (__stable_partition_adaptive): Avoid
++	move-assigning an object to itself by explicitly testing for
++	identity.
++	* testsuite/25_algorithms/stable_partition/pr52822.cc: Test
++	vectors, which have a destructive self-move-assignment.
++	* testsuite/25_algorithms/stable_partition/moveable.cc (test02):
++	Test with rvalstruct, which explicitly checks
++	self-move-assignment.
++
++2012-04-09  Terry Guo  <terry.guo@arm.com>
++
++	* testsuite/Makefile.am (TEST_GCC_EXEC_PREFIX): New.
++	* testsuite/Makefile.in: Regenerated.
++
++2012-03-08  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	PR libstdc++/52433
++	* include/debug/safe_iterator.h (_Safe_iterator): Add move
++	constructor and move assignment operator.
++	* testsuite/23_containers/vector/debug/52433.cc: New.
++
+ 2012-03-01  Release Manager
+ 
+ 	* GCC 4.6.3 released.
+--- a/src/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
++++ b/src/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
+@@ -1,6 +1,6 @@
+ // Locale support -*- C++ -*-
+ 
+-// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
++// Copyright (C) 2000, 2009, 2011, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -31,8 +31,6 @@
+ //   anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
+ // See www.netbsd.org for details of access.
+   
+-#include <sys/param.h>
+-
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+@@ -47,7 +45,7 @@
+     // on the mask type. Because of this, we don't use an enum.
+     typedef unsigned char      	mask;
+ 
+-#if __NetBSD_Version__ < 599004100
++#ifndef _CTYPE_U
+     static const mask upper    	= _U;
+     static const mask lower 	= _L;
+     static const mask alpha 	= _U | _L;
+--- a/src/libstdc++-v3/config.h.in
++++ b/src/libstdc++-v3/config.h.in
+@@ -692,6 +692,9 @@
+ /* Define if a fully dynamic basic_string is wanted. */
+ #undef _GLIBCXX_FULLY_DYNAMIC_STRING
+ 
++/* Define if gthreads types cannot be copy-assigned in C++11. */
++#undef _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
++
+ /* Define if gthreads library is available. */
+ #undef _GLIBCXX_HAS_GTHREADS
+ 
+--- a/src/libstdc++-v3/configure
++++ b/src/libstdc++-v3/configure
+@@ -19477,6 +19477,84 @@
+ 
+ 
+ 
++# For copy-assignable gthreads types
++
++
++
++  ac_ext=cpp
++ac_cpp='$CXXCPP $CPPFLAGS'
++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
++
++  ac_save_CXXFLAGS="$CXXFLAGS"
++  CXXFLAGS="$CXXFLAGS -std=c++0x -I${toplevel_srcdir}/gcc"
++
++  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
++  case $target_thread_file in
++    posix)
++      CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
++  esac
++
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gthreads types are copy-assignable in C++11 mode" >&5
++$as_echo_n "checking whether gthreads types are copy-assignable in C++11 mode... " >&6; }
++
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++#include "gthr.h"
++int
++main ()
++{
++
++      #ifdef __GTHREAD_MUTEX_INIT
++      __gthread_mutex_t m1;
++      __gthread_mutex_t m2 = __GTHREAD_MUTEX_INIT;
++      m1 = m2;
++      #endif
++      #ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
++      __gthread_recursive_mutex_t r1;
++      __gthread_recursive_mutex_t r2 = __GTHREAD_RECURSIVE_MUTEX_INIT;
++      r1 = r2;
++      #endif
++      #ifdef __GTHREAD_HAS_COND
++      #ifdef __GTHREAD_COND_INIT
++      __gthread_cond_t c1;
++      __gthread_cond_t c2 = __GTHREAD_COND_INIT;
++      c1 = c2;
++      #endif
++      #endif
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_cxx_try_compile "$LINENO"; then :
++  ac_gthread_cxx11_copy_assign=1
++else
++  ac_gthread_cxx11_copy_assign=0
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++  if test $ac_gthread_cxx11_copy_assign = 1 ; then res_gthr_copy_assign=yes ;
++  else res_gthr_copy_assign=no ; fi
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res_gthr_copy_assign" >&5
++$as_echo "$res_gthr_copy_assign" >&6; }
++
++  if test x"$res_gthr_copy_assign" = x"no"; then
++
++$as_echo "#define _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11 1" >>confdefs.h
++
++  fi
++
++  CXXFLAGS="$ac_save_CXXFLAGS"
++  ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++
+ 
+   ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+ if test "x$ac_cv_header_locale_h" = x""yes; then :
+--- a/src/libstdc++-v3/configure.ac
++++ b/src/libstdc++-v3/configure.ac
+@@ -164,6 +164,9 @@
+ # For gthread support
+ GLIBCXX_CHECK_GTHREADS
+ 
++# For copy-assignable gthreads types
++GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN
++
+ AC_LC_MESSAGES
+ 
+ # Check for available headers.
+--- a/src/libstdc++-v3/include/bits/stl_algo.h
++++ b/src/libstdc++-v3/include/bits/stl_algo.h
+@@ -1811,7 +1811,8 @@
+ 	  for (; __first != __last; ++__first)
+ 	    if (__pred(*__first))
+ 	      {
+-		*__result1 = _GLIBCXX_MOVE(*__first);
++		if (__result1 != __first)
++		  *__result1 = _GLIBCXX_MOVE(*__first);
+ 		++__result1;
+ 	      }
+ 	    else
+--- a/src/libstdc++-v3/include/debug/safe_iterator.h
++++ b/src/libstdc++-v3/include/debug/safe_iterator.h
+@@ -1,6 +1,6 @@
+ // Safe iterator implementation  -*- C++ -*-
+ 
+-// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011
++// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011, 2012
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+@@ -142,6 +142,24 @@
+ 			      ._M_iterator(__x, "other"));
+       }
+ 
++#ifdef __GXX_EXPERIMENTAL_CXX0X__
++      /**
++       * @brief Move construction.
++       * @post __x is singular and unattached
++       */
++      _Safe_iterator(_Safe_iterator&& __x) : _M_current()
++      {
++	_GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
++			      || __x._M_current == _Iterator(),
++			      _M_message(__msg_init_copy_singular)
++			      ._M_iterator(*this, "this")
++			      ._M_iterator(__x, "other"));
++	std::swap(_M_current, __x._M_current);
++	this->_M_attach(__x._M_sequence);
++	__x._M_detach();
++      }
++#endif
++
+       /**
+        *  @brief Converting constructor from a mutable iterator to a
+        *  constant iterator.
+@@ -181,6 +199,27 @@
+ 	return *this;
+       }
+ 
++#ifdef __GXX_EXPERIMENTAL_CXX0X__
++      /**
++       * @brief Move assignment.
++       * @post __x is singular and unattached
++       */
++      _Safe_iterator&
++      operator=(_Safe_iterator&& __x)
++      {
++	_GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
++			      || __x._M_current == _Iterator(),
++			      _M_message(__msg_copy_singular)
++			      ._M_iterator(*this, "this")
++			      ._M_iterator(__x, "other"));
++	_M_current = __x._M_current;
++	_M_attach(__x._M_sequence);
++	__x._M_detach();
++	__x._M_current = _Iterator();
++	return *this;
++      }
++#endif
++
+       /**
+        *  @brief Iterator dereference.
+        *  @pre iterator is dereferenceable
+@@ -415,7 +454,9 @@
+       /// Is this iterator equal to the sequence's before_begin() iterator if
+       /// any?
+       bool _M_is_before_begin() const
+-      { return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence()); }
++      {
++	return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence());
++      }
+     };
+ 
+   template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+--- a/src/libstdc++-v3/include/ext/concurrence.h
++++ b/src/libstdc++-v3/include/ext/concurrence.h
+@@ -1,6 +1,6 @@
+ // Support for concurrent programing -*- C++ -*-
+ 
+-// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
++// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+@@ -140,6 +140,18 @@
+   }
+ #endif
+  
++  template<typename _Tp>
++    static inline void
++    __copy_gthr_type(_Tp& __to, const _Tp& __from)
++    {
++#if defined __GXX_EXPERIMENTAL_CXX0X__ \
++  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
++      __builtin_memcpy(&__to, &__from, sizeof(__to));
++#else
++      __to = __from;
++#endif
++    }
++
+   class __mutex 
+   {
+   private:
+@@ -156,7 +168,7 @@
+ 	{
+ #if defined __GTHREAD_MUTEX_INIT
+ 	  __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+-	  _M_mutex = __tmp;
++	  __copy_gthr_type(_M_mutex, __tmp);
+ #else
+ 	  __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex); 
+ #endif
+@@ -214,7 +226,7 @@
+ 	{
+ #if defined __GTHREAD_RECURSIVE_MUTEX_INIT
+ 	  __gthread_recursive_mutex_t __tmp = __GTHREAD_RECURSIVE_MUTEX_INIT;
+-	  _M_mutex = __tmp;
++	  __copy_gthr_type(_M_mutex, __tmp);
+ #else
+ 	  __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex); 
+ #endif
+@@ -270,7 +282,7 @@
+ 
+     // matches a gthr-win32.h recursive mutex
+     template<typename _Rm>
+-      static typename __enable_if<sizeof(&_Rm::sema), void>::__type
++      static typename __enable_if<(bool)sizeof(&_Rm::sema), void>::__type
+       _S_destroy(_Rm* __mx)
+       {
+         __gthread_mutex_t __tmp;
+@@ -279,7 +291,7 @@
+ 
+     // matches a recursive mutex with a member 'actual'
+     template<typename _Rm>
+-      static typename __enable_if<sizeof(&_Rm::actual), void>::__type
++      static typename __enable_if<(bool)sizeof(&_Rm::actual), void>::__type
+       _S_destroy(_Rm* __mx)
+       { __gthread_mutex_destroy(&__mx->actual); }
+ 
+@@ -332,7 +344,7 @@
+ 	{
+ #if defined __GTHREAD_COND_INIT
+ 	  __gthread_cond_t __tmp = __GTHREAD_COND_INIT;
+-	  _M_cond = __tmp;
++	  __copy_gthr_type(_M_cond, __tmp);
+ #else
+ 	  __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
+ #endif
+--- a/src/libstdc++-v3/include/ext/rope
++++ b/src/libstdc++-v3/include/ext/rope
+@@ -1,7 +1,7 @@
+ // SGI's rope class -*- C++ -*-
+ 
+-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+-// Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
++// 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -445,6 +445,17 @@
+     identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
+     { return rope<_CharT, _Alloc>(); }
+ 
++  static inline void
++  __copy_gthr_mutex(__gthread_mutex_t& __to, const __gthread_mutex_t& __from)
++  {
++#if defined __GXX_EXPERIMENTAL_CXX0X__ \
++  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
++    __builtin_memcpy(&__to, &__from, sizeof(__to));
++#else
++    __to = __from;
++#endif
++  }
++
+   // Class _Refcount_Base provides a type, _RC_t, a data member,
+   // _M_ref_count, and member functions _M_incr and _M_decr, which perform
+   // atomic preincrement/predecrement.  The constructor initializes
+@@ -464,7 +475,7 @@
+     {
+ #ifdef __GTHREAD_MUTEX_INIT
+       __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+-      _M_ref_count_lock = __tmp;
++      __copy_gthr_mutex(_M_ref_count_lock, __tmp);
+ #elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
+       __GTHREAD_MUTEX_INIT_FUNCTION (&_M_ref_count_lock);
+ #else
+@@ -605,7 +616,7 @@
+     {
+       // Do not copy a POSIX/gthr mutex once in use.  However, bits are bits.
+       __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+-      _M_c_string_lock = __tmp;
++      __copy_gthr_mutex(_M_c_string_lock, __tmp);
+     }
+ #else
+     { __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
+--- a/src/libstdc++-v3/include/std/condition_variable
++++ b/src/libstdc++-v3/include/std/condition_variable
+@@ -1,6 +1,6 @@
+ // <condition_variable> -*- C++ -*-
+ 
+-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
++// Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -171,6 +171,26 @@
+     condition_variable			_M_cond;
+     mutex				_M_mutex;
+ 
++    // scoped unlock - unlocks in ctor, re-locks in dtor
++    template<typename _Lock>
++      struct _Unlock
++      {
++	explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
++
++	~_Unlock() noexcept(false)
++	{
++	  if (uncaught_exception())
++	    __try { _M_lock.lock(); } __catch(...) { }
++	  else
++	    _M_lock.lock();
++	}
++
++	_Unlock(const _Unlock&) = delete;
++	_Unlock& operator=(const _Unlock&) = delete;
++
++	_Lock& _M_lock;
++      };
++
+   public:
+     typedef condition_variable::native_handle_type	native_handle_type;
+ 
+@@ -198,21 +218,8 @@
+       void
+       wait(_Lock& __lock)
+       {
+-	// scoped unlock - unlocks in ctor, re-locks in dtor
+-	struct _Unlock {
+-	  explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
+-	  ~_Unlock() noexcept(false)
+-	  {
+-	    if (uncaught_exception())
+-	      __try { _M_lock.lock(); } __catch(...) { }
+-	    else
+-	      _M_lock.lock();
+-	  }
+-	  _Lock& _M_lock;
+-	};
+-
+ 	unique_lock<mutex> __my_lock(_M_mutex);
+-	_Unlock __unlock(__lock);
++	_Unlock<_Lock> __unlock(__lock);
+ 	// _M_mutex must be unlocked before re-locking __lock so move
+ 	// ownership of _M_mutex lock to an object with shorter lifetime.
+ 	unique_lock<mutex> __my_lock2(std::move(__my_lock));
+@@ -233,11 +240,12 @@
+       wait_until(_Lock& __lock,
+ 		 const chrono::time_point<_Clock, _Duration>& __atime)
+       {
+-        unique_lock<mutex> __my_lock(_M_mutex);
+-        __lock.unlock();
+-        cv_status __status = _M_cond.wait_until(__my_lock, __atime);
+-        __lock.lock();
+-        return __status;
++	unique_lock<mutex> __my_lock(_M_mutex);
++	_Unlock<_Lock> __unlock(__lock);
++	// _M_mutex must be unlocked before re-locking __lock so move
++	// ownership of _M_mutex lock to an object with shorter lifetime.
++	unique_lock<mutex> __my_lock2(std::move(__my_lock));
++	return _M_cond.wait_until(__my_lock2, __atime);
+       }
+ 
+     template<typename _Lock, typename _Clock,
+--- a/src/libstdc++-v3/include/std/mutex
++++ b/src/libstdc++-v3/include/std/mutex
+@@ -130,7 +130,7 @@
+   public:
+     // matches a gthr-win32.h recursive mutex
+     template<typename _Rm>
+-      static typename enable_if<sizeof(&_Rm::sema), void>::type
++      static typename enable_if<(bool)sizeof(&_Rm::sema), void>::type
+       _S_destroy(_Rm* __mx)
+       {
+         __gthread_mutex_t __tmp;
+@@ -139,7 +139,7 @@
+ 
+     // matches a recursive mutex with a member 'actual'
+     template<typename _Rm>
+-      static typename enable_if<sizeof(&_Rm::actual), void>::type
++      static typename enable_if<(bool)sizeof(&_Rm::actual), void>::type
+       _S_destroy(_Rm* __mx)
+       { __gthread_mutex_destroy(&__mx->actual); }
+ 
+--- a/src/libstdc++-v3/libsupc++/eh_arm.cc
++++ b/src/libstdc++-v3/libsupc++/eh_arm.cc
+@@ -30,10 +30,11 @@
+ using namespace __cxxabiv1;
+ 
+ 
+-// Given the thrown type THROW_TYPE, pointer to a variable containing a
+-// pointer to the exception object THROWN_PTR_P and a type CATCH_TYPE to
+-// compare against, return whether or not there is a match and if so,
+-// update *THROWN_PTR_P.
++// Given the thrown type THROW_TYPE, exception object UE_HEADER and a
++// type CATCH_TYPE to compare against, return whether or not there is
++// a match and if so, update *THROWN_PTR_P to point to either the
++// type-matched object, or in the case of a pointer type, the object
++// pointed to by the pointer.
+ 
+ extern "C" __cxa_type_match_result
+ __cxa_type_match(_Unwind_Exception* ue_header,
+@@ -41,51 +42,51 @@
+ 		 bool is_reference __attribute__((__unused__)),
+ 		 void** thrown_ptr_p)
+ {
+-  bool forced_unwind = __is_gxx_forced_unwind_class(ue_header->exception_class);
+-  bool foreign_exception = !forced_unwind && !__is_gxx_exception_class(ue_header->exception_class);
+-  bool dependent_exception =
+-    __is_dependent_exception(ue_header->exception_class);
++  bool forced_unwind
++    = __is_gxx_forced_unwind_class(ue_header->exception_class);
++  bool foreign_exception
++    = !forced_unwind && !__is_gxx_exception_class(ue_header->exception_class);
++  bool dependent_exception
++    = __is_dependent_exception(ue_header->exception_class);
+   __cxa_exception* xh = __get_exception_header_from_ue(ue_header);
+   __cxa_dependent_exception *dx = __get_dependent_exception_from_ue(ue_header);
+   const std::type_info* throw_type;
++  void *thrown_ptr = 0;
+ 
+   if (forced_unwind)
+     throw_type = &typeid(abi::__forced_unwind);
+   else if (foreign_exception)
+     throw_type = &typeid(abi::__foreign_exception);
+-  else if (dependent_exception)
+-    throw_type = __get_exception_header_from_obj
+-      (dx->primaryException)->exceptionType;
+   else
+-    throw_type = xh->exceptionType;
+-
+-  void* thrown_ptr = *thrown_ptr_p;
++    {
++      if (dependent_exception)
++	xh = __get_exception_header_from_obj (dx->primaryException);
++      throw_type = xh->exceptionType;
++      // We used to require the caller set the target of thrown_ptr_p,
++      // but that's incorrect -- the EHABI makes no such requirement
++      // -- and not all callers will set it.  Fortunately callers that
++      // do initialize will always pass us the value we calculate
++      // here, so there's no backwards compatibility problem.
++      thrown_ptr = __get_object_from_ue (ue_header);
++    }
++  
++  __cxa_type_match_result result = ctm_succeeded;
+ 
+   // Pointer types need to adjust the actual pointer, not
+   // the pointer to pointer that is the exception object.
+   // This also has the effect of passing pointer types
+   // "by value" through the __cxa_begin_catch return value.
+   if (throw_type->__is_pointer_p())
+-    thrown_ptr = *(void**) thrown_ptr;
++    {
++      thrown_ptr = *(void**) thrown_ptr;
++      // We need to indicate the indirection to our caller.
++      result = ctm_succeeded_with_ptr_to_base;
++    }
+ 
+   if (catch_type->__do_catch(throw_type, &thrown_ptr, 1))
+     {
+       *thrown_ptr_p = thrown_ptr;
+-
+-      if (typeid(*catch_type) == typeid (typeid(void*)))
+-	{
+-	  const __pointer_type_info *catch_pointer_type =
+-	    static_cast<const __pointer_type_info *> (catch_type);
+-	  const __pointer_type_info *throw_pointer_type =
+-	    static_cast<const __pointer_type_info *> (throw_type);
+-
+-	  if (typeid (*catch_pointer_type->__pointee) != typeid (void)
+-	      && (*catch_pointer_type->__pointee != 
+-		  *throw_pointer_type->__pointee))
+-	    return ctm_succeeded_with_ptr_to_base;
+-	}
+-
+-      return ctm_succeeded;
++      return result;
+     }
+ 
+   return ctm_failed;
+--- a/src/libstdc++-v3/src/condition_variable.cc
++++ b/src/libstdc++-v3/src/condition_variable.cc
+@@ -1,6 +1,6 @@
+ // condition_variable -*- C++ -*-
+ 
+-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
++// Copyright (C) 2008, 2009, 2010, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -34,7 +34,12 @@
+   {
+ #ifdef __GTHREAD_COND_INIT
+     __native_type __tmp = __GTHREAD_COND_INIT;
++#if defined __GXX_EXPERIMENTAL_CXX0X__ \
++  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
++    __builtin_memcpy(&_M_cond, &__tmp, sizeof(_M_cond));
++#else
+     _M_cond = __tmp;
++#endif
+ #else
+     int __e = __gthread_cond_init(&_M_cond, 0);
+ 
+--- a/src/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
++++ b/src/libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
+@@ -0,0 +1,28 @@
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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.
++
++// This library 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 this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++// { dg-do compile }
++
++// 22.2.1 The ctype category
++
++#include <locale>
++
++// libstdc++/53678
++void test01()
++{
++  bool NetBSD __attribute__((unused)) = true;
++}
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
+@@ -0,0 +1,43 @@
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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.
++//
++// This library 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 this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++//
++// { dg-require-debug-mode "" }
++// { dg-options "-std=gnu++0x" }
++// { dg-do compile }
++
++// PR libstdc++/52433
++
++#include <vector>
++
++struct X
++{
++    std::vector<int>::iterator i;
++
++    X() = default;
++    X(const X&) = default;
++    X(X&&) = default;
++    X& operator=(const X&) = default;
++    X& operator=(X&&) = default;
++};
++
++X test01()
++{
++    X x;
++    x = X();
++    return x;
++}
++
+--- a/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
++++ b/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
+@@ -1,6 +1,6 @@
+ // { dg-options "-std=gnu++0x" }
+ 
+-// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
++// Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -39,6 +39,11 @@
+ const int B[] = {2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 17};
+ const int N = sizeof(A) / sizeof(int);
+ 
++// Check that starting with a true predicate works too. (PR52822)
++const int A2[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
++const int B2[] = {2, 4, 6, 8, 10, 12, 14, 16, 3, 5, 7, 9, 11, 13, 15, 17};
++const int N2 = sizeof(A2) / sizeof(int);
++
+ struct Pred
+ {
+   bool
+@@ -46,7 +51,7 @@
+   { return (x.val % 2) == 0; }
+ };
+ 
+-// 25.2.12 stable_partition()
++// 25.2.12 stable_partition(), starting with a false predicate.
+ void
+ test01()
+ {
+@@ -60,9 +65,24 @@
+   VERIFY( std::equal(s1, s1 + N, B) );
+ }
+ 
++// 25.2.12 stable_partition(), starting with a true predicate.
++void
++test02()
++{
++  bool test __attribute__((unused)) = true;
++
++  rvalstruct s1[N2];
++  std::copy(A2, A2 + N2, s1);
++  Container con(s1, s1 + N2);
++
++  std::stable_partition(con.begin(), con.end(), Pred());
++  VERIFY( std::equal(s1, s1 + N2, B2) );
++}
++
+ int
+ main()
+ {
+   test01();
++  test02();
+   return 0;
+ }
+--- a/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
++++ b/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
+@@ -0,0 +1,43 @@
++// { dg-options "-std=gnu++0x" }
++
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without Pred 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 this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++// 25.2.12 [lib.alg.partitions] Partitions.
++
++#include <algorithm>
++#include <vector>
++#include <testsuite_hooks.h>
++
++bool true_vector_pred(const std::vector<int>&) { return true; }
++
++void
++test01()
++{
++  std::vector<std::vector<int> > v(1);
++  v[0].push_back(7);
++  VERIFY( v[0].size() == 1 );
++  std::stable_partition(v.begin(), v.end(), &true_vector_pred);
++  VERIFY( v[0].size() == 1 );
++}
++
++int
++main()
++{
++  test01();
++  return 0;
++}
+--- a/src/libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
++++ b/src/libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
+@@ -0,0 +1,68 @@
++// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } }
++// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } }
++// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
++// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
++// { dg-require-cstdint "" }
++// { dg-require-gthreads "" }
++// { dg-require-sched-yield "" }
++// { dg-require-nanosleep "" }
++
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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.
++
++// This library 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 this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++// PR libstdc++/53830
++// Test for deadlock in condition_variable_any::wait_for
++
++#include <thread>
++#include <mutex>
++#include <condition_variable>
++#include <chrono>
++#include <atomic>
++
++std::mutex mutex;
++std::condition_variable_any cv;
++
++std::atomic<int> barrier(0);
++
++// waits for data from another thread
++void wait_for_data()
++{
++  std::unique_lock<std::mutex> lock(mutex);
++  barrier = 1;
++  cv.wait_for(lock, std::chrono::milliseconds(100), []{ return false; });
++  // read data
++}
++
++// passes data to waiting thread
++void provide_data()
++{
++  while (barrier == 0)
++    std::this_thread::yield();
++  std::unique_lock<std::mutex> lock(mutex);
++  // pass data
++  std::this_thread::sleep_for(std::chrono::seconds(1));
++  cv.notify_one();
++}
++
++int main()
++{
++  std::thread thread1(wait_for_data);
++  provide_data();
++  thread1.join();
++  return 0;
++}
++
+--- a/src/libstdc++-v3/testsuite/Makefile.am
++++ b/src/libstdc++-v3/testsuite/Makefile.am
+@@ -59,6 +59,7 @@
+ 	@echo 'set target_triplet $(target_triplet)' >>site.tmp
+ 	@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
+ 	@echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp
++	@echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp
+ 	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
+ 	@test ! -f site.exp || \
+ 	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
+--- a/src/libstdc++-v3/testsuite/Makefile.in
++++ b/src/libstdc++-v3/testsuite/Makefile.in
+@@ -502,6 +502,7 @@
+ 	@echo 'set target_triplet $(target_triplet)' >>site.tmp
+ 	@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
+ 	@echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp
++	@echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp
+ 	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
+ 	@test ! -f site.exp || \
+ 	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-multilib64-multiarch.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-multilib64-multiarch.diff
@@ -0,0 +1,53 @@
+# DP: Use lib instead of lib64 as the 64bit system dir on biarch
+# DP: architectures defaulting to 64bit.
+
+Index: b/src/gcc/config/s390/t-linux64
+===================================================================
+--- a/src/gcc/config/s390/t-linux64
++++ b/src/gcc/config/s390/t-linux64
+@@ -7,5 +7,5 @@
+ 
+ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu)
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu)
+ MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu)
+Index: b/src/gcc/config/rs6000/t-linux64
+===================================================================
+--- a/src/gcc/config/rs6000/t-linux64
++++ b/src/gcc/config/rs6000/t-linux64
+@@ -34,7 +34,7 @@
+ MULTILIB_OPTIONS        = m64/m32
+ MULTILIB_DIRNAMES       = 64 32
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+-MULTILIB_OSDIRNAMES	= ../lib64$(call if_multiarch,:powerpc64-linux-gnu)
++MULTILIB_OSDIRNAMES	= ../lib$(call if_multiarch,:powerpc64-linux-gnu)
+ MULTILIB_OSDIRNAMES    += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
+ MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
+ 
+Index: b/src/gcc/config/sparc/t-linux64
+===================================================================
+--- a/src/gcc/config/sparc/t-linux64
++++ b/src/gcc/config/sparc/t-linux64
+@@ -26,7 +26,7 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu)
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu)
+ MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu)
+ 
+ LIBGCC = stmp-multilib
+Index: b/src/gcc/config/i386/t-linux64
+===================================================================
+--- a/src/gcc/config/i386/t-linux64
++++ b/src/gcc/config/i386/t-linux64
+@@ -25,7 +25,7 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32 
+-MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:x86_64-linux-gnu) \
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:x86_64-linux-gnu) \
+ 	$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
+ 
+ LIBGCC = stmp-multilib
--- gcc-4.6-4.6.3.orig/debian/patches/boehm-gc-getnprocs.diff
+++ gcc-4.6-4.6.3/debian/patches/boehm-gc-getnprocs.diff
@@ -0,0 +1,18 @@
+# DP: boehm-gc/pthread_support.c (GC_get_nprocs): Use sysconf as fallback.
+
+---
+ boehm-gc/pthread_support.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+--- a/src/boehm-gc/pthread_support.c
++++ b/src/boehm-gc/pthread_support.c
+@@ -724,7 +724,8 @@
+     f = open("/proc/stat", O_RDONLY);
+     if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) {
+ 	WARN("Couldn't read /proc/stat\n", 0);
+-	return -1;
++	/* Fallback to sysconf after the warning */
++	return sysconf(_SC_NPROCESSORS_ONLN);
+     }
+     for (i = 0; i < len - 100; ++i) {
+         if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c'
--- gcc-4.6-4.6.3.orig/debian/patches/pr49696.diff
+++ gcc-4.6-4.6.3/debian/patches/pr49696.diff
@@ -0,0 +1,72 @@
+2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR target/49696
+	* config/mips/sync.md (sync_<optab>_12): Allow zero operands.
+	(sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
+	(sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
+
+--- a/src/gcc/config/mips/sync.md
++++ b/src/gcc/config/mips/sync.md
+@@ -136,7 +136,7 @@
+           [(match_operand:SI 1 "register_operand" "d")
+ 	   (match_operand:SI 2 "register_operand" "d")
+ 	   (atomic_hiqi_op:SI (match_dup 0)
+-			      (match_operand:SI 3 "register_operand" "dJ"))]
++			      (match_operand:SI 3 "reg_or_0_operand" "dJ"))]
+ 	  UNSPEC_SYNC_OLD_OP_12))
+    (clobber (match_scratch:SI 4 "=&d"))]
+   "GENERATE_LL_SC"
+@@ -177,7 +177,7 @@
+           [(match_operand:SI 2 "register_operand" "d")
+ 	   (match_operand:SI 3 "register_operand" "d")
+ 	   (atomic_hiqi_op:SI (match_dup 0)
+-			      (match_operand:SI 4 "register_operand" "dJ"))]
++			      (match_operand:SI 4 "reg_or_0_operand" "dJ"))]
+ 	  UNSPEC_SYNC_OLD_OP_12))
+    (clobber (match_scratch:SI 5 "=&d"))]
+   "GENERATE_LL_SC"
+@@ -218,7 +218,7 @@
+ 	   (match_operand:SI 2 "register_operand" "d")
+ 	   (match_operand:SI 3 "register_operand" "d")
+ 	   (atomic_hiqi_op:SI (match_dup 0)
+-			      (match_operand:SI 4 "register_operand" "dJ"))]
++			      (match_operand:SI 4 "reg_or_0_operand" "dJ"))]
+ 	  UNSPEC_SYNC_NEW_OP_12))
+    (set (match_dup 1)
+ 	(unspec_volatile:SI
+@@ -259,7 +259,7 @@
+           [(match_operand:SI 1 "register_operand" "d")
+ 	   (match_operand:SI 2 "register_operand" "d")
+ 	   (match_dup 0)
+-	   (match_operand:SI 3 "register_operand" "dJ")]
++	   (match_operand:SI 3 "reg_or_0_operand" "dJ")]
+ 	  UNSPEC_SYNC_OLD_OP_12))
+    (clobber (match_scratch:SI 4 "=&d"))]
+   "GENERATE_LL_SC"
+@@ -298,7 +298,7 @@
+ 	(unspec_volatile:SI
+           [(match_operand:SI 2 "register_operand" "d")
+ 	   (match_operand:SI 3 "register_operand" "d")
+-	   (match_operand:SI 4 "register_operand" "dJ")]
++	   (match_operand:SI 4 "reg_or_0_operand" "dJ")]
+ 	  UNSPEC_SYNC_OLD_OP_12))
+    (clobber (match_scratch:SI 5 "=&d"))]
+   "GENERATE_LL_SC"
+@@ -337,7 +337,7 @@
+           [(match_operand:SI 1 "memory_operand" "+R")
+ 	   (match_operand:SI 2 "register_operand" "d")
+ 	   (match_operand:SI 3 "register_operand" "d")
+-	   (match_operand:SI 4 "register_operand" "dJ")]
++	   (match_operand:SI 4 "reg_or_0_operand" "dJ")]
+ 	  UNSPEC_SYNC_NEW_OP_12))
+    (set (match_dup 1)
+ 	(unspec_volatile:SI
+@@ -546,7 +546,7 @@
+    (set (match_dup 1)
+ 	(unspec_volatile:SI [(match_operand:SI 2 "register_operand" "d")
+ 			     (match_operand:SI 3 "register_operand" "d")
+-			     (match_operand:SI 4 "arith_operand" "dJ")]
++			     (match_operand:SI 4 "reg_or_0_operand" "dJ")]
+ 	  UNSPEC_SYNC_EXCHANGE_12))]
+   "GENERATE_LL_SC"
+   { return mips_output_sync_loop (insn, operands); }
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-disable-plugin.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-disable-plugin.diff
@@ -0,0 +1,13 @@
+# DP: Don't build the gcjwebplugin, even when configured with --enable-plugin
+
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -65,6 +65,8 @@
+      esac],
+     [browser_plugin_enabled=no]
+ )
++# FIXME: don't build the plugin, this option collides with GCC plugin support
++plugin_enabled=no
+ 
+ AC_ARG_ENABLE(gconf-peer,
+   AS_HELP_STRING([--enable-gconf-peer],
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-linaro-doc.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-linaro-doc.diff
@@ -0,0 +1,408 @@
+# DP: Changes for the Linaro 4.6-2012.08 release (documentation).
+
+--- a/src/gcc/doc/fsf-funding.7
++++ b/src/gcc/doc/fsf-funding.7
+@@ -124,7 +124,7 @@
+ .\" ========================================================================
+ .\"
+ .IX Title "FSF-FUNDING 7"
+-.TH FSF-FUNDING 7 "2012-03-01" "gcc-4.6.3" "GNU"
++.TH FSF-FUNDING 7 "2012-07-31" "gcc-4.6.4" "GNU"
+ .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+ .\" way too many mistakes in technical documents.
+ .if n .ad l
+--- a/src/gcc/doc/gfdl.7
++++ b/src/gcc/doc/gfdl.7
+@@ -124,7 +124,7 @@
+ .\" ========================================================================
+ .\"
+ .IX Title "GFDL 7"
+-.TH GFDL 7 "2012-03-01" "gcc-4.6.3" "GNU"
++.TH GFDL 7 "2012-07-31" "gcc-4.6.4" "GNU"
+ .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+ .\" way too many mistakes in technical documents.
+ .if n .ad l
+--- a/src/gcc/doc/gpl.7
++++ b/src/gcc/doc/gpl.7
+@@ -124,7 +124,7 @@
+ .\" ========================================================================
+ .\"
+ .IX Title "GPL 7"
+-.TH GPL 7 "2012-03-01" "gcc-4.6.3" "GNU"
++.TH GPL 7 "2012-07-31" "gcc-4.6.4" "GNU"
+ .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+ .\" way too many mistakes in technical documents.
+ .if n .ad l
+--- a/src/gcc/doc/install.texi
++++ b/src/gcc/doc/install.texi
+@@ -1208,7 +1208,7 @@
+ 
+ @item --with-llsc
+ On MIPS targets, make @option{-mllsc} the default when no
+-@option{-mno-lsc} option is passed.  This is the default for
++@option{-mno-llsc} option is passed.  This is the default for
+ Linux-based targets, as the kernel will emulate them if the ISA does
+ not provide them.
+ 
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -853,8 +853,8 @@
+ -m5-compact  -m5-compact-nofpu @gol
+ -mb  -ml  -mdalign  -mrelax @gol
+ -mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave @gol
+--mieee  -mbitops  -misize  -minline-ic_invalidate -mpadstruct  -mspace @gol
+--mprefergot  -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
++-mieee -mno-ieee -mbitops  -misize  -minline-ic_invalidate -mpadstruct @gol
++-mspace -mprefergot  -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
+ -mdivsi3_libfunc=@var{name} -mfixed-range=@var{register-range} @gol
+ -madjust-unroll -mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol
+ -maccumulate-outgoing-args -minvalid-symbols}
+@@ -8725,6 +8725,10 @@
+ The maximum number of best instructions in the ready list that are considered
+ for renaming in the selective scheduler.  The default value is 2.
+ 
++@item sms-min-sc
++The minimum value of stage count that swing modulo scheduler will
++generate.  The default value is 2.
++
+ @item max-last-value-rtl
+ The maximum size measured as number of RTLs that can be recorded in an expression
+ in combiner for a pseudo register as last known value of that register.  The default
+@@ -8904,6 +8908,11 @@
+ The maximum number of namespaces to consult for suggestions when C++
+ name lookup fails for an identifier.  The default is 1000.
+ 
++@item max-stores-to-sink
++The maximum number of conditional stores paires that can be sunk.  Set to 0
++if either vectorization (@option{-ftree-vectorize}) or if-conversion
++(@option{-ftree-loop-if-convert}) is disabled.  The default is 2.
++
+ @end table
+ @end table
+ 
+@@ -10193,12 +10202,23 @@
+ @samp{arm10e}, @samp{arm1020e}, @samp{arm1022e},
+ @samp{arm1136j-s}, @samp{arm1136jf-s}, @samp{mpcore}, @samp{mpcorenovfp},
+ @samp{arm1156t2-s}, @samp{arm1156t2f-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s},
+-@samp{cortex-a5}, @samp{cortex-a8}, @samp{cortex-a9}, @samp{cortex-a15},
+-@samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-m4}, @samp{cortex-m3},
++@samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8}, @samp{cortex-a9}, 
++@samp{cortex-a15}, @samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-r5},
++@samp{cortex-m4}, @samp{cortex-m3},
+ @samp{cortex-m1},
+ @samp{cortex-m0},
+ @samp{xscale}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}.
+ 
++
++@option{-mcpu=generic-@var{arch}} is also permissible, and is
++equivalent to @option{-march=@var{arch} -mtune=generic-@var{arch}}.
++See @option{-mtune} for more information.
++
++@option{-mcpu=native} causes the compiler to auto-detect the CPU
++of the build computer.  At present, this feature is only supported on
++Linux, and not all architectures are recognised.  If the auto-detect is
++unsuccessful the option has no effect.
++
+ @item -mtune=@var{name}
+ @opindex mtune
+ This option is very similar to the @option{-mcpu=} option, except that
+@@ -10210,6 +10230,18 @@
+ For some ARM implementations better performance can be obtained by using
+ this option.
+ 
++@option{-mtune=generic-@var{arch}} specifies that GCC should tune the
++performance for a blend of processors within architecture @var{arch}.
++The aim is to generate code that run well on the current most popular
++processors, balancing between optimizations that benefit some CPUs in the
++range, and avoiding performance pitfalls of other CPUs.  The effects of
++this option may change in future GCC versions as CPU models come and go.
++
++@option{-mtune=native} causes the compiler to auto-detect the CPU
++of the build computer.  At present, this feature is only supported on
++Linux, and not all architectures are recognised.  If the auto-detect is
++unsuccessful the option has no effect.
++
+ @item -march=@var{name}
+ @opindex march
+ This specifies the name of the target ARM architecture.  GCC uses this
+@@ -10223,6 +10255,11 @@
+ @samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m},
+ @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}.
+ 
++@option{-march=native} causes the compiler to auto-detect the architecture
++of the build computer.  At present, this feature is only supported on
++Linux, and not all architectures are recognised.  If the auto-detect is
++unsuccessful the option has no effect.
++
+ @item -mfpu=@var{name}
+ @itemx -mfpe=@var{number}
+ @itemx -mfp=@var{number}
+@@ -16938,13 +16975,15 @@
+ @option{-mhitachi} is given.
+ 
+ @item -mieee
++@item -mno-ieee
+ @opindex mieee
+-Increase IEEE-compliance of floating-point code.
+-At the moment, this is equivalent to @option{-fno-finite-math-only}.
+-When generating 16 bit SH opcodes, getting IEEE-conforming results for
+-comparisons of NANs / infinities incurs extra overhead in every
+-floating point comparison, therefore the default is set to
+-@option{-ffinite-math-only}.
++@opindex mnoieee
++Control the IEEE compliance of floating-point comparisons, which affects the
++handling of cases where the result of a comparison is unordered.  By default
++@option{-mieee} is implicitly enabled.  If @option{-ffinite-math-only} is
++enabled @option{-mno-ieee} is implicitly set, which results in faster
++floating-point greater-equal and less-equal comparisons.  The implcit settings
++can be overridden by specifying either @option{-mieee} or @option{-mno-ieee}.
+ 
+ @item -minline-ic_invalidate
+ @opindex minline-ic_invalidate
+--- a/src/gcc/doc/md.texi
++++ b/src/gcc/doc/md.texi
+@@ -3935,6 +3935,48 @@
+ consecutive memory locations, operand 1 is the first register, and
+ operand 2 is a constant: the number of consecutive registers.
+ 
++@cindex @code{vec_load_lanes@var{m}@var{n}} instruction pattern
++@item @samp{vec_load_lanes@var{m}@var{n}}
++Perform an interleaved load of several vectors from memory operand 1
++into register operand 0.  Both operands have mode @var{m}.  The register
++operand is viewed as holding consecutive vectors of mode @var{n},
++while the memory operand is a flat array that contains the same number
++of elements.  The operation is equivalent to:
++
++@smallexample
++int c = GET_MODE_SIZE (@var{m}) / GET_MODE_SIZE (@var{n});
++for (j = 0; j < GET_MODE_NUNITS (@var{n}); j++)
++  for (i = 0; i < c; i++)
++    operand0[i][j] = operand1[j * c + i];
++@end smallexample
++
++For example, @samp{vec_load_lanestiv4hi} loads 8 16-bit values
++from memory into a register of mode @samp{TI}@.  The register
++contains two consecutive vectors of mode @samp{V4HI}@.
++
++This pattern can only be used if:
++@smallexample
++TARGET_ARRAY_MODE_SUPPORTED_P (@var{n}, @var{c})
++@end smallexample
++is true.  GCC assumes that, if a target supports this kind of
++instruction for some mode @var{n}, it also supports unaligned
++loads for vectors of mode @var{n}.
++
++@cindex @code{vec_store_lanes@var{m}@var{n}} instruction pattern
++@item @samp{vec_store_lanes@var{m}@var{n}}
++Equivalent to @samp{vec_load_lanes@var{m}@var{n}}, with the memory
++and register operands reversed.  That is, the instruction is
++equivalent to:
++
++@smallexample
++int c = GET_MODE_SIZE (@var{m}) / GET_MODE_SIZE (@var{n});
++for (j = 0; j < GET_MODE_NUNITS (@var{n}); j++)
++  for (i = 0; i < c; i++)
++    operand0[j * c + i] = operand1[i][j];
++@end smallexample
++
++for a memory operand 0 and register operand 1.
++
+ @cindex @code{vec_set@var{m}} instruction pattern
+ @item @samp{vec_set@var{m}}
+ Set given field in the vector value.  Operand 0 is the vector to modify,
+@@ -4188,6 +4230,17 @@
+ elements of the two vectors, and put the N/2 products of size 2*S in the
+ output vector (operand 0).
+ 
++@cindex @code{vec_widen_ushiftl_hi_@var{m}} instruction pattern
++@cindex @code{vec_widen_ushiftl_lo_@var{m}} instruction pattern
++@cindex @code{vec_widen_sshiftl_hi_@var{m}} instruction pattern
++@cindex @code{vec_widen_sshiftl_lo_@var{m}} instruction pattern
++@item @samp{vec_widen_ushiftl_hi_@var{m}}, @samp{vec_widen_ushiftl_lo_@var{m}}
++@itemx @samp{vec_widen_sshiftl_hi_@var{m}}, @samp{vec_widen_sshiftl_lo_@var{m}}
++Signed/Unsigned widening shift left.  The first input (operand 1) is a vector
++with N signed/unsigned elements of size S@.  Operand 2 is a constant.  Shift
++the high/low elements of operand 1, and put the N/2 results of size 2*S in the
++output vector (operand 0).
++
+ @cindex @code{mulhisi3} instruction pattern
+ @item @samp{mulhisi3}
+ Multiply operands 1 and 2, which have mode @code{HImode}, and store
+@@ -5891,6 +5944,23 @@
+ will be written using @code{zero_extract} rather than the equivalent
+ @code{and} or @code{sign_extract} operations.
+ 
++@cindex @code{mult}, canonicalization of
++@item
++@code{(sign_extend:@var{m1} (mult:@var{m2} (sign_extend:@var{m2} @var{x})
++(sign_extend:@var{m2} @var{y})))} is converted to @code{(mult:@var{m1}
++(sign_extend:@var{m1} @var{x}) (sign_extend:@var{m1} @var{y}))}, and likewise
++for @code{zero_extend}.
++
++@item
++@code{(sign_extend:@var{m1} (mult:@var{m2} (ashiftrt:@var{m2}
++@var{x} @var{s}) (sign_extend:@var{m2} @var{y})))} is converted
++to @code{(mult:@var{m1} (sign_extend:@var{m1} (ashiftrt:@var{m2}
++@var{x} @var{s})) (sign_extend:@var{m1} @var{y}))}, and likewise for
++patterns using @code{zero_extend} and @code{lshiftrt}.  If the second
++operand of @code{mult} is also a shift, then that is extended also.
++This transformation is only applied when it can be proven that the
++original operation had sufficient precision to prevent overflow.
++
+ @end itemize
+ 
+ Further canonicalization rules are defined in the function
+--- a/src/gcc/doc/tm.texi
++++ b/src/gcc/doc/tm.texi
+@@ -1118,6 +1118,14 @@
+ If the value of this macro has a type, it should be an unsigned type.
+ @end defmac
+ 
++@deftypefn {Target Hook} HOST_WIDE_INT TARGET_VECTOR_ALIGNMENT (const_tree @var{type})
++This hook can be used to define the alignment for a vector of type
++@var{type}, in order to comply with a platform ABI.  The default is to
++require natural alignment for vector types.  The alignment returned by
++this hook must be a power-of-two multiple of the default alignment of
++the vector element type.
++@end deftypefn
++
+ @defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
+ If defined, a C expression to compute the alignment for stack slot.
+ @var{type} is the data type, @var{mode} is the widest mode available,
+@@ -2533,7 +2541,7 @@
+ register, so @code{TARGET_PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when
+ @var{x} is a floating-point constant.  If the constant can't be loaded
+ into any kind of register, code generation will be better if
+-@code{LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
++@code{TARGET_LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
+ of using @code{TARGET_PREFERRED_RELOAD_CLASS}.
+ 
+ If an insn has pseudos in it after register allocation, reload will go
+@@ -2570,8 +2578,8 @@
+ register, so @code{PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when
+ @var{x} is a floating-point constant.  If the constant can't be loaded
+ into any kind of register, code generation will be better if
+-@code{LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
+-of using @code{PREFERRED_RELOAD_CLASS}.
++@code{TARGET_LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
++of using @code{TARGET_PREFERRED_RELOAD_CLASS}.
+ 
+ If an insn has pseudos in it after register allocation, reload will go
+ through the alternatives and call repeatedly @code{PREFERRED_RELOAD_CLASS}
+@@ -4319,6 +4327,34 @@
+ must have move patterns for this mode.
+ @end deftypefn
+ 
++@deftypefn {Target Hook} bool TARGET_ARRAY_MODE_SUPPORTED_P (enum machine_mode @var{mode}, unsigned HOST_WIDE_INT @var{nelems})
++Return true if GCC should try to use a scalar mode to store an array
++of @var{nelems} elements, given that each element has mode @var{mode}.
++Returning true here overrides the usual @code{MAX_FIXED_MODE} limit
++and allows GCC to use any defined integer mode.
++
++One use of this hook is to support vector load and store operations
++that operate on several homogeneous vectors.  For example, ARM NEON
++has operations like:
++
++@smallexample
++int8x8x3_t vld3_s8 (const int8_t *)
++@end smallexample
++
++where the return type is defined as:
++
++@smallexample
++typedef struct int8x8x3_t
++@{
++  int8x8_t val[3];
++@} int8x8x3_t;
++@end smallexample
++
++If this hook allows @code{val} to have a scalar mode, then
++@code{int8x8x3_t} can have the same mode.  GCC can then store
++@code{int8x8x3_t}s in registers rather than forcing them onto the stack.
++@end deftypefn
++
+ @deftypefn {Target Hook} bool TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P (enum machine_mode @var{mode})
+ Define this to return nonzero for machine modes for which the port has
+ small register classes.  If this target hook returns nonzero for a given
+@@ -5577,13 +5613,13 @@
+ @code{TARGET_MODE_DEPENDENT_ADDRESS_P} target hook.
+ @end defmac
+ 
+-@defmac LEGITIMATE_CONSTANT_P (@var{x})
+-A C expression that is nonzero if @var{x} is a legitimate constant for
+-an immediate operand on the target machine.  You can assume that
+-@var{x} satisfies @code{CONSTANT_P}, so you need not check this.  In fact,
+-@samp{1} is a suitable definition for this macro on machines where
+-anything @code{CONSTANT_P} is valid.
+-@end defmac
++@deftypefn {Target Hook} bool TARGET_LEGITIMATE_CONSTANT_P (enum machine_mode @var{mode}, rtx @var{x})
++This hook returns true if @var{x} is a legitimate constant for a
++@var{mode}-mode immediate operand on the target machine.  You can assume that
++@var{x} satisfies @code{CONSTANT_P}, so you need not check this.
++
++The default definition returns true.
++@end deftypefn
+ 
+ @deftypefn {Target Hook} rtx TARGET_DELEGITIMIZE_ADDRESS (rtx @var{x})
+ This hook is used to undo the possibly obfuscating effects of the
+--- a/src/gcc/doc/tm.texi.in
++++ b/src/gcc/doc/tm.texi.in
+@@ -1108,6 +1108,8 @@
+ If the value of this macro has a type, it should be an unsigned type.
+ @end defmac
+ 
++@hook TARGET_VECTOR_ALIGNMENT
++
+ @defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
+ If defined, a C expression to compute the alignment for stack slot.
+ @var{type} is the data type, @var{mode} is the widest mode available,
+@@ -2521,7 +2523,7 @@
+ register, so @code{TARGET_PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when
+ @var{x} is a floating-point constant.  If the constant can't be loaded
+ into any kind of register, code generation will be better if
+-@code{LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
++@code{TARGET_LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
+ of using @code{TARGET_PREFERRED_RELOAD_CLASS}.
+ 
+ If an insn has pseudos in it after register allocation, reload will go
+@@ -2558,8 +2560,8 @@
+ register, so @code{PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when
+ @var{x} is a floating-point constant.  If the constant can't be loaded
+ into any kind of register, code generation will be better if
+-@code{LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
+-of using @code{PREFERRED_RELOAD_CLASS}.
++@code{TARGET_LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
++of using @code{TARGET_PREFERRED_RELOAD_CLASS}.
+ 
+ If an insn has pseudos in it after register allocation, reload will go
+ through the alternatives and call repeatedly @code{PREFERRED_RELOAD_CLASS}
+@@ -4305,6 +4307,8 @@
+ must have move patterns for this mode.
+ @end deftypefn
+ 
++@hook TARGET_ARRAY_MODE_SUPPORTED_P
++
+ @hook TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P
+ Define this to return nonzero for machine modes for which the port has
+ small register classes.  If this target hook returns nonzero for a given
+@@ -5555,13 +5559,13 @@
+ @code{TARGET_MODE_DEPENDENT_ADDRESS_P} target hook.
+ @end defmac
+ 
+-@defmac LEGITIMATE_CONSTANT_P (@var{x})
+-A C expression that is nonzero if @var{x} is a legitimate constant for
+-an immediate operand on the target machine.  You can assume that
+-@var{x} satisfies @code{CONSTANT_P}, so you need not check this.  In fact,
+-@samp{1} is a suitable definition for this macro on machines where
+-anything @code{CONSTANT_P} is valid.
+-@end defmac
++@hook TARGET_LEGITIMATE_CONSTANT_P
++This hook returns true if @var{x} is a legitimate constant for a
++@var{mode}-mode immediate operand on the target machine.  You can assume that
++@var{x} satisfies @code{CONSTANT_P}, so you need not check this.
++
++The default definition returns true.
++@end deftypefn
+ 
+ @hook TARGET_DELEGITIMIZE_ADDRESS
+ This hook is used to undo the possibly obfuscating effects of the
--- gcc-4.6-4.6.3.orig/debian/patches/ada-s-osinte-gnu.adb.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-s-osinte-gnu.adb.diff
@@ -0,0 +1,113 @@
+--- /dev/null	2012-01-30 20:41:15.189616186 +0100
++++ b/src/gcc/ada/s-osinte-gnu.adb	2012-04-11 22:56:06.000000000 +0200
+@@ -0,0 +1,110 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
++--                                                                          --
++--                   S Y S T E M . O S _ I N T E R F A C E                  --
++--                                                                          --
++--                                   B o d y                                --
++--                                                                          --
++--             Copyright (C) 1991-1994, Florida State University            --
++--                     Copyright (C) 1995-2006, AdaCore                     --
++--                                                                          --
++-- GNARL is free software; you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
++-- sion. GNARL is distributed in the hope that it will be useful, but WITH- --
++-- OUT 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  distributed with GNARL; see file COPYING.  If not, write --
++-- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
++-- Boston, MA 02110-1301, USA.                                              --
++--                                                                          --
++-- As a special exception,  if other files  instantiate  generics from this --
++-- unit, or you link  this unit with other files  to produce an executable, --
++-- this  unit  does not  by itself cause  the resulting  executable  to  be --
++-- covered  by the  GNU  General  Public  License.  This exception does not --
++-- however invalidate  any other reasons why  the executable file  might be --
++-- covered by the  GNU Public License.                                      --
++--                                                                          --
++-- GNARL was developed by the GNARL team at Florida State University.       --
++-- Extensive contributions were provided by Ada Core Technologies, Inc.     --
++--                                                                          --
++------------------------------------------------------------------------------
++
++--  This is the GNU/Hurd version of this package.
++
++pragma Polling (Off);
++--  Turn off polling, we do not want ATC polling to take place during
++--  tasking operations. It causes infinite loops and other problems.
++
++--  This package encapsulates all direct interfaces to OS services
++--  that are needed by children of System.
++
++package body System.OS_Interface is
++
++   --------------------
++   -- Get_Stack_Base --
++   --------------------
++
++   function Get_Stack_Base (thread : pthread_t) return Address is
++      pragma Warnings (Off, thread);
++
++   begin
++      return Null_Address;
++   end Get_Stack_Base;
++
++   ------------------
++   -- pthread_init --
++   ------------------
++
++   procedure pthread_init is
++   begin
++      null;
++   end pthread_init;
++
++   -----------------
++   -- To_Duration --
++   -----------------
++
++   function To_Duration (TS : timespec) return Duration is
++   begin
++      return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
++   end To_Duration;
++
++   ------------------------
++   -- To_Target_Priority --
++   ------------------------
++
++   function To_Target_Priority
++     (Prio : System.Any_Priority) return Interfaces.C.int
++   is
++   begin
++      return Interfaces.C.int (Prio);
++   end To_Target_Priority;
++
++   -----------------
++   -- To_Timespec --
++   -----------------
++
++   function To_Timespec (D : Duration) return timespec is
++      S : time_t;
++      F : Duration;
++
++   begin
++      S := time_t (Long_Long_Integer (D));
++      F := D - Duration (S);
++
++      --  If F has negative value due to a round-up, adjust for positive F
++      --  value.
++
++      if F < 0.0 then
++         S := S - 1;
++         F := F + 1.0;
++      end if;
++
++      return timespec'(tv_sec => S,
++                       tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
++   end To_Timespec;
++
++end System.OS_Interface;
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-armel-unwind.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-armel-unwind.diff
@@ -0,0 +1,19 @@
+# DP: On armel, apply kludge to fix unwinder infinitely looping 'til it runs out
+# DP: of memory (http://gcc.gnu.org/ml/java/2008-06/msg00010.html).
+
+---
+ libjava/stacktrace.cc |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+--- a/src/libjava/stacktrace.cc
++++ b/src/libjava/stacktrace.cc
+@@ -115,6 +115,9 @@ _Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr)
+   // Check if the trace buffer needs to be extended.
+   if (pos == state->length)
+     {
++      // http://gcc.gnu.org/ml/java/2008-06/msg00010.html
++      return _URC_END_OF_STACK;
++
+       int newLength = state->length * 2;
+       void *newFrames = _Jv_AllocBytes (newLength * sizeof(_Jv_StackFrame));
+       memcpy (newFrames, state->frames, state->length * sizeof(_Jv_StackFrame));      
--- gcc-4.6-4.6.3.orig/debian/patches/sh4-multilib.diff
+++ gcc-4.6-4.6.3/debian/patches/sh4-multilib.diff
@@ -0,0 +1,23 @@
+# DP: Fix multilib (m4/m4-nofpu) for sh4-linux
+
+---
+ gcc/config.gcc |    5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -2119,11 +2119,12 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
+ 	if test x${sh_multilibs} = x ; then
+ 		case ${target} in
+ 		sh64-superh-linux* | \
+-		sh[1234]*)	sh_multilibs=${sh_cpu_target} ;;
+ 		sh64* | sh5*)	sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;;
+-		sh-superh-*)	sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
++		sh-superh-* | \
++		sh4-*-linux*)	sh_multilibs=m4,m4-nofpu ;;
+ 		sh*-*-linux*)	sh_multilibs=m1,m3e,m4 ;;
+ 		sh*-*-netbsd*)	sh_multilibs=m3,m3e,m4 ;;
++		sh-superh-*)	sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
+ 		*) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
+ 		esac
+ 		if test x$with_fp = xno; then
--- gcc-4.6-4.6.3.orig/debian/patches/ibm-branch.diff
+++ gcc-4.6-4.6.3/debian/patches/ibm-branch.diff
@@ -0,0 +1,2525 @@
+# DP: updates from the ibm/4.6 branch upto 20110707 (r175989).
+
+svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@175885 svn://gcc.gnu.org/svn/gcc/branches/ibm/gcc-4_6-branch \
+	| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
+	| awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
+
+Index: gcc/testsuite/gcc.target/powerpc/pr48053-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr48053-3.c	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr48053-3.c	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,41 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_vsx_ok } */
++/* { dg-options "-O3 -mcpu=power7" } */
++
++/* Cut down example from s_scalbnl that aborted on 32-bit when the fix for
++   48053 went in to allow creating DImode 0's in VSX registers.  */
++
++typedef union
++{
++  long double value;
++  struct
++  {
++    unsigned long long msw;
++    unsigned long long lsw;
++  } parts64;
++  struct
++  {
++    unsigned int w0, w1, w2, w3;
++  } parts32;
++} ieee854_long_double_shape_type;
++
++static const long double twolm54 = 5.55111512312578270212e-17;
++
++long double foo (long double x, int n)
++{
++  long long k, hx, lx;
++  ieee854_long_double_shape_type qw_u;
++
++  qw_u.value = x;
++  hx = qw_u.parts64.msw;
++  lx = qw_u.parts64.lsw;
++
++  k = ((hx >> 52) & 0x7ff) + n + 54;
++
++  qw_u.parts64.msw = ((hx & 0x800fffffffffffffULL) | (k << 52));
++  qw_u.parts64.lsw = lx;
++  x = qw_u.value;
++
++  return x*twolm54;
++}
+Index: gcc/testsuite/gcc.target/powerpc/no-r11-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/no-r11-1.c	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/gcc.target/powerpc/no-r11-1.c	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,11 @@
++/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
++/* { dg-skip-if "" { *-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O2 -mno-r11" } */
++
++int
++call_ptr (int (func) (void))
++{
++  return func () + 1;
++}
++
++/* { dg-final { scan-assembler-not "ld 11,16(3)" } } */
+Index: gcc/testsuite/gcc.target/powerpc/no-r11-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/no-r11-2.c	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/gcc.target/powerpc/no-r11-2.c	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,11 @@
++/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
++/* { dg-skip-if "" { *-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O2 -mr11" } */
++
++int
++call_ptr (int (func) (void))
++{
++  return func () + 1;
++}
++
++/* { dg-final { scan-assembler "ld 11,16" } } */
+Index: gcc/testsuite/gcc.target/powerpc/no-r11-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/no-r11-3.c	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/gcc.target/powerpc/no-r11-3.c	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,20 @@
++/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
++/* { dg-skip-if "" { *-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O2 -mno-r11" } */
++
++extern void ext_call (int (func) (void));
++
++int
++outer_func (int init)	/* { dg-error "-mno-r11 must not be used if you have trampolines" "" } */
++{
++  int value = init;
++
++  int inner (void)
++  {
++    return ++value;
++  }
++
++  ext_call (inner);
++  return value;
++}
++
+Index: gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,26 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O2 --param case-values-threshold=2" } */
++/* { dg-final { scan-assembler "mtctr" } } */
++/* { dg-final { scan-assembler "bctr" } } */
++
++/* Force using a dispatch table even though by default we would generate
++   ifs.  */
++
++extern long call (long);
++
++long
++test_switch (long a, long b)
++{
++  long c;
++
++  switch (a)
++    {
++    case 0:  c = -b;	break;
++    case 1:  c = ~b;	break;
++    case 2:  c = b+1;	break;
++    default: c = b & 9;	break;
++    }
++
++  return call (c) + 1;
++}
+Index: gcc/testsuite/gcc.target/powerpc/ppc-switch-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/ppc-switch-2.c	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/gcc.target/powerpc/ppc-switch-2.c	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,32 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-options "-O2 --param case-values-threshold=20" } */
++/* { dg-final { scan-assembler-not "mtctr" } } */
++/* { dg-final { scan-assembler-not "bctr" } } */
++
++/* Force using if tests, instead of a dispatch table.  */
++
++extern long call (long);
++
++long
++test_switch (long a, long b)
++{
++  long c;
++
++  switch (a)
++    {
++    case 0:  c = -b;	break;
++    case 1:  c = ~b;	break;
++    case 2:  c = b+1;	break;
++    case 3:  c = b-2;	break;
++    case 4:  c = b*3;	break;
++    case 5:  c = b/4;	break;
++    case 6:  c = b<<5;	break;
++    case 7:  c = b>>6;	break;
++    case 8:  c = b|7;	break;
++    case 9:  c = b^8;	break;
++    default: c = b&9;	break;
++    }
++
++  return call (c) + 1;
++}
+Index: gcc/testsuite/gcc.target/powerpc/pr48258-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr48258-1.c	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr48258-1.c	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,57 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_vsx_ok } */
++/* { dg-options "-O3 -mcpu=power7 -mabi=altivec -ffast-math -fno-unroll-loops" } */
++/* { dg-final { scan-assembler-times "xvaddsp" 3 } } */
++/* { dg-final { scan-assembler-times "xvminsp" 3 } } */
++/* { dg-final { scan-assembler-times "xvmaxsp" 3 } } */
++/* { dg-final { scan-assembler-times "xxsldwi" 6 } } */
++/* { dg-final { scan-assembler-times "xscvspdp" 3 } } */
++/* { dg-final { scan-assembler-not "stvewx" } } */
++/* { dg-final { scan-assembler-not "stvx" } } */
++/* { dg-final { scan-assembler-not "stxvd2x" } } */
++/* { dg-final { scan-assembler-not "stxvw4x" } } */
++
++#include <stddef.h>
++
++#ifndef SIZE
++#define SIZE 1024
++#endif
++
++float values[SIZE] __attribute__((__aligned__(32)));
++
++float
++vector_sum (void)
++{
++  size_t i;
++  float sum = 0.0f;
++
++  for (i = 0; i < SIZE; i++)
++    sum += values[i];
++
++  return sum;
++}
++
++float
++vector_min (void)
++{
++  size_t i;
++  float min = values[0];
++
++  for (i = 0; i < SIZE; i++)
++    min = __builtin_fminf (min, values[i]);
++
++  return min;
++}
++
++float
++vector_max (void)
++{
++  size_t i;
++  float max = values[0];
++
++  for (i = 0; i < SIZE; i++)
++    max = __builtin_fmaxf (max, values[i]);
++
++  return max;
++}
+Index: gcc/testsuite/gcc.target/powerpc/pr48258-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr48258-2.c	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr48258-2.c	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,58 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_vsx_ok } */
++/* { dg-options "-O3 -mcpu=power7 -mabi=altivec -ffast-math -fno-unroll-loops" } */
++/* { dg-final { scan-assembler-times "xvadddp" 1 } } */
++/* { dg-final { scan-assembler-times "xvmindp" 1 } } */
++/* { dg-final { scan-assembler-times "xvmaxdp" 1 } } */
++/* { dg-final { scan-assembler-times "xsadddp" 1 } } */
++/* { dg-final { scan-assembler-times "xsmindp" 1 } } */
++/* { dg-final { scan-assembler-times "xsmaxdp" 1 } } */
++/* { dg-final { scan-assembler-not "xxsldwi" } } */
++/* { dg-final { scan-assembler-not "stvx" } } */
++/* { dg-final { scan-assembler-not "stxvd2x" } } */
++/* { dg-final { scan-assembler-not "stxvw4x" } } */
++
++#include <stddef.h>
++
++#ifndef SIZE
++#define SIZE 1024
++#endif
++
++double values[SIZE] __attribute__((__aligned__(32)));
++
++double
++vector_sum (void)
++{
++  size_t i;
++  double sum = 0.0;
++
++  for (i = 0; i < SIZE; i++)
++    sum += values[i];
++
++  return sum;
++}
++
++double
++vector_min (void)
++{
++  size_t i;
++  double min = values[0];
++
++  for (i = 0; i < SIZE; i++)
++    min = __builtin_fmin (min, values[i]);
++
++  return min;
++}
++
++double
++vector_max (void)
++{
++  size_t i;
++  double max = values[0];
++
++  for (i = 0; i < SIZE; i++)
++    max = __builtin_fmax (max, values[i]);
++
++  return max;
++}
+Index: gcc/testsuite/ChangeLog.ibm
+===================================================================
+--- a/src/gcc/testsuite/ChangeLog.ibm	(.../gcc-4_6-branch)
++++ b/src/gcc/testsuite/ChangeLog.ibm	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,37 @@
++2011-07-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2011-07-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	* gcc.target/powerpc/no-r11-1.c: New test for -mr11, -mno-r11.
++	* gcc.target/powerpc/no-r11-2.c: Ditto.
++	* gcc.target/powerpc/no-r11-3.c: Ditto.
++
++2011-07-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 175885.
++
++	Backport from mainline
++	2011-07-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	* gcc.target/powerpc/ppc-switch-1.c: New test for
++	--param case-values-threshold.
++	* gcc.target/powerpc/ppc-switch-2.c: Ditto.
++
++2011-04-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 173137.
++
++2011-04-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2011-03-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/48258
++	* gcc.target/powerpc/pr48258-1.c: New file.
++	* gcc.target/powerpc/pr48258-2.c: Ditto.
++
++2011-03-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Branch from gcc-4_6-branch, subversion id 171614.
++
+Index: gcc/ChangeLog.ibm
+===================================================================
+--- a/src/gcc/ChangeLog.ibm	(.../gcc-4_6-branch)
++++ b/src/gcc/ChangeLog.ibm	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,248 @@
++2011-07-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2011-07-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	* config/rs6000/rs6000-protos.h (rs6000_call_indirect_aix): New
++	declaration.
++	(rs6000_save_toc_in_prologue_p): Ditto.
++
++	* config/rs6000/rs6000.opt (-mr11): New switch to disable loading
++	up the static chain (r11) during indirect function calls.
++	(-msave-toc-indirect): New undocumented debug switch.
++
++	* config/rs6000/rs6000.c (struct machine_function): Add
++	save_toc_in_prologue field to note whether the prologue needs to
++	save the TOC value in the reserved stack location.
++	(rs6000_emit_prologue): Use TOC_REGNUM instead of 2.  If we need
++	to save the TOC in the prologue, do so.
++	(rs6000_trampoline_init): Don't allow creating AIX style
++	trampolines if -mno-r11 is in effect.
++	(rs6000_call_indirect_aix): New function to create AIX style
++	indirect calls, adding support for -mno-r11 to suppress loading
++	the static chain, and saving the TOC in the prologue instead of
++	the call body.
++	(rs6000_save_toc_in_prologue_p): Return true if we are saving the
++	TOC in the prologue.
++
++	* config/rs6000/rs6000.md (STACK_POINTER_REGNUM): Add more fixed
++	register numbers.
++	(TOC_REGNUM): Ditto.
++	(STATIC_CHAIN_REGNUM): Ditto.
++	(ARG_POINTER_REGNUM): Ditto.
++	(SFP_REGNO): Delete, unused.
++	(TOC_SAVE_OFFSET_32BIT): Add constants for AIX TOC save and
++	function descriptor offsets.
++	(TOC_SAVE_OFFSET_64BIT): Ditto.
++	(AIX_FUNC_DESC_TOC_32BIT): Ditto.
++	(AIX_FUNC_DESC_TOC_64BIT): Ditto.
++	(AIX_FUNC_DESC_SC_32BIT): Ditto.
++	(AIX_FUNC_DESC_SC_64BIT): Ditto.
++	(ptrload): New mode attribute for the appropriate load of a
++	pointer.
++	(call_indirect_aix32): Delete, rewrite AIX indirect function
++	calls.
++	(call_indirect_aix64): Ditto.
++	(call_value_indirect_aix32): Ditto.
++	(call_value_indirect_aix64): Ditto.
++	(call_indirect_nonlocal_aix32_internal): Ditto.
++	(call_indirect_nonlocal_aix32): Ditto.
++	(call_indirect_nonlocal_aix64_internal): Ditto.
++	(call_indirect_nonlocal_aix64): Ditto.
++	(call): Rewrite AIX indirect function calls.  Add support for
++	eliminating the static chain, and for moving the save of the TOC
++	to the function prologue.
++	(call_value): Ditto.
++	(call_indirect_aix<ptrsize>): Ditto.
++	(call_indirect_aix<ptrsize>_internal): Ditto.
++	(call_indirect_aix<ptrsize>_internal2): Ditto.
++	(call_indirect_aix<ptrsize>_nor11): Ditto.
++	(call_value_indirect_aix<ptrsize>): Ditto.
++	(call_value_indirect_aix<ptrsize>_internal): Ditto.
++	(call_value_indirect_aix<ptrsize>_internal2): Ditto.
++	(call_value_indirect_aix<ptrsize>_nor11): Ditto.
++	(call_nonlocal_aix32): Relocate in the rs6000.md file.
++	(call_nonlocal_aix64): Ditto.
++
++	* doc/invoke.texi (RS/6000 and PowerPC Options): Add -mr11 and
++	-mno-r11 documentation.
++
++2011-07-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 175885.
++	* REVISION: Update subversion id.
++
++	Backport from the mainline:
++	2011-07-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	* params.def (PARAM_CASE_VALUES_THRESHOLD): New parameter to
++	override CASE_VALUES_THRESHOLD.
++
++	* stmt.c (toplevel): Include params.h.
++	(case_values_threshold): Use the --param case-values-threshold
++	value if non-zero, otherwise use machine dependent value.
++	(expand_case): Use case_values_threshold.
++
++	* Makefile.in (stmt.o): Add $(PARAMS_H) dependency.
++
++	* doc/invoke.texi (--param case-values-threshold): Document.
++
++2011-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 175762.
++	* REVISION: Update subversion id.
++
++2011-06-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 174573.
++	* REVISION: Update subversion id.
++
++2011-06-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 174572.
++	* REVISION: Update subversion id.
++
++2011-05-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 174363.
++	* REVISION: Update subversion id.
++
++2011-05-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 174299.
++	* REVISION: Update subversion id.
++
++2011-05-19  Peter Bergner  <bergner@vnet.ibm.com>
++
++	* config/rs6000/t-linux64 (MULTILIB_OPTIONS): Remove soft-float support.
++	(MULTILIB_DIRNAMES): Likewise.
++	(MULTILIB_EXCEPTIONS): Likewise.
++	(MULTILIB_EXCLUSIONS): Likewise.
++	(MULTILIB_OSDIRNAMES): Likewise.
++	(MULTILIB_MATCHES): Likewise.
++
++2011-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 173634 (fix PR 48857).
++	* REVISION: Update subversion id.
++
++2011-04-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 173137.
++	* REVISION: Update subversion id.
++
++	Backport from mainline
++	2011-03-26  Alan Modra  <amodra@gmail.com>
++
++	* config/rs6000/predicates.md (word_offset_memref_op): Handle
++	cmodel medium addresses.
++	* config/rs6000/rs6000.c (rs6000_secondary_reload): Handle misaligned
++	64-bit gpr loads and stores.
++	(rs6000_secondary_reload_ppc64): New function.
++	* config/rs6000/rs6000-protos.h: Declare it.
++	* config/rs6000/rs6000.md (reload_di_store, reload_di_load): New.
++
++2011-04-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 173048.
++	* REVISION: Update subversion id.
++
++2011-04-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2011-04-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/48258
++	* config/rs6000/vector.md (UNSPEC_REDUC): New unspec for vector
++	reduction.
++	(VEC_reduc): New code iterator and splitters for vector reduction.
++	(VEC_reduc_name): Ditto.
++	(VEC_reduc_rtx): Ditto.
++	(reduc_<VEC_reduc_name>_v2df): Vector reduction expanders for VSX.
++	(reduc_<VEC_reduc_name>_v4sf): Ditto.
++
++	* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add
++	support for extracting SF on VSX.
++
++	* config/rs6000/vsx.md (vsx_xscvspdp_scalar2): New insn for
++	generating xscvspdp.
++	(vsx_extract_v4sf): New insn to extract SF from V4SF vector.
++	(vsx_reduc_<VEC_reduc_name>_v2df): New insns and splitters for
++	double add, minimum, maximum vector reduction.
++	(vsx_reduc_<VEC_reduc_name>_v4sf): Ditto.
++	(vsx_reduc_<VEC_reduc_name>_v2df2_scalar): New combiner insn to
++	optimize double vector reduction.
++	(vsx_reduc_<VEC_reduc_name>_v4sf_scalar): Ditto.
++
++2011-04-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 172725.
++	* REVISION: Update subversion id.
++
++2011-04-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 172515.
++	* REVISION: Update subversion id.
++
++2011-04-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 172266.
++	* REVISION: Update subversion id.
++
++2011-04-08  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 172195.
++	* REVISION: Update subversion id.
++
++2011-04-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 172055.
++	* REVISION: Update subversion id.
++
++2011-03-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 171704.
++	* REVISION: Update subersion id.
++
++2011-03-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Backport from mainline
++	2011-03-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	* config/rs6000/rs6000.md (UNSPEC_*, UNSPECV_*): Redefine all
++	UNSPEC constants to be in the unspec enumeration, and redefine
++	all UNSPECV constants to be in the unspecv enumeration, so that
++	dumps print which unspec/unspec_volatile this is.
++	* config/rs6000/vector.md (UNSPEC_*): Ditto.
++	* config/rs6000/paired.md (UNSPEC_*): Ditto.
++	* config/rs6000/vsx.md (UNSPEC_*): Ditto.
++	* config/rs6000/altivec.md (UNSPEC_*, UNSPECV_*): Ditto.
++	* config/rs6000/dfp.md (UNSPEC_*): Ditto.
++
++	* config/rs6000/rs6000.md (UNSPECV_ISYNC, UNSPECV_LWSYNC): Rename
++	UNSPEC_ISYNC and UNSPEC_HWSYNC to UNSPECV_ISYNC and
++	UNSPECV_LWSYNC, since these are used as unspec_volatile.
++	* config/rs6000/sync.md (isync, lwsync): Ditto.
++
++	Backport from mainline
++	2011-03-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	PR target/48226
++	* config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If we see a
++	vector when peeking at the next token for vector, don't expand the
++	keywords.
++
++	Backport from mainline
++	2011-03-16  Alan Modra  <amodra@gmail.com>
++
++	PR target/45844
++	* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Don't
++	create invalid offset address for vsx splat insn.
++	* config/rs6000/predicates.md (splat_input_operand): New.
++	* config/rs6000/vsx.md (vsx_splat_*): Use it.
++
++2011-03-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Branch from gcc-4_6-branch, subversion id 171614.
++	* REVISION: New file.
++
+Index: gcc/REVISION
+===================================================================
+--- a/src/gcc/REVISION	(.../gcc-4_6-branch)
++++ b/src/gcc/REVISION	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1 @@
++Advance Toolchain 5.xx [merged from gcc-4_6-branch, 175885]
+Index: gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in	(.../gcc-4_6-branch)
++++ b/src/gcc/Makefile.in	(.../ibm/gcc-4_6-branch)
+@@ -2876,7 +2876,7 @@
+    $(LIBFUNCS_H) $(EXCEPT_H) $(RECOG_H) $(DIAGNOSTIC_CORE_H) \
+    output.h $(GGC_H) $(TM_P_H) langhooks.h $(PREDICT_H) $(OPTABS_H) \
+    $(TARGET_H) $(GIMPLE_H) $(MACHMODE_H) $(REGS_H) alloc-pool.h \
+-   $(PRETTY_PRINT_H) $(BITMAP_H)
++   $(PRETTY_PRINT_H) $(BITMAP_H) $(PARAMS_H)
+ except.o : except.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
+    $(TREE_H) $(FLAGS_H) $(EXCEPT_H) $(FUNCTION_H) $(EXPR_H) $(LIBFUNCS_H) \
+    langhooks.h insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \
+Index: gcc/config/rs6000/vector.md
+===================================================================
+--- a/src/gcc/config/rs6000/vector.md	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/vector.md	(.../ibm/gcc-4_6-branch)
+@@ -74,9 +74,20 @@
+ 			   (V2DF  "V2DI")])
+ 
+ ;; constants for unspec
+-(define_constants
+-  [(UNSPEC_PREDICATE	400)])
++(define_c_enum "unspec" [UNSPEC_PREDICATE
++			 UNSPEC_REDUC])
+ 
++;; Vector reduction code iterators
++(define_code_iterator VEC_reduc [plus smin smax])
++
++(define_code_attr VEC_reduc_name [(plus "splus")
++				  (smin "smin")
++				  (smax "smax")])
++
++(define_code_attr VEC_reduc_rtx [(plus "add")
++				 (smin "smin")
++				 (smax "smax")])
++
+ 
+ ;; Vector move instructions.
+ (define_expand "mov<mode>"
+@@ -992,6 +1003,41 @@
+   "TARGET_ALTIVEC"
+   "")
+ 
++;; Vector reduction expanders for VSX
++
++(define_expand "reduc_<VEC_reduc_name>_v2df"
++  [(parallel [(set (match_operand:V2DF 0 "vfloat_operand" "")
++		   (VEC_reduc:V2DF
++		    (vec_concat:V2DF
++		     (vec_select:DF
++		      (match_operand:V2DF 1 "vfloat_operand" "")
++		      (parallel [(const_int 1)]))
++		     (vec_select:DF
++		      (match_dup 1)
++		      (parallel [(const_int 0)])))
++		    (match_dup 1)))
++	      (clobber (match_scratch:V2DF 2 ""))])]
++  "VECTOR_UNIT_VSX_P (V2DFmode)"
++  "")
++
++; The (VEC_reduc:V4SF
++;	(op1)
++;	(unspec:V4SF [(const_int 0)] UNSPEC_REDUC))
++;
++; is to allow us to use a code iterator, but not completely list all of the
++; vector rotates, etc. to prevent canonicalization
++
++(define_expand "reduc_<VEC_reduc_name>_v4sf"
++  [(parallel [(set (match_operand:V4SF 0 "vfloat_operand" "")
++		   (VEC_reduc:V4SF
++		    (unspec:V4SF [(const_int 0)] UNSPEC_REDUC)
++		    (match_operand:V4SF 1 "vfloat_operand" "")))
++	      (clobber (match_scratch:V4SF 2 ""))
++	      (clobber (match_scratch:V4SF 3 ""))])]
++  "VECTOR_UNIT_VSX_P (V4SFmode)"
++  "")
++
++
+ ;;; Expanders for vector insn patterns shared between the SPE and TARGET_PAIRED systems.
+ 
+ (define_expand "absv2sf2"
+Index: gcc/config/rs6000/predicates.md
+===================================================================
+--- a/src/gcc/config/rs6000/predicates.md	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/predicates.md	(.../ibm/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ ;; Predicate definitions for POWER and PowerPC.
+-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
++;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ ;; Free Software Foundation, Inc.
+ ;;
+ ;; This file is part of GCC.
+@@ -435,9 +435,12 @@
+     op = XEXP (op, 0);
+   else if (GET_CODE (op) == PRE_MODIFY)
+     op = XEXP (op, 1);
++  else if (GET_CODE (op) == LO_SUM
++	   && GET_CODE (XEXP (op, 0)) == REG
++	   && GET_CODE (XEXP (op, 1)) == CONST)
++    op = XEXP (XEXP (op, 1), 0);
+ 
+   return (GET_CODE (op) != PLUS
+-	  || ! REG_P (XEXP (op, 0))
+ 	  || GET_CODE (XEXP (op, 1)) != CONST_INT
+ 	  || INTVAL (XEXP (op, 1)) % 4 == 0);
+ })
+@@ -871,6 +874,23 @@
+   return 0;
+ })
+ 
++;; Return 1 if this operand is a valid input for a vsx_splat insn.
++(define_predicate "splat_input_operand"
++  (match_code "label_ref,symbol_ref,const,high,reg,subreg,mem,
++	       const_double,const_vector,const_int,plus")
++{
++  if (MEM_P (op))
++    {
++      if (mode == DFmode)
++	mode = V2DFmode;
++      else if (mode == DImode)
++	mode = V2DImode;
++      else
++	gcc_unreachable ();        
++    }
++  return input_operand (op, mode);
++})
++
+ ;; Return true if OP is an invalid SUBREG operation on the e500.
+ (define_predicate "rs6000_nonimmediate_operand"
+   (match_code "reg,subreg,mem")
+Index: gcc/config/rs6000/paired.md
+===================================================================
+--- a/src/gcc/config/rs6000/paired.md	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/paired.md	(.../ibm/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ ;; PowerPC paired single and double hummer description
+-;; Copyright (C) 2007, 2009, 2010
++;; Copyright (C) 2007, 2009, 2010, 2011
+ ;; Free Software Foundation, Inc.
+ ;; Contributed by David Edelsohn <edelsohn@gnu.org> and Revital Eres
+ ;; <eres@il.ibm.com>
+@@ -20,12 +20,12 @@
+ ;; along with this program; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ 
+-(define_constants
+-[(UNSPEC_INTERHI_V2SF     330)
+- (UNSPEC_INTERLO_V2SF     331)
+- (UNSPEC_EXTEVEN_V2SF     332)
+- (UNSPEC_EXTODD_V2SF      333)
+-])
++(define_c_enum "unspec"
++  [UNSPEC_INTERHI_V2SF
++   UNSPEC_INTERLO_V2SF
++   UNSPEC_EXTEVEN_V2SF
++   UNSPEC_EXTODD_V2SF
++  ])
+ 
+ (define_insn "paired_negv2sf2"
+   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
+Index: gcc/config/rs6000/rs6000-protos.h
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000-protos.h	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/rs6000-protos.h	(.../ibm/gcc-4_6-branch)
+@@ -79,6 +79,7 @@
+ 						    enum machine_mode,
+ 						    enum reg_class);
+ extern void rs6000_secondary_reload_inner (rtx, rtx, rtx, bool);
++extern void rs6000_secondary_reload_ppc64 (rtx, rtx, rtx, bool);
+ extern int paired_emit_vector_cond_expr (rtx, rtx, rtx,
+                                          rtx, rtx, rtx);
+ extern void paired_expand_vector_move (rtx operands[]);
+@@ -170,6 +171,8 @@
+ extern void rs6000_emit_epilogue (int);
+ extern void rs6000_emit_eh_reg_restore (rtx, rtx);
+ extern const char * output_isel (rtx *);
++extern void rs6000_call_indirect_aix (rtx, rtx, rtx);
++extern bool rs6000_save_toc_in_prologue_p (void);
+ extern bool rs6000_tls_referenced_p (rtx);
+ 
+ extern void rs6000_aix_asm_output_dwarf_table_ref (char *);
+Index: gcc/config/rs6000/rs6000.opt
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.opt	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/rs6000.opt	(.../ibm/gcc-4_6-branch)
+@@ -461,4 +461,10 @@
+ Target Var(rs6000_xilinx_fpu) Save
+ Specify Xilinx FPU.
+ 
++mr11
++Target Report Var(TARGET_R11) Init(1) Save
++Use/do not use r11 to hold the static link in calls.
+ 
++msave-toc-indirect
++Target Undocumented Var(TARGET_SAVE_TOC_INDIRECT) Save Init(1)
++; Control whether we save the TOC in the prologue for indirect calls or generate the save inline
+Index: gcc/config/rs6000/rs6000.c
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.c	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/rs6000.c	(.../ibm/gcc-4_6-branch)
+@@ -128,6 +128,9 @@
+   int ra_need_lr;
+   /* Cache lr_save_p after expansion of builtin_eh_return.  */
+   int lr_save_state;
++  /* Whether we need to save the TOC to the reserved stack location in the
++     function prologue.  */
++  bool save_toc_in_prologue;
+   /* Offset from virtual_stack_vars_rtx to the start of the ABI_V4
+      varargs save area.  */
+   HOST_WIDE_INT varargs_save_offset;
+@@ -5488,12 +5491,22 @@
+   enum machine_mode inner_mode = GET_MODE_INNER (mode);
+   rtx mem;
+ 
+-  if (VECTOR_MEM_VSX_P (mode) && (mode == V2DFmode || mode == V2DImode))
++  if (VECTOR_MEM_VSX_P (mode))
+     {
+-      rtx (*extract_func) (rtx, rtx, rtx)
+-	= ((mode == V2DFmode) ? gen_vsx_extract_v2df : gen_vsx_extract_v2di);
+-      emit_insn (extract_func (target, vec, GEN_INT (elt)));
+-      return;
++      switch (mode)
++	{
++	default:
++	  break;
++	case V2DFmode:
++	  emit_insn (gen_vsx_extract_v2df (target, vec, GEN_INT (elt)));
++	  return;
++	case V2DImode:
++	  emit_insn (gen_vsx_extract_v2di (target, vec, GEN_INT (elt)));
++	  return;
++	case V4SFmode:
++	  emit_insn (gen_vsx_extract_v4sf (target, vec, GEN_INT (elt)));
++	  return;
++	}
+     }
+ 
+   /* Allocate mode-sized buffer.  */
+@@ -6694,6 +6707,14 @@
+ {
+   bool reg_offset_p = reg_offset_addressing_ok_p (mode);
+ 
++  /* Nasty hack for vsx_splat_V2DF/V2DI load from mem, which takes a
++     DFmode/DImode MEM.  */
++  if (reg_offset_p
++      && opnum == 1
++      && ((mode == DFmode && recog_data.operand_mode[0] == V2DFmode)
++	  || (mode == DImode && recog_data.operand_mode[0] == V2DImode)))
++    reg_offset_p = false;
++
+   /* We must recognize output that we have already generated ourselves.  */
+   if (GET_CODE (x) == PLUS
+       && GET_CODE (XEXP (x, 0)) == PLUS
+@@ -14811,8 +14832,11 @@
+    needed for the immediate register.
+ 
+    For VSX and Altivec, we may need a register to convert sp+offset into
+-   reg+sp.  */
++   reg+sp.
+ 
++   For misaligned 64-bit gpr loads and stores we need a register to
++   convert an offset address to indirect.  */
++
+ static reg_class_t
+ rs6000_secondary_reload (bool in_p,
+ 			 rtx x,
+@@ -14914,6 +14938,34 @@
+       else
+ 	default_p = true;
+     }
++  else if (TARGET_POWERPC64
++	   && rs6000_reload_register_type (rclass) == GPR_REGISTER_TYPE
++	   && MEM_P (x)
++	   && GET_MODE_SIZE (GET_MODE (x)) >= UNITS_PER_WORD)
++    {
++      rtx addr = XEXP (x, 0);
++
++      if (GET_CODE (addr) == PRE_MODIFY)
++	addr = XEXP (addr, 1);
++      else if (GET_CODE (addr) == LO_SUM
++	       && GET_CODE (XEXP (addr, 0)) == REG
++	       && GET_CODE (XEXP (addr, 1)) == CONST)
++	addr = XEXP (XEXP (addr, 1), 0);
++
++      if (GET_CODE (addr) == PLUS
++	  && GET_CODE (XEXP (addr, 1)) == CONST_INT
++	  && (INTVAL (XEXP (addr, 1)) & 3) != 0)
++	{
++	  if (in_p)
++	    sri->icode = CODE_FOR_reload_di_load;
++	  else
++	    sri->icode = CODE_FOR_reload_di_store;
++	  sri->extra_cost = 2;
++	  ret = NO_REGS;
++	}
++      else
++	default_p = true;
++    }
+   else
+     default_p = true;
+ 
+@@ -15202,6 +15254,56 @@
+   return;
+ }
+ 
++/* Convert reloads involving 64-bit gprs and misaligned offset
++   addressing to use indirect addressing.  */
++
++void
++rs6000_secondary_reload_ppc64 (rtx reg, rtx mem, rtx scratch, bool store_p)
++{
++  int regno = true_regnum (reg);
++  enum reg_class rclass;
++  rtx addr;
++  rtx scratch_or_premodify = scratch;
++
++  if (TARGET_DEBUG_ADDR)
++    {
++      fprintf (stderr, "\nrs6000_secondary_reload_ppc64, type = %s\n",
++	       store_p ? "store" : "load");
++      fprintf (stderr, "reg:\n");
++      debug_rtx (reg);
++      fprintf (stderr, "mem:\n");
++      debug_rtx (mem);
++      fprintf (stderr, "scratch:\n");
++      debug_rtx (scratch);
++    }
++
++  gcc_assert (regno >= 0 && regno < FIRST_PSEUDO_REGISTER);
++  gcc_assert (GET_CODE (mem) == MEM);
++  rclass = REGNO_REG_CLASS (regno);
++  gcc_assert (rclass == GENERAL_REGS || rclass == BASE_REGS);
++  addr = XEXP (mem, 0);
++
++  if (GET_CODE (addr) == PRE_MODIFY)
++    {
++      scratch_or_premodify = XEXP (addr, 0);
++      gcc_assert (REG_P (scratch_or_premodify));
++      addr = XEXP (addr, 1);
++    }
++  gcc_assert (GET_CODE (addr) == PLUS || GET_CODE (addr) == LO_SUM);
++
++  rs6000_emit_move (scratch_or_premodify, addr, Pmode);
++
++  mem = replace_equiv_address_nv (mem, scratch_or_premodify);
++
++  /* Now create the move.  */
++  if (store_p)
++    emit_insn (gen_rtx_SET (VOIDmode, mem, reg));
++  else
++    emit_insn (gen_rtx_SET (VOIDmode, reg, mem));
++
++  return;
++}
++
+ /* Target hook to return the cover classes for Integrated Register Allocator.
+    Cover classes is a set of non-intersected register classes covering all hard
+    registers used for register allocation purpose.  Any move between two
+@@ -20859,7 +20961,7 @@
+       JUMP_LABEL (jump) = toc_save_done;
+       LABEL_NUSES (toc_save_done) += 1;
+ 
+-      emit_frame_save (frame_reg_rtx, frame_ptr_rtx, reg_mode, 2,
++      emit_frame_save (frame_reg_rtx, frame_ptr_rtx, reg_mode, TOC_REGNUM,
+ 		       sp_offset + 5 * reg_size, info->total_size);
+       emit_label (toc_save_done);
+       if (using_static_chain_p)
+@@ -21050,6 +21152,11 @@
+ 	emit_move_insn (lr, gen_rtx_REG (Pmode, 0));
+     }
+ #endif
++
++  /* If we need to, save the TOC register after doing the stack setup.  */
++  if (rs6000_save_toc_in_prologue_p ())
++    emit_frame_save (sp_reg_rtx, sp_reg_rtx, reg_mode, TOC_REGNUM,
++		     5 * reg_size, info->total_size);
+ }
+ 
+ /* Write function prologue.  */
+@@ -25002,10 +25109,15 @@
+     /* Under AIX, just build the 3 word function descriptor */
+     case ABI_AIX:
+       {
+-	rtx fnmem = gen_const_mem (Pmode, force_reg (Pmode, fnaddr));
+-	rtx fn_reg = gen_reg_rtx (Pmode);
+-	rtx toc_reg = gen_reg_rtx (Pmode);
++	rtx fnmem, fn_reg, toc_reg;
+ 
++	if (!TARGET_R11)
++	  error ("-mno-r11 must not be used if you have trampolines");
++
++	fnmem = gen_const_mem (Pmode, force_reg (Pmode, fnaddr));
++	fn_reg = gen_reg_rtx (Pmode);
++	toc_reg = gen_reg_rtx (Pmode);
++
+   /* Macro to shorten the code expansions below.  */
+ # define MEM_PLUS(MEM, OFFSET) adjust_address (MEM, Pmode, OFFSET)
+ 
+@@ -28257,5 +28369,132 @@
+   return x;
+ }
+ 
++
++/* A function pointer under AIX is a pointer to a data area whose first word
++   contains the actual address of the function, whose second word contains a
++   pointer to its TOC, and whose third word contains a value to place in the
++   static chain register (r11).  Note that if we load the static chain, our
++   "trampoline" need not have any executable code.  */
+ 
++void
++rs6000_call_indirect_aix (rtx value, rtx func_desc, rtx flag)
++{
++  rtx func_addr;
++  rtx toc_reg;
++  rtx sc_reg;
++  rtx stack_ptr;
++  rtx stack_toc_offset;
++  rtx stack_toc_mem;
++  rtx func_toc_offset;
++  rtx func_toc_mem;
++  rtx func_sc_offset;
++  rtx func_sc_mem;
++  rtx insn;
++  rtx (*call_func) (rtx, rtx, rtx, rtx);
++  rtx (*call_value_func) (rtx, rtx, rtx, rtx, rtx);
++
++  stack_ptr = gen_rtx_REG (Pmode, STACK_POINTER_REGNUM);
++  toc_reg = gen_rtx_REG (Pmode, TOC_REGNUM);
++
++  /* Load up address of the actual function.  */
++  func_desc = force_reg (Pmode, func_desc);
++  func_addr = gen_reg_rtx (Pmode);
++  emit_move_insn (func_addr, gen_rtx_MEM (Pmode, func_desc));
++
++  if (TARGET_32BIT)
++    {
++
++      stack_toc_offset = GEN_INT (TOC_SAVE_OFFSET_32BIT);
++      func_toc_offset = GEN_INT (AIX_FUNC_DESC_TOC_32BIT);
++      func_sc_offset = GEN_INT (AIX_FUNC_DESC_SC_32BIT);
++      if (TARGET_R11)
++	{
++	  call_func = gen_call_indirect_aix32bit;
++	  call_value_func = gen_call_value_indirect_aix32bit;
++	}
++      else
++	{
++	  call_func = gen_call_indirect_aix32bit_nor11;
++	  call_value_func = gen_call_value_indirect_aix32bit_nor11;
++	}
++    }
++  else
++    {
++      stack_toc_offset = GEN_INT (TOC_SAVE_OFFSET_64BIT);
++      func_toc_offset = GEN_INT (AIX_FUNC_DESC_TOC_64BIT);
++      func_sc_offset = GEN_INT (AIX_FUNC_DESC_SC_64BIT);
++      if (TARGET_R11)
++	{
++	  call_func = gen_call_indirect_aix64bit;
++	  call_value_func = gen_call_value_indirect_aix64bit;
++	}
++      else
++	{
++	  call_func = gen_call_indirect_aix64bit_nor11;
++	  call_value_func = gen_call_value_indirect_aix64bit_nor11;
++	}
++    }
++
++  /* Reserved spot to store the TOC.  */
++  stack_toc_mem = gen_frame_mem (Pmode,
++				 gen_rtx_PLUS (Pmode,
++					       stack_ptr,
++					       stack_toc_offset));
++
++  gcc_assert (cfun);
++  gcc_assert (cfun->machine);
++
++  /* Can we optimize saving the TOC in the prologue or do we need to do it at
++     every call?  */
++  if (TARGET_SAVE_TOC_INDIRECT && !cfun->calls_alloca
++      && !cfun->calls_setjmp && !cfun->has_nonlocal_label
++      && !cfun->can_throw_non_call_exceptions
++      && ((flags_from_decl_or_type (cfun->decl) & ECF_NOTHROW) == ECF_NOTHROW))
++    cfun->machine->save_toc_in_prologue = true;
++
++  else
++    {
++      MEM_VOLATILE_P (stack_toc_mem) = 1;
++      emit_move_insn (stack_toc_mem, toc_reg);
++    }
++
++  /* Calculate the address to load the TOC of the called function.  We don't
++     actually load this until the split after reload.  */
++  func_toc_mem = gen_rtx_MEM (Pmode,
++			      gen_rtx_PLUS (Pmode,
++					    func_desc,
++					    func_toc_offset));
++
++  /* If we have a static chain, load it up.  */
++  if (TARGET_R11)
++    {
++      func_sc_mem = gen_rtx_MEM (Pmode,
++				 gen_rtx_PLUS (Pmode,
++					       func_desc,
++					       func_sc_offset));
++
++      sc_reg = gen_rtx_REG (Pmode, STATIC_CHAIN_REGNUM);
++      emit_move_insn (sc_reg, func_sc_mem);
++    }
++
++  /* Create the call.  */
++  if (value)
++    insn = call_value_func (value, func_addr, flag, func_toc_mem,
++			    stack_toc_mem);
++  else
++    insn = call_func (func_addr, flag, func_toc_mem, stack_toc_mem);
++
++  emit_call_insn (insn);
++  return;
++}
++
++/* Return whether we need to always update the saved TOC pointer when we update
++   the stack pointer.  */
++
++bool
++rs6000_save_toc_in_prologue_p (void)
++{
++  return (cfun && cfun->machine && cfun->machine->save_toc_in_prologue);
++}
++
+ #include "gt-rs6000.h"
+
+Property changes on: gcc/config/rs6000/rs6000.c
+___________________________________________________________________
+Modified: svn:mergeinfo
+   Merged /branches/gcc-4_6-branch/gcc/config/rs6000/rs6000.c:r171610-175885
+
+Index: gcc/config/rs6000/vsx.md
+===================================================================
+--- a/src/gcc/config/rs6000/vsx.md	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/vsx.md	(.../ibm/gcc-4_6-branch)
+@@ -183,25 +183,25 @@
+ 			     (V16QI	"QI")])
+ 			     
+ ;; Constants for creating unspecs
+-(define_constants
+-  [(UNSPEC_VSX_CONCAT		500)
+-   (UNSPEC_VSX_CVDPSXWS		501)
+-   (UNSPEC_VSX_CVDPUXWS		502)
+-   (UNSPEC_VSX_CVSPDP		503)
+-   (UNSPEC_VSX_CVSXWDP		504)
+-   (UNSPEC_VSX_CVUXWDP		505)
+-   (UNSPEC_VSX_CVSXDSP		506)
+-   (UNSPEC_VSX_CVUXDSP		507)
+-   (UNSPEC_VSX_CVSPSXDS		508)
+-   (UNSPEC_VSX_CVSPUXDS		509)
+-   ;; 510-514 deleted
+-   (UNSPEC_VSX_TDIV		515)
+-   (UNSPEC_VSX_TSQRT		516)
+-   (UNSPEC_VSX_XXPERMDI		517)
+-   (UNSPEC_VSX_SET		518)
+-   (UNSPEC_VSX_ROUND_I		519)
+-   (UNSPEC_VSX_ROUND_IC		520)
+-   (UNSPEC_VSX_SLDWI		521)])
++(define_c_enum "unspec"
++  [UNSPEC_VSX_CONCAT
++   UNSPEC_VSX_CVDPSXWS
++   UNSPEC_VSX_CVDPUXWS
++   UNSPEC_VSX_CVSPDP
++   UNSPEC_VSX_CVSXWDP
++   UNSPEC_VSX_CVUXWDP
++   UNSPEC_VSX_CVSXDSP
++   UNSPEC_VSX_CVUXDSP
++   UNSPEC_VSX_CVSPSXDS
++   UNSPEC_VSX_CVSPUXDS
++   UNSPEC_VSX_TDIV
++   UNSPEC_VSX_TSQRT
++   UNSPEC_VSX_XXPERMDI
++   UNSPEC_VSX_SET
++   UNSPEC_VSX_ROUND_I
++   UNSPEC_VSX_ROUND_IC
++   UNSPEC_VSX_SLDWI
++  ])
+ 
+ ;; VSX moves
+ (define_insn "*vsx_mov<mode>"
+@@ -829,6 +829,15 @@
+   "xscvdpsp %x0,%x1"
+   [(set_attr "type" "fp")])
+ 
++;; Same as vsx_xscvspdp, but use SF as the type
++(define_insn "vsx_xscvspdp_scalar2"
++  [(set (match_operand:SF 0 "vsx_register_operand" "=f")
++	(unspec:SF [(match_operand:V4SF 1 "vsx_register_operand" "wa")]
++		   UNSPEC_VSX_CVSPDP))]
++  "VECTOR_UNIT_VSX_P (DFmode)"
++  "xscvspdp %x0,%x1"
++  [(set_attr "type" "fp")])
++
+ ;; Convert from 64-bit to 32-bit types
+ ;; Note, favor the Altivec registers since the usual use of these instructions
+ ;; is in vector converts and we need to use the Altivec vperm instruction.
+@@ -1039,6 +1048,43 @@
+   [(set_attr "type" "fpload")
+    (set_attr "length" "4")])  
+ 
++;; Extract a SF element from V4SF
++(define_insn_and_split "vsx_extract_v4sf"
++  [(set (match_operand:SF 0 "vsx_register_operand" "=f,f")
++	(vec_select:SF
++	 (match_operand:V4SF 1 "vsx_register_operand" "wa,wa")
++	 (parallel [(match_operand:QI 2 "u5bit_cint_operand" "O,i")])))
++   (clobber (match_scratch:V4SF 3 "=X,0"))]
++  "VECTOR_UNIT_VSX_P (V4SFmode)"
++  "@
++   xscvspdp %x0,%x1
++   #"
++  ""
++  [(const_int 0)]
++  "
++{
++  rtx op0 = operands[0];
++  rtx op1 = operands[1];
++  rtx op2 = operands[2];
++  rtx op3 = operands[3];
++  rtx tmp;
++  HOST_WIDE_INT ele = INTVAL (op2);
++
++  if (ele == 0)
++    tmp = op1;
++  else
++    {
++      if (GET_CODE (op3) == SCRATCH)
++	op3 = gen_reg_rtx (V4SFmode);
++      emit_insn (gen_vsx_xxsldwi_v4sf (op3, op1, op1, op2));
++      tmp = op3;
++    }
++  emit_insn (gen_vsx_xscvspdp_scalar2 (op0, tmp));
++  DONE;
++}"
++  [(set_attr "length" "4,8")
++   (set_attr "type" "fp")])
++
+ ;; General double word oriented permute, allow the other vector types for
+ ;; optimizing the permute instruction.
+ (define_insn "vsx_xxpermdi_<mode>"
+@@ -1076,7 +1122,7 @@
+ (define_insn "vsx_splat_<mode>"
+   [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wd,wd,wd,?wa,?wa,?wa")
+ 	(vec_duplicate:VSX_D
+-	 (match_operand:<VS_scalar> 1 "input_operand" "ws,f,Z,wa,wa,Z")))]
++	 (match_operand:<VS_scalar> 1 "splat_input_operand" "ws,f,Z,wa,wa,Z")))]
+   "VECTOR_MEM_VSX_P (<MODE>mode)"
+   "@
+    xxpermdi %x0,%x1,%x1,0
+@@ -1150,3 +1196,153 @@
+   "VECTOR_MEM_VSX_P (<MODE>mode)"
+   "xxsldwi %x0,%x1,%x2,%3"
+   [(set_attr "type" "vecperm")])
++
++
++;; Vector reduction insns and splitters
++
++(define_insn_and_split "*vsx_reduc_<VEC_reduc_name>_v2df"
++  [(set (match_operand:V2DF 0 "vfloat_operand" "=&wd,&?wa,wd,?wa")
++	(VEC_reduc:V2DF
++	 (vec_concat:V2DF
++	  (vec_select:DF
++	   (match_operand:V2DF 1 "vfloat_operand" "wd,wa,wd,wa")
++	   (parallel [(const_int 1)]))
++	  (vec_select:DF
++	   (match_dup 1)
++	   (parallel [(const_int 0)])))
++	 (match_dup 1)))
++   (clobber (match_scratch:V2DF 2 "=0,0,&wd,&wa"))]
++  "VECTOR_UNIT_VSX_P (V2DFmode)"
++  "#"
++  ""
++  [(const_int 0)]
++  "
++{
++  rtx tmp = (GET_CODE (operands[2]) == SCRATCH)
++	     ? gen_reg_rtx (V2DFmode)
++	     : operands[2];
++  emit_insn (gen_vsx_xxsldwi_v2df (tmp, operands[1], operands[1], const2_rtx));
++  emit_insn (gen_<VEC_reduc_rtx>v2df3 (operands[0], tmp, operands[1]));
++  DONE;
++}"
++  [(set_attr "length" "8")
++   (set_attr "type" "veccomplex")])
++
++(define_insn_and_split "*vsx_reduc_<VEC_reduc_name>_v4sf"
++  [(set (match_operand:V4SF 0 "vfloat_operand" "=wf,?wa")
++	(VEC_reduc:V4SF
++	 (unspec:V4SF [(const_int 0)] UNSPEC_REDUC)
++	 (match_operand:V4SF 1 "vfloat_operand" "wf,wa")))
++   (clobber (match_scratch:V4SF 2 "=&wf,&wa"))
++   (clobber (match_scratch:V4SF 3 "=&wf,&wa"))]
++  "VECTOR_UNIT_VSX_P (V4SFmode)"
++  "#"
++  ""
++  [(const_int 0)]
++  "
++{
++  rtx op0 = operands[0];
++  rtx op1 = operands[1];
++  rtx tmp2, tmp3, tmp4;
++
++  if (can_create_pseudo_p ())
++    {
++      tmp2 = gen_reg_rtx (V4SFmode);
++      tmp3 = gen_reg_rtx (V4SFmode);
++      tmp4 = gen_reg_rtx (V4SFmode);
++    }
++  else
++    {
++      tmp2 = operands[2];
++      tmp3 = operands[3];
++      tmp4 = tmp2;
++    }
++
++  emit_insn (gen_vsx_xxsldwi_v4sf (tmp2, op1, op1, const2_rtx));
++  emit_insn (gen_<VEC_reduc_rtx>v4sf3 (tmp3, tmp2, op1));
++  emit_insn (gen_vsx_xxsldwi_v4sf (tmp4, tmp3, tmp3, GEN_INT (3)));
++  emit_insn (gen_<VEC_reduc_rtx>v4sf3 (op0, tmp4, tmp3));
++  DONE;
++}"
++  [(set_attr "length" "16")
++   (set_attr "type" "veccomplex")])
++
++;; Combiner patterns with the vector reduction patterns that knows we can get
++;; to the top element of the V2DF array without doing an extract.
++
++(define_insn_and_split "*vsx_reduc_<VEC_reduc_name>_v2df_scalar"
++  [(set (match_operand:DF 0 "vfloat_operand" "=&ws,&?wa,ws,?wa")
++	(vec_select:DF
++	 (VEC_reduc:V2DF
++	  (vec_concat:V2DF
++	   (vec_select:DF
++	    (match_operand:V2DF 1 "vfloat_operand" "wd,wa,wd,wa")
++	    (parallel [(const_int 1)]))
++	   (vec_select:DF
++	    (match_dup 1)
++	    (parallel [(const_int 0)])))
++	  (match_dup 1))
++	 (parallel [(const_int 1)])))
++   (clobber (match_scratch:DF 2 "=0,0,&wd,&wa"))]
++  "VECTOR_UNIT_VSX_P (V2DFmode)"
++  "#"
++  ""
++  [(const_int 0)]
++  "
++{
++  rtx hi = gen_highpart (DFmode, operands[1]);
++  rtx lo = (GET_CODE (operands[2]) == SCRATCH)
++	    ? gen_reg_rtx (DFmode)
++	    : operands[2];
++
++  emit_insn (gen_vsx_extract_v2df (lo, operands[1], const1_rtx));
++  emit_insn (gen_<VEC_reduc_rtx>df3 (operands[0], hi, lo));
++  DONE;
++}"
++  [(set_attr "length" "8")
++   (set_attr "type" "veccomplex")])
++
++(define_insn_and_split "*vsx_reduc_<VEC_reduc_name>_v4sf_scalar"
++  [(set (match_operand:SF 0 "vfloat_operand" "=f,?f")
++	(vec_select:SF
++	 (VEC_reduc:V4SF
++	  (unspec:V4SF [(const_int 0)] UNSPEC_REDUC)
++	  (match_operand:V4SF 1 "vfloat_operand" "wf,wa"))
++	 (parallel [(const_int 3)])))
++   (clobber (match_scratch:V4SF 2 "=&wf,&wa"))
++   (clobber (match_scratch:V4SF 3 "=&wf,&wa"))
++   (clobber (match_scratch:V4SF 4 "=0,0"))]
++  "VECTOR_UNIT_VSX_P (V4SFmode)"
++  "#"
++  ""
++  [(const_int 0)]
++  "
++{
++  rtx op0 = operands[0];
++  rtx op1 = operands[1];
++  rtx tmp2, tmp3, tmp4, tmp5;
++
++  if (can_create_pseudo_p ())
++    {
++      tmp2 = gen_reg_rtx (V4SFmode);
++      tmp3 = gen_reg_rtx (V4SFmode);
++      tmp4 = gen_reg_rtx (V4SFmode);
++      tmp5 = gen_reg_rtx (V4SFmode);
++    }
++  else
++    {
++      tmp2 = operands[2];
++      tmp3 = operands[3];
++      tmp4 = tmp2;
++      tmp5 = operands[4];
++    }
++
++  emit_insn (gen_vsx_xxsldwi_v4sf (tmp2, op1, op1, const2_rtx));
++  emit_insn (gen_<VEC_reduc_rtx>v4sf3 (tmp3, tmp2, op1));
++  emit_insn (gen_vsx_xxsldwi_v4sf (tmp4, tmp3, tmp3, GEN_INT (3)));
++  emit_insn (gen_<VEC_reduc_rtx>v4sf3 (tmp5, tmp4, tmp3));
++  emit_insn (gen_vsx_xscvspdp_scalar2 (op0, tmp5));
++  DONE;
++}"
++  [(set_attr "length" "20")
++   (set_attr "type" "veccomplex")])
+
+Property changes on: gcc/config/rs6000/rs6000.h
+___________________________________________________________________
+Modified: svn:mergeinfo
+   Merged /branches/gcc-4_6-branch/gcc/config/rs6000/rs6000.h:r171610-175885
+
+Index: gcc/config/rs6000/altivec.md
+===================================================================
+--- a/src/gcc/config/rs6000/altivec.md	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/altivec.md	(.../ibm/gcc-4_6-branch)
+@@ -19,138 +19,130 @@
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ 
+-(define_constants
+-   ;; 51-62 deleted
+-  [(UNSPEC_VCMPBFP       64)
+-   (UNSPEC_VMSUMU        65)
+-   (UNSPEC_VMSUMM        66)
+-   (UNSPEC_VMSUMSHM      68)
+-   (UNSPEC_VMSUMUHS      69)
+-   (UNSPEC_VMSUMSHS      70)
+-   (UNSPEC_VMHADDSHS     71)
+-   (UNSPEC_VMHRADDSHS    72)
+-   (UNSPEC_VMLADDUHM     73)
+-   (UNSPEC_VADDCUW       75)
+-   (UNSPEC_VADDU         76)
+-   (UNSPEC_VADDS         77)
+-   (UNSPEC_VAVGU         80)
+-   (UNSPEC_VAVGS         81)
+-   (UNSPEC_VMULEUB       83)
+-   (UNSPEC_VMULESB       84)
+-   (UNSPEC_VMULEUH       85)
+-   (UNSPEC_VMULESH       86)
+-   (UNSPEC_VMULOUB       87)
+-   (UNSPEC_VMULOSB       88)
+-   (UNSPEC_VMULOUH       89)
+-   (UNSPEC_VMULOSH       90)
+-   (UNSPEC_VPKUHUM       93)
+-   (UNSPEC_VPKUWUM       94)
+-   (UNSPEC_VPKPX         95)
+-   (UNSPEC_VPKSHSS       97)
+-   (UNSPEC_VPKSWSS       99)
+-   (UNSPEC_VPKUHUS      100)
+-   (UNSPEC_VPKSHUS      101)
+-   (UNSPEC_VPKUWUS      102)
+-   (UNSPEC_VPKSWUS      103)
+-   ;; 104 deleted
+-   (UNSPEC_VSLV4SI      110)
+-   (UNSPEC_VSLO         111)
+-   (UNSPEC_VSR          118)
+-   (UNSPEC_VSRO         119)
+-   (UNSPEC_VSUBCUW      124)
+-   (UNSPEC_VSUBU        125)
+-   (UNSPEC_VSUBS        126)
+-   (UNSPEC_VSUM4UBS     131)
+-   (UNSPEC_VSUM4S       132)
+-   (UNSPEC_VSUM2SWS     134)
+-   (UNSPEC_VSUMSWS      135)
+-   (UNSPEC_VPERM        144)
+-   (UNSPEC_VPERM_UNS    145)
+-   ;; 148 deleted
+-   (UNSPEC_VRFIN        149)
+-   ;; 150 deleted
+-   (UNSPEC_VCFUX        151)
+-   (UNSPEC_VCFSX        152)
+-   (UNSPEC_VCTUXS       153)
+-   (UNSPEC_VCTSXS       154)
+-   (UNSPEC_VLOGEFP      155)
+-   (UNSPEC_VEXPTEFP     156)
+-   ;; 157-162 deleted
+-   (UNSPEC_VLSDOI       163)
+-   (UNSPEC_VUPKHSB      167)
+-   (UNSPEC_VUPKHPX      168)
+-   (UNSPEC_VUPKHSH      169)
+-   (UNSPEC_VUPKLSB      170)
+-   (UNSPEC_VUPKLPX      171)
+-   (UNSPEC_VUPKLSH      172)
+-   ;; 173 deleted
+-   (UNSPEC_DST          190)
+-   (UNSPEC_DSTT         191)
+-   (UNSPEC_DSTST        192)
+-   (UNSPEC_DSTSTT       193)
+-   (UNSPEC_LVSL         194)
+-   (UNSPEC_LVSR         195)
+-   (UNSPEC_LVE          196)
+-   (UNSPEC_STVX         201)
+-   (UNSPEC_STVXL        202)
+-   (UNSPEC_STVE         203)
+-   (UNSPEC_SET_VSCR     213)
+-   (UNSPEC_GET_VRSAVE   214)
+-   (UNSPEC_LVX		215)
+-   (UNSPEC_REDUC_PLUS   217)
+-   (UNSPEC_VECSH        219)
+-   (UNSPEC_EXTEVEN_V4SI 220)
+-   (UNSPEC_EXTEVEN_V8HI 221)
+-   (UNSPEC_EXTEVEN_V16QI 222)
+-   (UNSPEC_EXTEVEN_V4SF 223)
+-   (UNSPEC_EXTODD_V4SI  224)
+-   (UNSPEC_EXTODD_V8HI  225)
+-   (UNSPEC_EXTODD_V16QI 226)
+-   (UNSPEC_EXTODD_V4SF  227)
+-   (UNSPEC_INTERHI_V4SI 228)
+-   (UNSPEC_INTERHI_V8HI 229)
+-   (UNSPEC_INTERHI_V16QI 230)
+-   ;; delete 231
+-   (UNSPEC_INTERLO_V4SI 232)
+-   (UNSPEC_INTERLO_V8HI 233)
+-   (UNSPEC_INTERLO_V16QI 234)
+-   ;; delete 235
+-   (UNSPEC_LVLX         236)
+-   (UNSPEC_LVLXL        237)
+-   (UNSPEC_LVRX         238)
+-   (UNSPEC_LVRXL        239)
+-   (UNSPEC_STVLX        240)
+-   (UNSPEC_STVLXL       241)
+-   (UNSPEC_STVRX        242)
+-   (UNSPEC_STVRXL       243)
+-   (UNSPEC_VMULWHUB     308)
+-   (UNSPEC_VMULWLUB     309)
+-   (UNSPEC_VMULWHSB     310)
+-   (UNSPEC_VMULWLSB     311)
+-   (UNSPEC_VMULWHUH     312)
+-   (UNSPEC_VMULWLUH     313)
+-   (UNSPEC_VMULWHSH     314)
+-   (UNSPEC_VMULWLSH     315)
+-   (UNSPEC_VUPKHUB      316)
+-   (UNSPEC_VUPKHUH      317)
+-   (UNSPEC_VUPKLUB      318)
+-   (UNSPEC_VUPKLUH      319)
+-   (UNSPEC_VPERMSI	320)
+-   (UNSPEC_VPERMHI	321)
+-   (UNSPEC_INTERHI      322)
+-   (UNSPEC_INTERLO      323)
+-   (UNSPEC_VUPKHS_V4SF  324)
+-   (UNSPEC_VUPKLS_V4SF  325)
+-   (UNSPEC_VUPKHU_V4SF  326)
+-   (UNSPEC_VUPKLU_V4SF  327)
++(define_c_enum "unspec"
++  [UNSPEC_VCMPBFP
++   UNSPEC_VMSUMU
++   UNSPEC_VMSUMM
++   UNSPEC_VMSUMSHM
++   UNSPEC_VMSUMUHS
++   UNSPEC_VMSUMSHS
++   UNSPEC_VMHADDSHS
++   UNSPEC_VMHRADDSHS
++   UNSPEC_VMLADDUHM
++   UNSPEC_VADDCUW
++   UNSPEC_VADDU
++   UNSPEC_VADDS
++   UNSPEC_VAVGU
++   UNSPEC_VAVGS
++   UNSPEC_VMULEUB
++   UNSPEC_VMULESB
++   UNSPEC_VMULEUH
++   UNSPEC_VMULESH
++   UNSPEC_VMULOUB
++   UNSPEC_VMULOSB
++   UNSPEC_VMULOUH
++   UNSPEC_VMULOSH
++   UNSPEC_VPKUHUM
++   UNSPEC_VPKUWUM
++   UNSPEC_VPKPX
++   UNSPEC_VPKSHSS
++   UNSPEC_VPKSWSS
++   UNSPEC_VPKUHUS
++   UNSPEC_VPKSHUS
++   UNSPEC_VPKUWUS
++   UNSPEC_VPKSWUS
++   UNSPEC_VSLV4SI
++   UNSPEC_VSLO
++   UNSPEC_VSR
++   UNSPEC_VSRO
++   UNSPEC_VSUBCUW
++   UNSPEC_VSUBU
++   UNSPEC_VSUBS
++   UNSPEC_VSUM4UBS
++   UNSPEC_VSUM4S
++   UNSPEC_VSUM2SWS
++   UNSPEC_VSUMSWS
++   UNSPEC_VPERM
++   UNSPEC_VPERM_UNS
++   UNSPEC_VRFIN
++   UNSPEC_VCFUX
++   UNSPEC_VCFSX
++   UNSPEC_VCTUXS
++   UNSPEC_VCTSXS
++   UNSPEC_VLOGEFP
++   UNSPEC_VEXPTEFP
++   UNSPEC_VLSDOI
++   UNSPEC_VUPKHSB
++   UNSPEC_VUPKHPX
++   UNSPEC_VUPKHSH
++   UNSPEC_VUPKLSB
++   UNSPEC_VUPKLPX
++   UNSPEC_VUPKLSH
++   UNSPEC_DST
++   UNSPEC_DSTT
++   UNSPEC_DSTST
++   UNSPEC_DSTSTT
++   UNSPEC_LVSL
++   UNSPEC_LVSR
++   UNSPEC_LVE
++   UNSPEC_STVX
++   UNSPEC_STVXL
++   UNSPEC_STVE
++   UNSPEC_SET_VSCR
++   UNSPEC_GET_VRSAVE
++   UNSPEC_LVX
++   UNSPEC_REDUC_PLUS
++   UNSPEC_VECSH
++   UNSPEC_EXTEVEN_V4SI
++   UNSPEC_EXTEVEN_V8HI
++   UNSPEC_EXTEVEN_V16QI
++   UNSPEC_EXTEVEN_V4SF
++   UNSPEC_EXTODD_V4SI
++   UNSPEC_EXTODD_V8HI
++   UNSPEC_EXTODD_V16QI
++   UNSPEC_EXTODD_V4SF
++   UNSPEC_INTERHI_V4SI
++   UNSPEC_INTERHI_V8HI
++   UNSPEC_INTERHI_V16QI
++   UNSPEC_INTERLO_V4SI
++   UNSPEC_INTERLO_V8HI
++   UNSPEC_INTERLO_V16QI
++   UNSPEC_LVLX
++   UNSPEC_LVLXL
++   UNSPEC_LVRX
++   UNSPEC_LVRXL
++   UNSPEC_STVLX
++   UNSPEC_STVLXL
++   UNSPEC_STVRX
++   UNSPEC_STVRXL
++   UNSPEC_VMULWHUB
++   UNSPEC_VMULWLUB
++   UNSPEC_VMULWHSB
++   UNSPEC_VMULWLSB
++   UNSPEC_VMULWHUH
++   UNSPEC_VMULWLUH
++   UNSPEC_VMULWHSH
++   UNSPEC_VMULWLSH
++   UNSPEC_VUPKHUB
++   UNSPEC_VUPKHUH
++   UNSPEC_VUPKLUB
++   UNSPEC_VUPKLUH
++   UNSPEC_VPERMSI
++   UNSPEC_VPERMHI
++   UNSPEC_INTERHI
++   UNSPEC_INTERLO
++   UNSPEC_VUPKHS_V4SF
++   UNSPEC_VUPKLS_V4SF
++   UNSPEC_VUPKHU_V4SF
++   UNSPEC_VUPKLU_V4SF
+ ])
+ 
+-(define_constants
+-  [(UNSPECV_SET_VRSAVE   30)
+-   (UNSPECV_MTVSCR      186)
+-   (UNSPECV_MFVSCR      187)
+-   (UNSPECV_DSSALL      188)
+-   (UNSPECV_DSS         189)
++(define_c_enum "unspecv"
++  [UNSPECV_SET_VRSAVE
++   UNSPECV_MTVSCR
++   UNSPECV_MFVSCR
++   UNSPECV_DSSALL
++   UNSPECV_DSS
+   ])
+ 
+ ;; Vec int modes
+Index: gcc/config/rs6000/dfp.md
+===================================================================
+--- a/src/gcc/config/rs6000/dfp.md	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/dfp.md	(.../ibm/gcc-4_6-branch)
+@@ -1,5 +1,5 @@
+ ;; Decimal Floating Point (DFP) patterns.
+-;; Copyright (C) 2007, 2008, 2010
++;; Copyright (C) 2007, 2008, 2010, 2011
+ ;; Free Software Foundation, Inc.
+ ;; Contributed by Ben Elliston (bje@au.ibm.com) and Peter Bergner
+ ;; (bergner@vnet.ibm.com).
+@@ -24,9 +24,9 @@
+ ;; UNSPEC usage
+ ;;
+ 
+-(define_constants
+-  [(UNSPEC_MOVSD_LOAD		400)
+-   (UNSPEC_MOVSD_STORE		401)
++(define_c_enum "unspec"
++  [UNSPEC_MOVSD_LOAD
++   UNSPEC_MOVSD_STORE
+   ])
+ 
+ 
+Index: gcc/config/rs6000/sync.md
+===================================================================
+--- a/src/gcc/config/rs6000/sync.md	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/sync.md	(.../ibm/gcc-4_6-branch)
+@@ -1,5 +1,6 @@
+ ;; Machine description for PowerPC synchronization instructions.
+-;; Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
++;; Copyright (C) 2005, 2007, 2008, 2009, 2011
++;; Free Software Foundation, Inc.
+ ;; Contributed by Geoffrey Keating.
+ 
+ ;; This file is part of GCC.
+@@ -591,7 +592,7 @@
+ 
+ (define_insn "isync"
+   [(set (mem:BLK (match_scratch 0 "X"))
+-	(unspec_volatile:BLK [(mem:BLK (match_scratch 1 "X"))] UNSPEC_ISYNC))]
++	(unspec_volatile:BLK [(mem:BLK (match_scratch 1 "X"))] UNSPECV_ISYNC))]
+   ""
+   "{ics|isync}"
+   [(set_attr "type" "isync")])
+@@ -610,7 +611,7 @@
+ ; Some AIX assemblers don't accept lwsync, so we use a .long.
+ (define_insn "lwsync"
+   [(set (mem:BLK (match_scratch 0 "X"))
+-	(unspec_volatile:BLK [(mem:BLK (match_scratch 1 "X"))] UNSPEC_LWSYNC))]
++	(unspec_volatile:BLK [(mem:BLK (match_scratch 1 "X"))] UNSPECV_LWSYNC))]
+   ""
+ {
+   if (TARGET_NO_LWSYNC)
+Index: gcc/config/rs6000/rs6000.md
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.md	(.../gcc-4_6-branch)
++++ b/src/gcc/config/rs6000/rs6000.md	(.../ibm/gcc-4_6-branch)
+@@ -1,6 +1,6 @@
+ ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler
+ ;; Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
++;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ ;; Free Software Foundation, Inc.
+ ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+ 
+@@ -27,9 +27,14 @@
+ ;;
+ 
+ (define_constants
+-  [(MQ_REGNO			64)
++  [(STACK_POINTER_REGNUM	1)
++   (TOC_REGNUM			2)
++   (STATIC_CHAIN_REGNUM		11)
++   (HARD_FRAME_POINTER_REGNUM	31)
++   (MQ_REGNO			64)
+    (LR_REGNO			65)
+    (CTR_REGNO			66)
++   (ARG_POINTER_REGNUM		67)
+    (CR0_REGNO			68)
+    (CR1_REGNO			69)
+    (CR2_REGNO			70)
+@@ -46,83 +51,96 @@
+    (VSCR_REGNO			110)
+    (SPE_ACC_REGNO		111)
+    (SPEFSCR_REGNO		112)
+-   (SFP_REGNO			113)
++   (FRAME_POINTER_REGNUM	113)
++
++   ; ABI defined stack offsets for storing the TOC pointer with AIX calls.
++   (TOC_SAVE_OFFSET_32BIT	20)
++   (TOC_SAVE_OFFSET_64BIT	40)
++
++   ; Function TOC offset in the AIX function descriptor.
++   (AIX_FUNC_DESC_TOC_32BIT	4)
++   (AIX_FUNC_DESC_TOC_64BIT	8)
++
++   ; Static chain offset in the AIX function descriptor.
++   (AIX_FUNC_DESC_SC_32BIT	8)
++   (AIX_FUNC_DESC_SC_64BIT	16)
+   ])
+ 
+ ;;
+ ;; UNSPEC usage
+ ;;
+ 
+-(define_constants
+-  [(UNSPEC_FRSP			0)	; frsp for POWER machines
+-   (UNSPEC_PROBE_STACK		4)	; probe stack memory reference
+-   (UNSPEC_TIE			5)	; tie stack contents and stack pointer
+-   (UNSPEC_TOCPTR		6)	; address of a word pointing to the TOC
+-   (UNSPEC_TOC			7)	; address of the TOC (more-or-less)
+-   (UNSPEC_MOVSI_GOT		8)
+-   (UNSPEC_MV_CR_OV		9)	; move_from_CR_ov_bit
+-   (UNSPEC_FCTIWZ		10)
+-   (UNSPEC_FRIM			11)
+-   (UNSPEC_FRIN			12)
+-   (UNSPEC_FRIP			13)
+-   (UNSPEC_FRIZ			14)
+-   (UNSPEC_LD_MPIC		15)	; load_macho_picbase
+-   (UNSPEC_MPIC_CORRECT		16)	; macho_correct_pic
+-   (UNSPEC_TLSGD		17)
+-   (UNSPEC_TLSLD		18)
+-   (UNSPEC_MOVESI_FROM_CR	19)
+-   (UNSPEC_MOVESI_TO_CR		20)
+-   (UNSPEC_TLSDTPREL		21)
+-   (UNSPEC_TLSDTPRELHA		22)
+-   (UNSPEC_TLSDTPRELLO		23)
+-   (UNSPEC_TLSGOTDTPREL		24)
+-   (UNSPEC_TLSTPREL		25)
+-   (UNSPEC_TLSTPRELHA		26)
+-   (UNSPEC_TLSTPRELLO		27)
+-   (UNSPEC_TLSGOTTPREL		28)
+-   (UNSPEC_TLSTLS		29)
+-   (UNSPEC_FIX_TRUNC_TF		30)	; fadd, rounding towards zero
+-   (UNSPEC_MV_CR_GT		31)	; move_from_CR_gt_bit
+-   (UNSPEC_STFIWX		32)
+-   (UNSPEC_POPCNTB		33)
+-   (UNSPEC_FRES			34)
+-   (UNSPEC_SP_SET		35)
+-   (UNSPEC_SP_TEST		36)
+-   (UNSPEC_SYNC			37)
+-   (UNSPEC_LWSYNC		38)
+-   (UNSPEC_ISYNC		39)
+-   (UNSPEC_SYNC_OP		40)
+-   (UNSPEC_ATOMIC		41)
+-   (UNSPEC_CMPXCHG		42)
+-   (UNSPEC_XCHG			43)
+-   (UNSPEC_AND			44)
+-   (UNSPEC_DLMZB		45)
+-   (UNSPEC_DLMZB_CR		46)
+-   (UNSPEC_DLMZB_STRLEN		47)
+-   (UNSPEC_RSQRT		48)
+-   (UNSPEC_TOCREL		49)
+-   (UNSPEC_MACHOPIC_OFFSET	50)
+-   (UNSPEC_BPERM		51)
+-   (UNSPEC_COPYSIGN		52)
+-   (UNSPEC_PARITY		53)
+-   (UNSPEC_FCTIW		54)
+-   (UNSPEC_FCTID		55)
+-   (UNSPEC_LFIWAX		56)
+-   (UNSPEC_LFIWZX		57)
+-   (UNSPEC_FCTIWUZ		58)
++(define_c_enum "unspec"
++  [UNSPEC_FRSP			; frsp for POWER machines
++   UNSPEC_PROBE_STACK		; probe stack memory reference
++   UNSPEC_TIE			; tie stack contents and stack pointer
++   UNSPEC_TOCPTR		; address of a word pointing to the TOC
++   UNSPEC_TOC			; address of the TOC (more-or-less)
++   UNSPEC_MOVSI_GOT
++   UNSPEC_MV_CR_OV		; move_from_CR_ov_bit
++   UNSPEC_FCTIWZ
++   UNSPEC_FRIM
++   UNSPEC_FRIN
++   UNSPEC_FRIP
++   UNSPEC_FRIZ
++   UNSPEC_LD_MPIC		; load_macho_picbase
++   UNSPEC_MPIC_CORRECT		; macho_correct_pic
++   UNSPEC_TLSGD
++   UNSPEC_TLSLD
++   UNSPEC_MOVESI_FROM_CR
++   UNSPEC_MOVESI_TO_CR
++   UNSPEC_TLSDTPREL
++   UNSPEC_TLSDTPRELHA
++   UNSPEC_TLSDTPRELLO
++   UNSPEC_TLSGOTDTPREL
++   UNSPEC_TLSTPREL
++   UNSPEC_TLSTPRELHA
++   UNSPEC_TLSTPRELLO
++   UNSPEC_TLSGOTTPREL
++   UNSPEC_TLSTLS
++   UNSPEC_FIX_TRUNC_TF		; fadd, rounding towards zero
++   UNSPEC_MV_CR_GT		; move_from_CR_gt_bit
++   UNSPEC_STFIWX
++   UNSPEC_POPCNTB
++   UNSPEC_FRES
++   UNSPEC_SP_SET
++   UNSPEC_SP_TEST
++   UNSPEC_SYNC
++   UNSPEC_SYNC_OP
++   UNSPEC_ATOMIC
++   UNSPEC_CMPXCHG
++   UNSPEC_XCHG
++   UNSPEC_AND
++   UNSPEC_DLMZB
++   UNSPEC_DLMZB_CR
++   UNSPEC_DLMZB_STRLEN
++   UNSPEC_RSQRT
++   UNSPEC_TOCREL
++   UNSPEC_MACHOPIC_OFFSET
++   UNSPEC_BPERM
++   UNSPEC_COPYSIGN
++   UNSPEC_PARITY
++   UNSPEC_FCTIW
++   UNSPEC_FCTID
++   UNSPEC_LFIWAX
++   UNSPEC_LFIWZX
++   UNSPEC_FCTIWUZ
+   ])
+ 
+ ;;
+ ;; UNSPEC_VOLATILE usage
+ ;;
+ 
+-(define_constants
+-  [(UNSPECV_BLOCK		0)
+-   (UNSPECV_LL			1)	; load-locked
+-   (UNSPECV_SC			2)	; store-conditional
+-   (UNSPECV_PROBE_STACK_RANGE	3)	; probe range of stack addresses
+-   (UNSPECV_EH_RR		9)	; eh_reg_restore
++(define_c_enum "unspecv"
++  [UNSPECV_BLOCK
++   UNSPECV_LL			; load-locked
++   UNSPECV_SC			; store-conditional
++   UNSPECV_PROBE_STACK_RANGE	; probe range of stack addresses
++   UNSPECV_EH_RR		; eh_reg_restore
++   UNSPECV_ISYNC		; isync instruction
++   UNSPECV_LWSYNC		; lwsync
+   ])
++
+ 
+ ;; Define an insn type attribute.  This is used in function unit delay
+ ;; computations.
+@@ -266,6 +284,9 @@
+ (define_mode_attr mptrsize [(SI "si")
+ 			    (DI "di")])
+ 
++(define_mode_attr ptrload [(SI "{l|lwz}")
++			   (DI "ld")])
++
+ (define_mode_attr rreg [(SF   "f")
+ 			(DF   "ws")
+ 			(V4SF "wf")
+@@ -9644,6 +9665,27 @@
+   [(set_attr "type" "two,load,store,*,*,*")
+    (set_attr "length" "8,8,8,8,12,16")])
+ 
++;; Reload patterns to support gpr load/store with misaligned mem.
++(define_expand "reload_di_store"
++  [(parallel [(match_operand 0 "memory_operand" "=m")
++              (match_operand 1 "gpc_reg_operand" "r")
++              (match_operand:DI 2 "register_operand" "=&b")])]
++  "TARGET_POWERPC64"
++{
++  rs6000_secondary_reload_ppc64 (operands[1], operands[0], operands[2], true);
++  DONE;
++})
++
++(define_expand "reload_di_load"
++  [(parallel [(match_operand 0 "gpc_reg_operand" "=r")
++              (match_operand 1 "memory_operand" "m")
++              (match_operand:DI 2 "register_operand" "=b")])]
++  "TARGET_POWERPC64"
++{
++  rs6000_secondary_reload_ppc64 (operands[0], operands[1], operands[2], false);
++  DONE;
++})
++
+ ; ld/std require word-aligned displacements -> 'Y' constraint.
+ ; List Y->r and r->Y before r->r for reload.
+ (define_insn "*movdf_hardfloat64_mfpgpr"
+@@ -12156,87 +12198,7 @@
+    "TARGET_ELF && TARGET_CMODEL != CMODEL_SMALL"
+    "{cal %0,%2@l(%1)|addi %0,%1,%2@l}")
+ 
+-;; A function pointer under AIX is a pointer to a data area whose first word
+-;; contains the actual address of the function, whose second word contains a
+-;; pointer to its TOC, and whose third word contains a value to place in the
+-;; static chain register (r11).  Note that if we load the static chain, our
+-;; "trampoline" need not have any executable code.
+-
+-(define_expand "call_indirect_aix32"
+-  [(set (match_dup 2)
+-	(mem:SI (match_operand:SI 0 "gpc_reg_operand" "")))
+-   (set (mem:SI (plus:SI (reg:SI 1) (const_int 20)))
+-	(reg:SI 2))
+-   (set (reg:SI 11)
+-	(mem:SI (plus:SI (match_dup 0)
+-			 (const_int 8))))
+-   (parallel [(call (mem:SI (match_dup 2))
+-		    (match_operand 1 "" ""))
+-	      (use (mem:SI (plus:SI (match_dup 0) (const_int 4))))
+-	      (use (reg:SI 11))
+-	      (use (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
+-	      (clobber (reg:SI LR_REGNO))])]
+-  "TARGET_32BIT"
+-  "
+-{ operands[2] = gen_reg_rtx (SImode); }")
+-
+-(define_expand "call_indirect_aix64"
+-  [(set (match_dup 2)
+-	(mem:DI (match_operand:DI 0 "gpc_reg_operand" "")))
+-   (set (mem:DI (plus:DI (reg:DI 1) (const_int 40)))
+-	(reg:DI 2))
+-   (set (reg:DI 11)
+-	(mem:DI (plus:DI (match_dup 0)
+-			 (const_int 16))))
+-   (parallel [(call (mem:SI (match_dup 2))
+-		    (match_operand 1 "" ""))
+-	      (use (mem:DI (plus:DI (match_dup 0) (const_int 8))))
+-	      (use (reg:DI 11))
+-	      (use (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
+-	      (clobber (reg:SI LR_REGNO))])]
+-  "TARGET_64BIT"
+-  "
+-{ operands[2] = gen_reg_rtx (DImode); }")
+-
+-(define_expand "call_value_indirect_aix32"
+-  [(set (match_dup 3)
+-	(mem:SI (match_operand:SI 1 "gpc_reg_operand" "")))
+-   (set (mem:SI (plus:SI (reg:SI 1) (const_int 20)))
+-	(reg:SI 2))
+-   (set (reg:SI 11)
+-	(mem:SI (plus:SI (match_dup 1)
+-			 (const_int 8))))
+-   (parallel [(set (match_operand 0 "" "")
+-		   (call (mem:SI (match_dup 3))
+-			 (match_operand 2 "" "")))
+-	      (use (mem:SI (plus:SI (match_dup 1) (const_int 4))))
+-	      (use (reg:SI 11))
+-	      (use (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
+-	      (clobber (reg:SI LR_REGNO))])]
+-  "TARGET_32BIT"
+-  "
+-{ operands[3] = gen_reg_rtx (SImode); }")
+-
+-(define_expand "call_value_indirect_aix64"
+-  [(set (match_dup 3)
+-	(mem:DI (match_operand:DI 1 "gpc_reg_operand" "")))
+-   (set (mem:DI (plus:DI (reg:DI 1) (const_int 40)))
+-	(reg:DI 2))
+-   (set (reg:DI 11)
+-	(mem:DI (plus:DI (match_dup 1)
+-			 (const_int 16))))
+-   (parallel [(set (match_operand 0 "" "")
+-		   (call (mem:SI (match_dup 3))
+-			 (match_operand 2 "" "")))
+-	      (use (mem:DI (plus:DI (match_dup 1) (const_int 8))))
+-	      (use (reg:DI 11))
+-	      (use (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
+-	      (clobber (reg:SI LR_REGNO))])]
+-  "TARGET_64BIT"
+-  "
+-{ operands[3] = gen_reg_rtx (DImode); }")
+-
+-;; Now the definitions for the call and call_value insns
++;; Call and call_value insns
+ (define_expand "call"
+   [(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
+ 		    (match_operand 1 "" ""))
+@@ -12272,13 +12234,7 @@
+ 	case ABI_AIX:
+ 	  /* AIX function pointers are really pointers to a three word
+ 	     area.  */
+-	  emit_call_insn (TARGET_32BIT
+-			  ? gen_call_indirect_aix32 (force_reg (SImode,
+-							        operands[0]),
+-						     operands[1])
+-			  : gen_call_indirect_aix64 (force_reg (DImode,
+-							        operands[0]),
+-						     operands[1]));
++	  rs6000_call_indirect_aix (NULL_RTX, operands[0], operands[1]);
+ 	  DONE;
+ 
+ 	default:
+@@ -12323,15 +12279,7 @@
+ 	case ABI_AIX:
+ 	  /* AIX function pointers are really pointers to a three word
+ 	     area.  */
+-	  emit_call_insn (TARGET_32BIT
+-			  ? gen_call_value_indirect_aix32 (operands[0],
+-							   force_reg (SImode,
+-								      operands[1]),
+-							   operands[2])
+-			  : gen_call_value_indirect_aix64 (operands[0],
+-							   force_reg (DImode,
+-								      operands[1]),
+-							   operands[2]));
++	  rs6000_call_indirect_aix (operands[0], operands[1], operands[2]);
+ 	  DONE;
+ 
+ 	default:
+@@ -12425,149 +12373,202 @@
+   [(set_attr "type" "branch")
+    (set_attr "length" "4,8")])
+ 
+-;; Call to function which may be in another module.  Restore the TOC
+-;; pointer (r2) after the call unless this is System V.
+-;; Operand2 is nonzero if we are using the V.4 calling sequence and
+-;; either the function was not prototyped, or it was prototyped as a
+-;; variable argument function.  It is > 0 if FP registers were passed
+-;; and < 0 if they were not.
++;; Call to indirect functions with the AIX abi using a 3 word descriptor.
++;; Operand0 is the addresss of the function to call
++;; Operand1 is the flag for System V.4 for unprototyped or FP registers
++;; Operand2 is the location in the function descriptor to load r2 from
++;; Operand3 is the stack location to hold the current TOC pointer
+ 
+-(define_insn_and_split "*call_indirect_nonlocal_aix32_internal"
+-  [(call (mem:SI (match_operand:SI 0 "register_operand" "c,*l"))
+-		 (match_operand 1 "" "g,g"))
+-   (use (mem:SI (plus:SI (match_operand:SI 2 "register_operand" "b,b") (const_int 4))))
+-   (use (reg:SI 11))
+-   (use (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
+-   (clobber (reg:SI LR_REGNO))]
+-  "TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
++(define_insn_and_split "call_indirect_aix<ptrsize>"
++  [(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
++	 (match_operand 1 "" "g,g"))
++   (use (match_operand:P 2 "memory_operand" "m,m"))
++   (use (match_operand:P 3 "memory_operand" "m,m"))
++   (use (reg:P STATIC_CHAIN_REGNUM))
++   (clobber (reg:P LR_REGNO))]
++  "DEFAULT_ABI == ABI_AIX && TARGET_R11"
+   "#"
+   "&& reload_completed"
+-  [(set (reg:SI 2)
+-	(mem:SI (plus:SI (match_dup 2) (const_int 4))))
++  [(set (reg:P TOC_REGNUM) (match_dup 2))
+    (parallel [(call (mem:SI (match_dup 0))
+ 		    (match_dup 1))
+-	      (use (reg:SI 2))
+-	      (use (reg:SI 11))
+-	      (set (reg:SI 2)
+-		   (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
+-	      (clobber (reg:SI LR_REGNO))])]
++	      (use (reg:P TOC_REGNUM))
++	      (use (reg:P STATIC_CHAIN_REGNUM))
++	      (use (match_dup 3))
++	      (set (reg:P TOC_REGNUM) (match_dup 3))
++	      (clobber (reg:P LR_REGNO))])]
+   ""
+   [(set_attr "type" "jmpreg")
+    (set_attr "length" "12")])
+ 
+-(define_insn "*call_indirect_nonlocal_aix32"
+-  [(call (mem:SI (match_operand:SI 0 "register_operand" "c,*l"))
++(define_insn "*call_indirect_aix<ptrsize>_internal"
++  [(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
+ 	 (match_operand 1 "" "g,g"))
+-   (use (reg:SI 2))
+-   (use (reg:SI 11))
+-   (set (reg:SI 2)
+-	(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
+-   (clobber (reg:SI LR_REGNO))]
+-  "TARGET_32BIT && DEFAULT_ABI == ABI_AIX && reload_completed"
+-  "b%T0l\;{l|lwz} 2,20(1)"
++   (use (reg:P TOC_REGNUM))
++   (use (reg:P STATIC_CHAIN_REGNUM))
++   (use (match_operand:P 2 "memory_operand" "m,m"))
++   (set (reg:P TOC_REGNUM) (match_dup 2))
++   (clobber (reg:P LR_REGNO))]
++  "DEFAULT_ABI == ABI_AIX && reload_completed && TARGET_R11"
++  "b%T0l\;<ptrload> 2,%2"
+   [(set_attr "type" "jmpreg")
+    (set_attr "length" "8")])
+ 
+-(define_insn "*call_nonlocal_aix32"
+-  [(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
+-	 (match_operand 1 "" "g"))
+-   (use (match_operand:SI 2 "immediate_operand" "O"))
+-   (clobber (reg:SI LR_REGNO))]
+-  "TARGET_32BIT
+-   && DEFAULT_ABI == ABI_AIX
+-   && (INTVAL (operands[2]) & CALL_LONG) == 0"
+-  "bl %z0\;%."
+-  [(set_attr "type" "branch")
+-   (set_attr "length" "8")])
+-   
+-(define_insn_and_split "*call_indirect_nonlocal_aix64_internal"
+-  [(call (mem:SI (match_operand:DI 0 "register_operand" "c,*l"))
+-		 (match_operand 1 "" "g,g"))
+-   (use (mem:DI (plus:DI (match_operand:DI 2 "register_operand" "b,b")
+-			 (const_int 8))))
+-   (use (reg:DI 11))
+-   (use (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
+-   (clobber (reg:SI LR_REGNO))]
+-  "TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
++;; Like call_indirect_aix<ptrsize>, except don't load the static chain
++;; Operand0 is the addresss of the function to call
++;; Operand1 is the flag for System V.4 for unprototyped or FP registers
++;; Operand2 is the location in the function descriptor to load r2 from
++;; Operand3 is the stack location to hold the current TOC pointer
++
++(define_insn_and_split "call_indirect_aix<ptrsize>_nor11"
++  [(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
++	 (match_operand 1 "" "g,g"))
++   (use (match_operand:P 2 "memory_operand" "m,m"))
++   (use (match_operand:P 3 "memory_operand" "m,m"))
++   (clobber (reg:P LR_REGNO))]
++  "DEFAULT_ABI == ABI_AIX && !TARGET_R11"
+   "#"
+   "&& reload_completed"
+-  [(set (reg:DI 2)
+-	(mem:DI (plus:DI (match_dup 2) (const_int 8))))
++  [(set (reg:P TOC_REGNUM) (match_dup 2))
+    (parallel [(call (mem:SI (match_dup 0))
+ 		    (match_dup 1))
+-	      (use (reg:DI 2))
+-	      (use (reg:DI 11))
+-	      (set (reg:DI 2)
+-		   (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
+-	      (clobber (reg:SI LR_REGNO))])]
++	      (use (reg:P TOC_REGNUM))
++	      (use (match_dup 3))
++	      (set (reg:P TOC_REGNUM) (match_dup 3))
++	      (clobber (reg:P LR_REGNO))])]
+   ""
+   [(set_attr "type" "jmpreg")
+    (set_attr "length" "12")])
+ 
+-(define_insn "*call_indirect_nonlocal_aix64"
+-  [(call (mem:SI (match_operand:DI 0 "register_operand" "c,*l"))
++(define_insn "*call_indirect_aix<ptrsize>_internal2"
++  [(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
+ 	 (match_operand 1 "" "g,g"))
+-   (use (reg:DI 2))
+-   (use (reg:DI 11))
+-   (set (reg:DI 2)
+-	(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
+-   (clobber (reg:SI LR_REGNO))]
+-  "TARGET_64BIT && DEFAULT_ABI == ABI_AIX && reload_completed"
+-  "b%T0l\;ld 2,40(1)"
++   (use (reg:P TOC_REGNUM))
++   (use (match_operand:P 2 "memory_operand" "m,m"))
++   (set (reg:P TOC_REGNUM) (match_dup 2))
++   (clobber (reg:P LR_REGNO))]
++  "DEFAULT_ABI == ABI_AIX && reload_completed && !TARGET_R11"
++  "b%T0l\;<ptrload> 2,%2"
+   [(set_attr "type" "jmpreg")
+    (set_attr "length" "8")])
+ 
+-(define_insn "*call_nonlocal_aix64"
+-  [(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
+-	 (match_operand 1 "" "g"))
+-   (use (match_operand:SI 2 "immediate_operand" "O"))
+-   (clobber (reg:SI LR_REGNO))]
+-  "TARGET_64BIT
+-   && DEFAULT_ABI == ABI_AIX
+-   && (INTVAL (operands[2]) & CALL_LONG) == 0"
+-  "bl %z0\;%."
+-  [(set_attr "type" "branch")
++;; Operand0 is the return result of the function
++;; Operand1 is the addresss of the function to call
++;; Operand2 is the flag for System V.4 for unprototyped or FP registers
++;; Operand3 is the location in the function descriptor to load r2 from
++;; Operand4 is the stack location to hold the current TOC pointer
++
++(define_insn_and_split "call_value_indirect_aix<ptrsize>"
++  [(set (match_operand 0 "" "")
++	(call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
++	      (match_operand 2 "" "g,g")))
++   (use (match_operand:P 3 "memory_operand" "m,m"))
++   (use (match_operand:P 4 "memory_operand" "m,m"))
++   (use (reg:P STATIC_CHAIN_REGNUM))
++   (clobber (reg:P LR_REGNO))]
++  "DEFAULT_ABI == ABI_AIX && TARGET_R11"
++  "#"
++  "&& reload_completed"
++  [(set (reg:P TOC_REGNUM) (match_dup 3))
++   (parallel [(set (match_dup 0)
++		   (call (mem:SI (match_dup 1))
++			 (match_dup 2)))
++	      (use (reg:P TOC_REGNUM))
++	      (use (reg:P STATIC_CHAIN_REGNUM))
++	      (use (match_dup 4))
++	      (set (reg:P TOC_REGNUM) (match_dup 4))
++	      (clobber (reg:P LR_REGNO))])]
++  ""
++  [(set_attr "type" "jmpreg")
++   (set_attr "length" "12")])
++
++(define_insn "*call_value_indirect_aix<ptrsize>_internal"
++  [(set (match_operand 0 "" "")
++	(call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
++	      (match_operand 2 "" "g,g")))
++   (use (reg:P TOC_REGNUM))
++   (use (reg:P STATIC_CHAIN_REGNUM))
++   (use (match_operand:P 3 "memory_operand" "m,m"))
++   (set (reg:P TOC_REGNUM) (match_dup 3))
++   (clobber (reg:P LR_REGNO))]
++  "DEFAULT_ABI == ABI_AIX && reload_completed && TARGET_R11"
++  "b%T1l\;<ptrload> 2,%3"
++  [(set_attr "type" "jmpreg")
+    (set_attr "length" "8")])
+ 
+-(define_insn_and_split "*call_value_indirect_nonlocal_aix32_internal"
++;; Like call_value_indirect_aix<ptrsize>, but don't load the static chain
++;; Operand0 is the return result of the function
++;; Operand1 is the addresss of the function to call
++;; Operand2 is the flag for System V.4 for unprototyped or FP registers
++;; Operand3 is the location in the function descriptor to load r2 from
++;; Operand4 is the stack location to hold the current TOC pointer
++
++(define_insn_and_split "call_value_indirect_aix<ptrsize>_nor11"
+   [(set (match_operand 0 "" "")
+-	(call (mem:SI (match_operand:SI 1 "register_operand" "c,*l"))
+-		      (match_operand 2 "" "g,g")))
+-	(use (mem:SI (plus:SI (match_operand:SI 3 "register_operand" "b,b")
+-			      (const_int 4))))
+-	(use (reg:SI 11))
+-	(use (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
+-	(clobber (reg:SI LR_REGNO))]
+-  "TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
++	(call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
++	      (match_operand 2 "" "g,g")))
++   (use (match_operand:P 3 "memory_operand" "m,m"))
++   (use (match_operand:P 4 "memory_operand" "m,m"))
++   (clobber (reg:P LR_REGNO))]
++  "DEFAULT_ABI == ABI_AIX && !TARGET_R11"
+   "#"
+   "&& reload_completed"
+-  [(set (reg:SI 2)
+-	(mem:SI (plus:SI (match_dup 3) (const_int 4))))
+-   (parallel [(set (match_dup 0) (call (mem:SI (match_dup 1))
+-				       (match_dup 2)))
+-	      (use (reg:SI 2))
+-	      (use (reg:SI 11))
+-	      (set (reg:SI 2)
+-		   (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
+-	      (clobber (reg:SI LR_REGNO))])]
++  [(set (reg:P TOC_REGNUM) (match_dup 3))
++   (parallel [(set (match_dup 0)
++		   (call (mem:SI (match_dup 1))
++			 (match_dup 2)))
++	      (use (reg:P TOC_REGNUM))
++	      (use (match_dup 4))
++	      (set (reg:P TOC_REGNUM) (match_dup 4))
++	      (clobber (reg:P LR_REGNO))])]
+   ""
+   [(set_attr "type" "jmpreg")
+    (set_attr "length" "12")])
+ 
+-(define_insn "*call_value_indirect_nonlocal_aix32"
++(define_insn "*call_value_indirect_aix<ptrsize>_internal2"
+   [(set (match_operand 0 "" "")
+-	(call (mem:SI (match_operand:SI 1 "register_operand" "c,*l"))
++	(call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
+ 	      (match_operand 2 "" "g,g")))
+-   (use (reg:SI 2))
+-   (use (reg:SI 11))
+-   (set (reg:SI 2)
+-	(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
+-   (clobber (reg:SI LR_REGNO))]
+-  "TARGET_32BIT && DEFAULT_ABI == ABI_AIX && reload_completed"
+-  "b%T1l\;{l|lwz} 2,20(1)"
++   (use (reg:P TOC_REGNUM))
++   (use (match_operand:P 3 "memory_operand" "m,m"))
++   (set (reg:P TOC_REGNUM) (match_dup 3))
++   (clobber (reg:P LR_REGNO))]
++  "DEFAULT_ABI == ABI_AIX && reload_completed && !TARGET_R11"
++  "b%T1l\;<ptrload> 2,%3"
+   [(set_attr "type" "jmpreg")
+    (set_attr "length" "8")])
+ 
++;; Call to function which may be in another module.  Restore the TOC
++;; pointer (r2) after the call unless this is System V.
++;; Operand2 is nonzero if we are using the V.4 calling sequence and
++;; either the function was not prototyped, or it was prototyped as a
++;; variable argument function.  It is > 0 if FP registers were passed
++;; and < 0 if they were not.
++
++(define_insn "*call_nonlocal_aix32"
++  [(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
++	 (match_operand 1 "" "g"))
++   (use (match_operand:SI 2 "immediate_operand" "O"))
++   (clobber (reg:SI LR_REGNO))]
++  "TARGET_32BIT
++   && DEFAULT_ABI == ABI_AIX
++   && (INTVAL (operands[2]) & CALL_LONG) == 0"
++  "bl %z0\;%."
++  [(set_attr "type" "branch")
++   (set_attr "length" "8")])
++   
++(define_insn "*call_nonlocal_aix64"
++  [(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
++	 (match_operand 1 "" "g"))
++   (use (match_operand:SI 2 "immediate_operand" "O"))
++   (clobber (reg:SI LR_REGNO))]
++  "TARGET_64BIT
++   && DEFAULT_ABI == ABI_AIX
++   && (INTVAL (operands[2]) & CALL_LONG) == 0"
++  "bl %z0\;%."
++  [(set_attr "type" "branch")
++   (set_attr "length" "8")])
++
+ (define_insn "*call_value_nonlocal_aix32"
+   [(set (match_operand 0 "" "")
+ 	(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
+@@ -12581,45 +12582,6 @@
+   [(set_attr "type" "branch")
+    (set_attr "length" "8")])
+ 
+-(define_insn_and_split "*call_value_indirect_nonlocal_aix64_internal"
+-  [(set (match_operand 0 "" "")
+-	(call (mem:SI (match_operand:DI 1 "register_operand" "c,*l"))
+-		      (match_operand 2 "" "g,g")))
+-	(use (mem:DI (plus:DI (match_operand:DI 3 "register_operand" "b,b")
+-			      (const_int 8))))
+-	(use (reg:DI 11))
+-	(use (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
+-	(clobber (reg:SI LR_REGNO))]
+-  "TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
+-  "#"
+-  "&& reload_completed"
+-  [(set (reg:DI 2)
+-	(mem:DI (plus:DI (match_dup 3) (const_int 8))))
+-   (parallel [(set (match_dup 0) (call (mem:SI (match_dup 1))
+-				       (match_dup 2)))
+-	      (use (reg:DI 2))
+-	      (use (reg:DI 11))
+-	      (set (reg:DI 2)
+-		   (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
+-	      (clobber (reg:SI LR_REGNO))])]
+-  ""
+-  [(set_attr "type" "jmpreg")
+-   (set_attr "length" "12")])
+-
+-(define_insn "*call_value_indirect_nonlocal_aix64"
+-  [(set (match_operand 0 "" "")
+-	(call (mem:SI (match_operand:DI 1 "register_operand" "c,*l"))
+-	      (match_operand 2 "" "g,g")))
+-   (use (reg:DI 2))
+-   (use (reg:DI 11))
+-   (set (reg:DI 2)
+-	(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
+-   (clobber (reg:SI LR_REGNO))]
+-  "TARGET_64BIT && DEFAULT_ABI == ABI_AIX && reload_completed"
+-  "b%T1l\;ld 2,40(1)"
+-  [(set_attr "type" "jmpreg")
+-   (set_attr "length" "8")])
+-
+ (define_insn "*call_value_nonlocal_aix64"
+   [(set (match_operand 0 "" "")
+ 	(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
+Index: gcc/stmt.c
+===================================================================
+--- a/src/gcc/stmt.c	(.../gcc-4_6-branch)
++++ b/src/gcc/stmt.c	(.../ibm/gcc-4_6-branch)
+@@ -53,6 +53,7 @@
+ #include "alloc-pool.h"
+ #include "pretty-print.h"
+ #include "bitmap.h"
++#include "params.h"
+ 
+ 
+ /* Functions and data structures for expanding case statements.  */
+@@ -2270,6 +2271,20 @@
+ 	      || (uniq == 3 && count >= 6)));
+ }
+ 
++/* Return the smallest number of different values for which it is best to use a
++   jump-table instead of a tree of conditional branches.  */
++
++static unsigned int
++case_values_threshold (void)
++{
++  unsigned int threshold = PARAM_VALUE (PARAM_CASE_VALUES_THRESHOLD);
++
++  if (threshold == 0)
++    threshold = targetm.case_values_threshold ();
++
++  return threshold;
++}
++
+ /* Terminate a case (Pascal/Ada) or switch (C) statement
+    in which ORIG_INDEX is the expression to be tested.
+    If ORIG_TYPE is not NULL, it is the original ORIG_INDEX
+@@ -2424,7 +2439,7 @@
+ 	 If the switch-index is a constant, do it this way
+ 	 because we can optimize it.  */
+ 
+-      else if (count < targetm.case_values_threshold ()
++      else if (count < case_values_threshold ()
+ 	       || compare_tree_int (range,
+ 				    (optimize_insn_for_size_p () ? 3 : 10) * count) > 0
+ 	       /* RANGE may be signed, and really large ranges will show up
+Index: gcc/params.def
+===================================================================
+--- a/src/gcc/params.def	(.../gcc-4_6-branch)
++++ b/src/gcc/params.def	(.../ibm/gcc-4_6-branch)
+@@ -883,6 +883,16 @@
+ 	  "name lookup fails",
+ 	  1000, 0, 0)
+ 
++/* Override CASE_VALUES_THRESHOLD of when to switch from doing switch
++   statements via if statements to using a table jump operation.  If the value
++   is 0, the default CASE_VALUES_THRESHOLD will be used.  */
++DEFPARAM (PARAM_CASE_VALUES_THRESHOLD,
++          "case-values-threshold",
++          "The smallest number of different values for which it is best to "
++	  "use a jump-table instead of a tree of conditional branches, "
++	  "if 0, use the default for the machine",
++          0, 0, 0)
++
+ /*
+ Local variables:
+ mode:c
+Index: libcpp/ChangeLog.ibm
+===================================================================
+--- a/src/libcpp/ChangeLog.ibm	(.../gcc-4_6-branch)
++++ b/src/libcpp/ChangeLog.ibm	(.../ibm/gcc-4_6-branch)
+@@ -0,0 +1,10 @@
++2011-04-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Merge up to 173137.
++
++2011-03-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++	Branch from gcc-4_6-branch, subversion id 171614.
++
++
++
+
+Property changes on: .
+___________________________________________________________________
+Modified: svn:mergeinfo
+   Merged /branches/gcc-4_6-branch:r171610-175885
+Added: svnmerge-integrated
+   + /branches/gcc-4_6-branch:1-175885
+
--- gcc-4.6-4.6.3.orig/debian/patches/armhf-triplet-trunk.diff
+++ gcc-4.6-4.6.3/debian/patches/armhf-triplet-trunk.diff
@@ -0,0 +1,104 @@
+# DP: add support for arm-linux-*eabi* triplets; useful for armhf
+
+--- a/src/libjava/configure.ac.orig
++++ b/src/libjava/configure.ac
+@@ -924,7 +924,7 @@
+     # on Darwin -single_module speeds up loading of the dynamic libraries.
+     extra_ldflags_libjava=-Wl,-single_module
+     ;;
+-arm*linux*eabi)
++arm*-*-linux-*eabi*)
+     # Some of the ARM unwinder code is actually in libstdc++.  We
+     # could in principle replicate it in libgcj, but it's better to
+     # have a dependency on libstdc++.
+--- a/src/gcc/config.gcc.orig
++++ b/src/gcc/config.gcc
+@@ -822,7 +822,7 @@
+ 	esac
+ 	tmake_file="${tmake_file} t-linux arm/t-arm"
+ 	case ${target} in
+-	arm*-*-linux-*eabi)
++	arm*-*-linux-*eabi*)
+ 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
+ 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
+ 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
+@@ -850,7 +850,7 @@
+ 	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
+ 	tmake_file="arm/t-arm arm/t-arm-elf"
+ 	case ${target} in
+-	arm*-*-uclinux*eabi)
++	arm*-*-uclinux*eabi*)
+ 	    tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
+ 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
+ 	    tmake_file="$tmake_file arm/t-bpabi"
+--- a/src/gcc/testsuite/lib/target-supports.exp.orig
++++ b/src/gcc/testsuite/lib/target-supports.exp
+@@ -3235,7 +3235,7 @@
+ 	     || [istarget i?86-*-*]
+ 	     || [istarget x86_64-*-*]
+ 	     || [istarget alpha*-*-*] 
+-	     || [istarget arm*-*-linux-gnueabi] 
++	     || [istarget arm*-*-linux-*eabi*] 
+ 	     || [istarget bfin*-*linux*]
+ 	     || [istarget hppa*-*linux*]
+ 	     || [istarget s390*-*-*] 
+@@ -3266,7 +3266,7 @@
+ 	     || [istarget i?86-*-*]
+ 	     || [istarget x86_64-*-*]
+ 	     || [istarget alpha*-*-*] 
+-	     || [istarget arm*-*-linux-gnueabi] 
++	     || [istarget arm*-*-linux-*eabi*] 
+ 	     || [istarget hppa*-*linux*]
+ 	     || [istarget s390*-*-*] 
+ 	     || [istarget powerpc*-*-*]
+--- a/src/gcc/ada/gcc-interface/Makefile.in.orig
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1846,7 +1846,7 @@
+   LIBRARY_VERSION := $(LIB_VERSION)
+ endif
+ 
+-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),)
++ifeq ($(strip $(filter-out arm%-linux,$(arch)-$(osys)) $(if $(findstring eabi,$(word 4,$(targ))),,$(word 4,$(targ)))),)
+   LIBGNAT_TARGET_PAIRS = \
+   a-intnam.ads<a-intnam-linux.ads \
+   s-inmaop.adb<s-inmaop-posix.adb \
+--- a/src/libstdc++-v3/configure.host.orig
++++ b/src/libstdc++-v3/configure.host
+@@ -322,7 +322,7 @@
+         fi
+     esac
+     case "${host}" in
+-      arm*-*-linux-*eabi)
++      arm*-*-linux-*eabi*)
+ 	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
+ 	;;
+     esac
+--- a/src/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc.orig
++++ b/src/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
+@@ -1,5 +1,5 @@
+ // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
+-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
++// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } }
+ 
+ // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
+ //
+--- a/src/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc.orig
++++ b/src/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
+@@ -1,5 +1,5 @@
+ // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
+-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
++// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } }
+ 
+ // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
+ //
+--- a/src/libgcc/config.host
++++ b/src/libgcc/config.host
+@@ -334,7 +334,7 @@
+ arm*-*-linux*)			# ARM GNU/Linux with ELF
+ 	tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix"
+ 	case ${host} in
+-	arm*-*-linux-*eabi)
++	arm*-*-linux-*eabi*)
+ 	  tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
+ 	  tm_file="$tm_file arm/bpabi-lib.h"
+ 	  unwind_header=config/arm/unwind-arm.h
--- gcc-4.6-4.6.3.orig/debian/patches/ada-gcc-name.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-gcc-name.diff
@@ -0,0 +1,112 @@
+# DP: use gcc-4.6 instead of gcc as the command name.
+
+Index: b/src/gcc/ada/comperr.adb
+===================================================================
+--- a/src/gcc/ada/comperr.adb
++++ b/src/gcc/ada/comperr.adb
+@@ -356,7 +356,7 @@
+                End_Line;
+ 
+                Write_Str
+-                 ("| Include the exact gcc or gnatmake command " &
++                 ("| Include the exact gcc-4.6 or gnatmake command " &
+                   "that you entered.");
+                End_Line;
+ 
+Index: b/src/gcc/ada/gnatlink.adb
+===================================================================
+--- a/src/gcc/ada/gnatlink.adb
++++ b/src/gcc/ada/gnatlink.adb
+@@ -137,7 +137,7 @@
+    --  This table collects the arguments to be passed to compile the binder
+    --  generated file.
+ 
+-   Gcc : String_Access := Program_Name ("gcc", "gnatlink");
++   Gcc : String_Access := Program_Name ("gcc-4.6", "gnatlink");
+ 
+    Read_Mode : constant String := "r" & ASCII.NUL;
+ 
+@@ -1411,7 +1411,8 @@
+       end if;
+ 
+       Write_Line ("  --GCC=comp Use comp as the compiler");
+-      Write_Line ("  --LINK=nam Use 'nam' for the linking rather than 'gcc'");
++      Write_Line ("  --LINK=nam Use 'nam' for the linking rather " &
++                  "than 'gcc-4.6'");
+       Write_Eol;
+       Write_Line ("  [non-Ada-objects]  list of non Ada object files");
+       Write_Line ("  [linker-options]   other options for the linker");
+Index: b/src/gcc/ada/make.adb
+===================================================================
+--- a/src/gcc/ada/make.adb
++++ b/src/gcc/ada/make.adb
+@@ -670,7 +670,7 @@
+    -- Compiler, Binder & Linker Data and Subprograms --
+    ----------------------------------------------------
+ 
+-   Gcc      : String_Access := Program_Name ("gcc", "gnatmake");
++   Gcc      : String_Access := Program_Name ("gcc-4.6", "gnatmake");
+    Gnatbind : String_Access := Program_Name ("gnatbind", "gnatmake");
+    Gnatlink : String_Access := Program_Name ("gnatlink", "gnatmake");
+    --  Default compiler, binder, linker programs
+Index: b/src/gcc/ada/gnatchop.adb
+===================================================================
+--- a/src/gcc/ada/gnatchop.adb
++++ b/src/gcc/ada/gnatchop.adb
+@@ -44,7 +44,7 @@
+    Config_File_Name : constant String_Access := new String'("gnat.adc");
+    --  The name of the file holding the GNAT configuration pragmas
+ 
+-   Gcc : String_Access := new String'("gcc");
++   Gcc : String_Access := new String'("gcc-4.6");
+    --  May be modified by switch --GCC=
+ 
+    Gcc_Set : Boolean := False;
+Index: b/src/gcc/ada/mdll-utl.adb
+===================================================================
+--- a/src/gcc/ada/mdll-utl.adb
++++ b/src/gcc/ada/mdll-utl.adb
+@@ -39,7 +39,7 @@
+    Dlltool_Name  : constant String := "dlltool";
+    Dlltool_Exec  : OS_Lib.String_Access;
+ 
+-   Gcc_Name      : constant String := "gcc";
++   Gcc_Name      : constant String := "gcc-4.6";
+    Gcc_Exec      : OS_Lib.String_Access;
+ 
+    Gnatbind_Name : constant String := "gnatbind";
+@@ -212,7 +212,7 @@
+          end;
+       end if;
+ 
+-      Print_Command ("gcc", Arguments (1 .. A));
++      Print_Command ("gcc-4.6", Arguments (1 .. A));
+ 
+       OS_Lib.Spawn (Gcc_Exec.all, Arguments (1 .. A), Success);
+ 
+Index: b/src/gcc/ada/mlib-utl.adb
+===================================================================
+--- a/src/gcc/ada/mlib-utl.adb
++++ b/src/gcc/ada/mlib-utl.adb
+@@ -412,7 +412,7 @@
+       if Driver_Name = No_Name then
+          if Gcc_Exec = null then
+             if Gcc_Name = null then
+-               Gcc_Name := Osint.Program_Name ("gcc", "gnatmake");
++               Gcc_Name := Osint.Program_Name ("gcc-4.6", "gnatmake");
+             end if;
+ 
+             Gcc_Exec := Locate_Exec_On_Path (Gcc_Name.all);
+Index: b/src/gcc/ada/prj-makr.adb
+===================================================================
+--- a/src/gcc/ada/prj-makr.adb
++++ b/src/gcc/ada/prj-makr.adb
+@@ -109,7 +109,7 @@
+ 
+    procedure Dup2 (Old_Fd, New_Fd : File_Descriptor);
+ 
+-   Gcc      : constant String := "gcc";
++   Gcc      : constant String := "gcc-4.6";
+    Gcc_Path : String_Access := null;
+ 
+    Non_Empty_Node : constant Project_Node_Id := 1;
--- gcc-4.6-4.6.3.orig/debian/patches/m68k-ada.diff
+++ gcc-4.6-4.6.3/debian/patches/m68k-ada.diff
@@ -0,0 +1,257 @@
+gcc/ada/
+
+2011-10-12  Mikael Pettersson  <mikpe@it.uu.se>
+
+	PR ada/48835
+	* gcc-interface/Makefile.in: Add support for m68k-linux.
+	* system-linux-m68k.ads: New file based on system-linux-ppc.ads
+	and system-vxworks-m68k.ads.
+	* s-memory.adb (Gnat_Malloc): New wrapper around Alloc, returning
+	the memory address as a pointer not an integer.
+	Add Gnat_Malloc -> __gnat_malloc export.
+	* s-memory.ads: Remove Alloc -> __gnat_malloc export.
+
+Index: gcc-4.6-4.6.3/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- gcc-4.6-4.6.3.orig/src/gcc/ada/gcc-interface/Makefile.in	2012-03-04 16:06:01.000000000 +0000
++++ gcc-4.6-4.6.3/src/gcc/ada/gcc-interface/Makefile.in	2012-03-04 16:06:49.000000000 +0000
+@@ -1871,6 +1871,34 @@
+   LIBRARY_VERSION := $(LIB_VERSION)
+ endif
+ 
++ifeq ($(strip $(filter-out m68k% linux%,$(arch) $(osys))),)
++  LIBGNAT_TARGET_PAIRS = \
++  a-intnam.ads<a-intnam-linux.ads \
++  s-inmaop.adb<s-inmaop-posix.adb \
++  s-intman.adb<s-intman-posix.adb \
++  s-linux.ads<s-linux.ads \
++  s-osinte.adb<s-osinte-posix.adb \
++  s-osinte.ads<s-osinte-linux.ads \
++  s-osprim.adb<s-osprim-posix.adb \
++  s-taprop.adb<s-taprop-linux.adb \
++  s-tasinf.ads<s-tasinf-linux.ads \
++  s-tasinf.adb<s-tasinf-linux.adb \
++  s-taspri.ads<s-taspri-posix-noaltstack.ads \
++  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
++  system.ads<system-linux-m68k.ads
++
++  TOOLS_TARGET_PAIRS =  \
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
++    indepsw.adb<indepsw-gnu.adb
++
++  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
++  EH_MECHANISM=-gcc
++  THREADSLIB = -lpthread
++  GNATLIB_SHARED = gnatlib-shared-dual
++  GMEM_LIB = gmemlib
++  LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
+ ifeq ($(strip $(filter-out sparc% linux%,$(arch) $(osys))),)
+   LIBGNAT_TARGET_PAIRS_COMMON = \
+   a-intnam.ads<a-intnam-linux.ads \
+Index: gcc-4.6-4.6.3/src/gcc/ada/s-memory.adb
+===================================================================
+--- gcc-4.6-4.6.3.orig/src/gcc/ada/s-memory.adb	2012-03-04 16:06:01.000000000 +0000
++++ gcc-4.6-4.6.3/src/gcc/ada/s-memory.adb	2012-03-04 16:06:49.000000000 +0000
+@@ -47,6 +47,7 @@
+ with System.Soft_Links;
+ with System.Parameters;
+ with System.CRTL;
++with Ada.Unchecked_Conversion;
+ 
+ package body System.Memory is
+ 
+@@ -100,6 +101,22 @@
+       return Result;
+    end Alloc;
+ 
++   type Char_Ptr is access all Character;
++   pragma Convention (C, Char_Ptr);
++   pragma No_Strict_Aliasing (Char_Ptr);
++
++   function To_Char_Ptr is
++      new Ada.Unchecked_Conversion (System.Address, Char_Ptr);
++
++   --  The function exported as __gnat_malloc MUST return a pointer type.
++   function Gnat_Malloc (Size : size_t) return Char_Ptr;
++   pragma Export (C, Gnat_Malloc, "__gnat_malloc");
++
++   function Gnat_Malloc (Size : size_t) return Char_Ptr is
++   begin
++      return To_Char_Ptr (Alloc (Size));
++   end Gnat_Malloc;
++
+    ----------
+    -- Free --
+    ----------
+Index: gcc-4.6-4.6.3/src/gcc/ada/s-memory.ads
+===================================================================
+--- gcc-4.6-4.6.3.orig/src/gcc/ada/s-memory.ads	2012-03-04 16:06:01.000000000 +0000
++++ gcc-4.6-4.6.3/src/gcc/ada/s-memory.ads	2012-03-04 16:06:49.000000000 +0000
+@@ -100,7 +100,6 @@
+ 
+    --  The following names are used from the generated compiler code
+ 
+-   pragma Export (C, Alloc,   "__gnat_malloc");
+    pragma Export (C, Free,    "__gnat_free");
+    pragma Export (C, Realloc, "__gnat_realloc");
+ 
+Index: gcc-4.6-4.6.3/src/gcc/ada/system-linux-m68k.ads
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ gcc-4.6-4.6.3/src/gcc/ada/system-linux-m68k.ads	2012-03-04 16:06:49.000000000 +0000
+@@ -0,0 +1,153 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                        GNAT RUN-TIME COMPONENTS                          --
++--                                                                          --
++--                               S Y S T E M                                --
++--                                                                          --
++--                                 S p e c                                  --
++--                         (GNU-Linux/M68K Version)                         --
++--                                                                          --
++--          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
++--                                                                          --
++-- This specification is derived from the Ada Reference Manual for use with --
++-- GNAT. The copyright notice above, and the license provisions that follow --
++-- apply solely to the  contents of the part following the private keyword. --
++--                                                                          --
++-- GNAT is free software;  you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
++-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
++-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
++-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
++--                                                                          --
++-- As a special exception under Section 7 of GPL version 3, you are granted --
++-- additional permissions described in the GCC Runtime Library Exception,   --
++-- version 3.1, as published by the Free Software Foundation.               --
++--                                                                          --
++-- You should have received a copy of the GNU General Public License and    --
++-- a copy of the GCC Runtime Library Exception along with this program;     --
++-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
++-- <http://www.gnu.org/licenses/>.                                          --
++--                                                                          --
++-- GNAT was originally developed  by the GNAT team at  New York University. --
++-- Extensive contributions were provided by Ada Core Technologies Inc.      --
++--                                                                          --
++------------------------------------------------------------------------------
++
++package System is
++   pragma Pure;
++   --  Note that we take advantage of the implementation permission to make
++   --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
++   --  2005, this is Pure in any case (AI-362).
++
++   type Name is (SYSTEM_NAME_GNAT);
++   System_Name : constant Name := SYSTEM_NAME_GNAT;
++
++   --  System-Dependent Named Numbers
++
++   Min_Int               : constant := Long_Long_Integer'First;
++   Max_Int               : constant := Long_Long_Integer'Last;
++
++   Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
++   Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
++
++   Max_Base_Digits       : constant := Long_Long_Float'Digits;
++   Max_Digits            : constant := Long_Long_Float'Digits;
++
++   Max_Mantissa          : constant := 63;
++   Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
++
++   Tick                  : constant := 0.000_001;
++
++   --  Storage-related Declarations
++
++   type Address is private;
++   pragma Preelaborable_Initialization (Address);
++   Null_Address : constant Address;
++
++   Storage_Unit : constant := 8;
++   Word_Size    : constant := 32;
++   Memory_Size  : constant := 2 ** 32;
++
++   --  Address comparison
++
++   function "<"  (Left, Right : Address) return Boolean;
++   function "<=" (Left, Right : Address) return Boolean;
++   function ">"  (Left, Right : Address) return Boolean;
++   function ">=" (Left, Right : Address) return Boolean;
++   function "="  (Left, Right : Address) return Boolean;
++
++   pragma Import (Intrinsic, "<");
++   pragma Import (Intrinsic, "<=");
++   pragma Import (Intrinsic, ">");
++   pragma Import (Intrinsic, ">=");
++   pragma Import (Intrinsic, "=");
++
++   --  Other System-Dependent Declarations
++
++   type Bit_Order is (High_Order_First, Low_Order_First);
++   Default_Bit_Order : constant Bit_Order := High_Order_First;
++   pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
++
++   --  Priority-related Declarations (RM D.1)
++
++   --  0 .. 98 corresponds to the system priority range 1 .. 99.
++   --
++   --  If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use
++   --  of the entire range provided by the system.
++   --
++   --  If the scheduling policy is SCHED_OTHER the only valid system priority
++   --  is 1 and other values are simply ignored.
++
++   Max_Priority           : constant Positive := 97;
++   Max_Interrupt_Priority : constant Positive := 98;
++
++   subtype Any_Priority       is Integer      range  0 .. 98;
++   subtype Priority           is Any_Priority range  0 .. 97;
++   subtype Interrupt_Priority is Any_Priority range 98 .. 98;
++
++   Default_Priority : constant Priority := 48;
++
++private
++
++   type Address is mod Memory_Size;
++   Null_Address : constant Address := 0;
++
++   --------------------------------------
++   -- System Implementation Parameters --
++   --------------------------------------
++
++   --  These parameters provide information about the target that is used
++   --  by the compiler. They are in the private part of System, where they
++   --  can be accessed using the special circuitry in the Targparm unit
++   --  whose source should be consulted for more detailed descriptions
++   --  of the individual switch values.
++
++   Backend_Divide_Checks     : constant Boolean := False;
++   Backend_Overflow_Checks   : constant Boolean := True;
++   Command_Line_Args         : constant Boolean := True;
++   Configurable_Run_Time     : constant Boolean := False;
++   Denorm                    : constant Boolean := True;
++   Duration_32_Bits          : constant Boolean := False;
++   Exit_Status_Supported     : constant Boolean := True;
++   Fractional_Fixed_Ops      : constant Boolean := False;
++   Frontend_Layout           : constant Boolean := False;
++   Machine_Overflows         : constant Boolean := False;
++   Machine_Rounds            : constant Boolean := True;
++   Preallocated_Stacks       : constant Boolean := False;
++   Signed_Zeros              : constant Boolean := False;
++   Stack_Check_Default       : constant Boolean := False;
++   Stack_Check_Probes        : constant Boolean := False;
++   Stack_Check_Limits        : constant Boolean := False;
++   Support_64_Bit_Divides    : constant Boolean := True;
++   Support_Aggregates        : constant Boolean := True;
++   Support_Composite_Assign  : constant Boolean := True;
++   Support_Composite_Compare : constant Boolean := True;
++   Support_Long_Shifts       : constant Boolean := True;
++   Always_Compatible_Rep     : constant Boolean := True;
++   Suppress_Standard_Library : constant Boolean := False;
++   Use_Ada_Main_Program_Name : constant Boolean := False;
++   ZCX_By_Default            : constant Boolean := True;
++   GCC_ZCX_Support           : constant Boolean := True;
++
++end System;
--- gcc-4.6-4.6.3.orig/debian/patches/pr49030.diff
+++ gcc-4.6-4.6.3/debian/patches/pr49030.diff
@@ -0,0 +1,425 @@
+# DP: Fix PR target/49030 (ARM), taken from Linaro
+
+2011-10-03  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	gcc/
+	Backport from mainline:
+
+	2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	* config/arm/predicates.md (expandable_comparison_operator): New
+	predicate, extracted from...
+	(arm_comparison_operator): ...here.
+	* config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
+	(cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
+	(movdfcc): Use expandable_comparison_operator.
+
+	gcc/testsuite/
+	Backport from mainline:
+
+	2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	* gcc.target/arm/cmp-1.c: New test.
+	* gcc.target/arm/cmp-2.c: Likewise.
+
+2011-10-03  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	gcc/
+	Backport from mainline:
+
+	2011-09-07  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	PR target/49030
+	* config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
+	* config/arm/arm.c (maybe_get_arm_condition_code): New function,
+	reusing the old code from get_arm_condition_code.  Return ARM_NV
+	for invalid comparison codes.
+	(get_arm_condition_code): Redefine in terms of
+	maybe_get_arm_condition_code.
+	* config/arm/predicates.md (arm_comparison_operator): Use
+	maybe_get_arm_condition_code.
+
+	gcc/testsuite/
+	Backport from mainline:
+
+	2011-09-07  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	PR target/49030
+	* gcc.dg/torture/pr49030.c: New test.
+
+=== modified file 'gcc/config/arm/arm-protos.h'
+--- a/src/gcc/config/arm/arm-protos.h
++++ b/src/gcc/config/arm/arm-protos.h
+@@ -175,6 +175,7 @@
+ #endif
+ extern int thumb_shiftable_const (unsigned HOST_WIDE_INT);
+ #ifdef RTX_CODE
++extern enum arm_cond_code maybe_get_arm_condition_code (rtx);
+ extern void thumb1_final_prescan_insn (rtx);
+ extern void thumb2_final_prescan_insn (rtx);
+ extern const char *thumb_load_double_from_address (rtx *);
+--- a/src/gcc/config/arm/arm.c
++++ b/src/gcc/config/arm/arm.c
+@@ -17032,10 +17032,10 @@
+    decremented/zeroed by arm_asm_output_opcode as the insns are output.  */
+ 
+ /* Returns the index of the ARM condition code string in
+-   `arm_condition_codes'.  COMPARISON should be an rtx like
+-   `(eq (...) (...))'.  */
+-static enum arm_cond_code
+-get_arm_condition_code (rtx comparison)
++   `arm_condition_codes', or ARM_NV if the comparison is invalid.
++   COMPARISON should be an rtx like `(eq (...) (...))'.  */
++enum arm_cond_code
++maybe_get_arm_condition_code (rtx comparison)
+ {
+   enum machine_mode mode = GET_MODE (XEXP (comparison, 0));
+   enum arm_cond_code code;
+@@ -17059,11 +17059,11 @@
+     case CC_DLTUmode: code = ARM_CC;
+ 
+     dominance:
+-      gcc_assert (comp_code == EQ || comp_code == NE);
+-
+       if (comp_code == EQ)
+ 	return ARM_INVERSE_CONDITION_CODE (code);
+-      return code;
++      if (comp_code == NE)
++	return code;
++      return ARM_NV;
+ 
+     case CC_NOOVmode:
+       switch (comp_code)
+@@ -17072,7 +17072,7 @@
+ 	case EQ: return ARM_EQ;
+ 	case GE: return ARM_PL;
+ 	case LT: return ARM_MI;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_Zmode:
+@@ -17080,7 +17080,7 @@
+ 	{
+ 	case NE: return ARM_NE;
+ 	case EQ: return ARM_EQ;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_Nmode:
+@@ -17088,7 +17088,7 @@
+ 	{
+ 	case NE: return ARM_MI;
+ 	case EQ: return ARM_PL;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CCFPEmode:
+@@ -17113,7 +17113,7 @@
+ 	  /* UNEQ and LTGT do not have a representation.  */
+ 	case UNEQ: /* Fall through.  */
+ 	case LTGT: /* Fall through.  */
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_SWPmode:
+@@ -17129,7 +17129,7 @@
+ 	case GTU: return ARM_CC;
+ 	case LEU: return ARM_CS;
+ 	case LTU: return ARM_HI;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_Cmode:
+@@ -17137,7 +17137,7 @@
+ 	{
+ 	case LTU: return ARM_CS;
+ 	case GEU: return ARM_CC;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_CZmode:
+@@ -17149,7 +17149,7 @@
+ 	case GTU: return ARM_HI;
+ 	case LEU: return ARM_LS;
+ 	case LTU: return ARM_CC;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CC_NCVmode:
+@@ -17159,7 +17159,7 @@
+ 	case LT: return ARM_LT;
+ 	case GEU: return ARM_CS;
+ 	case LTU: return ARM_CC;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     case CCmode:
+@@ -17175,13 +17175,22 @@
+ 	case GTU: return ARM_HI;
+ 	case LEU: return ARM_LS;
+ 	case LTU: return ARM_CC;
+-	default: gcc_unreachable ();
++	default: return ARM_NV;
+ 	}
+ 
+     default: gcc_unreachable ();
+     }
+ }
+ 
++/* Like maybe_get_arm_condition_code, but never return ARM_NV.  */
++static enum arm_cond_code
++get_arm_condition_code (rtx comparison)
++{
++  enum arm_cond_code code = maybe_get_arm_condition_code (comparison);
++  gcc_assert (code != ARM_NV);
++  return code;
++}
++
+ /* Tell arm_asm_output_opcode to output IT blocks for conditionally executed
+    instructions.  */
+ void
+--- a/src/gcc/config/arm/arm.md
++++ b/src/gcc/config/arm/arm.md
+@@ -6467,7 +6467,7 @@
+ 
+ (define_expand "cbranchsi4"
+   [(set (pc) (if_then_else
+-	      (match_operator 0 "arm_comparison_operator"
++	      (match_operator 0 "expandable_comparison_operator"
+ 	       [(match_operand:SI 1 "s_register_operand" "")
+ 	        (match_operand:SI 2 "nonmemory_operand" "")])
+ 	      (label_ref (match_operand 3 "" ""))
+@@ -6518,7 +6518,7 @@
+ 
+ (define_expand "cbranchsf4"
+   [(set (pc) (if_then_else
+-	      (match_operator 0 "arm_comparison_operator"
++	      (match_operator 0 "expandable_comparison_operator"
+ 	       [(match_operand:SF 1 "s_register_operand" "")
+ 	        (match_operand:SF 2 "arm_float_compare_operand" "")])
+ 	      (label_ref (match_operand 3 "" ""))
+@@ -6530,7 +6530,7 @@
+ 
+ (define_expand "cbranchdf4"
+   [(set (pc) (if_then_else
+-	      (match_operator 0 "arm_comparison_operator"
++	      (match_operator 0 "expandable_comparison_operator"
+ 	       [(match_operand:DF 1 "s_register_operand" "")
+ 	        (match_operand:DF 2 "arm_float_compare_operand" "")])
+ 	      (label_ref (match_operand 3 "" ""))
+@@ -6542,7 +6542,7 @@
+ 
+ (define_expand "cbranchdi4"
+   [(set (pc) (if_then_else
+-	      (match_operator 0 "arm_comparison_operator"
++	      (match_operator 0 "expandable_comparison_operator"
+ 	       [(match_operand:DI 1 "cmpdi_operand" "")
+ 	        (match_operand:DI 2 "cmpdi_operand" "")])
+ 	      (label_ref (match_operand 3 "" ""))
+@@ -7379,7 +7379,7 @@
+ 
+ (define_expand "cstoresi4"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(match_operator:SI 1 "arm_comparison_operator"
++	(match_operator:SI 1 "expandable_comparison_operator"
+ 	 [(match_operand:SI 2 "s_register_operand" "")
+ 	  (match_operand:SI 3 "reg_or_int_operand" "")]))]
+   "TARGET_32BIT || TARGET_THUMB1"
+@@ -7515,7 +7515,7 @@
+ 
+ (define_expand "cstoresf4"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(match_operator:SI 1 "arm_comparison_operator"
++	(match_operator:SI 1 "expandable_comparison_operator"
+ 	 [(match_operand:SF 2 "s_register_operand" "")
+ 	  (match_operand:SF 3 "arm_float_compare_operand" "")]))]
+   "TARGET_32BIT && TARGET_HARD_FLOAT"
+@@ -7525,7 +7525,7 @@
+ 
+ (define_expand "cstoredf4"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(match_operator:SI 1 "arm_comparison_operator"
++	(match_operator:SI 1 "expandable_comparison_operator"
+ 	 [(match_operand:DF 2 "s_register_operand" "")
+ 	  (match_operand:DF 3 "arm_float_compare_operand" "")]))]
+   "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
+@@ -7535,7 +7535,7 @@
+ 
+ (define_expand "cstoredi4"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(match_operator:SI 1 "arm_comparison_operator"
++	(match_operator:SI 1 "expandable_comparison_operator"
+ 	 [(match_operand:DI 2 "cmpdi_operand" "")
+ 	  (match_operand:DI 3 "cmpdi_operand" "")]))]
+   "TARGET_32BIT"
+@@ -7655,7 +7655,7 @@
+ 
+ (define_expand "movsicc"
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(if_then_else:SI (match_operand 1 "arm_comparison_operator" "")
++	(if_then_else:SI (match_operand 1 "expandable_comparison_operator" "")
+ 			 (match_operand:SI 2 "arm_not_operand" "")
+ 			 (match_operand:SI 3 "arm_not_operand" "")))]
+   "TARGET_32BIT"
+@@ -7675,7 +7675,7 @@
+ 
+ (define_expand "movsfcc"
+   [(set (match_operand:SF 0 "s_register_operand" "")
+-	(if_then_else:SF (match_operand 1 "arm_comparison_operator" "")
++	(if_then_else:SF (match_operand 1 "expandable_comparison_operator" "")
+ 			 (match_operand:SF 2 "s_register_operand" "")
+ 			 (match_operand:SF 3 "nonmemory_operand" "")))]
+   "TARGET_32BIT && TARGET_HARD_FLOAT"
+@@ -7701,7 +7701,7 @@
+ 
+ (define_expand "movdfcc"
+   [(set (match_operand:DF 0 "s_register_operand" "")
+-	(if_then_else:DF (match_operand 1 "arm_comparison_operator" "")
++	(if_then_else:DF (match_operand 1 "expandable_comparison_operator" "")
+ 			 (match_operand:DF 2 "s_register_operand" "")
+ 			 (match_operand:DF 3 "arm_float_add_operand" "")))]
+   "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE)"
+--- a/src/gcc/config/arm/predicates.md
++++ b/src/gcc/config/arm/predicates.md
+@@ -241,11 +241,15 @@
+ 
+ ;; True for integer comparisons and, if FP is active, for comparisons
+ ;; other than LTGT or UNEQ.
++(define_special_predicate "expandable_comparison_operator"
++  (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,
++	       unordered,ordered,unlt,unle,unge,ungt"))
++
++;; Likewise, but only accept comparisons that are directly supported
++;; by ARM condition codes.
+ (define_special_predicate "arm_comparison_operator"
+-  (ior (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu")
+-       (and (match_test "TARGET_32BIT && TARGET_HARD_FLOAT
+-			 && (TARGET_FPA || TARGET_VFP)")
+-            (match_code "unordered,ordered,unlt,unle,unge,ungt"))))
++  (and (match_operand 0 "expandable_comparison_operator")
++       (match_test "maybe_get_arm_condition_code (op) != ARM_NV")))
+ 
+ (define_special_predicate "lt_ge_comparison_operator"
+   (match_code "lt,ge"))
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/torture/pr49030.c
+@@ -0,0 +1,19 @@
++void
++sample_move_d32u24_sS (char *dst, float *src, unsigned long nsamples,
++		       unsigned long dst_skip)
++{
++  long long y;
++  while (nsamples--)
++    {
++      y = (long long) (*src * 8388608.0f) << 8;
++      if (y > 2147483647) {
++	*(int *) dst = 2147483647;
++      } else if (y < -2147483647 - 1) {
++	*(int *) dst = -2147483647 - 1;
++      } else {
++	*(int *) dst = (int) y;
++      }
++      dst += dst_skip;
++      src++;
++    }
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/cmp-1.c
+@@ -0,0 +1,37 @@
++/* { dg-do compile } */
++/* { dg-options "-O" } */
++/* { dg-final { scan-assembler-not "\tbl\t" } } */
++/* { dg-final { scan-assembler-not "__aeabi" } } */
++int x, y;
++
++#define TEST_EXPR(NAME, ARGS, EXPR)			\
++  int NAME##1 ARGS { return (EXPR); }			\
++  int NAME##2 ARGS { return !(EXPR); }			\
++  int NAME##3 ARGS { return (EXPR) ? x : y; }		\
++  void NAME##4 ARGS { if (EXPR) x++; }			\
++  void NAME##5 ARGS { if (!(EXPR)) x++; }
++
++#define TEST(NAME, TYPE, OPERATOR) \
++  TEST_EXPR (NAME##_rr, (TYPE a1, TYPE a2), a1 OPERATOR a2)	\
++  TEST_EXPR (NAME##_rm, (TYPE a1, TYPE *a2), a1 OPERATOR *a2)	\
++  TEST_EXPR (NAME##_mr, (TYPE *a1, TYPE a2), *a1 OPERATOR a2)	\
++  TEST_EXPR (NAME##_mm, (TYPE *a1, TYPE *a2), *a1 OPERATOR *a2) \
++  TEST_EXPR (NAME##_rc, (TYPE a1), a1 OPERATOR 100)		\
++  TEST_EXPR (NAME##_cr, (TYPE a1), 100 OPERATOR a1)
++
++#define TEST_OP(NAME, OPERATOR) \
++  TEST (sc_##NAME, signed char, OPERATOR)		\
++  TEST (uc_##NAME, unsigned char, OPERATOR)		\
++  TEST (ss_##NAME, short, OPERATOR)			\
++  TEST (us_##NAME, unsigned short, OPERATOR)		\
++  TEST (si_##NAME, int, OPERATOR)			\
++  TEST (ui_##NAME, unsigned int, OPERATOR)		\
++  TEST (sll_##NAME, long long, OPERATOR)		\
++  TEST (ull_##NAME, unsigned long long, OPERATOR)
++
++TEST_OP (eq, ==)
++TEST_OP (ne, !=)
++TEST_OP (lt, <)
++TEST_OP (gt, >)
++TEST_OP (le, <=)
++TEST_OP (ge, >=)
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/cmp-2.c
+@@ -0,0 +1,49 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-final { scan-assembler-not "\tbl\t" } } */
++/* { dg-final { scan-assembler-not "__aeabi" } } */
++int x, y;
++
++#define EQ(X, Y) ((X) == (Y))
++#define NE(X, Y) ((X) != (Y))
++#define LT(X, Y) ((X) < (Y))
++#define GT(X, Y) ((X) > (Y))
++#define LE(X, Y) ((X) <= (Y))
++#define GE(X, Y) ((X) >= (Y))
++
++#define TEST_EXPR(NAME, ARGS, EXPR)			\
++  int NAME##1 ARGS { return (EXPR); }			\
++  int NAME##2 ARGS { return !(EXPR); }			\
++  int NAME##3 ARGS { return (EXPR) ? x : y; }		\
++  void NAME##4 ARGS { if (EXPR) x++; }			\
++  void NAME##5 ARGS { if (!(EXPR)) x++; }
++
++#define TEST(NAME, TYPE, OPERATOR) \
++  TEST_EXPR (NAME##_rr, (TYPE a1, TYPE a2), OPERATOR (a1, a2))		\
++  TEST_EXPR (NAME##_rm, (TYPE a1, TYPE *a2), OPERATOR (a1, *a2))	\
++  TEST_EXPR (NAME##_mr, (TYPE *a1, TYPE a2), OPERATOR (*a1, a2))	\
++  TEST_EXPR (NAME##_mm, (TYPE *a1, TYPE *a2), OPERATOR (*a1, *a2))	\
++  TEST_EXPR (NAME##_rc, (TYPE a1), OPERATOR (a1, 100))			\
++  TEST_EXPR (NAME##_cr, (TYPE a1), OPERATOR (100, a1))
++
++#define TEST_OP(NAME, OPERATOR) \
++  TEST (f_##NAME, float, OPERATOR)		\
++  TEST (d_##NAME, double, OPERATOR)		\
++  TEST (ld_##NAME, long double, OPERATOR)
++
++TEST_OP (eq, EQ)
++TEST_OP (ne, NE)
++TEST_OP (lt, LT)
++TEST_OP (gt, GT)
++TEST_OP (le, LE)
++TEST_OP (ge, GE)
++TEST_OP (blt, __builtin_isless)
++TEST_OP (bgt, __builtin_isgreater)
++TEST_OP (ble, __builtin_islessequal)
++TEST_OP (bge, __builtin_isgreaterequal)
++/* This one should be expanded into separate ordered and equality
++   comparisons.  */
++TEST_OP (blg, __builtin_islessgreater)
++TEST_OP (bun, __builtin_isunordered)
--- gcc-4.6-4.6.3.orig/debian/patches/ada-library-project-files-soname.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-library-project-files-soname.diff
@@ -0,0 +1,77 @@
+# DP: - in project files, use the exact Library_Version provided, if any, as
+# DP:   the soname of libraries; do not strip minor version numbers
+# DP:   (PR ada/40025).
+
+Index: b/src/gcc/ada/mlib-tgt-specific-linux.adb
+===================================================================
+--- a/src/gcc/ada/mlib-tgt-specific-linux.adb
++++ b/src/gcc/ada/mlib-tgt-specific-linux.adb
+@@ -50,6 +50,8 @@
+ 
+    function Is_Archive_Ext (Ext : String) return Boolean;
+ 
++   function Library_Major_Minor_Id_Supported return Boolean;
++
+    ---------------------------
+    -- Build_Dynamic_Library --
+    ---------------------------
+@@ -142,7 +144,18 @@
+       return Ext = ".a" or else Ext = ".so";
+    end Is_Archive_Ext;
+ 
++   --------------------------------------
++   -- Library_Major_Minor_Id_Supported --
++   --------------------------------------
++
++   function Library_Major_Minor_Id_Supported return Boolean is
++   begin
++      return False;
++   end Library_Major_Minor_Id_Supported;
++
+ begin
+    Build_Dynamic_Library_Ptr := Build_Dynamic_Library'Access;
+    Is_Archive_Ext_Ptr := Is_Archive_Ext'Access;
++   Library_Major_Minor_Id_Supported_Ptr :=
++                                Library_Major_Minor_Id_Supported'Access;
+ end MLib.Tgt.Specific;
+Index: b/src/gcc/ada/mlib.adb
+===================================================================
+--- a/src/gcc/ada/mlib.adb
++++ b/src/gcc/ada/mlib.adb
+@@ -31,6 +31,7 @@
+ with Opt;
+ with Output; use Output;
+ 
++with Mlib.Tgt;
+ with MLib.Utl; use MLib.Utl;
+ 
+ with Prj.Com;
+@@ -384,7 +385,7 @@
+    -- Major_Id_Name --
+    -------------------
+ 
+-   function Major_Id_Name
++   function Major_Id_Name_If_Supported
+      (Lib_Filename : String;
+       Lib_Version  : String)
+       return String
+@@ -438,6 +439,19 @@
+       else
+          return "";
+       end if;
++   end Major_Id_Name_If_Supported;
++
++   function Major_Id_Name
++     (Lib_Filename : String;
++      Lib_Version  : String)
++      return String
++   is
++   begin
++      if Mlib.Tgt.Library_Major_Minor_Id_Supported then
++         return Major_Id_Name_If_Supported (Lib_Filename, Lib_Version);
++      else
++         return "";
++      end if;
+    end Major_Id_Name;
+ 
+ --  Package elaboration
--- gcc-4.6-4.6.3.orig/debian/patches/pr50193.diff
+++ gcc-4.6-4.6.3/debian/patches/pr50193.diff
@@ -0,0 +1,109 @@
+# DP: Fix PR target/50193 (ARM), taken from Linaro.
+
+2011-10-13  Andrew Stubbs  <ams@codesourcery.com>
+
+	Backport from mainline:
+
+	2011-10-07  Andrew Stubbs  <ams@codesourcery.com>
+
+	gcc/
+	* config/arm/predicates.md (shift_amount_operand): Remove constant
+	range check.
+	(shift_operator): Check range of constants for all shift operators.
+
+	gcc/testsuite/
+	* gcc.dg/pr50193-1.c: New file.
+	* gcc.target/arm/shiftable.c: New file.
+
+ 
+=== modified file 'gcc/config/arm/predicates.md'
+--- a/src/gcc/config/arm/predicates.md
++++ b/src/gcc/config/arm/predicates.md
+@@ -218,13 +218,20 @@
+        (match_test "mode == GET_MODE (op)")))
+ 
+ ;; True for shift operators.
++;; Notes:
++;;  * mult is only permitted with a constant shift amount
++;;  * patterns that permit register shift amounts only in ARM mode use
++;;    shift_amount_operand, patterns that always allow registers do not,
++;;    so we don't have to worry about that sort of thing here.
+ (define_special_predicate "shift_operator"
+   (and (ior (ior (and (match_code "mult")
+ 		      (match_test "power_of_two_operand (XEXP (op, 1), mode)"))
+ 		 (and (match_code "rotate")
+ 		      (match_test "GET_CODE (XEXP (op, 1)) == CONST_INT
+ 				   && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
+-	    (match_code "ashift,ashiftrt,lshiftrt,rotatert"))
++	    (and (match_code "ashift,ashiftrt,lshiftrt,rotatert")
++		 (match_test "GET_CODE (XEXP (op, 1)) != CONST_INT
++			      || ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
+        (match_test "mode == GET_MODE (op)")))
+ 
+ ;; True for MULT, to identify which variant of shift_operator is in use.
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/shiftable.c
+@@ -0,0 +1,63 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++/* { dg-require-effective-target arm32 } */
++
++/* ARM has shift-and-alu insns.  Depending on the ALU op GCC represents some
++   of these as a left shift, others as a multiply.  Check that we match the
++    right one.  */
++
++int
++plus (int a, int b)
++{
++  return (a * 64) + b;
++}
++
++/* { dg-final { scan-assembler "add.*\[al]sl #6" } } */
++
++int
++minus (int a, int b)
++{
++  return a - (b * 64);
++}
++
++/* { dg-final { scan-assembler "sub.*\[al]sl #6" } } */
++
++int
++ior (int a, int b)
++{
++  return (a * 64) | b;
++}
++
++/* { dg-final { scan-assembler "orr.*\[al]sl #6" } } */
++
++int
++xor (int a, int b)
++{
++  return (a * 64) ^ b;
++}
++
++/* { dg-final { scan-assembler "eor.*\[al]sl #6" } } */
++
++int
++and (int a, int b)
++{
++  return (a * 64) & b;
++}
++
++/* { dg-final { scan-assembler "and.*\[al]sl #6" } } */
++
++int
++rsb (int a, int b)
++{
++  return (a * 64) - b;
++}
++
++/* { dg-final { scan-assembler "rsb.*\[al]sl #6" } } */
++
++int
++mvn (int a, int b)
++{
++  return ~(a * 64);
++}
++
++/* { dg-final { scan-assembler "mvn.*\[al]sl #6" } } */
--- gcc-4.6-4.6.3.orig/debian/patches/fix-warnings.diff
+++ gcc-4.6-4.6.3/debian/patches/fix-warnings.diff
@@ -0,0 +1,1341 @@
+# DP: Fix warnings with -D_FORTIFY_SOURCE and -Wformat-security.
+
+libcpp/
+
+	* macro.c (create_iso_definition): Avoid warnings with
+	-Wformat-security.
+	* lex.c (cpp_output_token): Avoid warnings with -D_FORTIFY_SOURCE.
+
+gcc/
+
+	* toplev.c (print_to_asm_out_file, print_to_stderr): Avoid warnings with
+	-Wformat-security, (pch_option_mismatch) avoid warnings with
+	-D_FORTIFY_SOURCE.
+
+	* c-convert.c (convert): Avoid warnings with -Wformat-security.
+	* c-typeck.c (convert_arguments, build_unary_op, build_binary_op): Likewise.
+	* c-common.c (c_parse_error): Likewise.
+	* cfg.c (dump_cfg_bb_info): Likewise.
+	* fold-const.c (fold_overflow_warning): Likewise.
+	* ira-conflicts.c (print_hard_reg_set): Likewise.
+	* opts.c (print_filtered_help): Likewise.
+	* tree-switch-conversion.c (do_switchconv): Likewise.
+	* collect2.c (collect_execute, scan_prog_file): Likewise.
+
+	* c-ppoutput.c (print_lines_directives_only,scan_translation_unit_trad):
+	Avoid warnings with -D_FORTIFY_SOURCE.
+	* dbxout.c (dbxout_finish_complex_stabs): Likewise.
+	* diagnostic.c (build_message_string): Likewise.
+	* final.c (output_operand_lossage): Likewise.
+	* tree-data-ref.c (dot_rdg): Likewise.
+	* tree-ssa-structalias.c (create_function_info_for,
+	create_variable_info_for): Likewise.
+
+gcc/cp/
+
+	* pt.c (tsubst_copy_and_build): Avoid warnings with -Wformat-security.
+	* parser.c (cp_parser_check_type_definition,
+	cp_parser_non_integral_constant_expression): Likewise.
+	* typeck.c (cp_build_binary_op, cp_build_unary_op): Likewise.
+	* cvt.c (ocp_convert): Likewise.
+
+gcc/fortran/
+
+	* cpp.c (scan_translation_unit_trad): Avoid warnings with -D_FORTIFY_SOURCE.
+	* trans.c (gfc_trans_runtime_error_vararg): Likewise.
+	* trans-array.c (gfc_trans_array_bound_check, gfc_conv_array_ref,
+	gfc_conv_ss_startstride, gfc_trans_dummy_array_bias,
+	gfc_conv_array_parameter): Likewise.
+	* trans-io.c (gfc_trans_io_runtime_check, set_string): Likewise.
+	* trans-expr.c (gfc_conv_substring): Likewise.
+
+	* decl.c (gfc_match_kind_spec, match_char_kind): Avoid warnings with
+	-Wformat-security.
+	* intrinsic.c (add_sym, find_sym, make_alias): Likewise.
+	* match.c (gfc_match_small_int, gfc_match_small_int_expr): Likewise.
+	* matchexp.c (match_primary, match_level_2, match_level_3,
+	match_level_4, match_or_operand, match_equiv_operand, match_level_5,
+	gfc_match_expr): Likewise.
+	* module.c (find_true_name, mio_pool_string, mio_symtree_ref, mio_expr,
+	load_generic_interfaces, load_needed, read_module, write_symbol0,
+	write_generic, import_iso_c_binding_module, create_int_parameter,
+	use_iso_fortran_env_module, gfc_use_module): Likewise.
+	* openmp.c (gfc_match_omp_clauses): Likewise.
+	* primary.c (match_hollerith_constant, match_string_constant,
+	match_keyword_arg): Likewise.
+	* symbol.c (gfc_add_component, gfc_new_symtree, gfc_delete_symtree,
+	gfc_get_uop, gfc_new_symbol, gfc_get_gsymbol, gen_special_c_interop_ptr,
+	gen_cptr_param, gen_fptr_param, gen_shape_param,
+	generate_isocbinding_symbol, get_iso_c_sym): Likewise.
+	* trans-decl.c (gfc_find_module): Likewise.
+
+gcc/objc/
+
+	* objc-act.c (objc_lookup_protocol): Avoid warnings with
+	-Wformat-security.
+
+---
+ gcc/c-common.c               |    4 +-
+ gcc/c-convert.c              |    2 +-
+ gcc/c-ppoutput.c             |    6 ++-
+ gcc/c-typeck.c               |    6 +-
+ gcc/cfg.c                    |    2 +-
+ gcc/collect2.c               |    8 ++--
+ gcc/cp/cvt.c                 |    2 +-
+ gcc/cp/parser.c              |    4 +-
+ gcc/cp/pt.c                  |    2 +-
+ gcc/cp/typeck.c              |    4 +-
+ gcc/dbxout.c                 |    5 +-
+ gcc/diagnostic.c             |    3 +-
+ gcc/final.c                  |    5 +-
+ gcc/fold-const.c             |    2 +-
+ gcc/fortran/cpp.c            |    3 +-
+ gcc/fortran/decl.c           |    4 +-
+ gcc/fortran/intrinsic.c      |    8 ++--
+ gcc/fortran/match.c          |    4 +-
+ gcc/fortran/matchexp.c       |   18 ++++----
+ gcc/fortran/module.c         |   30 +++++++-------
+ gcc/fortran/openmp.c         |    2 +-
+ gcc/fortran/primary.c        |    6 +-
+ gcc/fortran/symbol.c         |   24 +++++-----
+ gcc/fortran/trans-array.c    |   94 +++++++++++++++++++++++++----------------
+ gcc/fortran/trans-decl.c     |    2 +-
+ gcc/fortran/trans-expr.c     |   22 ++++++----
+ gcc/fortran/trans-io.c       |    9 +++-
+ gcc/fortran/trans.c          |   11 +++--
+ gcc/ira-conflicts.c          |    2 +-
+ gcc/objc/objc-act.c          |    2 +-
+ gcc/opts.c                   |    2 +-
+ gcc/toplev.c                 |    9 +++-
+ gcc/tree-data-ref.c          |    3 +-
+ gcc/tree-ssa-structalias.c   |   13 ++++--
+ gcc/tree-switch-conversion.c |    2 +-
+ libcpp/lex.c                 |    6 ++-
+ libcpp/macro.c               |    4 +-
+ 37 files changed, 190 insertions(+), 145 deletions(-)
+
+--- a/src/gcc/c-common.c
++++ b/src/gcc/c-common.c
+@@ -7493,11 +7493,11 @@ c_parse_error (const char *gmsgid, enum cpp_ttype token, tree value)
+       message = NULL;
+     }
+   else
+-    error (gmsgid);
++    error ("%s", gmsgid);
+ 
+   if (message)
+     {
+-      error (message);
++      error ("%s", message);
+       free (message);
+     }
+ #undef catenate_messages
+--- a/src/gcc/c-convert.c
++++ b/src/gcc/c-convert.c
+@@ -79,7 +79,7 @@ convert (tree type, tree expr)
+   if ((invalid_conv_diag
+        = targetm.invalid_conversion (TREE_TYPE (expr), type)))
+     {
+-      error (invalid_conv_diag);
++      error ("%s", invalid_conv_diag);
+       return error_mark_node;
+     }
+ 
+--- a/src/gcc/c-ppoutput.c
++++ b/src/gcc/c-ppoutput.c
+@@ -223,8 +223,9 @@ scan_translation_unit (cpp_reader *pfile)
+ static void
+ print_lines_directives_only (int lines, const void *buf, size_t size)
+ {
++  size_t rv_neverused ATTRIBUTE_UNUSED;
+   print.src_line += lines;
+-  fwrite (buf, 1, size, print.outf);
++  rv_neverused = fwrite (buf, 1, size, print.outf);
+ }
+ 
+ /* Writes out the preprocessed file, handling spacing and paste
+@@ -256,8 +257,9 @@ scan_translation_unit_trad (cpp_reader *pfile)
+   while (_cpp_read_logical_line_trad (pfile))
+     {
+       size_t len = pfile->out.cur - pfile->out.base;
++      size_t rv_neverused ATTRIBUTE_UNUSED;
+       maybe_print_line (pfile->out.first_line);
+-      fwrite (pfile->out.base, 1, len, print.outf);
++      rv_neverused = fwrite (pfile->out.base, 1, len, print.outf);
+       print.printed = 1;
+       if (!CPP_OPTION (pfile, discard_comments))
+ 	account_for_newlines (pfile->out.base, len);
+--- a/src/gcc/c-typeck.c
++++ b/src/gcc/c-typeck.c
+@@ -2730,7 +2730,7 @@ convert_arguments (int nargs, tree *argarray,
+       else if ((invalid_func_diag =
+ 		targetm.calls.invalid_arg_for_unprototyped_fn (typelist, fundecl, val)))
+ 	{
+-	  error (invalid_func_diag);
++	  error ("%s", invalid_func_diag);
+ 	  return -1;
+ 	}
+       else
+@@ -2947,7 +2947,7 @@ build_unary_op (location_t location,
+   if ((invalid_op_diag
+        = targetm.invalid_unary_op (code, TREE_TYPE (xarg))))
+     {
+-      error_at (location, invalid_op_diag);
++      error_at (location, "%s", invalid_op_diag);
+       return error_mark_node;
+     }
+ 
+@@ -8095,7 +8095,7 @@ build_binary_op (location_t location, enum tree_code code,
+   if ((invalid_op_diag
+        = targetm.invalid_binary_op (code, type0, type1)))
+     {
+-      error_at (location, invalid_op_diag);
++      error_at (location, "%s", invalid_op_diag);
+       return error_mark_node;
+     }
+ 
+--- a/src/gcc/cfg.c
++++ b/src/gcc/cfg.c
+@@ -908,7 +908,7 @@ dump_cfg_bb_info (FILE *file, basic_block bb)
+ 	else
+ 	  fprintf (file, ", ");
+ 	first = false;
+-	fprintf (file, bb_bitnames[i]);
++	fprintf (file, "%s", bb_bitnames[i]);
+       }
+   if (!first)
+     fprintf (file, ")");
+--- a/src/gcc/collect2.c
++++ b/src/gcc/collect2.c
+@@ -1647,10 +1647,10 @@ collect_execute (const char *prog, char **argv, const char *outname,
+       if (err != 0)
+ 	{
+ 	  errno = err;
+-	  fatal_perror (errmsg);
++	  fatal_perror ("%s", errmsg);
+ 	}
+       else
+-	fatal (errmsg);
++	fatal ("%s", errmsg);
+     }
+ 
+   if (response_arg)
+@@ -2137,10 +2137,10 @@ scan_prog_file (const char *prog_name, enum pass which_pass)
+       if (err != 0)
+ 	{
+ 	  errno = err;
+-	  fatal_perror (errmsg);
++	  fatal_perror ("%s", errmsg);
+ 	}
+       else
+-	fatal (errmsg);
++	fatal ("%s", errmsg);
+     }
+ 
+   int_handler  = (void (*) (int)) signal (SIGINT,  SIG_IGN);
+--- a/src/gcc/cp/cvt.c
++++ b/src/gcc/cp/cvt.c
+@@ -591,7 +591,7 @@ ocp_convert (tree type, tree expr, int convtype, int flags)
+   if ((invalid_conv_diag
+        = targetm.invalid_conversion (TREE_TYPE (expr), type)))
+     {
+-      error (invalid_conv_diag);
++      error ("%s", invalid_conv_diag);
+       return error_mark_node;
+     }
+ 
+--- a/src/gcc/cp/parser.c
++++ b/src/gcc/cp/parser.c
+@@ -2204,7 +2204,7 @@ cp_parser_check_type_definition (cp_parser* parser)
+     {
+       /* Don't use `%s' to print the string, because quotations (`%<', `%>')
+ 	 in the message need to be interpreted.  */
+-      error (parser->type_definition_forbidden_message);
++      error ("%s", parser->type_definition_forbidden_message);
+       return false;
+     }
+   return true;
+@@ -2291,7 +2291,7 @@ cp_parser_non_integral_constant_expression (cp_parser  *parser,
+ 	  char *message = concat (thing,
+ 				  " cannot appear in a constant-expression",
+ 				  NULL);
+-	  error (message);
++	  error ("%s", message);
+ 	  free (message);
+ 	  return true;
+ 	}
+--- a/src/gcc/cp/pt.c
++++ b/src/gcc/cp/pt.c
+@@ -11060,7 +11060,7 @@ tsubst_copy_and_build (tree t,
+ 				     &error_msg,
+ 				     input_location);
+ 	if (error_msg)
+-	  error (error_msg);
++	  error ("%s", error_msg);
+ 	if (!function_p && TREE_CODE (decl) == IDENTIFIER_NODE)
+ 	  decl = unqualified_name_lookup_error (decl);
+ 	return decl;
+--- a/src/gcc/cp/typeck.c
++++ b/src/gcc/cp/typeck.c
+@@ -3373,7 +3373,7 @@ cp_build_binary_op (location_t location,
+   if ((invalid_op_diag
+        = targetm.invalid_binary_op (code, type0, type1)))
+     {
+-      error (invalid_op_diag);
++      error ("%s", invalid_op_diag);
+       return error_mark_node;
+     }
+ 
+@@ -4254,7 +4254,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert,
+ 				    : code),
+ 				   TREE_TYPE (xarg))))
+     {
+-      error (invalid_op_diag);
++      error ("%s", invalid_op_diag);
+       return error_mark_node;
+     }
+ 
+--- a/src/gcc/dbxout.c
++++ b/src/gcc/dbxout.c
+@@ -847,6 +847,7 @@ dbxout_finish_complex_stabs (tree sym, STAB_CODE_TYPE code,
+   int line ATTRIBUTE_UNUSED;
+   char *str;
+   size_t len;
++  size_t rv_neverused ATTRIBUTE_UNUSED;
+ 
+   line = sym ? DECL_SOURCE_LINE (sym) : 0;
+   if (DBX_CONTIN_LENGTH > 0)
+@@ -867,7 +868,7 @@ dbxout_finish_complex_stabs (tree sym, STAB_CODE_TYPE code,
+       for (;;)
+ 	{
+ 	  chunklen = strlen (chunk);
+-	  fwrite (chunk, 1, chunklen, asm_out_file);
++	  rv_neverused = fwrite (chunk, 1, chunklen, asm_out_file);
+ 	  fputs ("\",", asm_out_file);
+ 
+ 	  /* Must add an extra byte to account for the NUL separator.  */
+@@ -894,7 +895,7 @@ dbxout_finish_complex_stabs (tree sym, STAB_CODE_TYPE code,
+       len = obstack_object_size (&stabstr_ob);
+       str = XOBFINISH (&stabstr_ob, char *);
+       
+-      fwrite (str, 1, len, asm_out_file);
++      rv_neverused = fwrite (str, 1, len, asm_out_file);
+       DBX_FINISH_STABS (sym, code, line, addr, label, number);
+     }
+   obstack_free (&stabstr_ob, str);
+--- a/src/gcc/diagnostic.c
++++ b/src/gcc/diagnostic.c
+@@ -70,9 +70,10 @@ build_message_string (const char *msg, ...)
+ {
+   char *str;
+   va_list ap;
++  size_t rv_neverused ATTRIBUTE_UNUSED;
+ 
+   va_start (ap, msg);
+-  vasprintf (&str, msg, ap);
++  rv_neverused = vasprintf (&str, msg, ap);
+   va_end (ap);
+ 
+   return str;
+--- a/src/gcc/final.c
++++ b/src/gcc/final.c
+@@ -2989,12 +2989,13 @@ output_operand_lossage (const char *cmsgid, ...)
+   char *new_message;
+   const char *pfx_str;
+   va_list ap;
++  int rv_neverused ATTRIBUTE_UNUSED;
+ 
+   va_start (ap, cmsgid);
+ 
+   pfx_str = this_is_asm_operands ? _("invalid 'asm': ") : "output_operand: ";
+-  asprintf (&fmt_string, "%s%s", pfx_str, _(cmsgid));
+-  vasprintf (&new_message, fmt_string, ap);
++  rv_neverused = asprintf (&fmt_string, "%s%s", pfx_str, _(cmsgid));
++  rv_neverused = vasprintf (&new_message, fmt_string, ap);
+ 
+   if (this_is_asm_operands)
+     error_for_asm (this_is_asm_operands, "%s", new_message);
+--- a/src/gcc/fold-const.c
++++ b/src/gcc/fold-const.c
+@@ -1025,7 +1025,7 @@ fold_overflow_warning (const char* gmsgid, enum warn_strict_overflow_code wc)
+ 	}
+     }
+   else if (issue_strict_overflow_warning (wc))
+-    warning (OPT_Wstrict_overflow, gmsgid);
++    warning (OPT_Wstrict_overflow, "%s", gmsgid);
+ }
+ 
+ /* Return true if the built-in mathematical function specified by CODE
+--- a/src/gcc/fortran/cpp.c
++++ b/src/gcc/fortran/cpp.c
+@@ -729,8 +729,9 @@ scan_translation_unit_trad (cpp_reader *pfile)
+   while (_cpp_read_logical_line_trad (pfile))
+     {
+       size_t len = pfile->out.cur - pfile->out.base;
++      size_t rv_neverused ATTRIBUTE_UNUSED;
+       maybe_print_line (pfile->out.first_line);
+-      fwrite (pfile->out.base, 1, len, print.outf);
++      rv_neverused = fwrite (pfile->out.base, 1, len, print.outf);
+       print.printed = 1;
+       if (!CPP_OPTION (pfile, discard_comments))
+ 	account_for_newlines (pfile->out.base, len);
+--- a/src/gcc/fortran/decl.c
++++ b/src/gcc/fortran/decl.c
+@@ -1954,7 +1954,7 @@ kind_expr:
+ 
+   if (msg != NULL)
+     {
+-      gfc_error (msg);
++      gfc_error ("%s", msg);
+       m = MATCH_ERROR;
+       goto no_match;
+     }
+@@ -2060,7 +2060,7 @@ match_char_kind (int * kind, int * is_iso_c)
+   *is_iso_c = e->ts.is_iso_c;
+   if (msg != NULL)
+     {
+-      gfc_error (msg);
++      gfc_error ("%s", msg);
+       m = MATCH_ERROR;
+       goto no_match;
+     }
+--- a/src/gcc/fortran/intrinsic.c
++++ b/src/gcc/fortran/intrinsic.c
+@@ -262,11 +262,11 @@ add_sym (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt type
+       break;
+ 
+     case SZ_NOTHING:
+-      next_sym->name = gfc_get_string (name);
++      next_sym->name = gfc_get_string ("%s", name);
+ 
+       strcpy (buf, "_gfortran_");
+       strcat (buf, name);
+-      next_sym->lib_name = gfc_get_string (buf);
++      next_sym->lib_name = gfc_get_string ("%s", buf);
+ 
+       next_sym->elemental = (cl == CLASS_ELEMENTAL);
+       next_sym->inquiry = (cl == CLASS_INQUIRY);
+@@ -722,7 +722,7 @@ find_sym (gfc_intrinsic_sym *start, int n, const char *name)
+   /* name may be a user-supplied string, so we must first make sure
+      that we're comparing against a pointer into the global string
+      table.  */
+-  const char *p = gfc_get_string (name);
++  const char *p = gfc_get_string ("%s", name);
+ 
+   while (n > 0)
+     {
+@@ -918,7 +918,7 @@ make_alias (const char *name, int standard)
+ 
+     case SZ_NOTHING:
+       next_sym[0] = next_sym[-1];
+-      next_sym->name = gfc_get_string (name);
++      next_sym->name = gfc_get_string ("%s", name);
+       next_sym->standard = standard;
+       next_sym++;
+       break;
+--- a/src/gcc/fortran/match.c
++++ b/src/gcc/fortran/match.c
+@@ -391,7 +391,7 @@ gfc_match_small_int (int *value)
+ 
+   if (p != NULL)
+     {
+-      gfc_error (p);
++      gfc_error ("%s", p);
+       m = MATCH_ERROR;
+     }
+ 
+@@ -423,7 +423,7 @@ gfc_match_small_int_expr (int *value, gfc_expr **expr)
+ 
+   if (p != NULL)
+     {
+-      gfc_error (p);
++      gfc_error ("%s", p);
+       m = MATCH_ERROR;
+     }
+ 
+--- a/src/gcc/fortran/matchexp.c
++++ b/src/gcc/fortran/matchexp.c
+@@ -193,7 +193,7 @@ match_primary (gfc_expr **result)
+   return MATCH_YES;
+ 
+ syntax:
+-  gfc_error (expression_syntax);
++  gfc_error ("%s", expression_syntax);
+   return MATCH_ERROR;
+ }
+ 
+@@ -496,7 +496,7 @@ match_level_2 (gfc_expr **result)
+       m = match_ext_add_operand (&e);
+       if (m == MATCH_NO)
+ 	{
+-	  gfc_error (expression_syntax);
++	  gfc_error ("%s", expression_syntax);
+ 	  m = MATCH_ERROR;
+ 	}
+     }
+@@ -535,7 +535,7 @@ match_level_2 (gfc_expr **result)
+ 
+       m = match_ext_add_operand (&e);
+       if (m == MATCH_NO)
+-	gfc_error (expression_syntax);
++	gfc_error ("%s", expression_syntax);
+       if (m != MATCH_YES)
+ 	{
+ 	  gfc_free_expr (all);
+@@ -586,7 +586,7 @@ match_level_3 (gfc_expr **result)
+       m = match_level_2 (&e);
+       if (m == MATCH_NO)
+ 	{
+-	  gfc_error (expression_syntax);
++	  gfc_error ("%s", expression_syntax);
+ 	  gfc_free_expr (all);
+ 	}
+       if (m != MATCH_YES)
+@@ -646,7 +646,7 @@ match_level_4 (gfc_expr **result)
+ 
+   m = match_level_3 (&right);
+   if (m == MATCH_NO)
+-    gfc_error (expression_syntax);
++    gfc_error ("%s", expression_syntax);
+   if (m != MATCH_YES)
+     {
+       gfc_free_expr (left);
+@@ -755,7 +755,7 @@ match_or_operand (gfc_expr **result)
+ 
+       m = match_and_operand (&e);
+       if (m == MATCH_NO)
+-	gfc_error (expression_syntax);
++	gfc_error ("%s", expression_syntax);
+       if (m != MATCH_YES)
+ 	{
+ 	  gfc_free_expr (all);
+@@ -798,7 +798,7 @@ match_equiv_operand (gfc_expr **result)
+ 
+       m = match_or_operand (&e);
+       if (m == MATCH_NO)
+-	gfc_error (expression_syntax);
++	gfc_error ("%s", expression_syntax);
+       if (m != MATCH_YES)
+ 	{
+ 	  gfc_free_expr (all);
+@@ -852,7 +852,7 @@ match_level_5 (gfc_expr **result)
+ 
+       m = match_equiv_operand (&e);
+       if (m == MATCH_NO)
+-	gfc_error (expression_syntax);
++	gfc_error ("%s", expression_syntax);
+       if (m != MATCH_YES)
+ 	{
+ 	  gfc_free_expr (all);
+@@ -911,7 +911,7 @@ gfc_match_expr (gfc_expr **result)
+ 
+       m = match_level_5 (&e);
+       if (m == MATCH_NO)
+-	gfc_error (expression_syntax);
++	gfc_error ("%s", expression_syntax);
+       if (m != MATCH_YES)
+ 	{
+ 	  gfc_free_expr (all);
+--- a/src/gcc/fortran/module.c
++++ b/src/gcc/fortran/module.c
+@@ -805,9 +805,9 @@ find_true_name (const char *name, const char *module)
+   gfc_symbol sym;
+   int c;
+ 
+-  sym.name = gfc_get_string (name);
++  sym.name = gfc_get_string ("%s", name);
+   if (module != NULL)
+-    sym.module = gfc_get_string (module);
++    sym.module = gfc_get_string ("%s", module);
+   else
+     sym.module = NULL;
+   t.sym = &sym;
+@@ -1612,7 +1612,7 @@ mio_pool_string (const char **stringp)
+   else
+     {
+       require_atom (ATOM_STRING);
+-      *stringp = atom_string[0] == '\0' ? NULL : gfc_get_string (atom_string);
++      *stringp = atom_string[0] == '\0' ? NULL : gfc_get_string ("%s", atom_string);
+       gfc_free (atom_string);
+     }
+ }
+@@ -2460,7 +2460,7 @@ mio_symtree_ref (gfc_symtree **stp)
+ 	    {
+ 	      p->u.rsym.sym = gfc_new_symbol (p->u.rsym.true_name,
+ 					      gfc_current_ns);
+-	      p->u.rsym.sym->module = gfc_get_string (p->u.rsym.module);
++	      p->u.rsym.sym->module = gfc_get_string ("%s", p->u.rsym.module);
+ 	    }
+ 
+ 	  p->u.rsym.symtree->n.sym = p->u.rsym.sym;
+@@ -2967,7 +2967,7 @@ mio_expr (gfc_expr **ep)
+       else
+ 	{
+ 	  require_atom (ATOM_STRING);
+-	  e->value.function.name = gfc_get_string (atom_string);
++	  e->value.function.name = gfc_get_string ("%s", atom_string);
+ 	  gfc_free (atom_string);
+ 
+ 	  mio_integer (&flag);
+@@ -3695,8 +3695,8 @@ load_generic_interfaces (void)
+ 	      if (!sym)
+ 		{
+ 		  gfc_get_symbol (p, NULL, &sym);
+-		  sym->name = gfc_get_string (name);
+-		  sym->module = gfc_get_string (module_name);
++		  sym->name = gfc_get_string ("%s", name);
++		  sym->module = gfc_get_string ("%s", module_name);
+ 		  sym->attr.flavor = FL_PROCEDURE;
+ 		  sym->attr.generic = 1;
+ 		  sym->attr.use_assoc = 1;
+@@ -3901,7 +3901,7 @@ load_needed (pointer_info *p)
+ 				 1, &ns->proc_name);
+ 
+       sym = gfc_new_symbol (p->u.rsym.true_name, ns);
+-      sym->module = gfc_get_string (p->u.rsym.module);
++      sym->module = gfc_get_string ("%s", p->u.rsym.module);
+       strcpy (sym->binding_label, p->u.rsym.binding_label);
+ 
+       associate_integer_pointer (p, sym);
+@@ -4162,7 +4162,7 @@ read_module (void)
+ 		  info->u.rsym.sym = gfc_new_symbol (info->u.rsym.true_name,
+ 						     gfc_current_ns);
+ 		  sym = info->u.rsym.sym;
+-		  sym->module = gfc_get_string (info->u.rsym.module);
++		  sym->module = gfc_get_string ("%s", info->u.rsym.module);
+ 
+ 		  /* TODO: hmm, can we test this?  Do we know it will be
+ 		     initialized to zeros?  */
+@@ -4521,7 +4521,7 @@ write_symbol0 (gfc_symtree *st)
+ 
+   sym = st->n.sym;
+   if (sym->module == NULL)
+-    sym->module = gfc_get_string (module_name);
++    sym->module = gfc_get_string ("%s", module_name);
+ 
+   if (sym->attr.flavor == FL_PROCEDURE && sym->attr.generic
+       && !sym->attr.subroutine && !sym->attr.function)
+@@ -4614,7 +4614,7 @@ write_generic (gfc_symtree *st)
+     return;
+ 
+   if (sym->module == NULL)
+-    sym->module = gfc_get_string (module_name);
++    sym->module = gfc_get_string ("%s", module_name);
+ 
+   mio_symbol_interface (&st->name, &sym->module, &sym->generic);
+ }
+@@ -4962,7 +4962,7 @@ import_iso_c_binding_module (void)
+ 
+       mod_sym->attr.flavor = FL_MODULE;
+       mod_sym->attr.intrinsic = 1;
+-      mod_sym->module = gfc_get_string (iso_c_module_name);
++      mod_sym->module = gfc_get_string ("%s", iso_c_module_name);
+       mod_sym->from_intmod = INTMOD_ISO_C_BINDING;
+     }
+ 
+@@ -5039,7 +5039,7 @@ create_int_parameter (const char *name, int value, const char *modname,
+   gfc_get_sym_tree (name, gfc_current_ns, &tmp_symtree);
+   sym = tmp_symtree->n.sym;
+ 
+-  sym->module = gfc_get_string (modname);
++  sym->module = gfc_get_string ("%s", modname);
+   sym->attr.flavor = FL_PARAMETER;
+   sym->ts.type = BT_INTEGER;
+   sym->ts.kind = gfc_default_integer_kind;
+@@ -5083,7 +5083,7 @@ use_iso_fortran_env_module (void)
+ 
+       mod_sym->attr.flavor = FL_MODULE;
+       mod_sym->attr.intrinsic = 1;
+-      mod_sym->module = gfc_get_string (mod);
++      mod_sym->module = gfc_get_string ("%s", mod);
+       mod_sym->from_intmod = INTMOD_ISO_FORTRAN_ENV;
+     }
+   else
+@@ -5279,7 +5279,7 @@ gfc_use_module (void)
+   fclose (module_fp);
+ 
+   use_stmt = gfc_get_use_list ();
+-  use_stmt->module_name = gfc_get_string (module_name);
++  use_stmt->module_name = gfc_get_string ("%s", module_name);
+   use_stmt->only_flag = only_flag;
+   use_stmt->rename = gfc_rename_list;
+   use_stmt->where = use_locus;
+--- a/src/gcc/fortran/openmp.c
++++ b/src/gcc/fortran/openmp.c
+@@ -396,7 +396,7 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, int mask)
+ 	      const char *p = gfc_extract_int (cexpr, &collapse);
+ 	      if (p)
+ 		{
+-		  gfc_error (p);
++		  gfc_error ("%s", p);
+ 		  collapse = 1;
+ 		}
+ 	      else if (collapse <= 0)
+--- a/src/gcc/fortran/primary.c
++++ b/src/gcc/fortran/primary.c
+@@ -255,7 +255,7 @@ match_hollerith_constant (gfc_expr **result)
+       msg = gfc_extract_int (e, &num);
+       if (msg != NULL)
+ 	{
+-	  gfc_error (msg);
++	  gfc_error ("%s", msg);
+ 	  goto cleanup;
+ 	}
+       if (num == 0)
+@@ -924,7 +924,7 @@ match_string_constant (gfc_expr **result)
+       q = gfc_extract_int (sym->value, &kind);
+       if (q != NULL)
+ 	{
+-	  gfc_error (q);
++	  gfc_error ("%s", q);
+ 	  return MATCH_ERROR;
+ 	}
+       gfc_set_sym_referenced (sym);
+@@ -1479,7 +1479,7 @@ match_keyword_arg (gfc_actual_arglist *actual, gfc_actual_arglist *base)
+ 	  }
+     }
+ 
+-  actual->name = gfc_get_string (name);
++  actual->name = gfc_get_string ("%s", name);
+   return MATCH_YES;
+ 
+ cleanup:
+--- a/src/gcc/fortran/symbol.c
++++ b/src/gcc/fortran/symbol.c
+@@ -1759,7 +1759,7 @@ gfc_add_component (gfc_symbol *sym, const char *name,
+   else
+     tail->next = p;
+ 
+-  p->name = gfc_get_string (name);
++  p->name = gfc_get_string ("%s", name);
+   p->loc = gfc_current_locus;
+ 
+   *component = p;
+@@ -2251,7 +2251,7 @@ gfc_new_symtree (gfc_symtree **root, const char *name)
+   gfc_symtree *st;
+ 
+   st = XCNEW (gfc_symtree);
+-  st->name = gfc_get_string (name);
++  st->name = gfc_get_string ("%s", name);
+   st->typebound = NULL;
+ 
+   gfc_insert_bbt (root, st, compare_symtree);
+@@ -2268,7 +2268,7 @@ gfc_delete_symtree (gfc_symtree **root, const char *name)
+ 
+   st0 = gfc_find_symtree (*root, name);
+ 
+-  st.name = gfc_get_string (name);
++  st.name = gfc_get_string ("%s", name);
+   gfc_delete_bbt (root, &st, compare_symtree);
+ 
+   gfc_free (st0);
+@@ -2327,7 +2327,7 @@ gfc_get_uop (const char *name)
+   st = gfc_new_symtree (&gfc_current_ns->uop_root, name);
+ 
+   uop = st->n.uop = XCNEW (gfc_user_op);
+-  uop->name = gfc_get_string (name);
++  uop->name = gfc_get_string ("%s", name);
+   uop->access = ACCESS_UNKNOWN;
+   uop->ns = gfc_current_ns;
+ 
+@@ -2399,7 +2399,7 @@ gfc_new_symbol (const char *name, gfc_namespace *ns)
+   if (strlen (name) > GFC_MAX_SYMBOL_LEN)
+     gfc_internal_error ("new_symbol(): Symbol name too long");
+ 
+-  p->name = gfc_get_string (name);
++  p->name = gfc_get_string ("%s", name);
+ 
+   /* Make sure flags for symbol being C bound are clear initially.  */
+   p->attr.is_bind_c = 0;
+@@ -3280,7 +3280,7 @@ gfc_get_gsymbol (const char *name)
+ 
+   s = XCNEW (gfc_gsymbol);
+   s->type = GSYM_UNKNOWN;
+-  s->name = gfc_get_string (name);
++  s->name = gfc_get_string ("%s", name);
+ 
+   gfc_insert_bbt (&gfc_gsym_root, s, gsym_compare);
+ 
+@@ -3517,7 +3517,7 @@ gen_special_c_interop_ptr (int ptr_id, const char *ptr_name,
+     }
+ 
+   /* Module name is some mangled version of iso_c_binding.  */
+-  tmp_sym->module = gfc_get_string (module_name);
++  tmp_sym->module = gfc_get_string ("%s", module_name);
+   
+   /* Say it's from the iso_c_binding module.  */
+   tmp_sym->attr.is_iso_c = 1;
+@@ -3637,7 +3637,7 @@ gen_cptr_param (gfc_formal_arglist **head,
+     }
+ 
+   param_sym->ts.derived = c_ptr_sym;
+-  param_sym->module = gfc_get_string (module_name);
++  param_sym->module = gfc_get_string ("%s", module_name);
+ 
+   /* Make new formal arg.  */
+   formal_arg = gfc_get_formal_arglist ();
+@@ -3682,7 +3682,7 @@ gen_fptr_param (gfc_formal_arglist **head,
+ 
+   /* ISO C Binding type to allow any pointer type as actual param.  */
+   param_sym->ts.type = BT_VOID;
+-  param_sym->module = gfc_get_string (module_name);
++  param_sym->module = gfc_get_string ("%s", module_name);
+    
+   /* Make the arg.  */
+   formal_arg = gfc_get_formal_arglist ();
+@@ -3753,7 +3753,7 @@ gen_shape_param (gfc_formal_arglist **head,
+   param_sym->attr.optional = 1;
+   param_sym->attr.intent = INTENT_IN;
+   param_sym->attr.dimension = 1;
+-  param_sym->module = gfc_get_string (module_name);
++  param_sym->module = gfc_get_string ("%s", module_name);
+    
+   /* Make the arg.  */
+   formal_arg = gfc_get_formal_arglist ();
+@@ -3957,7 +3957,7 @@ generate_isocbinding_symbol (const char *mod_name, iso_c_binding_symbol s,
+ 			"create symbol");
+ 
+   /* Say what module this symbol belongs to.  */
+-  tmp_sym->module = gfc_get_string (mod_name);
++  tmp_sym->module = gfc_get_string ("%s", mod_name);
+   tmp_sym->from_intmod = INTMOD_ISO_C_BINDING;
+   tmp_sym->intmod_sym_id = s;
+ 
+@@ -4234,7 +4234,7 @@ get_iso_c_sym (gfc_symbol *old_sym, char *new_name,
+   strcpy (new_symtree->n.sym->binding_label, new_binding_label);
+   new_symtree->n.sym->attr = old_sym->attr;
+   new_symtree->n.sym->ts = old_sym->ts;
+-  new_symtree->n.sym->module = gfc_get_string (old_sym->module);
++  new_symtree->n.sym->module = gfc_get_string ("%s", old_sym->module);
+   new_symtree->n.sym->from_intmod = old_sym->from_intmod;
+   new_symtree->n.sym->intmod_sym_id = old_sym->intmod_sym_id;
+   /* Build the formal arg list.  */
+--- a/src/gcc/fortran/trans-array.c
++++ b/src/gcc/fortran/trans-array.c
+@@ -2232,6 +2232,7 @@ gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n,
+   tree tmp;
+   char *msg;
+   const char * name = NULL;
++  int rv_neverused ATTRIBUTE_UNUSED;
+ 
+   if (!flag_bounds_check)
+     return index;
+@@ -2270,11 +2271,13 @@ gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n,
+   tmp = gfc_conv_array_lbound (descriptor, n);
+   fault = fold_build2 (LT_EXPR, boolean_type_node, index, tmp);
+   if (name)
+-    asprintf (&msg, "%s for array '%s', lower bound of dimension %d exceeded"
+-	      "(%%ld < %%ld)", gfc_msg_fault, name, n+1);
++    rv_neverused =
++      asprintf (&msg, "%s for array '%s', lower bound of dimension %d exceeded"
++		"(%%ld < %%ld)", gfc_msg_fault, name, n+1);
+   else
+-    asprintf (&msg, "%s, lower bound of dimension %d exceeded (%%ld < %%ld)",
+-	      gfc_msg_fault, n+1);
++    rv_neverused =
++      asprintf (&msg, "%s, lower bound of dimension %d exceeded (%%ld < %%ld)",
++		gfc_msg_fault, n+1);
+   gfc_trans_runtime_check (true, false, fault, &se->pre, where, msg,
+ 			   fold_convert (long_integer_type_node, index),
+ 			   fold_convert (long_integer_type_node, tmp));
+@@ -2286,11 +2289,14 @@ gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n,
+       tmp = gfc_conv_array_ubound (descriptor, n);
+       fault = fold_build2 (GT_EXPR, boolean_type_node, index, tmp);
+       if (name)
+-	asprintf (&msg, "%s for array '%s', upper bound of dimension %d "
+-			" exceeded (%%ld > %%ld)", gfc_msg_fault, name, n+1);
++	rv_neverused =
++	  asprintf (&msg, "%s for array '%s', upper bound of dimension %d "
++		    " exceeded (%%ld > %%ld)", gfc_msg_fault, name, n+1);
+       else
+-	asprintf (&msg, "%s, upper bound of dimension %d exceeded (%%ld > %%ld)",
+-		  gfc_msg_fault, n+1);
++	rv_neverused =
++	  asprintf (&msg,
++		    "%s, upper bound of dimension %d exceeded (%%ld > %%ld)",
++		    gfc_msg_fault, n+1);
+       gfc_trans_runtime_check (true, false, fault, &se->pre, where, msg,
+ 			       fold_convert (long_integer_type_node, index),
+ 			       fold_convert (long_integer_type_node, tmp));
+@@ -2474,6 +2480,7 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_symbol * sym,
+ 	  /* Check array bounds.  */
+ 	  tree cond;
+ 	  char *msg;
++	  int rv_neverused ATTRIBUTE_UNUSED;
+ 
+ 	  /* Evaluate the indexse.expr only once.  */
+ 	  indexse.expr = save_expr (indexse.expr);
+@@ -2482,9 +2489,10 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_symbol * sym,
+ 	  tmp = gfc_conv_array_lbound (se->expr, n);
+ 	  cond = fold_build2 (LT_EXPR, boolean_type_node, 
+ 			      indexse.expr, tmp);
+-	  asprintf (&msg, "%s for array '%s', "
+-	            "lower bound of dimension %d exceeded (%%ld < %%ld)",
+-		    gfc_msg_fault, sym->name, n+1);
++	  rv_neverused =
++	    asprintf (&msg, "%s for array '%s', "
++		      "lower bound of dimension %d exceeded (%%ld < %%ld)",
++		      gfc_msg_fault, sym->name, n+1);
+ 	  gfc_trans_runtime_check (true, false, cond, &se->pre, where, msg,
+ 				   fold_convert (long_integer_type_node,
+ 						 indexse.expr),
+@@ -2499,9 +2507,10 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_symbol * sym,
+ 	      tmp = gfc_conv_array_ubound (se->expr, n);
+ 	      cond = fold_build2 (GT_EXPR, boolean_type_node, 
+ 				  indexse.expr, tmp);
+-	      asprintf (&msg, "%s for array '%s', "
+-			"upper bound of dimension %d exceeded (%%ld > %%ld)",
+-			gfc_msg_fault, sym->name, n+1);
++	      rv_neverused =
++		asprintf (&msg, "%s for array '%s', "
++			  "upper bound of dimension %d exceeded (%%ld > %%ld)",
++			  gfc_msg_fault, sym->name, n+1);
+ 	      gfc_trans_runtime_check (true, false, cond, &se->pre, where, msg,
+ 				   fold_convert (long_integer_type_node,
+ 						 indexse.expr),
+@@ -3048,6 +3057,7 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop)
+ 	  for (n = 0; n < loop->dimen; n++)
+ 	    {
+ 	      bool check_upper;
++	      int rv_neverused ATTRIBUTE_UNUSED;
+ 
+ 	      dim = info->dim[n];
+ 	      if (info->ref->u.ar.dimen_type[dim] != DIMEN_RANGE)
+@@ -3063,9 +3073,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop)
+ 	      /* Zero stride is not allowed.  */
+ 	      tmp = fold_build2 (EQ_EXPR, boolean_type_node, info->stride[n],
+ 				 gfc_index_zero_node);
+-	      asprintf (&msg, "Zero stride is not allowed, for dimension %d "
+-			"of array '%s'", info->dim[n]+1,
+-			ss->expr->symtree->name);
++	      rv_neverused = 
++		asprintf (&msg, "Zero stride is not allowed, for dimension %d "
++			  "of array '%s'", info->dim[n]+1,
++			  ss->expr->symtree->name);
+ 	      gfc_trans_runtime_check (true, false, tmp, &inner,
+ 				       &ss->expr->where, msg);
+ 	      gfc_free (msg);
+@@ -3106,9 +3117,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop)
+ 				 lbound);
+ 	      tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ 				 non_zerosized, tmp);
+-	      asprintf (&msg, "%s, lower bound of dimension %d of array '%s'"
+-			" exceeded (%%ld < %%ld)", gfc_msg_fault,
+-			info->dim[n]+1, ss->expr->symtree->name);
++	      rv_neverused =
++		asprintf (&msg, "%s, lower bound of dimension %d of array '%s'"
++			  " exceeded (%%ld < %%ld)", gfc_msg_fault,
++			  info->dim[n]+1, ss->expr->symtree->name);
+ 	      gfc_trans_runtime_check (true, false, tmp, &inner,
+ 				       &ss->expr->where, msg,
+ 				       fold_convert (long_integer_type_node,
+@@ -3123,9 +3135,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop)
+ 				     info->start[n], ubound);
+ 		  tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ 				     non_zerosized, tmp);
+-	          asprintf (&msg, "%s, upper bound of dimension %d of array "
+-			    "'%s' exceeded (%%ld > %%ld)", gfc_msg_fault,
+-			    info->dim[n]+1, ss->expr->symtree->name);
++	          rv_neverused =
++		    asprintf (&msg, "%s, upper bound of dimension %d of array "
++			      "'%s' exceeded (%%ld > %%ld)", gfc_msg_fault,
++			      info->dim[n]+1, ss->expr->symtree->name);
+ 		  gfc_trans_runtime_check (true, false, tmp, &inner,
+ 			&ss->expr->where, msg,
+ 			fold_convert (long_integer_type_node, info->start[n]),
+@@ -3146,9 +3159,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop)
+ 	      tmp = fold_build2 (LT_EXPR, boolean_type_node, tmp2, lbound);
+ 	      tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ 				 non_zerosized, tmp);
+-	      asprintf (&msg, "%s, lower bound of dimension %d of array '%s'"
+-			" exceeded (%%ld < %%ld)", gfc_msg_fault,
+-			info->dim[n]+1, ss->expr->symtree->name);
++	      rv_neverused =
++		asprintf (&msg, "%s, lower bound of dimension %d of array '%s'"
++			  " exceeded (%%ld < %%ld)", gfc_msg_fault,
++			  info->dim[n]+1, ss->expr->symtree->name);
+ 	      gfc_trans_runtime_check (true, false, tmp, &inner,
+ 				       &ss->expr->where, msg,
+ 				       fold_convert (long_integer_type_node,
+@@ -3162,9 +3176,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop)
+ 		  tmp = fold_build2 (GT_EXPR, boolean_type_node, tmp2, ubound);
+ 		  tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
+ 				     non_zerosized, tmp);
+-		  asprintf (&msg, "%s, upper bound of dimension %d of array "
+-			    "'%s' exceeded (%%ld > %%ld)", gfc_msg_fault,
+-			    info->dim[n]+1, ss->expr->symtree->name);
++		  rv_neverused =
++		    asprintf (&msg, "%s, upper bound of dimension %d of array "
++			      "'%s' exceeded (%%ld > %%ld)", gfc_msg_fault,
++			      info->dim[n]+1, ss->expr->symtree->name);
+ 		  gfc_trans_runtime_check (true, false, tmp, &inner,
+ 			&ss->expr->where, msg,
+ 			fold_convert (long_integer_type_node, tmp2),
+@@ -3186,9 +3201,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop)
+ 		  tree tmp3;
+ 
+ 		  tmp3 = fold_build2 (NE_EXPR, boolean_type_node, tmp, size[n]);
+-		  asprintf (&msg, "%s, size mismatch for dimension %d "
+-			    "of array '%s' (%%ld/%%ld)", gfc_msg_bounds,
+-			    info->dim[n]+1, ss->expr->symtree->name);
++		  rv_neverused =
++		    asprintf (&msg, "%s, size mismatch for dimension %d "
++			      "of array '%s' (%%ld/%%ld)", gfc_msg_bounds,
++			      info->dim[n]+1, ss->expr->symtree->name);
+ 		  gfc_trans_runtime_check (true, false, tmp3, &inner,
+ 					   &ss->expr->where, msg,
+ 			fold_convert (long_integer_type_node, tmp),
+@@ -4449,14 +4465,16 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body)
+ 	    {
+ 	      /* Check (ubound(a) - lbound(a) == ubound(b) - lbound(b)).  */
+ 	      char * msg;
++	      int rv_neverused ATTRIBUTE_UNUSED;
+ 
+ 	      tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ 				 ubound, lbound);
+               stride2 = fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ 				     dubound, dlbound);
+               tmp = fold_build2 (NE_EXPR, gfc_array_index_type, tmp, stride2);
+-	      asprintf (&msg, "%s for dimension %d of array '%s'",
+-			gfc_msg_bounds, n+1, sym->name);
++	      rv_neverused =
++		asprintf (&msg, "%s for dimension %d of array '%s'",
++			  gfc_msg_bounds, n+1, sym->name);
+ 	      gfc_trans_runtime_check (true, false, tmp, &block, &loc, msg);
+ 	      gfc_free (msg);
+ 	    }
+@@ -5332,12 +5350,14 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, int g77,
+       if (gfc_option.flag_check_array_temporaries)
+ 	{
+ 	  char * msg;
++	  int rv_neverused ATTRIBUTE_UNUSED;
+ 
+ 	  if (fsym && proc_name)
+-	    asprintf (&msg, "An array temporary was created for argument "
+-		      "'%s' of procedure '%s'", fsym->name, proc_name);
++	    rv_neverused =
++	      asprintf (&msg, "An array temporary was created for argument "
++			"'%s' of procedure '%s'", fsym->name, proc_name);
+ 	  else
+-	    asprintf (&msg, "An array temporary was created");
++	    rv_neverused = asprintf (&msg, "An array temporary was created");
+ 
+ 	  tmp = build_fold_indirect_ref (desc);
+ 	  tmp = gfc_conv_array_data (tmp);
+--- a/src/gcc/fortran/trans-decl.c
++++ b/src/gcc/fortran/trans-decl.c
+@@ -3071,7 +3071,7 @@ gfc_find_module (const char *name)
+     {
+       struct module_htab_entry *entry = GGC_CNEW (struct module_htab_entry);
+ 
+-      entry->name = gfc_get_string (name);
++      entry->name = gfc_get_string ("%s", name);
+       entry->decls = htab_create_ggc (10, module_htab_decls_hash,
+ 				      module_htab_decls_eq, NULL);
+       *slot = (void *) entry;
+--- a/src/gcc/fortran/trans-expr.c
++++ b/src/gcc/fortran/trans-expr.c
+@@ -400,6 +400,8 @@ gfc_conv_substring (gfc_se * se, gfc_ref * ref, int kind,
+ 
+   if (flag_bounds_check)
+     {
++      int rv_neverused ATTRIBUTE_UNUSED;
++
+       tree nonempty = fold_build2 (LE_EXPR, boolean_type_node,
+ 				   start.expr, end.expr);
+ 
+@@ -409,11 +411,13 @@ gfc_conv_substring (gfc_se * se, gfc_ref * ref, int kind,
+       fault = fold_build2 (TRUTH_ANDIF_EXPR, boolean_type_node,
+ 			   nonempty, fault);
+       if (name)
+-	asprintf (&msg, "Substring out of bounds: lower bound (%%ld) of '%s' "
+-		  "is less than one", name);
++	rv_neverused =
++	  asprintf (&msg, "Substring out of bounds: lower bound (%%ld) of '%s' "
++		    "is less than one", name);
+       else
+-	asprintf (&msg, "Substring out of bounds: lower bound (%%ld)"
+-		  "is less than one");
++	rv_neverused =
++	  asprintf (&msg, "Substring out of bounds: lower bound (%%ld)"
++		    "is less than one");
+       gfc_trans_runtime_check (true, false, fault, &se->pre, where, msg,
+ 			       fold_convert (long_integer_type_node,
+ 					     start.expr));
+@@ -425,11 +429,13 @@ gfc_conv_substring (gfc_se * se, gfc_ref * ref, int kind,
+       fault = fold_build2 (TRUTH_ANDIF_EXPR, boolean_type_node,
+ 			   nonempty, fault);
+       if (name)
+-	asprintf (&msg, "Substring out of bounds: upper bound (%%ld) of '%s' "
+-		  "exceeds string length (%%ld)", name);
++	rv_neverused =
++	  asprintf (&msg, "Substring out of bounds: upper bound (%%ld) of '%s' "
++		    "exceeds string length (%%ld)", name);
+       else
+-	asprintf (&msg, "Substring out of bounds: upper bound (%%ld) "
+-		  "exceeds string length (%%ld)");
++	rv_neverused =
++	  asprintf (&msg, "Substring out of bounds: upper bound (%%ld) "
++		    "exceeds string length (%%ld)");
+       gfc_trans_runtime_check (true, false, fault, &se->pre, where, msg,
+ 			       fold_convert (long_integer_type_node, end.expr),
+ 			       fold_convert (long_integer_type_node,
+--- a/src/gcc/fortran/trans-io.c
++++ b/src/gcc/fortran/trans-io.c
+@@ -232,6 +232,7 @@ gfc_trans_io_runtime_check (tree cond, tree var, int error_code,
+   tree tmp;
+   tree arg1, arg2, arg3;
+   char *message;
++  int rv_neverused ATTRIBUTE_UNUSED;
+ 
+   if (integer_zerop (cond))
+     return;
+@@ -243,7 +244,7 @@ gfc_trans_io_runtime_check (tree cond, tree var, int error_code,
+   
+   arg2 = build_int_cst (integer_type_node, error_code),
+   
+-  asprintf (&message, "%s", _(msgid));
++  rv_neverused = asprintf (&message, "%s", _(msgid));
+   arg3 = gfc_build_addr_expr (pchar_type_node,
+ 			      gfc_build_localized_cstring_const (message));
+   gfc_free(message);
+@@ -660,14 +661,16 @@ set_string (stmtblock_t * block, stmtblock_t * postblock, tree var,
+     {
+       char * msg;
+       tree cond;
++      int rv_neverused ATTRIBUTE_UNUSED;
+ 
+       gfc_conv_label_variable (&se, e);
+       tmp = GFC_DECL_STRING_LEN (se.expr);
+       cond = fold_build2 (LT_EXPR, boolean_type_node,
+ 			  tmp, build_int_cst (TREE_TYPE (tmp), 0));
+ 
+-      asprintf(&msg, "Label assigned to variable '%s' (%%ld) is not a format "
+-	       "label", e->symtree->name);
++      rv_neverused =
++	asprintf(&msg, "Label assigned to variable '%s' (%%ld) is not a format "
++		 "label", e->symtree->name);
+       gfc_trans_runtime_check (true, false, cond, &se.pre, &e->where, msg,
+ 			       fold_convert (long_integer_type_node, tmp));
+       gfc_free (msg);
+--- a/src/gcc/fortran/trans.c
++++ b/src/gcc/fortran/trans.c
+@@ -371,6 +371,7 @@ gfc_trans_runtime_error_vararg (bool error, locus* where, const char* msgid,
+   char *message;
+   const char *p;
+   int line, nargs, i;
++  int rv_neverused ATTRIBUTE_UNUSED;
+ 
+   /* Compute the number of extra arguments from the format string.  */
+   for (p = msgid, nargs = 0; *p; p++)
+@@ -387,18 +388,18 @@ gfc_trans_runtime_error_vararg (bool error, locus* where, const char* msgid,
+   if (where)
+     {
+       line = LOCATION_LINE (where->lb->location);
+-      asprintf (&message, "At line %d of file %s",  line,
+-		where->lb->file->filename);
++      rv_neverused = asprintf (&message, "At line %d of file %s",  line,
++			       where->lb->file->filename);
+     }
+   else
+-    asprintf (&message, "In file '%s', around line %d",
+-	      gfc_source_file, input_line + 1);
++    rv_neverused = asprintf (&message, "In file '%s', around line %d",
++			     gfc_source_file, input_line + 1);
+ 
+   arg = gfc_build_addr_expr (pchar_type_node,
+ 			     gfc_build_localized_cstring_const (message));
+   gfc_free(message);
+   
+-  asprintf (&message, "%s", _(msgid));
++  rv_neverused = asprintf (&message, "%s", _(msgid));
+   arg2 = gfc_build_addr_expr (pchar_type_node,
+ 			      gfc_build_localized_cstring_const (message));
+   gfc_free(message);
+--- a/src/gcc/ira-conflicts.c
++++ b/src/gcc/ira-conflicts.c
+@@ -664,7 +664,7 @@ print_hard_reg_set (FILE *file, const char *title, HARD_REG_SET set)
+ {
+   int i, start;
+ 
+-  fprintf (file, title);
++  fputs (title, file);
+   for (start = -1, i = 0; i < FIRST_PSEUDO_REGISTER; i++)
+     {
+       if (TEST_HARD_REG_BIT (set, i))
+--- a/src/gcc/objc/objc-act.c
++++ b/src/gcc/objc/objc-act.c
+@@ -988,7 +988,7 @@ objc_lookup_protocol (tree proto, tree cls, tree typ, bool warn)
+       strcat (errbuf, " the \'");
+       strcat (errbuf, IDENTIFIER_POINTER (PROTOCOL_NAME (proto)));
+       strcat (errbuf, "\' protocol");
+-      warning (0, errbuf);
++      warning (0, "%s", errbuf);
+     }
+ 
+   return false;
+--- a/src/gcc/opts.c
++++ b/src/gcc/opts.c
+@@ -1287,7 +1287,7 @@ print_filtered_help (unsigned int include_flags,
+ 		      if (* (const char **) option->flag_var != NULL)
+ 			snprintf (new_help + strlen (new_help),
+ 				  sizeof (new_help) - strlen (new_help),
+-				  * (const char **) option->flag_var);
++				  "%s", * (const char **) option->flag_var);
+ 		    }
+ 		  else
+ 		    sprintf (new_help + strlen (new_help),
+--- a/src/gcc/toplev.c
++++ b/src/gcc/toplev.c
+@@ -1182,7 +1182,7 @@ print_to_asm_out_file (print_switch_type type, const char * text)
+     case SWITCH_TYPE_ENABLED:
+       if (prepend_sep)
+ 	fputc (' ', asm_out_file);
+-      fprintf (asm_out_file, text);
++      fputs (text, asm_out_file);
+       /* No need to return the length here as
+ 	 print_single_switch has already done it.  */
+       return 0;
+@@ -1211,7 +1211,7 @@ print_to_stderr (print_switch_type type, const char * text)
+       /* Drop through.  */
+ 
+     case SWITCH_TYPE_DESCRIPTIVE:
+-      fprintf (stderr, text);
++      fputs (text, stderr);
+       /* No need to return the length here as
+ 	 print_single_switch has already done it.  */
+       return 0;
+@@ -1437,8 +1437,11 @@ static const char *
+ pch_option_mismatch (const char *option)
+ {
+   char *r;
++  int rv_neverused ATTRIBUTE_UNUSED;
+ 
+-  asprintf (&r, _("created and used with differing settings of '%s'"), option);
++  rv_neverused = asprintf (&r,
++			   _("created and used with differing settings of '%s'"),
++			   option);
+   if (r == NULL)
+     return _("out of memory");
+   return r;
+--- a/src/gcc/tree-data-ref.c
++++ b/src/gcc/tree-data-ref.c
+@@ -4607,13 +4607,14 @@ dot_rdg_1 (FILE *file, struct graph *rdg)
+ void
+ dot_rdg (struct graph *rdg)
+ {
++  int rv_neverused ATTRIBUTE_UNUSED;
+   FILE *file = fopen ("/tmp/rdg.dot", "w");
+   gcc_assert (file != NULL);
+ 
+   dot_rdg_1 (file, rdg);
+   fclose (file);
+ 
+-  system ("dotty /tmp/rdg.dot");
++  rv_neverused = system ("dotty /tmp/rdg.dot");
+ }
+ 
+ 
+--- a/src/gcc/tree-ssa-structalias.c
++++ b/src/gcc/tree-ssa-structalias.c
+@@ -4240,6 +4240,7 @@ create_function_info_for (tree decl, const char *name)
+   tree arg;
+   unsigned int i;
+   bool is_varargs = false;
++  int rv_neverused ATTRIBUTE_UNUSED;
+ 
+   /* Create the variable info.  */
+ 
+@@ -4279,7 +4280,7 @@ create_function_info_for (tree decl, const char *name)
+ 	argdecl = arg;
+ 
+       newindex = VEC_length (varinfo_t, varmap);
+-      asprintf (&tempname, "%s.arg%d", name, i-1);
++      rv_neverused = asprintf (&tempname, "%s.arg%d", name, i-1);
+       newname = ggc_strdup (tempname);
+       free (tempname);
+ 
+@@ -4315,7 +4316,7 @@ create_function_info_for (tree decl, const char *name)
+ 	resultdecl = DECL_RESULT (decl);
+ 
+       newindex = VEC_length (varinfo_t, varmap);
+-      asprintf (&tempname, "%s.result", name);
++      rv_neverused = asprintf (&tempname, "%s.result", name);
+       newname = ggc_strdup (tempname);
+       free (tempname);
+ 
+@@ -4474,9 +4475,11 @@ create_variable_info_for (tree decl, const char *name)
+ 	  newindex = VEC_length (varinfo_t, varmap);
+ 	  if (dump_file)
+ 	    {
+-	      asprintf (&tempname, "%s." HOST_WIDE_INT_PRINT_DEC
+-			"+" HOST_WIDE_INT_PRINT_DEC,
+-			vi->name, fo->offset, fo->size);
++	      int rv_neverused ATTRIBUTE_UNUSED;
++
++	      rv_neverused = asprintf (&tempname, "%s." HOST_WIDE_INT_PRINT_DEC
++				       "+" HOST_WIDE_INT_PRINT_DEC,
++				       vi->name, fo->offset, fo->size);
+ 	      newname = ggc_strdup (tempname);
+ 	      free (tempname);
+ 	    }
+--- a/src/gcc/tree-switch-conversion.c
++++ b/src/gcc/tree-switch-conversion.c
+@@ -858,7 +858,7 @@ do_switchconv (void)
+ 	      {
+ 		gcc_assert (info.reason);
+ 		fprintf (dump_file, "Bailing out - ");
+-		fprintf (dump_file, info.reason);
++		fprintf (dump_file, "%s", info.reason);
+ 		fprintf (dump_file, "--------------------------------\n");
+ 	      }
+ 	  }
+--- a/src/libcpp/lex.c
++++ b/src/libcpp/lex.c
+@@ -1512,6 +1512,8 @@ cpp_type2name (enum cpp_ttype type)
+ void
+ cpp_output_token (const cpp_token *token, FILE *fp)
+ {
++  size_t rv_neverused ATTRIBUTE_UNUSED;
++
+   switch (TOKEN_SPELL (token))
+     {
+     case SPELL_OPERATOR:
+@@ -1545,7 +1547,7 @@ cpp_output_token (const cpp_token *token, FILE *fp)
+ 	    {
+ 	      unsigned char buffer[10];
+ 	      i += utf8_to_ucn (buffer, name + i) - 1;
+-	      fwrite (buffer, 1, 10, fp);
++	      rv_neverused = fwrite (buffer, 1, 10, fp);
+ 	    }
+ 	  else
+ 	    fputc (NODE_NAME (token->val.node)[i], fp);
+@@ -1553,7 +1555,7 @@ cpp_output_token (const cpp_token *token, FILE *fp)
+       break;
+ 
+     case SPELL_LITERAL:
+-      fwrite (token->val.str.text, 1, token->val.str.len, fp);
++      rv_neverused = fwrite (token->val.str.text, 1, token->val.str.len, fp);
+       break;
+ 
+     case SPELL_NONE:
+--- a/src/libcpp/macro.c
++++ b/src/libcpp/macro.c
+@@ -1701,7 +1701,7 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
+ 	     function-like macros, but not at the end.  */
+ 	  if (following_paste_op)
+ 	    {
+-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++	      cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg);
+ 	      return false;
+ 	    }
+ 	  break;
+@@ -1714,7 +1714,7 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
+ 	     function-like macros, but not at the beginning.  */
+ 	  if (macro->count == 1)
+ 	    {
+-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++	      cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg);
+ 	      return false;
+ 	    }
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-textdomain.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-textdomain.diff
@@ -0,0 +1,84 @@
+# DP: Set gettext's domain and textdomain to the versioned package name.
+
+--- a/src/gcc/intl.c
++++ b/src/gcc/intl.c
+@@ -56,8 +56,8 @@
+   setlocale (LC_ALL, "");
+ #endif
+ 
+-  (void) bindtextdomain ("gcc", LOCALEDIR);
+-  (void) textdomain ("gcc");
++  (void) bindtextdomain ("gcc-4.6", LOCALEDIR);
++  (void) textdomain ("gcc-4.6");
+ 
+   /* Opening quotation mark.  */
+   open_quote = _("`");
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -5157,8 +5157,8 @@
+ 	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+ 	  echo $(mkinstalldirs) $(DESTDIR)$$dir; \
+ 	  $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \
+-	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \
+-	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \
++	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.6.mo; \
++	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.6.mo; \
+ 	done
+ 
+ # Rule for regenerating the message template (gcc.pot).
+--- a/src/libcpp/init.c
++++ b/src/libcpp/init.c
+@@ -135,7 +135,7 @@
+       init_trigraph_map ();
+ 
+ #ifdef ENABLE_NLS
+-       (void) bindtextdomain (PACKAGE, LOCALEDIR);
++       (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR);
+ #endif
+     }
+ }
+--- a/src/libcpp/system.h
++++ b/src/libcpp/system.h
+@@ -265,7 +265,7 @@
+ #endif
+ 
+ #ifndef _
+-# define _(msgid) dgettext (PACKAGE, msgid)
++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid)
+ #endif
+ 
+ #ifndef N_
+--- a/src/libcpp/Makefile.in
++++ b/src/libcpp/Makefile.in
+@@ -49,6 +49,7 @@
+ LIBICONV = @LIBICONV@
+ LIBINTL = @LIBINTL@
+ PACKAGE = @PACKAGE@
++PACKAGE_SUFFIX = -4.6
+ RANLIB = @RANLIB@
+ SHELL = @SHELL@
+ USED_CATALOGS = @USED_CATALOGS@
+@@ -70,9 +71,10 @@
+ 
+ INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \
+ 	-I$(srcdir)/include
++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\"
+ 
+-ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS)
+-ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(INCLUDES) $(CPPFLAGS)
++ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(DEBCPPFLAGS)
++ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(INCLUDES) $(CPPFLAGS) $(DEBCPPFLAGS)
+ 
+ # The name of the compiler to use.
+ ENABLE_BUILD_WITH_CXX = @ENABLE_BUILD_WITH_CXX@
+@@ -168,8 +170,8 @@
+ 	  else continue; \
+ 	  fi; \
+ 	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+-	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
+-	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
++	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \
++	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \
+ 	done
+ 
+ mostlyclean:
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-default-format-security.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-default-format-security.diff
@@ -0,0 +1,54 @@
+# DP: Turn on -Wformat -Wformat-security by  default for C, C++, ObjC, ObjC++.
+
+---
+ gcc/c-common.c      |    2 +-
+ gcc/c.opt           |    2 +-
+ gcc/doc/invoke.texi |    8 ++++++++
+ 3 files changed, 10 insertions(+), 2 deletions(-)
+
+--- a/src/gcc/c-family/c-common.c
++++ b/src/gcc/c-family/c-common.c
+@@ -201,7 +201,7 @@
+ /* Warn about format/argument anomalies in calls to formatted I/O functions
+    (*printf, *scanf, strftime, strfmon, etc.).  */
+ 
+-int warn_format;
++int warn_format = 1;
+ 
+ /* C/ObjC language option variables.  */
+ 
+--- a/src/gcc/c-family/c.opt
++++ b/src/gcc/c-family/c.opt
+@@ -384,7 +384,7 @@
+ Warn about format strings that contain NUL bytes
+ 
+ Wformat-security
+-C ObjC C++ ObjC++ Var(warn_format_security) Warning
++C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning
+ Warn about possible security problems with format functions
+ 
+ Wformat-y2k
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -3102,6 +3102,9 @@
+ @option{-Wformat-nonliteral}, @option{-Wformat-security}, and
+ @option{-Wformat=2} are available, but are not included in @option{-Wall}.
+ 
++NOTE: In Ubuntu 8.10 and later versions this option is enabled by default
++for C, C++, ObjC, ObjC++.  To disable, use @option{-Wformat=0}.
++
+ @item -Wformat-y2k
+ @opindex Wformat-y2k
+ @opindex Wno-format-y2k
+@@ -3155,6 +3158,11 @@
+ in future warnings may be added to @option{-Wformat-security} that are not
+ included in @option{-Wformat-nonliteral}.)
+ 
++NOTE: In Ubuntu 8.10 and later versions this option is enabled by default
++for C, C++, ObjC, ObjC++.  To disable, use @option{-Wno-format-security},
++or disable all format warnings with @option{-Wformat=0}.  To make format
++security warnings fatal, specify @option{-Werror=format-security}.
++
+ @item -Wformat=2
+ @opindex Wformat=2
+ @opindex Wno-format=2
--- gcc-4.6-4.6.3.orig/debian/patches/alpha-ieee-doc.diff
+++ gcc-4.6-4.6.3/debian/patches/alpha-ieee-doc.diff
@@ -0,0 +1,24 @@
+# DP: #212912
+# DP: on alpha-linux, make -mieee default and add -mieee-disable switch
+# DP: to turn default off (doc patch)
+
+---
+ gcc/doc/invoke.texi |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -9980,6 +9980,13 @@ able to correctly support denormalized numbers and exceptional IEEE
+ values such as not-a-number and plus/minus infinity.  Other Alpha
+ compilers call this option @option{-ieee_with_no_inexact}.
+ 
++DEBIAN SPECIFIC: This option is on by default, unless
++@option{-ffinite-math-only} (which is part of the @option{-ffast-math}
++set) is specified, because the software functions in the GNU libc math
++libraries generate denormalized numbers, NaNs, and infs (all of which
++will cause a programs to SIGFPE when it attempts to use the results without
++@option{-mieee}).
++
+ @item -mieee-with-inexact
+ @opindex mieee-with-inexact
+ This is like @option{-mieee} except the generated code also maintains
--- gcc-4.6-4.6.3.orig/debian/patches/cross-fixes-trunk.diff
+++ gcc-4.6-4.6.3/debian/patches/cross-fixes-trunk.diff
@@ -0,0 +1,90 @@
+# DP: Fix the linker error when creating an xcc for ia64
+
+---
+ gcc/config/alpha/linux-unwind.h |    3 +++
+ gcc/config/ia64/fde-glibc.c     |    3 +++
+ gcc/config/ia64/unwind-ia64.c   |    3 ++-
+ gcc/unwind-compat.c             |    2 ++
+ gcc/unwind-generic.h            |    2 ++
+ 6 files changed, 14 insertions(+), 1 deletions(-)
+
+--- a/src/libgcc/config/alpha/linux-unwind.h
++++ b/src/libgcc/config/alpha/linux-unwind.h
+@@ -29,6 +29,7 @@ Boston, MA 02110-1301, USA.  */
+ /* Do code reading to identify a signal frame, and set the frame
+    state data appropriately.  See unwind-dw2.c for the structs.  */
+
++#ifndef inhibit_libc
+ #include <signal.h>
+ #include <sys/ucontext.h>
+
+@@ -80,3 +81,5 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
+   fs->retaddr_column = 64;
+   return _URC_NO_REASON;
+ }
++
++#endif
+--- a/src/libgcc/config/ia64/fde-glibc.c
++++ b/src/libgcc/config/ia64/fde-glibc.c
+@@ -31,6 +31,7 @@
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE 1
+ #endif
++#ifndef inhibit_libc
+ #include "config.h"
+ #include <stddef.h>
+ #include <stdlib.h>
+@@ -162,3 +163,5 @@ _Unwind_FindTableEntry (void *pc, unsigned long *segment_base,
+
+   return data.ret;
+ }
++
++#endif
+--- a/src/libgcc/config/ia64/unwind-ia64.c
++++ b/src/libgcc/config/ia64/unwind-ia64.c
+@@ -27,6 +27,7 @@
+    This exception does not however invalidate any other reasons why
+    the executable file might be covered by the GNU General Public License.  */
+
++#ifndef inhibit_libc
+ #include "tconfig.h"
+ #include "tsystem.h"
+ #include "coretypes.h"
+@@ -2417,3 +2417,4 @@ alias (_Unwind_SetIP);
+ #endif
+
+ #endif
++#endif
+--- a/src/libgcc/unwind-compat.c
++++ b/src/libgcc/unwind-compat.c
+@@ -29,6 +29,7 @@
+    02110-1301, USA.  */
+
+ #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS)
++#ifndef inhibit_libc
+ #include "tconfig.h"
+ #include "tsystem.h"
+ #include "unwind.h"
+@@ -213,3 +214,4 @@ _Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
+ }
+ symver (_Unwind_SetIP, GCC_3.0);
+ #endif
++#endif
+--- a/src/libgcc/unwind-generic.h
++++ b/src/libgcc/unwind-generic.h
+@@ -214,6 +214,7 @@ _Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *);
+    compatible with the standard ABI for IA-64, we inline these.  */
+
+ #ifdef __ia64__
++#ifndef inhibit_libc
+ #include <stdlib.h>
+
+ static inline _Unwind_Ptr
+@@ -232,6 +233,7 @@ _Unwind_GetTextRelBase (struct _Unwind_Context *_C __attribute__ ((__unused__)))
+
+ /* @@@ Retrieve the Backing Store Pointer of the given context.  */
+ extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *);
++#endif
+ #else
+ extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
+ extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
--- gcc-4.6-4.6.3.orig/debian/patches/libstdc++-pic.diff
+++ gcc-4.6-4.6.3/debian/patches/libstdc++-pic.diff
@@ -0,0 +1,53 @@
+# DP: Build and install libstdc++_pic.a library.
+
+---
+ libstdc++-v3/src/Makefile.am |    4 ++++
+ libstdc++-v3/src/Makefile.in |    8 +++++++-
+ 2 files changed, 11 insertions(+), 1 deletions(-)
+
+--- a/src/libstdc++-v3/src/Makefile.am
++++ b/src/libstdc++-v3/src/Makefile.am
+@@ -445,6 +445,11 @@
+ 	  $(CXX) $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+ 
+ 
++install-exec-local:
++	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a
++	$(MKDIR_P) $(DESTDIR)$(toolexeclibdir)
++	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
++
+ # Added bits to build debug library.
+ if GLIBCXX_BUILD_DEBUG
+ all-local: build_debug
+--- a/src/libstdc++-v3/src/Makefile.in
++++ b/src/libstdc++-v3/src/Makefile.in
+@@ -725,7 +725,7 @@
+ 
+ install-dvi-am:
+ 
+-install-exec-am: install-toolexeclibLTLIBRARIES
++install-exec-am: install-exec-local install-toolexeclibLTLIBRARIES
+ 
+ install-html: install-html-am
+ 
+@@ -774,7 +774,7 @@
+ 	distclean-libtool distclean-tags dvi dvi-am html html-am info \
+ 	info-am install install-am install-data install-data-am \
+ 	install-data-local install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
++	install-exec-am install-exec-local install-html install-html-am install-info \
+ 	install-info-am install-man install-pdf install-pdf-am \
+ 	install-ps install-ps-am install-strip \
+ 	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+@@ -989,6 +989,11 @@
+ @GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.o: compatibility-ldbl.cc
+ @GLIBCXX_LDBL_COMPAT_TRUE@	$(CXXCOMPILE) -mlong-double-64 -c $<
+ 
++install-exec-local:
++	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a
++	$(MKDIR_P) $(DESTDIR)$(toolexeclibdir)
++	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
++
+ # Added bits to build debug library.
+ @GLIBCXX_BUILD_DEBUG_TRUE@all-local: build_debug
+ @GLIBCXX_BUILD_DEBUG_TRUE@install-data-local: install_debug
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-arm-abi-conformance.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-arm-abi-conformance.diff
@@ -0,0 +1,591 @@
+# DP: Fix ARM ABI conformance regression.
+
+gcc/
+
+2012-02-28  Richard Earnshaw  <rearnsha@arm.com>
+
+	* arm.c (aapcs_vfp_is_call_or_return_candidate): Only use the machine
+	mode if there is no type information available.
+
+gcc/testsuite/
+
+2012-02-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+
+	* gcc.target/arm/aapcs/vfp1.c (dg_do run): Run on all eabi variants.
+	* gcc.target/arm/aapcs/vfp2.c: Likewise.
+	* gcc.target/arm/aapcs/vfp3.c: Likewise.
+	* gcc.target/arm/aapcs/vfp4.c: Likewise.
+	* gcc.target/arm/aapcs/vfp5.c: Likewise.
+	* gcc.target/arm/aapcs/vfp6.c: Likewise.
+	* gcc.target/arm/aapcs/vfp7.c: Likewise.
+	* gcc.target/arm/aapcs/vfp8.c: Likewise.
+	* gcc.target/arm/aapcs/vfp9.c: Likewise.
+	* gcc.target/arm/aapcs/vfp10.c: Likewise.
+	* gcc.target/arm/aapcs/vfp11.c: Likewise.
+	* gcc.target/arm/aapcs/vfp12.c: Likewise.
+	* gcc.target/arm/aapcs/vfp13.c: Likewise.
+	* gcc.target/arm/aapcs/vfp14.c: Likewise.
+	* gcc.target/arm/aapcs/vfp15.c: Likewise.
+	* gcc.target/arm/aapcs/vfp16.c: Likewise.
+	* gcc.target/arm/aapcs/vfp17.c: Likewise.
+	* gcc.target/arm/neon-constants.h: New file.
+	* gcc.target/arm/aapcs/neon-constants.h: New file.
+	* gcc.target/arm/aapcs/neon-vect1.c: New test.
+	* gcc.target/arm/aapcs/neon-vect2.c: New test.
+	* gcc.target/arm/aapcs/neon-vect3.c: New test.
+	* gcc.target/arm/aapcs/neon-vect4.c: New test.
+	* gcc.target/arm/aapcs/neon-vect5.c: New test.
+	* gcc.target/arm/aapcs/neon-vect6.c: New test.
+	* gcc.target/arm/aapcs/neon-vect7.c: New test.
+	* gcc.target/arm/aapcs/neon-vect8.c: New test.
+
+ 
+--- a/src/gcc/config/arm/arm.c	2012-03-06 13:24:25 +0000
++++ b/src/gcc/config/arm/arm.c	2012-03-08 15:46:42 +0000
+@@ -4331,6 +4331,11 @@
+ 	  (TARGET_VFP_DOUBLE || !is_double));
+ }
+ 
++/* Return true if an argument whose type is TYPE, or mode is MODE, is
++   suitable for passing or returning in VFP registers for the PCS
++   variant selected.  If it is, then *BASE_MODE is updated to contain
++   a machine mode describing each element of the argument's type and
++   *COUNT to hold the number of such elements.  */
+ static bool
+ aapcs_vfp_is_call_or_return_candidate (enum arm_pcs pcs_variant,
+ 				       enum machine_mode mode, const_tree type,
+@@ -4338,9 +4343,20 @@
+ {
+   enum machine_mode new_mode = VOIDmode;
+ 
+-  if (GET_MODE_CLASS (mode) == MODE_FLOAT
+-      || GET_MODE_CLASS (mode) == MODE_VECTOR_INT
+-      || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
++  /* If we have the type information, prefer that to working things
++     out from the mode.  */
++  if (type)
++    {
++      int ag_count = aapcs_vfp_sub_candidate (type, &new_mode);
++
++      if (ag_count > 0 && ag_count <= 4)
++	*count = ag_count;
++      else
++	return false;
++    }
++  else if (GET_MODE_CLASS (mode) == MODE_FLOAT
++	   || GET_MODE_CLASS (mode) == MODE_VECTOR_INT
++	   || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
+     {
+       *count = 1;
+       new_mode = mode;
+@@ -4350,15 +4366,6 @@
+       *count = 2;
+       new_mode = (mode == DCmode ? DFmode : SFmode);
+     }
+-  else if (type && (mode == BLKmode || TREE_CODE (type) == VECTOR_TYPE))
+-    {
+-      int ag_count = aapcs_vfp_sub_candidate (type, &new_mode);
+-
+-      if (ag_count > 0 && ag_count <= 4)
+-	*count = ag_count;
+-      else
+-	return false;
+-    }
+   else
+     return false;
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/abitest.h	2009-08-06 17:15:19 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/abitest.h	2012-03-01 09:33:24 +0000
+@@ -1,3 +1,4 @@
++
+ #define IN_FRAMEWORK
+ 
+ #ifdef VFP
+@@ -10,6 +11,13 @@
+ #define D6	48
+ #define D7	56
+ 
++#ifdef NEON
++#define Q0      D0
++#define Q1      D2
++#define Q2      D4
++#define Q3      D6
++#endif
++
+ #define S0	64
+ #define S1	68
+ #define S2	72
+@@ -27,24 +35,19 @@
+ #define S14	120
+ #define S15	124
+ 
+-#define R0	128
+-#define R1	132
+-#define R2	136
+-#define R3	140
+-
+-#define STACK	144
+-
++#define CORE_REG_START 128
+ #else
+-
+-#define R0	0
+-#define R1	4
+-#define R2	8
+-#define R3	12
+-
+-#define STACK   16
+-
++#define CORE_REG_START 0
+ #endif
+ 
++#define R0	CORE_REG_START
++#define R1	(R0 + 4)
++#define R2	(R1 + 4)
++#define R3	(R2 + 4)
++#define STACK	(R3 + 4)
++
++
++
+ extern void abort (void);
+ 
+ __attribute__((naked))  void dumpregs () __asm("myfunc");
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-constants.h	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-constants.h	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,33 @@
++
++
++#include "arm_neon.h"
++
++const int32x4_t i32x4_constvec1 = { 1101, 1102, 1103, 1104};
++const int32x4_t i32x4_constvec2 = { 2101, 2102, 2103, 2104};
++
++#define ELEM(INDEX) .val[INDEX]
++
++const int32x4x2_t i32x4x2_constvec1 =   {ELEM(0) = {0xaddebccb,11,12,13}, 
++					 ELEM(1) = {14, 15, 16, 17} };
++
++const int32x4x2_t i32x4x2_constvec2 = { ELEM(0) = {0xaadebcca,11,12,13}, 
++			                ELEM(1) = {140, 15, 16, 17}};
++
++const int32x4x3_t i32x4x3_constvec1 = { ELEM(0) = {0xabbccdde,8, 9, 10},
++					ELEM(1) = {0xabcccdde, 26, 27, 28},
++			                ELEM(2) = {0xaccccddf, 29, 30, 31}};
++
++const int32x4x3_t i32x4x3_constvec2 = { ELEM(0) = {0xbccccdd0,8, 9, 10},
++					ELEM(1) = {0xbdfe1000, 26, 27, 28},
++			                ELEM(2) = {0xaccccddf, 29, 30, 31}};
++const float32x4x2_t f32x4x2_constvec1 =
++  { ELEM(0) = { 7.101f, 0.201f, 0.301f, 0.401f} ,
++    ELEM(1) = { 8.101f, 0.501f, 0.601f, 0.701f} };
++
++const float32x4x2_t f32x4x2_constvec2 = 
++  { ELEM(0) = { 11.99f , 11.21f, 1.27f, 8.74f},
++    ELEM(1) = { 13.45f , 1.23f ,1.24f, 1.26f}};
++
++const int32x2_t i32x2_constvec1 = { 1283, 1345 };
++const int32x2x2_t i32x2x2_constvec1 = { ELEM(0) = { 0xabcdefab, 32 },
++					ELEM(1) = { 0xabcdefbc, 33 }};
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect1.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect1.c	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,27 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok  } */
++/* { dg-require-effective-target arm_neon_ok  } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect1.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(float, 3.0f, S4) /* D2, Q1 */
++ARG(int32x4x2_t, i32x4x2_constvec1, Q2) /* Q2, Q3 - D4-D6 , s5-s12 */
++ARG(double, 12.0, D3) /* Backfill this particular argument.  */
++ARG(int32x4x2_t, i32x4x2_constvec2, STACK) 
++ARG(float, 5.0f, STACK+sizeof(int32x4x2_t)) /* No backfill allowed.  */
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect2.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect2.c	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,23 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect2.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1.  */
++ARG(float, 3.0f, S4) /* D2, Q1 occupied.  */
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect3.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect3.c	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,26 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect3.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(float, 3.0f, S4) /* D2, Q1 */
++ARG(int32x4x2_t, i32x4x2_constvec1, Q2) /* Q2, Q3 - D4-D6 , s5-s12 */
++ARG(int32x4x2_t, i32x4x2_constvec2, STACK) 
++ARG(double, 11.0, STACK+sizeof(int32x4x2_t)) /* No backfill in D3.  */
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect4.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect4.c	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,27 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok  } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect4.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(float, 3.0f, S4) /* D2, Q1 */
++ARG(int32x4x2_t, i32x4x2_constvec1, Q2) /* Q2, Q3 - D4-D6 , s5-s12 */
++ARG(double, 12.0, D3) /* Backfill this particular argument.  */
++ARG(float, 5.0f, S5) /* Backfill in S5.  */
++ARG(int32x4x2_t, i32x4x2_constvec2, STACK) 
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect5.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect5.c	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,28 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect5.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(float, 3.0f, S4) /* D2, Q1 */
++ARG(float32x4x2_t, f32x4x2_constvec1, Q2) /* Q2, Q3 - D4-D6 , s5-s12 */
++ARG(double, 12.0, D3) /* Backfill this particular argument.  */
++ARG(int32x4x2_t, i32x4x2_constvec2, STACK) 
++ARG(float, 5.0f, STACK+sizeof(int32x4x2_t)) /* No backfill allowed.  */
++LAST_ARG(int, 3, R0)
++
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect6.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect6.c	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,24 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect6.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(int32x4_t, i32x4_constvec2, Q0) /* D0, D1 */
++ARG(int32x4x3_t, i32x4x3_constvec1, Q1) /* Q1, Q2, Q3  */
++ARG(int32x4x3_t, i32x4x3_constvec2, STACK)
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect7.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect7.c	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,27 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect7.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(float, 24.3f, S0) /* S0 , D0, Q0 */
++ARG(int32x4x3_t, i32x4x3_constvec1, Q1) /* Q1, Q2, Q3  */
++ARG(double, 25.6, D1)
++ARG(float, 12.67f, S1)
++ARG(int32x4x3_t, i32x4x3_constvec2, STACK)
++ARG(double, 2.47, STACK+sizeof(int32x4x3_t))
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect8.c	1970-01-01 00:00:00 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/neon-vect8.c	2012-03-01 09:33:24 +0000
+@@ -0,0 +1,27 @@
++/* Test AAPCS layout (VFP variant for Neon types) */
++
++/* { dg-do run { target arm*-*-*eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-add-options arm_neon } */
++
++
++#ifndef IN_FRAMEWORK
++#define VFP
++#define NEON
++#define TESTFILE "neon-vect8.c"
++#include "neon-constants.h"
++
++
++#include "abitest.h"
++#else
++
++ARG(float, 24.3f, S0) /* S0 , D0, Q0 */
++ARG(int32x2_t, i32x2_constvec1, D1) /* D1  */
++ARG(double, 25.6, D2)
++ARG(float, 12.67f, S1)
++ARG(int32x4x3_t, i32x4x3_constvec2, STACK)
++ARG(double, 2.47, STACK+sizeof(int32x4x3_t))
++LAST_ARG(int, 3, R0)
++#endif
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp15.c	2009-08-06 17:15:19 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp15.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp16.c	2009-08-06 17:15:19 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp16.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp17.c	2009-08-06 17:15:19 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp17.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
+--- a/src/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c	2009-08-06 13:27:45 +0000
++++ b/src/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c	2012-03-01 09:33:24 +0000
+@@ -1,6 +1,6 @@
+ /* Test AAPCS layout (VFP variant) */
+ 
+-/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-do run { target arm*-*-*eabi* } } */
+ /* { dg-require-effective-target arm_hard_vfp_ok } */
+ /* { dg-require-effective-target arm32 } */
+ /* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
--- gcc-4.6-4.6.3.orig/debian/patches/ada-mips.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-mips.diff
@@ -0,0 +1,29 @@
+# DP: Improve support for mips.
+
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1682,10 +1682,15 @@
+   s-taprop.adb<s-taprop-linux.adb \
+   s-tasinf.ads<s-tasinf-linux.ads \
+   s-tasinf.adb<s-tasinf-linux.adb \
+-  s-taspri.ads<s-taspri-posix.ads \
++  s-taspri.ads<s-taspri-posix-noaltstack.ads \
+   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+   system.ads<system-linux-mips.ads
+ 
++  TOOLS_TARGET_PAIRS =  \
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
++    indepsw.adb<indepsw-gnu.adb
++
++  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
+   EH_MECHANISM=-gcc
+   THREADSLIB = -lpthread
+   GNATLIB_SHARED = gnatlib-shared-dual
+--- a/src/config/bootstrap-debug.mk
++++ b/src/config/bootstrap-debug.mk
+@@ -9,4 +9,5 @@
+ # For more thorough testing, see bootstrap-debug-lean.mk
+ 
+ STAGE2_CFLAGS += -gtoggle
++STAGE3_CFLAGS += -gtoggle
+ do-compare = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2
--- gcc-4.6-4.6.3.orig/debian/patches/m68k-fp-cmp-zero.diff
+++ gcc-4.6-4.6.3/debian/patches/m68k-fp-cmp-zero.diff
@@ -0,0 +1,118 @@
+[backport proposed and approved but not yet applied fix for a
+ wrong-code bug in m68k fp compares with zero <mikpe@it.uu.se>]
+
+Date: Wed, 19 Oct 2011 22:29:36 +0100
+From: Julian Brown <julian at codesourcery dot com>
+Subject: [PATCH, m68k] Fix floating-point comparisons with zero
+List-Archive: <http://gcc.gnu.org/ml/gcc-patches/>
+
+Hi,
+
+It appears that m68k floating-point comparisons may have been
+subtly broken since 2007 when the following patch was applied:
+
+  http://gcc.gnu.org/ml/gcc-patches/2007-09/msg01570.html
+
+The bug shows with our internal 4.6-based branch, but appears to be
+latent on mainline (generated code is perturbed by r171236, an
+apparently-unrelated change -- if that commit alone is reverted, the bug
+reappears on current trunk). The discussion below was written wrt. the
+previously-mentioned 4.6 branch, so details may be slightly different on
+mainline, but the outcome is the same.
+
+The trouble is the code introduced in m68k.c:notice_update_cc, intended
+to reverse the sense of comparisons for one particular
+*cmp<mode>_68881/*cmp<mode>_cf alternative, inadvertently also inverts
+the sense for tst<mode>_68881/tst<mode>_cf (FP comparisons against
+zero).
+
+For the test case gcc.c-torture/execute/ieee/20010114-2.c, the
+badness only triggers when -freorder-blocks is in effect (-O2 and
+above). Two comparisons (of the same variable) against zero are munged
+into one in final.c after basic-block reordering makes them
+consecutive, and we get:
+
+	ftst.s %d0	| x
+	fjgt .L13	|
+(final.c omits a redundant "ftst.s %d0" here)
+	fjngt .L2	|
+
+when we ought to have got:
+
+	ftst.s %d0	| x
+	fjgt .L13	|
+	fjnlt .L2	|
+
+The bug only triggers due to the omission of the test, else it would
+happen (far) more often: if the ftst is actually emitted, the flags get
+reset before any harm can be done:
+
+(define_insn "tst<mode>_68881"
+  [(set (cc0)
+	(compare (match_operand:FP 0 "general_operand" "f<FP:dreg>m")
+		 (match_operand:FP 1 "const0_operand" "H")))]
+  "TARGET_68881"
+{
+  cc_status.flags = CC_IN_68881;  /* unsets CC_REVERSED & other flags */
+  ...
+
+but, when final.c decides the second ftst is redundant, nothing unsets
+CC_REVERSED, so we actually (incorrectly) treat the comparison as
+having been done with reversed operands.
+
+We can fix this by never setting CC_REVERSED for ftst instructions in
+the first place. The problem is that the test (in notice_update_cc),
+
+  if (cc_status.value2 && GET_CODE (cc_status.value2) == COMPARE
+      && GET_MODE_CLASS (GET_MODE (XEXP (cc_status.value2, 0))) == MODE_FLOAT)
+    {
+      cc_status.flags = CC_IN_68881;
+      if (!FP_REG_P (XEXP (cc_status.value2, 0)))
+	cc_status.flags |= CC_REVERSED;
+    }
+
+is not strict enough, and triggers for ftst instructions (even elided
+ones), as well as for the intended third alternative of fcmp.
+
+So, the fix is to tighten up the inner condition to not trigger for
+ftst. The attached patch does that, and we get the following test result
+delta (as well as some noise in libstdc++ results, but I think those
+are environment-related):
+
+FAIL -> PASS: gcc.c-torture/execute/ieee/20010114-2.c execution,  -O2 
+FAIL -> PASS: gcc.c-torture/execute/ieee/20010114-2.c execution,  -O3 -fomit-frame-pointer 
+FAIL -> PASS: gcc.c-torture/execute/ieee/20010114-2.c execution,  -O3 -g 
+FAIL -> PASS: gcc.c-torture/execute/ieee/20030331-1.c execution,  -O2 
+FAIL -> PASS: gcc.c-torture/execute/ieee/20030331-1.c execution,  -O3 -fomit-frame-pointer 
+FAIL -> PASS: gcc.c-torture/execute/ieee/20030331-1.c execution,  -O3 -g 
+
+These results are against mainline *with r171236 reverted*, cross to
+ColdFire Linux -- otherwise results are the same before/after. I believe
+the patch is still needed regardless though.
+
+OK to apply?
+
+Thanks,
+
+Julian
+
+ChangeLog
+
+    gcc/
+    * config/m68k/m68k.c (notice_update_cc): Tighten condition for
+    setting CC_REVERSED for FP comparisons.
+
+Index: gcc-4.6-4.6.3/src/gcc/config/m68k/m68k.c
+===================================================================
+--- gcc-4.6-4.6.3.orig/src/gcc/config/m68k/m68k.c	2012-03-04 15:55:43.000000000 +0000
++++ gcc-4.6-4.6.3/src/gcc/config/m68k/m68k.c	2012-03-04 15:59:23.000000000 +0000
+@@ -4306,7 +4306,8 @@
+       && GET_MODE_CLASS (GET_MODE (XEXP (cc_status.value2, 0))) == MODE_FLOAT)
+     {
+       cc_status.flags = CC_IN_68881;
+-      if (!FP_REG_P (XEXP (cc_status.value2, 0)))
++      if (!FP_REG_P (XEXP (cc_status.value2, 0))
++	  && FP_REG_P (XEXP (cc_status.value2, 1)))
+ 	cc_status.flags |= CC_REVERSED;
+     }
+ }
--- gcc-4.6-4.6.3.orig/debian/patches/cross-fixes.diff
+++ gcc-4.6-4.6.3/debian/patches/cross-fixes.diff
@@ -0,0 +1,90 @@
+# DP: Fix the linker error when creating an xcc for ia64
+
+---
+ gcc/config/alpha/linux-unwind.h |    3 +++
+ gcc/config/ia64/fde-glibc.c     |    3 +++
+ gcc/config/ia64/unwind-ia64.c   |    3 ++-
+ gcc/unwind-compat.c             |    2 ++
+ gcc/unwind-generic.h            |    2 ++
+ 6 files changed, 14 insertions(+), 1 deletions(-)
+
+--- a/src/gcc/config/alpha/linux-unwind.h
++++ b/src/gcc/config/alpha/linux-unwind.h
+@@ -29,6 +29,7 @@ Boston, MA 02110-1301, USA.  */
+ /* Do code reading to identify a signal frame, and set the frame
+    state data appropriately.  See unwind-dw2.c for the structs.  */
+ 
++#ifndef inhibit_libc
+ #include <signal.h>
+ #include <sys/ucontext.h>
+ 
+@@ -80,3 +81,5 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
+   fs->retaddr_column = 64;
+   return _URC_NO_REASON;
+ }
++
++#endif
+--- a/src/gcc/config/ia64/fde-glibc.c
++++ b/src/gcc/config/ia64/fde-glibc.c
+@@ -31,6 +31,7 @@
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE 1
+ #endif
++#ifndef inhibit_libc
+ #include "config.h"
+ #include <stddef.h>
+ #include <stdlib.h>
+@@ -162,3 +163,5 @@ _Unwind_FindTableEntry (void *pc, unsigned long *segment_base,
+ 
+   return data.ret;
+ }
++
++#endif
+--- a/src/gcc/config/ia64/unwind-ia64.c
++++ b/src/gcc/config/ia64/unwind-ia64.c
+@@ -27,6 +27,7 @@
+    This exception does not however invalidate any other reasons why
+    the executable file might be covered by the GNU General Public License.  */
+ 
++#ifndef inhibit_libc
+ #include "tconfig.h"
+ #include "tsystem.h"
+ #include "coretypes.h"
+@@ -2417,3 +2417,4 @@ alias (_Unwind_SetIP);
+ #endif
+ 
+ #endif
++#endif
+--- a/src/gcc/unwind-compat.c
++++ b/src/gcc/unwind-compat.c
+@@ -29,6 +29,7 @@
+    02110-1301, USA.  */
+ 
+ #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS)
++#ifndef inhibit_libc
+ #include "tconfig.h"
+ #include "tsystem.h"
+ #include "unwind.h"
+@@ -213,3 +214,4 @@ _Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
+ }
+ symver (_Unwind_SetIP, GCC_3.0);
+ #endif
++#endif
+--- a/src/gcc/unwind-generic.h
++++ b/src/gcc/unwind-generic.h
+@@ -214,6 +214,7 @@ _Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *);
+    compatible with the standard ABI for IA-64, we inline these.  */
+ 
+ #ifdef __ia64__
++#ifndef inhibit_libc
+ #include <stdlib.h>
+ 
+ static inline _Unwind_Ptr
+@@ -232,6 +233,7 @@ _Unwind_GetTextRelBase (struct _Unwind_Context *_C __attribute__ ((__unused__)))
+ 
+ /* @@@ Retrieve the Backing Store Pointer of the given context.  */
+ extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *);
++#endif
+ #else
+ extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
+ extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
--- gcc-4.6-4.6.3.orig/debian/patches/svn-updates-linaro.diff
+++ gcc-4.6-4.6.3/debian/patches/svn-updates-linaro.diff
@@ -0,0 +1,8871 @@
+# DP: updates from the 4.6 branch upto 20121127 (r193837).
+
+last_updated()
+{
+        cat > ${dir}LAST_UPDATED <<EOF
+Tue Nov 27 06:26:16 CET 2012
+Tue Nov 27 05:26:16 UTC 2012 (revision 193837)
+EOF
+}
+
+svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@189991 svn://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch \
+	| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
+	| awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
+
+Index: gcc/targhooks.c
+===================================================================
+--- a/src/gcc/targhooks.c	(revision
++++ b/src/gcc/targhooks.c	(revision
+@@ -979,6 +979,13 @@
+    return id;
+ }
+ 
++/* Default to natural alignment for vector types.  */
++HOST_WIDE_INT
++default_vector_alignment (const_tree type)
++{
++  return tree_low_cst (TYPE_SIZE (type), 0);
++}
++
+ bool
+ default_builtin_vector_alignment_reachable (const_tree type, bool is_packed)
+ {
+Index: gcc/targhooks.h
+===================================================================
+--- a/src/gcc/targhooks.h	(revision
++++ b/src/gcc/targhooks.h	(revision
+@@ -85,6 +85,8 @@
+ 
+ extern tree default_builtin_reciprocal (unsigned int, bool, bool);
+ 
++extern HOST_WIDE_INT default_vector_alignment (const_tree);
++
+ extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
+ extern bool
+ default_builtin_support_vector_misalignment (enum machine_mode mode,
+Index: gcc/target.def
+===================================================================
+--- a/src/gcc/target.def	(revision
++++ b/src/gcc/target.def	(revision
+@@ -1611,6 +1611,16 @@
+  bool, (enum machine_mode mode),
+  hook_bool_mode_false)
+ 
++DEFHOOK
++(vector_alignment,
++ "This hook can be used to define the alignment for a vector of type\n\
++@var{type}, in order to comply with a platform ABI.  The default is to\n\
++require natural alignment for vector types.  The alignment returned by\n\
++this hook must be a power-of-two multiple of the default alignment of\n\
++the vector element type.",
++ HOST_WIDE_INT, (const_tree type),
++ default_vector_alignment)
++
+ /* Compute cost of moving data from a register of class FROM to one of
+    TO, using MODE.  */
+ DEFHOOK
+Index: gcc/DATESTAMP
+===================================================================
+--- a/src/gcc/DATESTAMP	(revision
++++ b/src/gcc/DATESTAMP	(revision
+@@ -1 +1 @@
+-20120731
++20121127
+Index: gcc/configure
+===================================================================
+--- a/src/gcc/configure	(revision
++++ b/src/gcc/configure	(revision
+@@ -25529,7 +25529,9 @@
+   $as_echo_n "(cached) " >&6
+ else
+   gcc_cv_ld_no_dot_syms=no
+-    if test $in_tree_ld = yes ; then
++    if test x"$ld_is_gold" = xyes; then
++      gcc_cv_ld_no_dot_syms=yes
++    elif test $in_tree_ld = yes ; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
+         gcc_cv_ld_no_dot_syms=yes
+       fi
+@@ -25573,7 +25575,9 @@
+   $as_echo_n "(cached) " >&6
+ else
+   gcc_cv_ld_large_toc=no
+-    if test $in_tree_ld = yes ; then
++    if test x"$ld_is_gold" = xyes; then
++      gcc_cv_ld_large_toc=yes
++    elif test $in_tree_ld = yes ; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
+         gcc_cv_ld_large_toc=yes
+       fi
+Index: gcc/fold-const.c
+===================================================================
+--- a/src/gcc/fold-const.c	(revision
++++ b/src/gcc/fold-const.c	(revision
+@@ -6003,10 +6003,11 @@
+     }
+ 
+   /* This transformation is only worthwhile if we don't have to wrap ARG
+-     in a SAVE_EXPR and the operation can be simplified on at least one
+-     of the branches once its pushed inside the COND_EXPR.  */
++     in a SAVE_EXPR and the operation can be simplified without recursing
++     on at least one of the branches once its pushed inside the COND_EXPR.  */
+   if (!TREE_CONSTANT (arg)
+       && (TREE_SIDE_EFFECTS (arg)
++	  || TREE_CODE (arg) == COND_EXPR || TREE_CODE (arg) == VEC_COND_EXPR
+ 	  || TREE_CONSTANT (true_value) || TREE_CONSTANT (false_value)))
+     return NULL_TREE;
+ 
+@@ -6771,12 +6772,14 @@
+ 	   && TREE_TYPE (TREE_OPERAND (arg1, 0)) == inner_type))
+     return NULL_TREE;
+ 
+-  if ((TYPE_UNSIGNED (inner_type) != TYPE_UNSIGNED (outer_type)
+-       || POINTER_TYPE_P (inner_type) != POINTER_TYPE_P (outer_type))
++  if (TYPE_UNSIGNED (inner_type) != TYPE_UNSIGNED (outer_type)
+       && code != NE_EXPR
+       && code != EQ_EXPR)
+     return NULL_TREE;
+ 
++  if (POINTER_TYPE_P (inner_type) != POINTER_TYPE_P (outer_type))
++    return NULL_TREE;
++
+   if (TREE_CODE (arg1) == INTEGER_CST)
+     arg1 = force_fit_type_double (inner_type, tree_to_double_int (arg1),
+ 				  0, TREE_OVERFLOW (arg1));
+Index: gcc/ChangeLog
+===================================================================
+--- a/src/gcc/ChangeLog	(revision
++++ b/src/gcc/ChangeLog	(revision
+@@ -1,3 +1,220 @@
++2012-11-09  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* doc/install.texi (sparc64-x-solaris2): Mention MPC as well.
++
++2012-11-07  Eric Botcazou  <ebotcazou@adacore.com>
++
++	PR middle-end/55219
++	* fold-const.c (fold_binary_op_with_conditional_arg): Do not fold if
++	the argument is itself a conditional expression.
++
++2012-10-30  Andrey Belevantsev  <abel@ispras.ru>
++
++	Backport from mainline
++	2012-01-25 Andrey Belevantsev <abel@ispras.ru>
++	
++	PR rtl-optimization/48374
++	* sel-sched-ir.h (get_all_loop_exits): Check for zero successors. 	
++
++2012-10-22  Andrey Belevantsev  <abel@ispras.ru>
++
++	Backport from mainline
++	2012-08-09  Andrey Belevantsev  <abel@ispras.ru>
++
++	PR rtl-optimization/53701
++	* sel-sched.c (vinsn_vec_has_expr_p): Clarify function comment.
++	Process not only expr's vinsns but all old vinsns from expr's
++	history of changes.
++
++2012-10-19  Marek Polacek  <polacek@redhat.com>
++
++	Backported from mainline
++	2012-10-19  Marek Polacek  <polacek@redhat.com>
++
++	PR middle-end/54945
++	* fold-const.c (fold_sign_changed_comparison):  Punt if folding
++	pointer/non-pointer comparison.
++
++2012-10-19  Alan Modra  <amodra@gmail.com>
++
++	* configure.ac (HAVE_LD_NO_DOT_SYMS): Set if using gold.
++	(HAVE_LD_LARGE_TOC): Likewise.
++	* configure: Regenerate.
++
++2012-10-17  DJ Delorie  <dj@delorie.com>
++
++	PR target/54950
++	* config/m32c/predicates.md (m32c_const_u16_operand): New.
++	* config/m32c/muldiv.md: Use it.
++
++2012-10-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	* config/pa/pa.md (addhi3): Fix typo in last change.
++
++2012-10-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++	* config/pa/pa.md: Adjust unamed HImode add insn pattern.
++
++2012-10-05  Jan Hubicka  <jh@suse.cz>
++	    Jakub Jelinek  <jakub@redhat.com>
++
++	PR tree-optimization/33763
++	* tree-inline.c (expand_call_inline): Silently ignore always_inline
++	attribute for redefined extern inline functions.
++
++2012-10-03  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backported from mainline
++	2012-10-03  Andrew W. Nosenko <andrew.w.nosenko@gmail.com>
++
++	* config/i386/driver-i386.c (host_detect_local_cpu): Fix logic
++	in SSE and YMM state support check for -march=native.
++
++2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backported from mainline
++	2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR target/54785
++	* doc/invoke.texi: Document -mprefer-avx128.
++
++2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backported from mainline
++	2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR target/54741
++	* config/i386/driver-i386.c (XCR_XFEATURE_ENABLED_MASK): New.
++	(XSTATE_FP): Likewise.
++	(XSTATE_SSE): Likewise.
++	(XSTATE_YMM): Likewise.
++	(host_detect_local_cpu): Disable AVX, FMA, FMA4 and XOP if SSE
++	and YMM states aren't supported.
++
++2012-09-21  Richard Guenther  <rguenther@suse.de>
++
++	PR middle-end/54638
++	Backport from mainline
++	2012-04-19  Richard Guenther  <rguenther@suse.de>
++
++	* ira-int.h (ira_allocno_object_iter_cond): Avoid out-of-bound
++	array access.
++
++2012-09-15  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/54552
++	* c-typeck.c (c_cast_expr): When casting to a type requiring
++	C_MAYBE_CONST_EXPR to be created, pass the inner expression to
++	c_fully_fold first.
++
++2012-09-15  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/54103
++	* c-typeck.c (build_unary_op): Pass original argument of
++	TRUTH_NOT_EXPR to c_objc_common_truthvalue_conversion, then remove
++	any C_MAYBE_CONST_EXPR, if it has integer operands.
++	(build_binary_op): Pass original arguments of TRUTH_ANDIF_EXPR,
++	TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR and TRUTH_XOR_EXPR
++	to c_objc_common_truthvalue_conversion, then remove any
++	C_MAYBE_CONST_EXPR, if they have integer operands.  Use
++	c_objc_common_truthvalue_conversion not
++	c_common_truthvalue_conversion.
++	(c_objc_common_truthvalue_conversion): Build NE_EXPR directly and
++	call note_integer_operands for arguments with integer operands
++	that are not integer constants.
++
++2012-09-14  Wei Guozhi  <carrot@google.com>
++
++	Backport from 2012-02-13 mainline r184169.
++
++	* cselib.c (expand_loc): Return sp, fp, hfp or cfa base reg right
++	away if seen.
++
++2012-09-10  Georg-Johann Lay  <avr@gjlay.de>
++
++	Backport from 2012-09-10 mainline r191132.
++	
++	PR target/54536
++	* config/avr/avr-devices.c (avr_mcu_types["at90usb1287"]): Set
++	.library_name to "usb1287".
++
++2012-09-10  Markus Trippelsdorf  <markus@trippelsdorf.de>
++
++	PR middle-end/54515
++	* tree-sra.c (disqualify_base_of_expr): Check for possible
++	NULL_TREE returned by get_base_address()
++
++2012-09-05  Bin Cheng  <bin.cheng@arm.com>
++
++	Backport from 2012-09-04 mainline r190919
++
++	PR target/45070
++	* config/arm/arm.c (thumb1_extra_regs_pushed): Handle return value of
++	size less than 4 bytes by using macro ARM_NUM_INTS.
++	(thumb1_unexpanded_epilogue): Use macro ARM_NUM_INTS.
++
++2012-09-04  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
++
++	Backport from 2012-09-04 mainline r190914
++
++	PR target/54220
++	* config/avr/avr.c (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): New
++	define to...
++	(avr_allocate_stack_slots_for_args): ...this new static function.
++
++2012-09-03  H.J. Lu  <hongjiu.lu@intel.com>
++
++	Backported from mainline
++	2012-08-23  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR driver/54335
++	* doc/invoke.texi: Add -da and remove -dm.
++
++2012-09-02  Eric Botcazou  <ebotcazou@adacore.com>
++
++	PR rtl-optimization/54369
++	* config/mips/mips.c (mips_reorg): Invoke cleanup_barriers before
++	calling dbr_schedule.
++	* config/sparc/sparc.c (sparc_reorg): Likewise.
++
++2012-08-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
++
++	* config/sol2.h (LINK_ARCH32_SPEC_BASE): Add /lib to default
++	linker search path.
++	* config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise for
++	/lib/sparcv9.
++
++2012-08-10  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	Backport from mainline
++	2012-07-30  Ulrich Weigand  <ulrich.weigand@linaro.org>
++		    Richard Earnshaw  <rearnsha@arm.com>
++
++	* target.def (vector_alignment): New target hook.
++	* doc/tm.texi.in (TARGET_VECTOR_ALIGNMENT): Document new hook.
++	* doc/tm.texi: Regenerate.
++	* targhooks.c (default_vector_alignment): New function.
++	* targhooks.h (default_vector_alignment): Add prototype.
++	* stor-layout.c (layout_type): Use targetm.vector_alignment.
++	* config/arm/arm.c (arm_vector_alignment): New function.
++	(TARGET_VECTOR_ALIGNMENT): Define.
++
++	* tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use
++	vector type alignment instead of size.
++	* tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Use
++	element type size directly instead of computing it from alignment.
++	Fix variable naming and comment.
++
++2012-08-09  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2012-08-09  Uros Bizjak  <ubizjak@gmail.com>
++
++	* config/alpha/alpha.c (alpha_pad_noreturn): Rename to ...
++	(alpha_pad_function_end): ... this.  Also insert NOP between
++	sibling call and GP load.
++	(alpha_reorg): Update call to alpha_pad_function_end.  Expand comment.
++
+ 2012-07-22  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/33135
+@@ -3,5 +220,5 @@
+ 	* config/sh/sh.opt (mieee): Use Var instead of Mask.  Correct
+ 	description.
+-	* config/sh/sh.c (sh_option_override): Do not change 
++	* config/sh/sh.c (sh_option_override): Do not change
+ 	flag_finite_math_only.  Set TARGET_IEEE to complement of
+ 	flag_finite_math_only.
+Index: gcc/tree-vect-loop-manip.c
+===================================================================
+--- a/src/gcc/tree-vect-loop-manip.c	(revision
++++ b/src/gcc/tree-vect-loop-manip.c	(revision
+@@ -2008,7 +2008,7 @@
+    If the misalignment of DR is known at compile time:
+      addr_mis = int mis = DR_MISALIGNMENT (dr);
+    Else, compute address misalignment in bytes:
+-     addr_mis = addr & (vectype_size - 1)
++     addr_mis = addr & (vectype_align - 1)
+ 
+    prolog_niters = min (LOOP_NITERS, ((VF - addr_mis/elem_size)&(VF-1))/step)
+ 
+@@ -2065,9 +2065,10 @@
+       tree ptr_type = TREE_TYPE (start_addr);
+       tree size = TYPE_SIZE (ptr_type);
+       tree type = lang_hooks.types.type_for_size (tree_low_cst (size, 1), 1);
+-      tree vectype_size_minus_1 = build_int_cst (type, vectype_align - 1);
+-      tree elem_size_log =
+-        build_int_cst (type, exact_log2 (vectype_align/nelements));
++      tree vectype_align_minus_1 = build_int_cst (type, vectype_align - 1);
++      HOST_WIDE_INT elem_size =
++		int_cst_value (TYPE_SIZE_UNIT (TREE_TYPE (vectype)));
++      tree elem_size_log = build_int_cst (type, exact_log2 (elem_size));
+       tree nelements_minus_1 = build_int_cst (type, nelements - 1);
+       tree nelements_tree = build_int_cst (type, nelements);
+       tree byte_misalign;
+@@ -2076,10 +2077,10 @@
+       new_bb = gsi_insert_seq_on_edge_immediate (pe, new_stmts);
+       gcc_assert (!new_bb);
+ 
+-      /* Create:  byte_misalign = addr & (vectype_size - 1)  */
++      /* Create:  byte_misalign = addr & (vectype_align - 1)  */
+       byte_misalign =
+         fold_build2 (BIT_AND_EXPR, type, fold_convert (type, start_addr), 
+-                     vectype_size_minus_1);
++                     vectype_align_minus_1);
+ 
+       /* Create:  elem_misalign = byte_misalign / element_size  */
+       elem_misalign =
+Index: gcc/testsuite/lib/target-supports.exp
+===================================================================
+--- a/src/gcc/testsuite/lib/target-supports.exp	(revision
++++ b/src/gcc/testsuite/lib/target-supports.exp	(revision
+@@ -2976,6 +2976,26 @@
+     return $et_natural_alignment_64_saved
+ }
+ 
++# Return 1 if all vector types are naturally aligned (aligned to their
++# type-size), 0 otherwise.
++#
++# This won't change for different subtargets so cache the result.
++
++proc check_effective_target_vect_natural_alignment { } {
++    global et_vect_natural_alignment
++
++    if [info exists et_vect_natural_alignment_saved] {
++        verbose "check_effective_target_vect_natural_alignment: using cached result" 2
++    } else {
++        set et_vect_natural_alignment_saved 1
++        if { [check_effective_target_arm_eabi] } {
++            set et_vect_natural_alignment_saved 0
++        }
++    }
++    verbose "check_effective_target_vect_natural_alignment: returning $et_vect_natural_alignment_saved" 2
++    return $et_vect_natural_alignment_saved
++}
++
+ # Return 1 if vector alignment (for types of size 32 bit or less) is reachable, 0 otherwise.
+ #
+ # This won't change for different subtargets so cache the result.
+Index: gcc/testsuite/gfortran.dg/array_section_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/array_section_3.f90	(revision
++++ b/src/gcc/testsuite/gfortran.dg/array_section_3.f90	(revision
+@@ -0,0 +1,17 @@
++! { dg-do compile }
++!
++! PR fortran/54225
++!
++! Contributed by robb wu
++!
++program test
++  implicit none
++  real :: A(2,3)
++
++  print *, A(1, *)  ! { dg-error "Expected array subscript" }
++end program
++
++subroutine test2
++integer, dimension(2) :: a
++a(*) = 1  ! { dg-error "Expected array subscript" }
++end
+Index: gcc/testsuite/gfortran.dg/bound_simplification_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/bound_simplification_3.f90	(revision
++++ b/src/gcc/testsuite/gfortran.dg/bound_simplification_3.f90	(revision
+@@ -0,0 +1,23 @@
++! { dg-do compile }
++! { dg-options "-fdump-tree-original" }
++!
++! PR fortran/54208
++! The I and J definitions used to raise an error because ARR's array spec
++! was resolved to late for the LBOUND and UBOUND calls to be simplified to
++! a constant.
++!
++! Contributed by Carlos A. Cruz <carlos.a.cruz@nasa.gov>
++
++program testit
++  integer, parameter :: n=2
++  integer, dimension(1-min(n,2)/2:n) :: arr
++  integer, parameter :: i=lbound(arr,1)
++  integer, parameter :: j=ubound(arr,1)
++  ! write(6,*) i, j
++  if (i /= 0) call abort
++  if (j /= 2) call abort
++end program testit
++
++! { dg-final { scan-tree-dump-times "bound" 0 "original" } }
++! { dg-final { scan-tree-dump-times "abort" 0 "original" } }
++! { dg-final { cleanup-tree-dump "original" } }
+Index: gcc/testsuite/gfortran.dg/implicit_pure_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/implicit_pure_3.f90	(revision
++++ b/src/gcc/testsuite/gfortran.dg/implicit_pure_3.f90	(revision
+@@ -0,0 +1,109 @@
++! { dg-do compile }
++! { dg-options "-O2 -fdump-tree-optimized" }
++!
++! PR fortran/54556
++!
++! Contributed by Joost VandeVondele
++!
++MODULE parallel_rng_types
++
++  IMPLICIT NONE
++
++  ! Global parameters in this module
++  INTEGER, PARAMETER :: dp=8
++
++  TYPE rng_stream_type
++    PRIVATE
++    CHARACTER(LEN=40)             :: name
++    INTEGER                       :: distribution_type
++    REAL(KIND=dp), DIMENSION(3,2) :: bg,cg,ig
++    LOGICAL                       :: antithetic,extended_precision
++    REAL(KIND=dp)                 :: buffer
++    LOGICAL                       :: buffer_filled
++  END TYPE rng_stream_type
++
++  REAL(KIND=dp), DIMENSION(3,3) :: a1p0,a1p76,a1p127,&
++                                   a2p0,a2p76,a2p127,&
++                                   inv_a1,inv_a2
++
++  INTEGER, PARAMETER          :: GAUSSIAN = 1,&
++                                 UNIFORM  = 2
++
++  REAL(KIND=dp), PARAMETER :: norm  = 2.328306549295727688e-10_dp,&
++                              m1    = 4294967087.0_dp,&
++                              m2    = 4294944443.0_dp,&
++                              a12   = 1403580.0_dp,&
++                              a13n  = 810728.0_dp,&
++                              a21   = 527612.0_dp,&
++                              a23n  = 1370589.0_dp,&
++                              two17 = 131072.0_dp,&            ! 2**17
++                              two53 = 9007199254740992.0_dp,&  ! 2**53
++                              fact  = 5.9604644775390625e-8_dp ! 1/2**24
++
++
++CONTAINS
++
++  FUNCTION rn32(rng_stream) RESULT(u)
++
++    TYPE(rng_stream_type), POINTER           :: rng_stream
++    REAL(KIND=dp)                            :: u
++
++    INTEGER                                  :: k
++    REAL(KIND=dp)                            :: p1, p2
++
++! -------------------------------------------------------------------------
++! Component 1
++
++    p1 = a12*rng_stream%cg(2,1) - a13n*rng_stream%cg(1,1)
++    k = INT(p1/m1)
++    p1 = p1 - k*m1
++    IF (p1 < 0.0_dp) p1 = p1 + m1
++    rng_stream%cg(1,1) = rng_stream%cg(2,1)
++    rng_stream%cg(2,1) = rng_stream%cg(3,1)
++    rng_stream%cg(3,1) = p1
++
++    ! Component 2
++
++    p2 = a21*rng_stream%cg(3,2) - a23n*rng_stream%cg(1,2)
++    k = INT(p2/m2)
++    p2 = p2 - k*m2
++    IF (p2 < 0.0_dp) p2 = p2 + m2
++    rng_stream%cg(1,2) = rng_stream%cg(2,2)
++    rng_stream%cg(2,2) = rng_stream%cg(3,2)
++    rng_stream%cg(3,2) = p2
++
++    ! Combination
++
++    IF (p1 > p2) THEN
++      u = (p1 - p2)*norm
++    ELSE
++      u = (p1 - p2 + m1)*norm
++    END IF
++
++    IF (rng_stream%antithetic) u = 1.0_dp - u
++
++  END FUNCTION rn32
++
++! *****************************************************************************
++  FUNCTION rn53(rng_stream) RESULT(u)
++
++    TYPE(rng_stream_type), POINTER           :: rng_stream
++    REAL(KIND=dp)                            :: u
++
++    u = rn32(rng_stream)
++
++    IF (rng_stream%antithetic) THEN
++      u = u + (rn32(rng_stream) - 1.0_dp)*fact
++      IF (u < 0.0_dp) u = u + 1.0_dp
++    ELSE
++      u = u + rn32(rng_stream)*fact
++      IF (u >= 1.0_dp) u = u - 1.0_dp
++    END IF
++
++  END FUNCTION rn53
++
++END MODULE
++
++! { dg-final { scan-module-absence "parallel_rng_types" "IMPLICIT_PURE" } }
++! { dg-final { scan-tree-dump-times "rn32 \\(rng_stream" 3 "optimized" } }
++! { dg-final { cleanup-tree-dump "optimized" } }
+Index: gcc/testsuite/gfortran.dg/coarray_28.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/coarray_28.f90	(revision
++++ b/src/gcc/testsuite/gfortran.dg/coarray_28.f90	(revision
+@@ -0,0 +1,10 @@
++! { dg-do compile }
++! { dg-options "-fcoarray=single" }
++!
++! PR fortran/54225
++!
++
++integer, allocatable :: a[:,:]
++
++allocate (a[*,4]) ! { dg-error "Unexpected '.' for codimension 1 of 2" }
++end
+Index: gcc/testsuite/gfortran.dg/allocate_error_4.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/allocate_error_4.f90	(revision
++++ b/src/gcc/testsuite/gfortran.dg/allocate_error_4.f90	(revision
+@@ -0,0 +1,16 @@
++! { dg-do compile }
++! PR fortran/55314 - the second allocate statement was rejected.
++
++program main
++  implicit none
++  integer :: max_nb
++  type comm_mask
++    integer(4), pointer :: mask(:)
++  end type comm_mask
++  type (comm_mask), allocatable, save :: encode(:,:)
++  max_nb=2
++  allocate( encode(1:1,1:max_nb))
++  allocate( encode(1,1)%mask(1),encode(1,2)%mask(1))
++  deallocate( encode(1,1)%mask,encode(1,2)%mask)
++  allocate( encode(1,1)%mask(1),encode(1,1)%mask(1))  ! { dg-error "also appears at" }
++end program main
+Index: gcc/testsuite/gfortran.dg/coarray_10.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/coarray_10.f90	(revision
++++ b/src/gcc/testsuite/gfortran.dg/coarray_10.f90	(revision
+@@ -30,12 +30,12 @@
+ subroutine rank_mismatch()
+   implicit none
+   integer,allocatable :: A(:)[:,:,:,:]
+-  allocate(A(1)[1,1,1:*])     ! { dg-error "Unexpected ... for codimension" }
++  allocate(A(1)[1,1,1:*])     ! { dg-error "Too few codimensions" }
+   allocate(A(1)[1,1,1,1,1,*]) ! { dg-error "Invalid codimension 5" }
+   allocate(A(1)[1,1,1,*])
+   allocate(A(1)[1,1])     ! { dg-error "Too few codimensions" }
+   allocate(A(1)[1,*])     ! { dg-error "Too few codimensions" }
+-  allocate(A(1)[1,1:*])   ! { dg-error "Unexpected ... for codimension" }
++  allocate(A(1)[1,1:*])   ! { dg-error "Too few codimensions" }
+ 
+   A(1)[1,1,1] = 1       ! { dg-error "Too few codimensions" }
+   A(1)[1,1,1,1,1,1] = 1 ! { dg-error "Invalid codimension 5" }
+Index: gcc/testsuite/gcc.c-torture/compile/20121107-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/20121107-1.c	(revision
++++ b/src/gcc/testsuite/gcc.c-torture/compile/20121107-1.c	(revision
+@@ -0,0 +1,14 @@
++/* PR middle-end/55219 */
++/* Testcase by Markus Trippelsdorf <markus@trippelsdorf.de> */
++
++int x, c, d, e, f, g, h, i;
++double j;
++const int k;
++const enum { B } a;
++void
++fn1 (void)
++{
++  h = (g ? c : g ? f : g ? e : g ? i : g ? f : g ? e : g ? d : x)
++      + (a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a
++         ? j : a ? : 0 ? : a ? : a ? : a ? : a ? : a ? : a ? k : a ? : x);
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-2.c	(revision
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-2.c	(revision
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  0 / 0 || 0 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-4.c	(revision
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-4.c	(revision
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  0 / 0 && 1 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-6.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-6.c	(revision
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-6.c	(revision
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  0 || 65536*65536 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54552-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54552-1.c	(revision
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54552-1.c	(revision
+@@ -0,0 +1,8 @@
++void
++f (void)
++{
++  unsigned n = 10;
++
++  typedef double T[n];
++  (double (*)[n])((unsigned char (*)[sizeof (T)]){ 0 });
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-1.c	(revision
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-1.c	(revision
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  0 || 0 / 0 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-3.c	(revision
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-3.c	(revision
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  1 && 0 / 0 ? : 0;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr54103-5.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr54103-5.c	(revision
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr54103-5.c	(revision
+@@ -0,0 +1,5 @@
++void
++f (void)
++{
++  !(0 / 0);
++}
+Index: gcc/testsuite/gnat.dg/oconst6.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/oconst6.ads	(revision
++++ b/src/gcc/testsuite/gnat.dg/oconst6.ads	(revision
+@@ -1,18 +0,0 @@
+--- { dg-do compile }
+--- { dg-final { scan-assembler-not "elabs" } }
+-
+-package OCONST6 is
+-
+-   type Sequence is array (1 .. 1) of Natural;
+-
+-   type Message is record
+-      Data : Sequence;
+-   end record;
+-
+-   for Message'Alignment use 1;
+-   pragma PACK (Message);
+-
+-   ACK : Message := (Data => (others => 1));
+-
+-end;
+-
+Index: gcc/testsuite/gnat.dg/addr1.adb
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/addr1.adb	(revision
++++ b/src/gcc/testsuite/gnat.dg/addr1.adb	(revision
+@@ -1,3 +1,5 @@
++--  { dg-do compile }
++
+ with System;
+ package body addr1 is
+    task type T is
+Index: gcc/testsuite/gnat.dg/addr1.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/addr1.ads	(revision
++++ b/src/gcc/testsuite/gnat.dg/addr1.ads	(revision
+@@ -1,5 +1,3 @@
+---  { dg-do compile }
+-
+ package addr1 is
+    pragma Elaborate_Body;
+ end;
+Index: gcc/testsuite/gnat.dg/discr23.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/discr23.ads	(revision
++++ b/src/gcc/testsuite/gnat.dg/discr23.ads	(revision
+@@ -1,5 +1,3 @@
+--- { dg-do compile }
+-
+ package Discr23 is
+ 
+   procedure Dummy;
+Index: gcc/testsuite/gnat.dg/nested_float_packed.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/nested_float_packed.ads	(revision
++++ b/src/gcc/testsuite/gnat.dg/nested_float_packed.ads	(revision
+@@ -1,5 +1,3 @@
+--- { dg-do compile }
+-
+ package Nested_Float_Packed is
+ 
+    type Float_Type is record
+@@ -20,5 +18,3 @@
+    Data_Block : array (Range_Type)
+      of Data_Type := (others => Default_Data);
+ end;
+-
+-
+Index: gcc/testsuite/gnat.dg/specs/oconst6.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/specs/oconst6.ads	(revision
++++ b/src/gcc/testsuite/gnat.dg/specs/oconst6.ads	(revision
+@@ -0,0 +1,18 @@
++-- { dg-do compile }
++-- { dg-final { scan-assembler-not "elabs" } }
++
++package OCONST6 is
++
++   type Sequence is array (1 .. 1) of Natural;
++
++   type Message is record
++      Data : Sequence;
++   end record;
++
++   for Message'Alignment use 1;
++   pragma PACK (Message);
++
++   ACK : Message := (Data => (others => 1));
++
++end;
++
+Index: gcc/testsuite/gnat.dg/atomic5.adb
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/atomic5.adb	(revision
++++ b/src/gcc/testsuite/gnat.dg/atomic5.adb	(revision
+@@ -1,3 +1,5 @@
++-- { dg-do compile }
++
+ package body Atomic5 is
+ 
+   function Create return R is
+Index: gcc/testsuite/gnat.dg/atomic5.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/atomic5.ads	(revision
++++ b/src/gcc/testsuite/gnat.dg/atomic5.ads	(revision
+@@ -1,5 +1,3 @@
+--- { dg-do compile }
+-
+ with Unchecked_Conversion;
+ 
+ package Atomic5 is
+Index: gcc/testsuite/gnat.dg/discr29.adb
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/discr29.adb	(revision
++++ b/src/gcc/testsuite/gnat.dg/discr29.adb	(revision
+@@ -1,3 +1,5 @@
++-- { dg-do compile }
++
+ package body Discr29 is
+ 
+    procedure Proc (R : out Rec3) is
+Index: gcc/testsuite/gnat.dg/discr29.ads
+===================================================================
+--- a/src/gcc/testsuite/gnat.dg/discr29.ads	(revision
++++ b/src/gcc/testsuite/gnat.dg/discr29.ads	(revision
+@@ -1,5 +1,3 @@
+--- { dg-do compile }
+-
+ package Discr29 is
+ 
+    type Rec1 is record
+Index: gcc/testsuite/gcc.dg/align-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/align-2.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/align-2.c	(revision
+@@ -1,5 +1,5 @@
+ /* PR 17962 */
+-/* { dg-do compile } */
++/* { dg-do compile { target vect_natural_alignment } } */
+ /* { dg-options "" } */
+ 
+ typedef float v4 __attribute__((vector_size(sizeof(float)*4)));
+Index: gcc/testsuite/gcc.dg/pr48374.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr48374.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/pr48374.c	(revision
+@@ -0,0 +1,17 @@
++/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
++/* { dg-options "-O -fschedule-insns2 -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops -fselective-scheduling2 --param max-sched-extend-regions-iters=2"  } */
++
++void foo (int y)
++{
++  switch (y)
++    {
++    case 3:
++    case 5:
++    case 7:
++    case 11:
++      break;
++    default:
++      __builtin_unreachable ();
++    }
++}
++
+Index: gcc/testsuite/gcc.dg/pr53701.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr53701.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/pr53701.c	(revision
+@@ -0,0 +1,59 @@
++/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
++/* { dg-options "-O3 -fselective-scheduling2 -fsel-sched-pipelining" } */
++typedef unsigned short int uint16_t;
++typedef unsigned long int uintptr_t;
++typedef struct GFX_VTABLE
++{
++  int color_depth;
++  unsigned char *line[];
++}
++BITMAP;
++extern int _drawing_mode;
++extern BITMAP *_drawing_pattern;
++extern int _drawing_y_anchor;
++extern unsigned int _drawing_x_mask;
++extern unsigned int _drawing_y_mask;
++extern uintptr_t bmp_write_line (BITMAP *, int);
++  void
++_linear_hline15 (BITMAP * dst, int dx1, int dy, int dx2, int color)
++{
++  int w;
++  if (_drawing_mode == 0)
++  {
++    int x, curw;
++    unsigned short *sline =
++      (unsigned short *) (_drawing_pattern->
++          line[((dy) -
++            _drawing_y_anchor) & _drawing_y_mask]);
++    unsigned short *s;
++    unsigned short *d =
++      ((unsigned short *) (bmp_write_line (dst, dy)) + (dx1));
++    s = ((unsigned short *) (sline) + (x));
++    if (_drawing_mode == 2)
++    {
++    }
++    else if (_drawing_mode == 3)
++    {
++      do
++      {
++        w -= curw;
++        do
++        {
++          unsigned long c = (*(s));
++          if (!((unsigned long) (c) == 0x7C1F))
++          {
++            (*((uint16_t *) ((uintptr_t) (d))) = ((color)));
++          }
++          ((s)++);
++        }
++        while (--curw > 0);
++        s = sline;
++        curw =
++          (((w) <
++            ((int) _drawing_x_mask +
++             1)) ? (w) : ((int) _drawing_x_mask + 1));
++      }
++      while (curw > 0);
++    }
++  }
++}
+Index: gcc/testsuite/gcc.dg/c90-const-expr-8.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/c90-const-expr-8.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/c90-const-expr-8.c	(revision
+@@ -22,6 +22,6 @@
+   E5 = 0 * -INT_MIN, /* { dg-warning "12:integer overflow in expression" } */
+   /* { dg-error "3:overflow in constant expression" "constant" { target *-*-* } 22 } */
+   E6 = 0 * !-INT_MIN, /* { dg-warning "13:integer overflow in expression" } */
+-  /* { dg-error "3:not an integer constant" "constant" { target *-*-* } 24 } */
++  /* { dg-error "8:not an integer constant" "constant" { target *-*-* } 24 } */
+   E7 = INT_MIN % -1 /* Not an overflow.  */
+ };
+Index: gcc/testsuite/gcc.dg/20020201-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/20020201-1.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/20020201-1.c	(revision
+@@ -7,12 +7,8 @@
+ /* { dg-options "-fprofile-arcs" } */
+ /* { dg-do run { target native } } */
+ 
+-extern void abort (void);
+-extern void exit (int);
++#include <stdlib.h>
+ 
+-int rand (void);
+-void srand (unsigned int seed);
+-
+ int globvar;
+ 
+ void
+Index: gcc/testsuite/gcc.dg/pr49948.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr49948.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/pr49948.c	(revision
+@@ -1,5 +1,6 @@
+ /* PR tree-optimization/49948 */
+ /* { dg-do compile } */
++/* { dg-require-effective-target pthread } */
+ /* { dg-options "-O3 -ftree-parallelize-loops=2" } */
+ 
+ extern int a, *b;
+Index: gcc/testsuite/gcc.dg/vect/vect-peel-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c	(revision
+@@ -49,6 +49,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_element_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/vect-peel-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c	(revision
+@@ -50,6 +50,6 @@
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_element_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vect_element_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/vect-peel-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c	(revision
+@@ -4,10 +4,8 @@
+ #include "tree-vect.h"
+ 
+ #define N 128
+-#define RES 21888 
++#define RES 21640 
+ 
+-/* unaligned store.  */
+-
+ int ib[N+10];
+ int ia[N+10];
+ int ic[N+10];
+@@ -18,11 +16,11 @@
+   int i, suma = 0, sumb = 0, sumc = 0;
+ 
+   /* ib and ic have same misalignment, we peel to align them.  */
+-  for (i = 1; i <= N; i++)
++  for (i = 0; i <= N; i++)
+     {
+       suma += ia[i];
+-      sumb += ib[i+6];
+-      sumc += ic[i+2];
++      sumb += ib[i+5];
++      sumc += ic[i+1];
+     }
+ 
+   /* check results:  */
+@@ -49,7 +47,7 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/vect-peel-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c	(revision
+@@ -16,13 +16,13 @@
+   /* Don't peel keeping one load and the store aligned.  */
+   for (i = 0; i <= N; i++)
+     {
+-      ia[i] = ib[i] + ib[i+6];
++      ia[i] = ib[i] + ib[i+5];
+     }
+ 
+   /* check results:  */
+   for (i = 1; i <= N; i++)
+     {
+-      if (ia[i] != ib[i] + ib[i+6])
++      if (ia[i] != ib[i] + ib[i+5])
+         abort ();
+     }
+ 
+@@ -44,7 +44,7 @@
+   return main1 ();
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/slp-25.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-25.c	(revision
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-25.c	(revision
+@@ -57,5 +57,5 @@
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || { ! vect_natural_alignment } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/ChangeLog
+===================================================================
+--- a/src/gcc/testsuite/ChangeLog	(revision
++++ b/src/gcc/testsuite/ChangeLog	(revision
+@@ -1,3 +1,131 @@
++2012-11-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
++
++	PR fortran/55314
++	Backport from trunk
++	* gfortran.dg/allocate_error_4.f90:  New test.
++
++2012-11-07  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* gcc.c-torture/compile/20121107-1.c: New test.
++
++2012-10-30  Andrey Belevantsev  <abel@ispras.ru>
++
++	Backport from mainline
++	2012-01-25 Andrey Belevantsev <abel@ispras.ru>
++
++	PR rtl-optimization/48374
++	* gcc.dg/pr48374.c: New test.
++
++2012-10-22  Andrey Belevantsev  <abel@ispras.ru>
++
++	Backport from mainline
++	2012-08-09  Andrey Belevantsev  <abel@ispras.ru>
++
++	PR rtl-optimization/53701
++	* gcc.dg/pr53701.c: New test.
++
++2012-10-11  Uros Bizjak  <ubizjak@gmail.com>
++
++	Backport from mainline
++	2011-08-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
++
++	* gcc.dg/pr49948.c: Require pthread effective target.
++
++2012-10-05  Jakub Jelinek  <jakub@redhat.com>
++
++	PR tree-optimization/33763
++	* c-c++-common/pr33763.c: New test.
++
++2012-09-20  Eric Botcazou  <ebotcazou@adacore.com>
++
++	* gnat.dg/addr1.ads: Move dg directive to...
++	* gnat.dg/addr1.adb: ...here.
++	* gnat.dg/atomic5.ad[sb]: Likewise.
++	* gnat.dg/discr29.ad[sb]: Likewise.
++	* gnat.dg/discr23.ads: Remove dg directive.
++	* gnat.dg/nested_float_packed.ads: Likewise.
++	* gnat.dg/oconst6.ads: Move to...
++	* gnat.dg/specs/oconst6.ads: ...here.
++
++2012-09-15  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/54552
++	* gcc.c-torture/compile/pr54552-1.c: New test.
++
++2012-09-15  Joseph Myers  <joseph@codesourcery.com>
++
++	PR c/54103
++	* gcc.c-torture/compile/pr54103-1.c,
++	gcc.c-torture/compile/pr54103-2.c,
++	gcc.c-torture/compile/pr54103-3.c,
++	gcc.c-torture/compile/pr54103-4.c,
++	gcc.c-torture/compile/pr54103-5.c,
++	gcc.c-torture/compile/pr54103-6.c: New tests.
++	* gcc.dg/c90-const-expr-8.c: Update expected column number.
++
++2012-09-13  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/54225
++	PR fortran/53306
++	* gfortran.dg/coarray_10.f90: Update dg-error.
++	* gfortran.dg/coarray_28.f90: New.
++	* gfortran.dg/array_section_3.f90: New.
++
++2012-09-13  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/54556
++	* gfortran.dg/implicit_pure_3.f90: New.
++
++2012-09-13  Jason Merrill  <jason@redhat.com>
++
++	PR c++/54511
++	* g++.dg/template/anonunion2.C: New.
++
++2012-09-12  Mikael Morin  <mikael@gcc.gnu.org>
++
++	PR fortran/54208
++	* gfortran.dg/bound_simplification_3.f90: New test.
++
++2012-09-10  Markus Trippelsdorf  <markus@trippelsdorf.de>
++
++	PR middle-end/54515
++	* g++.dg/tree-ssa/pr54515.C: new testcase
++
++2012-08-10  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	Backport from mainline
++	2012-07-30  Ulrich Weigand  <ulrich.weigand@linaro.org>
++
++	* lib/target-supports.exp
++	(check_effective_target_vect_natural_alignment): New function.
++	* gcc.dg/align-2.c: Only run on targets with natural alignment
++	of vector types.
++	* gcc.dg/vect/slp-25.c: Adjust tests for targets without natural
++	alignment of vector types.
++
++	2011-12-21  Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
++
++	* gcc.dg/vect/vect-peel-1.c: Adjust test diag-scans to fix fail on AVX.
++	* gcc.dg/vect/vect-peel-2.c: Ditto.
++
++	2011-06-21  Ira Rosen  <ira.rosen@linaro.org>
++
++	PR testsuite/49443
++	* gcc.dg/vect/vect-peel-3.c: Expect to fail on vect_no_align
++	targets.
++	* gcc.dg/vect/vect-peel-4.c: Likewise.
++
++	2011-06-14  Ira Rosen  <ira.rosen@linaro.org>
++
++	* gcc.dg/vect/vect-peel-3.c: Adjust misalignment values
++	for double-word vectors.
++	* gcc.dg/vect/vect-peel-4.c: Likewise.
++
++2012-08-06  Anna Tikhonova  <anna.m.tikhonova@gmail.com>
++
++	* gcc.dg/20020201-1.c: Remove declarations for exit, abort,
++	rand, srand. Include <stdlib.h>.
++
+ 2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>
+ 
+ 	Backport from trunk:
+Index: gcc/testsuite/g++.dg/tree-ssa/pr54515.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr54515.C	(revision
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr54515.C	(revision
+@@ -0,0 +1,19 @@
++// { dg-do compile }
++// { dg-options "-O2" }
++
++template < typename T > T h2le (T)
++{
++    T a;
++    unsigned short &b = a;
++    short c = 0;
++    unsigned char (&d)[2] = reinterpret_cast < unsigned char (&)[2] > (c);
++    unsigned char (&e)[2] = reinterpret_cast < unsigned char (&)[2] > (b);
++    e[0] = d[0];
++    return a;
++}
++
++void
++bar ()
++{
++    h2le ((unsigned short) 0);
++}
+Index: gcc/testsuite/g++.dg/template/anonunion2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/template/anonunion2.C	(revision
++++ b/src/gcc/testsuite/g++.dg/template/anonunion2.C	(revision
+@@ -0,0 +1,6 @@
++template <int i>
++struct S
++{
++  S () { union { int a; }; a = 0; }
++};
++S<0> s;
+Index: gcc/testsuite/c-c++-common/pr33763.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/pr33763.c	(revision
++++ b/src/gcc/testsuite/c-c++-common/pr33763.c	(revision
+@@ -0,0 +1,60 @@
++/* PR tree-optimization/33763 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++typedef struct
++{
++  void *a;
++  void *b;
++} T;
++extern void *foo (const char *, const char *);
++extern void *bar (void *, const char *, T);
++extern int baz (const char *, int);
++
++extern inline __attribute__ ((always_inline, gnu_inline)) int
++baz (const char *x, int y)
++{
++  return 2;
++}
++
++int
++baz (const char *x, int y)
++{
++  return 1;
++}
++
++int xa, xb;
++
++static void *
++inl (const char *x, const char *y)
++{
++  T t = { &xa, &xb };
++  int *f = (int *) __builtin_malloc (sizeof (int));
++  const char *z;
++  int o = 0;
++  void *r = 0;
++
++  for (z = y; *z; z++)
++    {
++      if (*z == 'r')
++	o |= 1;
++      if (*z == 'w')
++	o |= 2;
++    }
++  if (o == 1)
++    *f = baz (x, 0);
++  if (o == 2)
++    *f = baz (x, 1);
++  if (o == 3)
++    *f = baz (x, 2);
++
++  if (o && *f > 0)
++    r = bar (f, "w", t);
++  return r;
++}
++
++void *
++foo (const char *x, const char *y)
++{
++  return inl (x, y);
++}
+Index: gcc/cp/ChangeLog
+===================================================================
+--- a/src/gcc/cp/ChangeLog	(revision
++++ b/src/gcc/cp/ChangeLog	(revision
+@@ -1,3 +1,8 @@
++2012-09-13  Jason Merrill  <jason@redhat.com>
++
++	PR c++/54511
++	* pt.c (tsubst_decl) [VAR_DECL]: Handle DECL_ANON_UNION_VAR_P.
++
+ 2012-06-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/52988
+Index: gcc/cp/pt.c
+===================================================================
+--- a/src/gcc/cp/pt.c	(revision
++++ b/src/gcc/cp/pt.c	(revision
+@@ -10028,6 +10028,16 @@
+ 	    break;
+ 	  }
+ 
++	if (TREE_CODE (t) == VAR_DECL && DECL_ANON_UNION_VAR_P (t))
++	  {
++	    /* Just use name lookup to find a member alias for an anonymous
++	       union, but then add it to the hash table.  */
++	    r = lookup_name (DECL_NAME (t));
++	    gcc_assert (DECL_ANON_UNION_VAR_P (r));
++	    register_local_specialization (r, t);
++	    break;
++	  }
++
+ 	/* Create a new node for the specialization we need.  */
+ 	r = copy_decl (t);
+ 	if (type == NULL_TREE)
+Index: gcc/ira-int.h
+===================================================================
+--- a/src/gcc/ira-int.h	(revision
++++ b/src/gcc/ira-int.h	(revision
+@@ -1123,8 +1123,13 @@
+ ira_allocno_object_iter_cond (ira_allocno_object_iterator *i, ira_allocno_t a,
+ 			      ira_object_t *o)
+ {
+-  *o = ALLOCNO_OBJECT (a, i->n);
+-  return i->n++ < ALLOCNO_NUM_OBJECTS (a);
++  int n = i->n++;
++  if (n < ALLOCNO_NUM_OBJECTS (a))
++    {
++      *o = ALLOCNO_OBJECT (a, n);
++      return true;
++    }
++  return false;
+ }
+ 
+ /* Loop over all objects associated with allocno A.  In each
+Index: gcc/sel-sched.c
+===================================================================
+--- a/src/gcc/sel-sched.c	(revision
++++ b/src/gcc/sel-sched.c	(revision
+@@ -3578,29 +3578,41 @@
+   return NULL;
+ }
+ 
+-/* Lookup EXPR in VINSN_VEC and return TRUE if found.  */
++/* Lookup EXPR in VINSN_VEC and return TRUE if found.  Also check patterns from
++   EXPR's history of changes.  */
+ static bool
+ vinsn_vec_has_expr_p (vinsn_vec_t vinsn_vec, expr_t expr)
+ {
+-  vinsn_t vinsn;
++  vinsn_t vinsn, expr_vinsn;
+   int n;
++  unsigned i;
+ 
+-  FOR_EACH_VEC_ELT (vinsn_t, vinsn_vec, n, vinsn)
+-    if (VINSN_SEPARABLE_P (vinsn))
+-      {
+-        if (vinsn_equal_p (vinsn, EXPR_VINSN (expr)))
+-          return true;
+-      }
+-    else
+-      {
+-        /* For non-separable instructions, the blocking insn can have
+-           another pattern due to substitution, and we can't choose
+-           different register as in the above case.  Check all registers
+-           being written instead.  */
+-        if (bitmap_intersect_p (VINSN_REG_SETS (vinsn),
+-                                VINSN_REG_SETS (EXPR_VINSN (expr))))
+-          return true;
+-      }
++  /* Start with checking expr itself and then proceed with all the old forms
++     of expr taken from its history vector.  */
++  for (i = 0, expr_vinsn = EXPR_VINSN (expr);
++       expr_vinsn;
++       expr_vinsn = (i < VEC_length (expr_history_def,
++				     EXPR_HISTORY_OF_CHANGES (expr))
++		     ? VEC_index (expr_history_def,
++				  EXPR_HISTORY_OF_CHANGES (expr),
++				  i++)->old_expr_vinsn
++		     : NULL))
++    FOR_EACH_VEC_ELT (vinsn_t, vinsn_vec, n, vinsn)
++      if (VINSN_SEPARABLE_P (vinsn))
++	{
++	  if (vinsn_equal_p (vinsn, expr_vinsn))
++	    return true;
++	}
++      else
++	{
++	  /* For non-separable instructions, the blocking insn can have
++	     another pattern due to substitution, and we can't choose
++	     different register as in the above case.  Check all registers
++	     being written instead.  */
++	  if (bitmap_intersect_p (VINSN_REG_SETS (vinsn),
++				  VINSN_REG_SETS (expr_vinsn)))
++	    return true;
++	}
+ 
+   return false;
+ }
+@@ -5700,8 +5712,8 @@
+               || EXPR_TARGET_AVAILABLE (new_expr)
+ 		 != EXPR_TARGET_AVAILABLE (cur_expr))
+ 	    /* Unfortunately, the below code could be also fired up on
+-	       separable insns.
+-	       FIXME: add an example of how this could happen.  */
++	       separable insns, e.g. when moving insns through the new
++	       speculation check as in PR 53701.  */
+             vinsn_vec_add (&vec_bookkeeping_blocked_vinsns, cur_expr);
+         }
+ 
+Index: gcc/sel-sched-ir.h
+===================================================================
+--- a/src/gcc/sel-sched-ir.h	(revision
++++ b/src/gcc/sel-sched-ir.h	(revision
+@@ -1119,7 +1119,8 @@
+   /* If bb is empty, and we're skipping to loop exits, then
+      consider bb as a possible gate to the inner loop now.  */
+   while (sel_bb_empty_or_nop_p (bb)
+-	 && in_current_region_p (bb))
++	 && in_current_region_p (bb)
++	 && EDGE_COUNT (bb->succs) > 0)
+     {
+       bb = single_succ (bb);
+ 
+Index: gcc/fortran/array.c
+===================================================================
+--- a/src/gcc/fortran/array.c	(revision
++++ b/src/gcc/fortran/array.c	(revision
+@@ -91,9 +91,7 @@
+   else if (!star)
+     m = gfc_match_expr (&ar->start[i]);
+ 
+-  if (m == MATCH_NO && gfc_match_char ('*') == MATCH_YES)
+-    return MATCH_NO;
+-  else if (m == MATCH_NO)
++  if (m == MATCH_NO)
+     gfc_error ("Expected array subscript at %C");
+   if (m != MATCH_YES)
+     return MATCH_ERROR;
+@@ -224,7 +222,7 @@
+ 
+   for (ar->codimen = 0; ar->codimen + ar->dimen < GFC_MAX_DIMENSIONS; ar->codimen++)
+     {
+-      m = match_subscript (ar, init, ar->codimen == (corank - 1));
++      m = match_subscript (ar, init, true);
+       if (m == MATCH_ERROR)
+ 	return MATCH_ERROR;
+ 
+@@ -249,6 +247,13 @@
+ 	    gfc_error ("Invalid form of coarray reference at %C");
+ 	  return MATCH_ERROR;
+ 	}
++      else if (ar->dimen_type[ar->codimen + ar->dimen] == DIMEN_STAR)
++	{
++	  gfc_error ("Unexpected '*' for codimension %d of %d at %C",
++		     ar->codimen + 1, corank);
++	  return MATCH_ERROR;
++	}
++
+       if (ar->codimen >= corank)
+ 	{
+ 	  gfc_error ("Invalid codimension %d at %C, only %d codimensions exist",
+Index: gcc/fortran/ChangeLog
+===================================================================
+--- a/src/gcc/fortran/ChangeLog	(revision
++++ b/src/gcc/fortran/ChangeLog	(revision
+@@ -1,3 +1,30 @@
++2012-11-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
++
++	PR fortran/55314
++	Backport from trunk
++	* resolve.c (resolve_allocate_deallocate):  Compare all
++	subscripts when deciding if to reject a (de)allocate
++	statement.
++
++2012-09-13  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/54225
++	PR fortran/53306
++	* array.c (match_subscript, gfc_match_array_ref): Fix
++	diagnostic of coarray's '*'.
++
++2012-09-13  Tobias Burnus  <burnus@net-b.de>
++
++	PR fortran/54556
++	* resolve.c (gfc_impure_variable): Don't check gfc_pure such
++	that the function also works for gfc_implicit_pure procedures.
++
++2012-09-12  Mikael Morin  <mikael@gcc.gnu.org>
++
++	PR fortran/54208
++	* simplify.c (simplify_bound_dim): Resolve array spec before
++	proceeding with simplification.
++
+ 2012-07-14  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	Backport from trunk:
+Index: gcc/fortran/resolve.c
+===================================================================
+--- a/src/gcc/fortran/resolve.c	(revision
++++ b/src/gcc/fortran/resolve.c	(revision
+@@ -7087,11 +7087,18 @@
+ 
+ 		      if (pr->next && qr->next)
+ 			{
++			  int i;
+ 			  gfc_array_ref *par = &(pr->u.ar);
+ 			  gfc_array_ref *qar = &(qr->u.ar);
+-			  if (gfc_dep_compare_expr (par->start[0],
+-						    qar->start[0]) != 0)
+-			      break;
++
++			  for (i=0; i<par->dimen; i++)
++			    {
++			      if ((par->start[i] != NULL
++				   || qar->start[i] != NULL)
++				  && gfc_dep_compare_expr (par->start[i],
++							   qar->start[i]) != 0)
++				goto break_label;
++			    }
+ 			}
+ 		    }
+ 		  else
+@@ -7103,6 +7110,8 @@
+ 		  pr = pr->next;
+ 		  qr = qr->next;
+ 		}
++	    break_label:
++	      ;
+ 	    }
+ 	}
+     }
+@@ -12909,10 +12918,9 @@
+     }
+ 
+   proc = sym->ns->proc_name;
+-  if (sym->attr.dummy && gfc_pure (proc)
+-	&& ((proc->attr.subroutine && sym->attr.intent == INTENT_IN)
+-		||
+-	     proc->attr.function))
++  if (sym->attr.dummy
++      && ((proc->attr.subroutine && sym->attr.intent == INTENT_IN)
++	  || proc->attr.function))
+     return 1;
+ 
+   /* TODO: Sort out what can be storage associated, if anything, and include
+Index: gcc/fortran/simplify.c
+===================================================================
+--- a/src/gcc/fortran/simplify.c	(revision
++++ b/src/gcc/fortran/simplify.c	(revision
+@@ -3296,6 +3296,9 @@
+   gcc_assert (array->expr_type == EXPR_VARIABLE);
+   gcc_assert (as);
+ 
++  if (gfc_resolve_array_spec (as, 0) == FAILURE)
++    return NULL;
++
+   /* The last dimension of an assumed-size array is special.  */
+   if ((!coarray && d == as->rank && as->type == AS_ASSUMED_SIZE && !upper)
+       || (coarray && d == as->rank + as->corank))
+Index: gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac	(revision
++++ b/src/gcc/configure.ac	(revision
+@@ -4169,7 +4169,9 @@
+     AC_CACHE_CHECK(linker support for omitting dot symbols,
+     gcc_cv_ld_no_dot_syms,
+     [gcc_cv_ld_no_dot_syms=no
+-    if test $in_tree_ld = yes ; then
++    if test x"$ld_is_gold" = xyes; then
++      gcc_cv_ld_no_dot_syms=yes
++    elif test $in_tree_ld = yes ; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
+         gcc_cv_ld_no_dot_syms=yes
+       fi
+@@ -4206,7 +4208,9 @@
+     AC_CACHE_CHECK(linker large toc support,
+     gcc_cv_ld_large_toc,
+     [gcc_cv_ld_large_toc=no
+-    if test $in_tree_ld = yes ; then
++    if test x"$ld_is_gold" = xyes; then
++      gcc_cv_ld_large_toc=yes
++    elif test $in_tree_ld = yes ; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
+         gcc_cv_ld_large_toc=yes
+       fi
+Index: gcc/stor-layout.c
+===================================================================
+--- a/src/gcc/stor-layout.c	(revision
++++ b/src/gcc/stor-layout.c	(revision
+@@ -1927,9 +1927,17 @@
+ 	TYPE_SIZE (type) = int_const_binop (MULT_EXPR, TYPE_SIZE (innertype),
+ 					    bitsize_int (nunits), 0);
+ 
+-	/* Always naturally align vectors.  This prevents ABI changes
+-	   depending on whether or not native vector modes are supported.  */
+-	TYPE_ALIGN (type) = tree_low_cst (TYPE_SIZE (type), 0);
++	/* For vector types, we do not default to the mode's alignment.
++	   Instead, query a target hook, defaulting to natural alignment.
++	   This prevents ABI changes depending on whether or not native
++	   vector modes are supported.  */
++	TYPE_ALIGN (type) = targetm.vector_alignment (type);
++
++	/* However, if the underlying mode requires a bigger alignment than
++	   what the target hook provides, we cannot use the mode.  For now,
++	   simply reject that case.  */
++	gcc_assert (TYPE_ALIGN (type)
++		    >= GET_MODE_ALIGNMENT (TYPE_MODE (type)));
+         break;
+       }
+ 
+Index: gcc/tree-vect-data-refs.c
+===================================================================
+--- a/src/gcc/tree-vect-data-refs.c	(revision
++++ b/src/gcc/tree-vect-data-refs.c	(revision
+@@ -1019,7 +1019,7 @@
+       int misal = DR_MISALIGNMENT (dr);
+       tree vectype = STMT_VINFO_VECTYPE (stmt_info);
+       misal += negative ? -npeel * dr_size : npeel * dr_size;
+-      misal &= GET_MODE_SIZE (TYPE_MODE (vectype)) - 1;
++      misal &= (TYPE_ALIGN (vectype) / BITS_PER_UNIT) - 1;
+       SET_DR_MISALIGNMENT (dr, misal);
+       return;
+     }
+Index: gcc/c-typeck.c
+===================================================================
+--- a/src/gcc/c-typeck.c	(revision
++++ b/src/gcc/c-typeck.c	(revision
+@@ -3527,7 +3527,13 @@
+ 		    "wrong type argument to unary exclamation mark");
+ 	  return error_mark_node;
+ 	}
+-      arg = c_objc_common_truthvalue_conversion (location, arg);
++      if (int_operands)
++	{
++	  arg = c_objc_common_truthvalue_conversion (location, xarg);
++	  arg = remove_c_maybe_const_expr (arg);
++	}
++      else
++	arg = c_objc_common_truthvalue_conversion (location, arg);
+       ret = invert_truthvalue_loc (location, arg);
+       /* If the TRUTH_NOT_EXPR has been folded, reset the location.  */
+       if (EXPR_P (ret) && EXPR_HAS_LOCATION (ret))
+@@ -4755,8 +4761,11 @@
+   ret = build_c_cast (loc, type, expr);
+   if (type_expr)
+     {
++      bool inner_expr_const = true;
++      ret = c_fully_fold (ret, require_constant_value, &inner_expr_const);
+       ret = build2 (C_MAYBE_CONST_EXPR, TREE_TYPE (ret), type_expr, ret);
+-      C_MAYBE_CONST_EXPR_NON_CONST (ret) = !type_expr_const;
++      C_MAYBE_CONST_EXPR_NON_CONST (ret) = !(type_expr_const
++					     && inner_expr_const);
+       SET_EXPR_LOCATION (ret, loc);
+     }
+ 
+@@ -9633,8 +9642,20 @@
+ 	     but that does not mean the operands should be
+ 	     converted to ints!  */
+ 	  result_type = integer_type_node;
+-	  op0 = c_common_truthvalue_conversion (location, op0);
+-	  op1 = c_common_truthvalue_conversion (location, op1);
++	  if (op0_int_operands)
++	    {
++	      op0 = c_objc_common_truthvalue_conversion (location, orig_op0);
++	      op0 = remove_c_maybe_const_expr (op0);
++	    }
++	  else
++	    op0 = c_objc_common_truthvalue_conversion (location, op0);
++	  if (op1_int_operands)
++	    {
++	      op1 = c_objc_common_truthvalue_conversion (location, orig_op1);
++	      op1 = remove_c_maybe_const_expr (op1);
++	    }
++	  else
++	    op1 = c_objc_common_truthvalue_conversion (location, op1);
+ 	  converted = 1;
+ 	  boolean_op = true;
+ 	}
+@@ -10292,13 +10313,18 @@
+ 
+   int_const = (TREE_CODE (expr) == INTEGER_CST && !TREE_OVERFLOW (expr));
+   int_operands = EXPR_INT_CONST_OPERANDS (expr);
+-  if (int_operands)
+-    expr = remove_c_maybe_const_expr (expr);
++  if (int_operands && TREE_CODE (expr) != INTEGER_CST)
++    {
++      expr = remove_c_maybe_const_expr (expr);
++      expr = build2 (NE_EXPR, integer_type_node, expr,
++		     convert (TREE_TYPE (expr), integer_zero_node));
++      expr = note_integer_operands (expr);
++    }
++  else
++    /* ??? Should we also give an error for vectors rather than leaving
++       those to give errors later?  */
++    expr = c_common_truthvalue_conversion (location, expr);
+ 
+-  /* ??? Should we also give an error for vectors rather than leaving
+-     those to give errors later?  */
+-  expr = c_common_truthvalue_conversion (location, expr);
+-
+   if (TREE_CODE (expr) == INTEGER_CST && int_operands && !int_const)
+     {
+       if (TREE_OVERFLOW (expr))
+Index: gcc/cselib.c
+===================================================================
+--- a/src/gcc/cselib.c	(revision
++++ b/src/gcc/cselib.c	(revision
+@@ -1237,8 +1237,18 @@
+   unsigned int regno = UINT_MAX;
+   struct elt_loc_list *p_in = p;
+ 
+-  for (; p; p = p -> next)
++  for (; p; p = p->next)
+     {
++      /* Return these right away to avoid returning stack pointer based
++	 expressions for frame pointer and vice versa, which is something
++	 that would confuse DSE.  See the comment in cselib_expand_value_rtx_1
++	 for more details.  */
++      if (REG_P (p->loc)
++	  && (REGNO (p->loc) == STACK_POINTER_REGNUM
++	      || REGNO (p->loc) == FRAME_POINTER_REGNUM
++	      || REGNO (p->loc) == HARD_FRAME_POINTER_REGNUM
++	      || REGNO (p->loc) == cfa_base_preserved_regno))
++	return p->loc;
+       /* Avoid infinite recursion trying to expand a reg into a
+ 	 the same reg.  */
+       if ((REG_P (p->loc))
+Index: gcc/tree-sra.c
+===================================================================
+--- a/src/gcc/tree-sra.c	(revision
++++ b/src/gcc/tree-sra.c	(revision
+@@ -910,7 +910,8 @@
+ disqualify_base_of_expr (tree t, const char *reason)
+ {
+   t = get_base_address (t);
+-  if (sra_mode == SRA_MODE_EARLY_IPA
++  if (t
++      && sra_mode == SRA_MODE_EARLY_IPA
+       && TREE_CODE (t) == MEM_REF)
+     t = get_ssa_base_param (TREE_OPERAND (t, 0));
+ 
+Index: gcc/tree-inline.c
+===================================================================
+--- a/src/gcc/tree-inline.c	(revision
++++ b/src/gcc/tree-inline.c	(revision
+@@ -3809,6 +3809,12 @@
+ 	goto egress;
+ 
+       if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
++          /* For extern inline functions that get redefined we always
++	     silently ignored always_inline flag. Better behaviour would
++	     be to be able to keep both bodies and use extern inline body
++	     for inlining, but we can't do that because frontends overwrite
++	     the body.  */
++	  && !cg_edge->callee->local.redefined_extern_inline
+ 	  /* Avoid warnings during early inline pass. */
+ 	  && cgraph_global_info_ready)
+ 	{
+Index: gcc/config/alpha/alpha.c
+===================================================================
+--- a/src/gcc/config/alpha/alpha.c	(revision
++++ b/src/gcc/config/alpha/alpha.c	(revision
+@@ -9648,18 +9648,19 @@
+     }
+ }
+ 
+-/* Insert an unop between a noreturn function call and GP load.  */
++/* Insert an unop between sibcall or noreturn function call and GP load.  */
+ 
+ static void
+-alpha_pad_noreturn (void)
++alpha_pad_function_end (void)
+ {
+   rtx insn, next;
+ 
+   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
+     {
+-      if (!CALL_P (insn)
+-	  || !find_reg_note (insn, REG_NORETURN, NULL_RTX))
+-        continue;
++      if (! (CALL_P (insn)
++	     && (SIBLING_CALL_P (insn)
++		 || find_reg_note (insn, REG_NORETURN, NULL_RTX))))
++	continue;
+ 
+       next = next_active_insn (insn);
+ 
+@@ -9680,11 +9681,31 @@
+ static void
+ alpha_reorg (void)
+ {
+-  /* Workaround for a linker error that triggers when an
+-     exception handler immediatelly follows a noreturn function.
++  /* Workaround for a linker error that triggers when an exception
++     handler immediatelly follows a sibcall or a noreturn function.
+ 
++In the sibcall case:
++
+      The instruction stream from an object file:
+ 
++ 1d8:   00 00 fb 6b     jmp     (t12)
++ 1dc:   00 00 ba 27     ldah    gp,0(ra)
++ 1e0:   00 00 bd 23     lda     gp,0(gp)
++ 1e4:   00 00 7d a7     ldq     t12,0(gp)
++ 1e8:   00 40 5b 6b     jsr     ra,(t12),1ec <__funcZ+0x1ec>
++
++     was converted in the final link pass to:
++
++   12003aa88:   67 fa ff c3     br      120039428 <...>
++   12003aa8c:   00 00 fe 2f     unop
++   12003aa90:   00 00 fe 2f     unop
++   12003aa94:   48 83 7d a7     ldq     t12,-31928(gp)
++   12003aa98:   00 40 5b 6b     jsr     ra,(t12),12003aa9c <__func+0x1ec>
++
++And in the noreturn case:
++
++     The instruction stream from an object file:
++
+   54:   00 40 5b 6b     jsr     ra,(t12),58 <__func+0x58>
+   58:   00 00 ba 27     ldah    gp,0(ra)
+   5c:   00 00 bd 23     lda     gp,0(gp)
+@@ -9701,11 +9722,11 @@
+ 
+      GP load instructions were wrongly cleared by the linker relaxation
+      pass.  This workaround prevents removal of GP loads by inserting
+-     an unop instruction between a noreturn function call and
++     an unop instruction between a sibcall or noreturn function call and
+      exception handler prologue.  */
+ 
+   if (current_function_has_exception_handlers ())
+-    alpha_pad_noreturn ();
++    alpha_pad_function_end ();
+ 
+   if (alpha_tp != ALPHA_TP_PROG || flag_exceptions)
+     alpha_handle_trap_shadows ();
+Index: gcc/config/m32c/predicates.md
+===================================================================
+--- a/src/gcc/config/m32c/predicates.md	(revision
++++ b/src/gcc/config/m32c/predicates.md	(revision
+@@ -293,3 +293,7 @@
+ (define_predicate "m32c_1mask16_operand"
+   (and (match_operand 0 "const_int_operand")
+        (match_test "m32c_const_ok_for_constraint_p(INTVAL(op), 'I', \"Imw\")")))
++
++(define_predicate "m32c_const_u16_operand"
++  (and (match_operand 0 "const_int_operand")
++       (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 65535")))
+Index: gcc/config/m32c/muldiv.md
+===================================================================
+--- a/src/gcc/config/m32c/muldiv.md	(revision
++++ b/src/gcc/config/m32c/muldiv.md	(revision
+@@ -108,7 +108,7 @@
+ (define_insn "umulhisi3_c"
+   [(set (match_operand:SI 0 "ra_operand" "=Rsi")
+         (mult:SI (zero_extend:SI (match_operand:HI 1 "mra_operand" "%0"))
+-                 (match_operand 2 "immediate_operand" "i")))]
++                 (match_operand 2 "m32c_const_u16_operand" "i")))]
+   ""
+   "mulu.w\t%u2,%1"
+   [(set_attr "flags" "o")]
+Index: gcc/config/sparc/sparc.c
+===================================================================
+--- a/src/gcc/config/sparc/sparc.c	(revision
++++ b/src/gcc/config/sparc/sparc.c	(revision
+@@ -9456,7 +9456,10 @@
+   /* We need to have the (essentially) final form of the insn stream in order
+      to properly detect the various hazards.  Run delay slot scheduling.  */
+   if (optimize > 0 && flag_delayed_branch)
+-    dbr_schedule (get_insns ());
++    {
++      cleanup_barriers ();
++      dbr_schedule (get_insns ());
++    }
+ 
+   /* Now look for specific patterns in the insn stream.  */
+   for (insn = get_insns (); insn; insn = next)
+Index: gcc/config/sparc/sol2-bi.h
+===================================================================
+--- a/src/gcc/config/sparc/sol2-bi.h	(revision
++++ b/src/gcc/config/sparc/sol2-bi.h	(revision
+@@ -1,6 +1,6 @@
+ /* Definitions of target machine for GCC, for bi-arch SPARC
+    running Solaris 2 using the system assembler and linker.
+-   Copyright (C) 2002, 2003, 2004, 2006, 2007, 2009, 2010, 2011
++   Copyright (C) 2002, 2003, 2004, 2006, 2007, 2009, 2010, 2011, 2012
+    Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+@@ -191,12 +191,12 @@
+    %{YP,*} \
+    %{R*} \
+    %{compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
+-       %{!p:%{!pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/sparcv9}}} \
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9:%R/lib/sparcv9} \
++       %{!p:%{!pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/sparcv9:%R/lib/sparcv9}}} \
+      -R %R/usr/ucblib/sparcv9} \
+    %{!compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
+-       %{!p:%{!pg:-Y P,%R/usr/lib/sparcv9}}}}"
++     %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9:%R/lib/sparcv9} \
++       %{!p:%{!pg:-Y P,%R/usr/lib/sparcv9:%R/lib/sparcv9}}}}"
+ 
+ #define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE
+ 
+Index: gcc/config/i386/driver-i386.c
+===================================================================
+--- a/src/gcc/config/i386/driver-i386.c	(revision
++++ b/src/gcc/config/i386/driver-i386.c	(revision
+@@ -1,5 +1,5 @@
+ /* Subroutines for the gcc driver.
+-   Copyright (C) 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
++   Copyright (C) 2006-2012 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+@@ -398,6 +398,7 @@
+   unsigned int has_fma = 0, has_fma4 = 0, has_xop = 0;
+   unsigned int has_bmi = 0, has_tbm = 0;
+   unsigned int has_rdrnd = 0, has_f16c = 0, has_fsgsbase = 0;
++  unsigned int has_osxsave = 0;
+ 
+   bool arch;
+ 
+@@ -439,6 +440,7 @@
+   has_sse4_1 = ecx & bit_SSE4_1;
+   has_sse4_2 = ecx & bit_SSE4_2;
+   has_avx = ecx & bit_AVX;
++  has_osxsave = ecx & bit_OSXSAVE;
+   has_cmpxchg16b = ecx & bit_CMPXCHG16B;
+   has_movbe = ecx & bit_MOVBE;
+   has_popcnt = ecx & bit_POPCNT;
+@@ -461,6 +463,26 @@
+       has_fsgsbase = ebx & bit_FSGSBASE;
+     }
+ 
++  /* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv.  */
++#define XCR_XFEATURE_ENABLED_MASK	0x0
++#define XSTATE_FP			0x1
++#define XSTATE_SSE			0x2
++#define XSTATE_YMM			0x4
++  if (has_osxsave)
++    asm (".byte 0x0f; .byte 0x01; .byte 0xd0"
++	 : "=a" (eax), "=d" (edx)
++	 : "c" (XCR_XFEATURE_ENABLED_MASK));
++
++  /* Check if SSE and YMM states are supported.  */
++  if (!has_osxsave
++      || (eax & (XSTATE_SSE | XSTATE_YMM)) != (XSTATE_SSE | XSTATE_YMM))
++    {
++      has_avx = 0;
++      has_fma = 0;
++      has_fma4 = 0;
++      has_xop = 0;
++    }
++
+   /* Check cpuid level of extended features.  */
+   __cpuid (0x80000000, ext_level, ebx, ecx, edx);
+ 
+Index: gcc/config/sol2.h
+===================================================================
+--- a/src/gcc/config/sol2.h	(revision
++++ b/src/gcc/config/sol2.h	(revision
+@@ -1,6 +1,6 @@
+ /* Operating system specific defines to be used when targeting GCC for any
+    Solaris 2 system.
+-   Copyright 2002, 2003, 2004, 2007, 2008, 2009, 2010, 2011
++   Copyright 2002, 2003, 2004, 2007, 2008, 2009, 2010, 2011, 2012
+    Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+@@ -163,12 +163,12 @@
+    %{YP,*} \
+    %{R*} \
+    %{compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
+-             %{!p:%{!pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib:%R/usr/lib}}} \
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib:%R/lib} \
++             %{!p:%{!pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib:%R/usr/lib:%R/lib}}} \
+              -R %R/usr/ucblib} \
+    %{!compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
+-             %{!p:%{!pg:-Y P,%R/usr/ccs/lib:%R/usr/lib}}}}"
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib:%R/lib} \
++             %{!p:%{!pg:-Y P,%R/usr/ccs/lib:%R/usr/lib:%R/lib}}}}"
+ 
+ #undef LINK_ARCH32_SPEC
+ #define LINK_ARCH32_SPEC LINK_ARCH32_SPEC_BASE
+Index: gcc/config/avr/avr-devices.c
+===================================================================
+--- a/src/gcc/config/avr/avr-devices.c	(revision
++++ b/src/gcc/config/avr/avr-devices.c	(revision
+@@ -211,7 +211,7 @@
+   { "atmega128rfa1",        ARCH_AVR51, "__AVR_ATmega128RFA1__",    0, 0x0200, "m128rfa1" },
+   { "at90can128",           ARCH_AVR51, "__AVR_AT90CAN128__",       0, 0x0100, "can128" },
+   { "at90usb1286",          ARCH_AVR51, "__AVR_AT90USB1286__",      0, 0x0100, "usb1286" },
+-  { "at90usb1287",          ARCH_AVR51, "__AVR_AT90USB1287__",      0, 0x0100, "usb1286" },
++  { "at90usb1287",          ARCH_AVR51, "__AVR_AT90USB1287__",      0, 0x0100, "usb1287" },
+     /* 3-Byte PC.  */
+   { "avr6",                 ARCH_AVR6, NULL,                        0, 0x0200, "m2561" },
+   { "atmega2560",           ARCH_AVR6, "__AVR_ATmega2560__",        0, 0x0200, "m2560" },
+Index: gcc/config/avr/avr.c
+===================================================================
+--- a/src/gcc/config/avr/avr.c	(revision
++++ b/src/gcc/config/avr/avr.c	(revision
+@@ -94,6 +94,7 @@
+ static unsigned int avr_case_values_threshold (void);
+ static bool avr_frame_pointer_required_p (void);
+ static bool avr_can_eliminate (const int, const int);
++static bool avr_allocate_stack_slots_for_args (void);
+ static bool avr_class_likely_spilled_p (reg_class_t c);
+ static rtx avr_function_arg (CUMULATIVE_ARGS *, enum machine_mode,
+ 			     const_tree, bool);
+@@ -218,6 +219,9 @@
+ #undef TARGET_CAN_ELIMINATE
+ #define TARGET_CAN_ELIMINATE avr_can_eliminate
+ 
++#undef TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS
++#define TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS avr_allocate_stack_slots_for_args
++
+ #undef TARGET_CLASS_LIKELY_SPILLED_P
+ #define TARGET_CLASS_LIKELY_SPILLED_P avr_class_likely_spilled_p
+ 
+@@ -446,6 +450,16 @@
+   return count;
+ }
+ 
++
++/* Implement `TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS' */
++
++static bool
++avr_allocate_stack_slots_for_args (void)
++{
++  return !cfun->machine->is_naked;
++}
++
++
+ /* Return true if register FROM can be eliminated via register TO.  */
+ 
+ bool
+Index: gcc/config/arm/arm.c
+===================================================================
+--- a/src/gcc/config/arm/arm.c	(revision
++++ b/src/gcc/config/arm/arm.c	(revision
+@@ -243,6 +243,7 @@
+ static bool fa726te_sched_adjust_cost (rtx, rtx, rtx, int *);
+ static enum machine_mode arm_preferred_simd_mode (enum machine_mode);
+ static bool arm_class_likely_spilled_p (reg_class_t);
++static HOST_WIDE_INT arm_vector_alignment (const_tree type);
+ static bool arm_vector_alignment_reachable (const_tree type, bool is_packed);
+ static bool arm_builtin_support_vector_misalignment (enum machine_mode mode,
+ 						     const_tree type,
+@@ -579,6 +580,9 @@
+ #undef TARGET_CLASS_LIKELY_SPILLED_P
+ #define TARGET_CLASS_LIKELY_SPILLED_P arm_class_likely_spilled_p
+ 
++#undef TARGET_VECTOR_ALIGNMENT
++#define TARGET_VECTOR_ALIGNMENT arm_vector_alignment
++
+ #undef TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
+ #define TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE \
+   arm_vector_alignment_reachable
+@@ -4693,6 +4697,18 @@
+   return gen_rtx_REG (mode, pcum->nregs);
+ }
+ 
++/* The AAPCS sets the maximum alignment of a vector to 64 bits.  */
++static HOST_WIDE_INT
++arm_vector_alignment (const_tree type)
++{
++  HOST_WIDE_INT align = tree_low_cst (TYPE_SIZE (type), 0);
++
++  if (TARGET_AAPCS_BASED)
++    align = MIN (align, 64);
++
++  return align;
++}
++
+ static unsigned int
+ arm_function_arg_boundary (enum machine_mode mode, const_tree type)
+ {
+@@ -20428,7 +20444,7 @@
+   unsigned long l_mask = live_regs_mask & (for_prologue ? 0x40ff : 0xff);
+   /* Then count how many other high registers will need to be pushed.  */
+   unsigned long high_regs_pushed = bit_count (live_regs_mask & 0x0f00);
+-  int n_free, reg_base;
++  int n_free, reg_base, size;
+ 
+   if (!for_prologue && frame_pointer_needed)
+     amount = offsets->locals_base - offsets->saved_regs;
+@@ -20467,7 +20483,8 @@
+   n_free = 0;
+   if (!for_prologue)
+     {
+-      reg_base = arm_size_return_regs () / UNITS_PER_WORD;
++      size = arm_size_return_regs ();
++      reg_base = ARM_NUM_INTS (size);
+       live_regs_mask >>= reg_base;
+     }
+ 
+@@ -20521,8 +20538,7 @@
+   if (extra_pop > 0)
+     {
+       unsigned long extra_mask = (1 << extra_pop) - 1;
+-      live_regs_mask |= extra_mask << ((size + UNITS_PER_WORD - 1) 
+-				       / UNITS_PER_WORD);
++      live_regs_mask |= extra_mask << ARM_NUM_INTS (size);
+     }
+ 
+   /* The prolog may have pushed some high registers to use as
+Index: gcc/config/pa/pa.md
+===================================================================
+--- a/src/gcc/config/pa/pa.md	(revision
++++ b/src/gcc/config/pa/pa.md	(revision
+@@ -2879,15 +2879,17 @@
+   [(set_attr "type" "store")
+    (set_attr "length" "4")])
+ 
+-(define_insn ""
+-  [(set (match_operand:HI 0 "register_operand" "=r")
+-	(plus:HI (match_operand:HI 1 "register_operand" "r")
+-		 (match_operand 2 "const_int_operand" "J")))]
++(define_insn "addhi3"
++  [(set (match_operand:HI 0 "register_operand" "=r,r")
++	(plus:HI (match_operand:HI 1 "register_operand" "%r,r")
++		 (match_operand:HI 2 "arith_operand" "r,J")))]
+   ""
+-  "ldo %2(%1),%0"
+-  [(set_attr "type" "binary")
++  "@
++   {addl|add,l} %1,%2,%0
++   ldo %2(%1),%0"
++  [(set_attr "type" "binary,binary")
+    (set_attr "pa_combine_type" "addmove")
+-   (set_attr "length" "4")])
++   (set_attr "length" "4,4")])
+ 
+ (define_expand "movqi"
+   [(set (match_operand:QI 0 "general_operand" "")
+Index: gcc/config/mips/mips.c
+===================================================================
+--- a/src/gcc/config/mips/mips.c	(revision
++++ b/src/gcc/config/mips/mips.c	(revision
+@@ -15083,7 +15083,10 @@
+     }
+ 
+   if (optimize > 0 && flag_delayed_branch)
+-    dbr_schedule (get_insns ());
++    {
++      cleanup_barriers ();
++      dbr_schedule (get_insns ());
++    }
+   mips_reorg_process_insns ();
+   if (!TARGET_MIPS16
+       && TARGET_EXPLICIT_RELOCS
+Index: libgo/Makefile.in
+===================================================================
+--- a/src/libgo/Makefile.in	(revision
++++ b/src/libgo/Makefile.in	(revision
+@@ -46,12 +46,10 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = .
+-DIST_COMMON = README $(am__configure_deps) $(srcdir)/../config.guess \
+-	$(srcdir)/../config.sub $(srcdir)/../depcomp \
+-	$(srcdir)/../install-sh $(srcdir)/../ltmain.sh \
+-	$(srcdir)/../missing $(srcdir)/../mkinstalldirs \
+-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/config.h.in $(top_srcdir)/configure
++DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(top_srcdir)/configure $(am__configure_deps) \
++	$(srcdir)/config.h.in $(srcdir)/../mkinstalldirs \
++	$(srcdir)/../depcomp
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -162,52 +160,6 @@
+ libgo_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ 	$(am__DEPENDENCIES_1)
+-am__libgo_la_SOURCES_DIST = runtime/go-append.c runtime/go-assert.c \
+-	runtime/go-assert-interface.c \
+-	runtime/go-byte-array-to-string.c runtime/go-breakpoint.c \
+-	runtime/go-caller.c runtime/go-can-convert-interface.c \
+-	runtime/go-cgo.c runtime/go-chan-cap.c runtime/go-chan-len.c \
+-	runtime/go-check-interface.c runtime/go-close.c \
+-	runtime/go-closed.c runtime/go-construct-map.c \
+-	runtime/go-convert-interface.c runtime/go-copy.c \
+-	runtime/go-defer.c runtime/go-deferred-recover.c \
+-	runtime/go-eface-compare.c runtime/go-eface-val-compare.c \
+-	runtime/go-getgoroot.c runtime/go-go.c runtime/go-gomaxprocs.c \
+-	runtime/go-int-array-to-string.c runtime/go-int-to-string.c \
+-	runtime/go-interface-compare.c \
+-	runtime/go-interface-eface-compare.c \
+-	runtime/go-interface-val-compare.c runtime/go-lock-os-thread.c \
+-	runtime/go-map-delete.c runtime/go-map-index.c \
+-	runtime/go-map-len.c runtime/go-map-range.c \
+-	runtime/go-nanotime.c runtime/go-new-channel.c \
+-	runtime/go-new-map.c runtime/go-new.c runtime/go-note.c \
+-	runtime/go-panic.c runtime/go-panic-defer.c runtime/go-print.c \
+-	runtime/go-rec-big.c runtime/go-rec-nb-big.c \
+-	runtime/go-rec-nb-small.c runtime/go-rec-small.c \
+-	runtime/go-recover.c runtime/go-reflect.c \
+-	runtime/go-reflect-call.c runtime/go-reflect-chan.c \
+-	runtime/go-reflect-map.c runtime/go-rune.c \
+-	runtime/go-runtime-error.c runtime/go-sched.c \
+-	runtime/go-select.c runtime/go-semacquire.c \
+-	runtime/go-send-big.c runtime/go-send-nb-big.c \
+-	runtime/go-send-nb-small.c runtime/go-send-small.c \
+-	runtime/go-signal.c runtime/go-strcmp.c \
+-	runtime/go-string-to-byte-array.c \
+-	runtime/go-string-to-int-array.c runtime/go-strplus.c \
+-	runtime/go-strslice.c runtime/go-trampoline.c \
+-	runtime/go-type-eface.c runtime/go-type-error.c \
+-	runtime/go-type-identity.c runtime/go-type-interface.c \
+-	runtime/go-type-string.c runtime/go-typedesc-equal.c \
+-	runtime/go-typestring.c runtime/go-unreflect.c \
+-	runtime/go-unsafe-new.c runtime/go-unsafe-newarray.c \
+-	runtime/go-unsafe-pointer.c runtime/go-unwind.c \
+-	runtime/mcache.c runtime/mcentral.c \
+-	runtime/mem_posix_memalign.c runtime/mem.c runtime/mfinal.c \
+-	runtime/mfixalloc.c runtime/mgc0.c runtime/mheap.c \
+-	runtime/mheapmap32.c runtime/mheapmap64.c runtime/msize.c \
+-	runtime/proc.c runtime/thread.c \
+-	runtime/rtems-task-variable-add.c chan.c iface.c malloc.c \
+-	map.c mprof.c reflect.c sigqueue.c string.c
+ @HAVE_SYS_MMAN_H_FALSE@am__objects_1 = mem_posix_memalign.lo
+ @HAVE_SYS_MMAN_H_TRUE@am__objects_1 = mem.lo
+ @LIBGO_IS_RTEMS_TRUE@am__objects_2 = rtems-task-variable-add.lo
+@@ -256,7 +208,6 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgobegin_a_SOURCES) $(libgo_la_SOURCES)
+-DIST_SOURCES = $(libgobegin_a_SOURCES) $(am__libgo_la_SOURCES_DIST)
+ MULTISRCTOP = 
+ MULTIBUILDTOP = 
+ MULTIDIRS = 
+@@ -284,47 +235,10 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir dist dist-all distcheck
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = testsuite
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+-  { test ! -d "$(distdir)" \
+-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+-         && rm -fr "$(distdir)"; }; }
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-distuninstallcheck_listfiles = find . -type f -print
+-distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ AR = @AR@
+@@ -3416,182 +3330,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	$(am__remove_distdir)
+-	test -d "$(distdir)" || mkdir "$(distdir)"
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	-test -n "$(am__skip_mode_fix)" \
+-	|| find "$(distdir)" -type d ! -perm -755 \
+-		-exec chmod u+rwx,go+rx {} \; -o \
+-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+-	|| chmod -R a+r "$(distdir)"
+-dist-gzip: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-dist-bzip2: distdir
+-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+-	$(am__remove_distdir)
+-
+-dist-lzma: distdir
+-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+-	$(am__remove_distdir)
+-
+-dist-xz: distdir
+-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+-	$(am__remove_distdir)
+-
+-dist-tarZ: distdir
+-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+-	$(am__remove_distdir)
+-
+-dist-shar: distdir
+-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+-	$(am__remove_distdir)
+-
+-dist-zip: distdir
+-	-rm -f $(distdir).zip
+-	zip -rq $(distdir).zip $(distdir)
+-	$(am__remove_distdir)
+-
+-dist dist-all: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-# This target untars the dist file and tries a VPATH configuration.  Then
+-# it guarantees that the distribution is self-contained by making another
+-# tarfile.
+-distcheck: dist
+-	case '$(DIST_ARCHIVES)' in \
+-	*.tar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+-	*.tar.bz2*) \
+-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+-	*.tar.lzma*) \
+-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+-	*.tar.xz*) \
+-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+-	*.tar.Z*) \
+-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+-	*.shar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+-	*.zip*) \
+-	  unzip $(distdir).zip ;;\
+-	esac
+-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+-	mkdir $(distdir)/_build
+-	mkdir $(distdir)/_inst
+-	chmod a-w $(distdir)
+-	test -d $(distdir)/_build || exit 0; \
+-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+-	  && am__cwd=`pwd` \
+-	  && $(am__cd) $(distdir)/_build \
+-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+-	    $(DISTCHECK_CONFIGURE_FLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+-	  && $(MAKE) $(AM_MAKEFLAGS) check \
+-	  && $(MAKE) $(AM_MAKEFLAGS) install \
+-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+-	        distuninstallcheck \
+-	  && chmod -R a-w "$$dc_install_base" \
+-	  && ({ \
+-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+-	  && rm -rf "$$dc_destdir" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+-	  && rm -rf $(DIST_ARCHIVES) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+-	  && cd "$$am__cwd" \
+-	  || exit 1
+-	$(am__remove_distdir)
+-	@(echo "$(distdir) archives ready for distribution: "; \
+-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+-distuninstallcheck:
+-	@$(am__cd) '$(distuninstallcheck_dir)' \
+-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+-	   || { echo "ERROR: files left after uninstall:" ; \
+-	        if test -n "$(DESTDIR)"; then \
+-	          echo "  (check DESTDIR support)"; \
+-	        fi ; \
+-	        $(distuninstallcheck_listfiles) ; \
+-	        exit 1; } >&2
+-distcleancheck: distclean
+-	@if test '$(srcdir)' = . ; then \
+-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+-	  exit 1 ; \
+-	fi
+-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+-	  || { echo "ERROR: files left in build directory after distclean:" ; \
+-	       $(distcleancheck_listfiles) ; \
+-	       exit 1; } >&2
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) all-multi $(DATA) \
+@@ -3743,18 +3481,16 @@
+ 	all all-am all-multi am--refresh check check-am clean \
+ 	clean-generic clean-libtool clean-local clean-multi \
+ 	clean-toolexeclibLIBRARIES clean-toolexeclibLTLIBRARIES ctags \
+-	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzma \
+-	dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+-	distclean-compile distclean-generic distclean-hdr \
+-	distclean-libtool distclean-multi distclean-tags \
+-	distcleancheck distdir distuninstallcheck dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-multi install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	install-toolexeclibLIBRARIES install-toolexeclibLTLIBRARIES \
+-	install-toolexeclibgoDATA install-toolexeclibgoarchiveDATA \
++	ctags-recursive distclean distclean-compile distclean-generic \
++	distclean-hdr distclean-libtool distclean-multi distclean-tags \
++	dvi dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-dvi install-dvi-am \
++	install-exec install-exec-am install-html install-html-am \
++	install-info install-info-am install-man install-multi \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip install-toolexeclibLIBRARIES \
++	install-toolexeclibLTLIBRARIES install-toolexeclibgoDATA \
++	install-toolexeclibgoarchiveDATA \
+ 	install-toolexeclibgocompressDATA \
+ 	install-toolexeclibgocontainerDATA \
+ 	install-toolexeclibgocryptoDATA \
+Index: libgo/testsuite/Makefile.in
+===================================================================
+--- a/src/libgo/testsuite/Makefile.in	(revision
++++ b/src/libgo/testsuite/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = testsuite
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -54,10 +54,8 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ DEJATOOL = $(PACKAGE)
+ RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ AR = @AR@
+@@ -298,37 +296,6 @@
+ 	-l='$(DEJATOOL)'; for tool in $$l; do \
+ 	  rm -f $$tool.sum $$tool.log; \
+ 	done
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ 	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
+ check: check-am
+@@ -430,8 +397,8 @@
+ 
+ .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
+ 	clean-libtool distclean distclean-DEJAGNU distclean-generic \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-libtool dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libgo/configure.ac
+===================================================================
+--- a/src/libgo/configure.ac	(revision
++++ b/src/libgo/configure.ac	(revision
+@@ -19,7 +19,7 @@
+ AC_CANONICAL_SYSTEM
+ target_alias=${target_alias-$host_alias}
+ 
+-AM_INIT_AUTOMAKE([1.9.3 no-define foreign -Wall])
++AM_INIT_AUTOMAKE([1.9.3 no-define foreign no-dist -Wall])
+ AH_TEMPLATE(PACKAGE, [Name of package])
+ AH_TEMPLATE(VERSION, [Version number of package])
+ 
+Index: libstdc++-v3/include/profile/iterator_tracker.h
+===================================================================
+--- a/src/libstdc++-v3/include/profile/iterator_tracker.h	(revision
++++ b/src/libstdc++-v3/include/profile/iterator_tracker.h	(revision
+@@ -93,7 +93,7 @@
+ 	return *this;
+       }
+ 
+-      __iterator_tracker&
++      __iterator_tracker
+       operator++(int)
+       {
+ 	_M_ds->_M_profile_iterate();
+@@ -110,7 +110,7 @@
+ 	return *this;
+       }
+ 
+-      __iterator_tracker&
++      __iterator_tracker
+       operator--(int)
+       {
+ 	_M_ds->_M_profile_iterate(1);
+Index: libstdc++-v3/ChangeLog
+===================================================================
+--- a/src/libstdc++-v3/ChangeLog	(revision
++++ b/src/libstdc++-v3/ChangeLog	(revision
+@@ -1,3 +1,22 @@
++2012-11-08  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	* include/profile/iterator_tracker.h (operator++): Fix returning
++	dangling reference.
++	(operator--): Likewise.
++
++2012-11-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
++
++	* testsuite/*: Fix copying permission statements.
++
++2012-09-27  H.J. Lu  <hongjiu.lu@intel.com>
++
++	PR libstdc++/54228
++	Backport from mainline
++	2011-12-15  Benjamin Kosnik  <bkoz@redhat.com>
++
++	* testsuite/22_locale/num_put/put/char/9780-2.cc: Add test for "C"
++	locale, add sanity checks in case of grouping.
++
+ 2012-07-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
+ 
+ 	PR libstdc++/53270
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/move/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/move/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/move/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/1.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/2.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/3.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/4.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/copy/34595.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/copy/34595.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/fill/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/fill/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/fill/4.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/partition/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/partition/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/partition/1.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/heap/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/heap/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/heap/1.cc	(revision
+@@ -8,7 +8,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc	(revision
++++ b/src/libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/24_iterators/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/24_iterators/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/24_iterators/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/28_regex/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/28_regex/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/28_regex/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc	(revision
++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc	(revision
++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/ext/vstring/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc	(revision
++++ b/src/libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc	(revision
++++ b/src/libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc	(revision
++++ b/src/libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc	(revision
+@@ -1,7 +1,7 @@
+ // { dg-require-namedlocale "de_DE" }
+ // { dg-require-namedlocale "es_ES" }
+ 
+-// Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
++// Copyright (C) 2004-2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -22,23 +22,60 @@
+ #include <locale>
+ #include <testsuite_hooks.h>
+ 
+-int main()
++// Make sure that formatted output uses the locale in the output stream.
++using namespace std;
++locale l1 = locale("de_DE");
++const num_put<char>& np = use_facet<num_put<char> >(l1);
++const numpunct<char>& npunct = use_facet<numpunct<char> >(l1);
++
++void test01()
+ {
+-  using namespace std;
++  bool test __attribute__((unused)) = true;
+ 
++  locale l2 = locale("C");
++  const numpunct<char>& npunct2 = use_facet<numpunct<char> >(l2);
++  char c = npunct2.thousands_sep();
++  string s = npunct2.grouping();
++
++  ostringstream oss;
++  oss.imbue(l2);
++
++  long l = 1234567890;
++  np.put(oss.rdbuf(), oss, ' ', l);
++  string res = oss.str();
++
++  VERIFY( res == "1234567890" );
++}
++
++void test02()
++{
+   bool test __attribute__((unused)) = true;
+-  locale l1 = locale("de_DE");
++
+   locale l2 = locale("es_ES");
+-  
+-  const num_put<char>& np = use_facet<num_put<char> >(l1);  
++  const numpunct<char>& npunct3 = use_facet<numpunct<char> >(l2);
++  char c = npunct3.thousands_sep();
++  string s = npunct3.grouping();
++
+   ostringstream oss;
+   oss.imbue(l2);
+ 
+   long l = 1234567890;
+-  np.put(oss.rdbuf(), oss, ' ', l); // 1234567890
++  np.put(oss.rdbuf(), oss, ' ', l);
+   string res = oss.str();
+-  
+-  VERIFY( res == "1234567890" );
+ 
++  if (!s.empty())
++    VERIFY( res == "1.234.567.890" );
++  else
++    VERIFY( res == "1234567890" );
++}
++
++int main()
++{
++  // Sanity check.
++  char c = npunct.thousands_sep();
++  string s = npunct.grouping();
++
++  test01();
++  test02();
+   return 0;
+ }
+Index: libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc	(revision
++++ b/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc	(revision
++++ b/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc	(revision
++++ b/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc	(revision
++++ b/src/libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multimap/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/multimap/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/set/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/set/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/set/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/vector/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/deque/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multiset/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/multiset/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/1.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/2.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/2.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/2.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/modifiers/3.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/3.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/3.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/42352.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/42352.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/1.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/2.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/2.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/1.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/1.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/1.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/3.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/3.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/3.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/2.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/2.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/2.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/4.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/4.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/4.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/3.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/3.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/3.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/5.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/5.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/5.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/4.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/4.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/4.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/operations/5.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/operations/5.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/5.h	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/capacity/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/capacity/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/capacity/1.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/capacity/1.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/capacity/1.h	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/capacity/1.h	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/list/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/list/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/map/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/map/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/map/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc	(revision
+@@ -7,7 +7,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/23_containers/array/range_access.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/array/range_access.cc	(revision
++++ b/src/libstdc++-v3/testsuite/23_containers/array/range_access.cc	(revision
+@@ -10,7 +10,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc	(revision
+@@ -11,7 +11,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc	(revision
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc	(revision
+@@ -9,7 +9,7 @@
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
++// 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.
+ 
+Index: libgfortran/runtime/environ.c
+===================================================================
+--- a/src/libgfortran/runtime/environ.c	(revision
++++ b/src/libgfortran/runtime/environ.c	(revision
+@@ -453,21 +453,35 @@
+ {
+   int low, high, mid;
+ 
+-  low = -1;
+-  high = n_elist;
+-  while (high - low > 1)
++  if (n_elist == 0)
+     {
++      *ip = 0;
++      return 0;
++    }
++
++  low = 0;
++  high = n_elist - 1;
++
++  do 
++    {
+       mid = (low + high) / 2;
+-      if (unit <= elist[mid].unit)
+-	high = mid;
++      if (unit == elist[mid].unit)
++	{
++	  *ip = mid;
++	  return 1;
++	}
++      else if (unit > elist[mid].unit)
++	low = mid + 1;
+       else
+-	low = mid;
+-    }
+-  *ip = high;
+-  if (elist[high].unit == unit)
+-    return 1;
++	high = mid - 1;
++    } while (low <= high);
++
++  if (unit > elist[mid].unit)
++    *ip = mid + 1;
+   else
+-    return 0;
++    *ip = mid;
++
++  return 0;
+ }
+ 
+ /* This matches a keyword.  If it is found, return the token supplied,
+@@ -582,13 +596,13 @@
+     }
+   if (search_unit (unit, &i))
+     {
+-      elist[unit].conv = endian;
++      elist[i].conv = endian;
+     }
+   else
+     {
+-      for (j=n_elist; j>=i; j--)
++      for (j=n_elist-1; j>=i; j--)
+ 	elist[j+1] = elist[j];
+-    
++
+       n_elist += 1;
+       elist[i].unit = unit;
+       elist[i].conv = endian;
+Index: libgfortran/ChangeLog
+===================================================================
+--- a/src/libgfortran/ChangeLog	(revision
++++ b/src/libgfortran/ChangeLog	(revision
+@@ -1,3 +1,11 @@
++2012-10-21  Thomas K�ĥnig  <tkoenig@gcc.gnu.org>
++
++	PR libfortran/54736
++	Backport from trunk
++	* runtime/environ.c (search_unit):  Correct logic
++	for binary search.
++	(mark_single):  Fix index errors.
++
+ 2012-05-12  Tobias Burnus  <burnus@net-b.de>
+ 
+ 	PR fortran/53310
+Index: libffi/Makefile.in
+===================================================================
+--- a/src/libffi/Makefile.in	(revision
++++ b/src/libffi/Makefile.in	(revision
+@@ -61,13 +61,10 @@
+ @PA_LINUX_TRUE@am__append_24 = src/pa/linux.S src/pa/ffi.c
+ @PA_HPUX_TRUE@am__append_25 = src/pa/hpux32.S src/pa/ffi.c
+ subdir = .
+-DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \
+-	$(srcdir)/../config.guess $(srcdir)/../config.sub \
+-	$(srcdir)/../depcomp $(srcdir)/../install-sh \
+-	$(srcdir)/../ltmain.sh $(srcdir)/../missing \
+-	$(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \
+-	$(srcdir)/Makefile.in $(srcdir)/fficonfig.h.in \
+-	$(top_srcdir)/configure ChangeLog
++DIST_COMMON = README ChangeLog $(srcdir)/Makefile.in \
++	$(srcdir)/Makefile.am $(top_srcdir)/configure \
++	$(am__configure_deps) $(srcdir)/fficonfig.h.in \
++	$(srcdir)/../mkinstalldirs $(srcdir)/../depcomp
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -201,7 +198,6 @@
+ SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \
+ 	$(libffi_convenience_la_SOURCES) \
+ 	$(nodist_libffi_convenience_la_SOURCES)
+-DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
+ MULTISRCTOP = 
+ MULTIBUILDTOP = 
+ MULTIDIRS = 
+@@ -218,47 +214,10 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir dist dist-all distcheck
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+-  { test ! -d "$(distdir)" \
+-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+-         && rm -fr "$(distdir)"; }; }
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-distuninstallcheck_listfiles = find . -type f -print
+-distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
+@@ -1184,182 +1143,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	$(am__remove_distdir)
+-	test -d "$(distdir)" || mkdir "$(distdir)"
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	-test -n "$(am__skip_mode_fix)" \
+-	|| find "$(distdir)" -type d ! -perm -755 \
+-		-exec chmod u+rwx,go+rx {} \; -o \
+-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+-	|| chmod -R a+r "$(distdir)"
+-dist-gzip: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-dist-bzip2: distdir
+-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+-	$(am__remove_distdir)
+-
+-dist-lzma: distdir
+-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+-	$(am__remove_distdir)
+-
+-dist-xz: distdir
+-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+-	$(am__remove_distdir)
+-
+-dist-tarZ: distdir
+-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+-	$(am__remove_distdir)
+-
+-dist-shar: distdir
+-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+-	$(am__remove_distdir)
+-
+-dist-zip: distdir
+-	-rm -f $(distdir).zip
+-	zip -rq $(distdir).zip $(distdir)
+-	$(am__remove_distdir)
+-
+-dist dist-all: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-# This target untars the dist file and tries a VPATH configuration.  Then
+-# it guarantees that the distribution is self-contained by making another
+-# tarfile.
+-distcheck: dist
+-	case '$(DIST_ARCHIVES)' in \
+-	*.tar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+-	*.tar.bz2*) \
+-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+-	*.tar.lzma*) \
+-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+-	*.tar.xz*) \
+-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+-	*.tar.Z*) \
+-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+-	*.shar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+-	*.zip*) \
+-	  unzip $(distdir).zip ;;\
+-	esac
+-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+-	mkdir $(distdir)/_build
+-	mkdir $(distdir)/_inst
+-	chmod a-w $(distdir)
+-	test -d $(distdir)/_build || exit 0; \
+-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+-	  && am__cwd=`pwd` \
+-	  && $(am__cd) $(distdir)/_build \
+-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+-	    $(DISTCHECK_CONFIGURE_FLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+-	  && $(MAKE) $(AM_MAKEFLAGS) check \
+-	  && $(MAKE) $(AM_MAKEFLAGS) install \
+-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+-	        distuninstallcheck \
+-	  && chmod -R a-w "$$dc_install_base" \
+-	  && ({ \
+-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+-	  && rm -rf "$$dc_destdir" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+-	  && rm -rf $(DIST_ARCHIVES) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+-	  && cd "$$am__cwd" \
+-	  || exit 1
+-	$(am__remove_distdir)
+-	@(echo "$(distdir) archives ready for distribution: "; \
+-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+-distuninstallcheck:
+-	@$(am__cd) '$(distuninstallcheck_dir)' \
+-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+-	   || { echo "ERROR: files left after uninstall:" ; \
+-	        if test -n "$(DESTDIR)"; then \
+-	          echo "  (check DESTDIR support)"; \
+-	        fi ; \
+-	        $(distuninstallcheck_listfiles) ; \
+-	        exit 1; } >&2
+-distcleancheck: distclean
+-	@if test '$(srcdir)' = . ; then \
+-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+-	  exit 1 ; \
+-	fi
+-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+-	  || { echo "ERROR: files left in build directory after distclean:" ; \
+-	       $(distcleancheck_listfiles) ; \
+-	       exit 1; } >&2
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile $(LTLIBRARIES) all-multi fficonfig.h
+@@ -1510,18 +1293,15 @@
+ 	all all-am all-multi am--refresh check check-am clean \
+ 	clean-generic clean-libtool clean-multi \
+ 	clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES ctags \
+-	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzma \
+-	dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+-	distclean-compile distclean-generic distclean-hdr \
+-	distclean-libtool distclean-multi distclean-tags \
+-	distcleancheck distdir distuninstallcheck dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-multi install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+-	installdirs installdirs-am maintainer-clean \
++	ctags-recursive distclean distclean-compile distclean-generic \
++	distclean-hdr distclean-libtool distclean-multi distclean-tags \
++	dvi dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-dvi install-dvi-am \
++	install-exec install-exec-am install-html install-html-am \
++	install-info install-info-am install-man install-multi \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip install-toolexeclibLTLIBRARIES installcheck \
++	installcheck-am installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic maintainer-clean-multi mostlyclean \
+ 	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ 	mostlyclean-multi pdf pdf-am ps ps-am tags tags-recursive \
+Index: libffi/include/Makefile.in
+===================================================================
+--- a/src/libffi/include/Makefile.in	(revision
++++ b/src/libffi/include/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = include
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ 	$(srcdir)/ffi.h.in $(toollibffi_HEADERS)
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+@@ -54,7 +54,6 @@
+ CONFIG_CLEAN_FILES = ffi.h ffitarget.h
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -80,7 +79,6 @@
+ HEADERS = $(toollibffi_HEADERS)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
+@@ -329,37 +327,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(HEADERS)
+@@ -463,17 +430,16 @@
+ 
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool ctags distclean distclean-generic \
+-	distclean-libtool distclean-tags distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip \
+-	install-toollibffiHEADERS installcheck installcheck-am \
+-	installdirs maintainer-clean maintainer-clean-generic \
+-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+-	ps ps-am tags uninstall uninstall-am \
+-	uninstall-toollibffiHEADERS
++	distclean-libtool distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-data install-data-am \
++	install-dvi install-dvi-am install-exec install-exec-am \
++	install-html install-html-am install-info install-info-am \
++	install-man install-pdf install-pdf-am install-ps \
++	install-ps-am install-strip install-toollibffiHEADERS \
++	installcheck installcheck-am installdirs maintainer-clean \
++	maintainer-clean-generic mostlyclean mostlyclean-generic \
++	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
++	uninstall-am uninstall-toollibffiHEADERS
+ 
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+Index: libffi/ChangeLog
+===================================================================
+--- a/src/libffi/ChangeLog	(revision
++++ b/src/libffi/ChangeLog	(revision
+@@ -1,3 +1,12 @@
++2012-09-20  Jakub Jelinek  <jakub@redhat.com>
++
++	PR other/43620
++	* configure.ac (AM_INIT_AUTOMAKE): Add no-dist.
++	* Makefile.in: Regenerated.
++	* include/Makefile.in: Regenerated.
++	* man/Makefile.in: Regenerated.
++	* testsuite/Makefile.in: Regenerated.
++
+ 2012-03-22  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	Backport from mainline:
+Index: libffi/testsuite/Makefile.in
+===================================================================
+--- a/src/libffi/testsuite/Makefile.in	(revision
++++ b/src/libffi/testsuite/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = testsuite
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -52,10 +52,8 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ DEJATOOL = $(PACKAGE)
+ RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
+@@ -278,37 +276,6 @@
+ 	-l='$(DEJATOOL)'; for tool in $$l; do \
+ 	  rm -f $$tool.sum $$tool.log; \
+ 	done
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ 	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
+ check: check-am
+@@ -410,8 +377,8 @@
+ 
+ .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
+ 	clean-libtool distclean distclean-DEJAGNU distclean-generic \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-libtool dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libffi/configure.ac
+===================================================================
+--- a/src/libffi/configure.ac	(revision
++++ b/src/libffi/configure.ac	(revision
+@@ -12,7 +12,7 @@
+ 
+ . ${srcdir}/configure.host
+ 
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([no-dist])
+ 
+ # The same as in boehm-gc and libstdc++. Have to borrow it from there.
+ # We must force CC to /not/ be precious variables; otherwise
+Index: libffi/man/Makefile.in
+===================================================================
+--- a/src/libffi/man/Makefile.in	(revision
++++ b/src/libffi/man/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = man
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ 	$(top_srcdir)/../config/lead-dot.m4 \
+@@ -52,7 +52,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -78,7 +77,6 @@
+ am__installdirs = "$(DESTDIR)$(man3dir)"
+ NROFF = nroff
+ MANS = $(man_MANS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
+@@ -292,50 +290,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@list='$(MANS)'; if test -n "$$list"; then \
+-	  list=`for p in $$list; do \
+-	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+-	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+-	  if test -n "$$list" && \
+-	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+-	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+-	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+-	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+-	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+-	    exit 1; \
+-	  else :; fi; \
+-	else :; fi
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(MANS)
+@@ -439,16 +393,16 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-man3 \
+-	install-pdf install-pdf-am install-ps install-ps-am \
+-	install-strip installcheck installcheck-am installdirs \
+-	maintainer-clean maintainer-clean-generic mostlyclean \
+-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+-	uninstall uninstall-am uninstall-man uninstall-man3
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-man3 install-pdf \
++	install-pdf-am install-ps install-ps-am install-strip \
++	installcheck installcheck-am installdirs maintainer-clean \
++	maintainer-clean-generic mostlyclean mostlyclean-generic \
++	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
++	uninstall-man uninstall-man3
+ 
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+Index: libjava/classpath/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/Makefile.in	(revision
++++ b/src/libjava/classpath/Makefile.in	(revision
+@@ -35,25 +35,15 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = .
+-DIST_COMMON = README $(am__configure_deps) $(srcdir)/../../compile \
+-	$(srcdir)/../../config.guess $(srcdir)/../../config.sub \
+-	$(srcdir)/../../install-sh $(srcdir)/../../ltmain.sh \
+-	$(srcdir)/../../missing $(srcdir)/../../mkinstalldirs \
+-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(top_srcdir)/configure \
++DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
++	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(top_srcdir)/configure $(am__configure_deps) \
++	$(srcdir)/../../mkinstalldirs \
+ 	$(top_srcdir)/gnu/classpath/Configuration.java.in \
+ 	$(top_srcdir)/gnu/java/security/Configuration.java.in \
+ 	$(top_srcdir)/resource/META-INF/services/java.util.prefs.PreferencesFactory.in \
+ 	$(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in \
+-	$(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in \
+-	../../ABOUT-NLS ../../COPYING ../../COPYING.LIB \
+-	../../ChangeLog ../../README ../../compile ../../config.guess \
+-	../../config.rpath ../../config.sub ../../depcomp \
+-	../../install-sh ../../ltmain.sh ../../missing \
+-	../../mkinstalldirs ../../ylwrap AUTHORS COPYING ChangeLog \
+-	INSTALL NEWS TODO compile config.guess config.rpath config.sub \
+-	depcomp install-sh ltcf-c.sh ltcf-cxx.sh ltcf-gcj.sh ltconfig \
+-	ltmain.sh missing mkinstalldirs
++	$(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -92,7 +82,6 @@
+ 	resource/META-INF/services/javax.sound.sampled.spi.MixerProvider
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ MULTISRCTOP = 
+ MULTIBUILDTOP = 
+ MULTIDIRS = 
+@@ -109,46 +98,9 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir dist dist-all distcheck
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-distdir = $(PACKAGE)-$(VERSION)
+-top_distdir = $(distdir)
+-am__remove_distdir = \
+-  { test ! -d "$(distdir)" \
+-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+-         && rm -fr "$(distdir)"; }; }
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+-DIST_ARCHIVES = $(distdir).tar.gz
+-GZIP_ENV = --best
+-distuninstallcheck_listfiles = find . -type f -print
+-distcleancheck_listfiles = find . -type f -print
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -582,185 +534,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	$(am__remove_distdir)
+-	test -d "$(distdir)" || mkdir "$(distdir)"
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-hook
+-	-test -n "$(am__skip_mode_fix)" \
+-	|| find "$(distdir)" -type d ! -perm -755 \
+-		-exec chmod u+rwx,go+rx {} \; -o \
+-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+-	|| chmod -R a+r "$(distdir)"
+-dist-gzip: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-dist-bzip2: distdir
+-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+-	$(am__remove_distdir)
+-
+-dist-lzma: distdir
+-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+-	$(am__remove_distdir)
+-
+-dist-xz: distdir
+-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+-	$(am__remove_distdir)
+-
+-dist-tarZ: distdir
+-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+-	$(am__remove_distdir)
+-
+-dist-shar: distdir
+-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+-	$(am__remove_distdir)
+-
+-dist-zip: distdir
+-	-rm -f $(distdir).zip
+-	zip -rq $(distdir).zip $(distdir)
+-	$(am__remove_distdir)
+-
+-dist dist-all: distdir
+-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+-	$(am__remove_distdir)
+-
+-# This target untars the dist file and tries a VPATH configuration.  Then
+-# it guarantees that the distribution is self-contained by making another
+-# tarfile.
+-distcheck: dist
+-	case '$(DIST_ARCHIVES)' in \
+-	*.tar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+-	*.tar.bz2*) \
+-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+-	*.tar.lzma*) \
+-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+-	*.tar.xz*) \
+-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+-	*.tar.Z*) \
+-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+-	*.shar.gz*) \
+-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+-	*.zip*) \
+-	  unzip $(distdir).zip ;;\
+-	esac
+-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+-	mkdir $(distdir)/_build
+-	mkdir $(distdir)/_inst
+-	chmod a-w $(distdir)
+-	test -d $(distdir)/_build || exit 0; \
+-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+-	  && am__cwd=`pwd` \
+-	  && $(am__cd) $(distdir)/_build \
+-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+-	    $(DISTCHECK_CONFIGURE_FLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+-	  && $(MAKE) $(AM_MAKEFLAGS) check \
+-	  && $(MAKE) $(AM_MAKEFLAGS) install \
+-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+-	        distuninstallcheck \
+-	  && chmod -R a-w "$$dc_install_base" \
+-	  && ({ \
+-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+-	  && rm -rf "$$dc_destdir" \
+-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+-	  && rm -rf $(DIST_ARCHIVES) \
+-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+-	  && cd "$$am__cwd" \
+-	  || exit 1
+-	$(am__remove_distdir)
+-	@(echo "$(distdir) archives ready for distribution: "; \
+-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+-distuninstallcheck:
+-	@$(am__cd) '$(distuninstallcheck_dir)' \
+-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+-	   || { echo "ERROR: files left after uninstall:" ; \
+-	        if test -n "$(DESTDIR)"; then \
+-	          echo "  (check DESTDIR support)"; \
+-	        fi ; \
+-	        $(distuninstallcheck_listfiles) ; \
+-	        exit 1; } >&2
+-distcleancheck: distclean
+-	@if test '$(srcdir)' = . ; then \
+-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+-	  exit 1 ; \
+-	fi
+-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+-	  || { echo "ERROR: files left in build directory after distclean:" ; \
+-	       $(distcleancheck_listfiles) ; \
+-	       exit 1; } >&2
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile all-multi
+@@ -869,20 +642,17 @@
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ 	all all-am all-multi am--refresh check check-am clean \
+ 	clean-generic clean-libtool clean-multi ctags ctags-recursive \
+-	dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzma \
+-	dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+-	distclean-generic distclean-libtool distclean-multi \
+-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-multi \
+-	install-pdf install-pdf-am install-ps install-ps-am \
+-	install-strip installcheck installcheck-am installdirs \
+-	installdirs-am maintainer-clean maintainer-clean-generic \
+-	maintainer-clean-multi mostlyclean mostlyclean-generic \
+-	mostlyclean-libtool mostlyclean-multi pdf pdf-am ps ps-am tags \
+-	tags-recursive uninstall uninstall-am
++	distclean distclean-generic distclean-libtool distclean-multi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
++	install-dvi-am install-exec install-exec-am install-html \
++	install-html-am install-info install-info-am install-man \
++	install-multi install-pdf install-pdf-am install-ps \
++	install-ps-am install-strip installcheck installcheck-am \
++	installdirs installdirs-am maintainer-clean \
++	maintainer-clean-generic maintainer-clean-multi mostlyclean \
++	mostlyclean-generic mostlyclean-libtool mostlyclean-multi pdf \
++	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+ 
+ 
+ native: lib
+Index: libjava/classpath/scripts/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/scripts/Makefile.in	(revision
++++ b/src/libjava/classpath/scripts/Makefile.in	(revision
+@@ -35,8 +35,8 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = scripts
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/check_jni_methods.sh.in $(srcdir)/classpath.spec.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(srcdir)/classpath.spec.in $(srcdir)/check_jni_methods.sh.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -69,8 +69,6 @@
+ CONFIG_CLEAN_FILES = classpath.spec check_jni_methods.sh
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -331,37 +329,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -460,13 +427,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/resource/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/resource/Makefile.in	(revision
++++ b/src/libjava/classpath/resource/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = resource
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -69,7 +69,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -93,7 +92,6 @@
+   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+ am__installdirs = "$(DESTDIR)$(loggingdir)" "$(DESTDIR)$(securitydir)"
+ DATA = $(logging_DATA) $(security_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -393,37 +391,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(DATA)
+@@ -525,17 +492,17 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-loggingDATA install-man \
+-	install-pdf install-pdf-am install-ps install-ps-am \
+-	install-securityDATA install-strip installcheck \
+-	installcheck-am installdirs maintainer-clean \
+-	maintainer-clean-generic mostlyclean mostlyclean-generic \
+-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+-	uninstall-loggingDATA uninstall-securityDATA
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-loggingDATA install-man install-pdf \
++	install-pdf-am install-ps install-ps-am install-securityDATA \
++	install-strip installcheck installcheck-am installdirs \
++	maintainer-clean maintainer-clean-generic mostlyclean \
++	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++	uninstall uninstall-am uninstall-loggingDATA \
++	uninstall-securityDATA
+ 
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+Index: libjava/classpath/tools/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/tools/Makefile.in	(revision
++++ b/src/libjava/classpath/tools/Makefile.in	(revision
+@@ -44,13 +44,13 @@
+ @CREATE_WRAPPERS_TRUE@@INSTALL_BINARIES_FALSE@	$(am__EXEEXT_2)
+ @CREATE_GJDOC_TRUE@@CREATE_WRAPPERS_FALSE@am__append_2 = gjdoc
+ subdir = tools
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/gappletviewer.in $(srcdir)/gjar.in \
+-	$(srcdir)/gjarsigner.in $(srcdir)/gjavah.in $(srcdir)/gjdoc.in \
+-	$(srcdir)/gkeytool.in $(srcdir)/gnative2ascii.in \
+-	$(srcdir)/gorbd.in $(srcdir)/grmic.in $(srcdir)/grmid.in \
+-	$(srcdir)/grmiregistry.in $(srcdir)/gserialver.in \
+-	$(srcdir)/gtnameserv.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(srcdir)/gappletviewer.in $(srcdir)/gjarsigner.in \
++	$(srcdir)/gkeytool.in $(srcdir)/gjar.in \
++	$(srcdir)/gnative2ascii.in $(srcdir)/gserialver.in \
++	$(srcdir)/grmiregistry.in $(srcdir)/gtnameserv.in \
++	$(srcdir)/gorbd.in $(srcdir)/grmid.in $(srcdir)/grmic.in \
++	$(srcdir)/gjavah.in $(srcdir)/gjdoc.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -96,7 +96,6 @@
+ @CREATE_WRAPPERS_TRUE@	$(am__EXEEXT_1)
+ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
+ PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+-am__gappletviewer_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gappletviewer_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gappletviewer-toolwrapper.$(OBJEXT)
+ gappletviewer_OBJECTS = $(am_gappletviewer_OBJECTS)
+@@ -104,14 +103,12 @@
+ gappletviewer_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gappletviewer_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gjar_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gjar_OBJECTS = gjar-toolwrapper.$(OBJEXT)
+ gjar_OBJECTS = $(am_gjar_OBJECTS)
+ gjar_LDADD = $(LDADD)
+ gjar_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gjar_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__gjarsigner_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gjarsigner_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gjarsigner-toolwrapper.$(OBJEXT)
+ gjarsigner_OBJECTS = $(am_gjarsigner_OBJECTS)
+@@ -119,7 +116,6 @@
+ gjarsigner_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gjarsigner_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gjavah_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gjavah_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gjavah-toolwrapper.$(OBJEXT)
+ gjavah_OBJECTS = $(am_gjavah_OBJECTS)
+@@ -127,14 +123,12 @@
+ gjavah_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gjavah_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__gjdoc_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gjdoc_OBJECTS = gjdoc-toolwrapper.$(OBJEXT)
+ gjdoc_OBJECTS = $(am_gjdoc_OBJECTS)
+ gjdoc_LDADD = $(LDADD)
+ gjdoc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gjdoc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__gkeytool_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gkeytool_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gkeytool-toolwrapper.$(OBJEXT)
+ gkeytool_OBJECTS = $(am_gkeytool_OBJECTS)
+@@ -142,7 +136,6 @@
+ gkeytool_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gkeytool_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__gnative2ascii_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gnative2ascii_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gnative2ascii-toolwrapper.$(OBJEXT)
+ gnative2ascii_OBJECTS = $(am_gnative2ascii_OBJECTS)
+@@ -150,28 +143,24 @@
+ gnative2ascii_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gnative2ascii_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gorbd_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gorbd_OBJECTS = gorbd-toolwrapper.$(OBJEXT)
+ gorbd_OBJECTS = $(am_gorbd_OBJECTS)
+ gorbd_LDADD = $(LDADD)
+ gorbd_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(gorbd_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__grmic_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_grmic_OBJECTS = grmic-toolwrapper.$(OBJEXT)
+ grmic_OBJECTS = $(am_grmic_OBJECTS)
+ grmic_LDADD = $(LDADD)
+ grmic_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(grmic_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__grmid_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_grmid_OBJECTS = grmid-toolwrapper.$(OBJEXT)
+ grmid_OBJECTS = $(am_grmid_OBJECTS)
+ grmid_LDADD = $(LDADD)
+ grmid_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(grmid_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+-am__grmiregistry_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_grmiregistry_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	grmiregistry-toolwrapper.$(OBJEXT)
+ grmiregistry_OBJECTS = $(am_grmiregistry_OBJECTS)
+@@ -179,7 +168,6 @@
+ grmiregistry_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(grmiregistry_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gserialver_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gserialver_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gserialver-toolwrapper.$(OBJEXT)
+ gserialver_OBJECTS = $(am_gserialver_OBJECTS)
+@@ -187,7 +175,6 @@
+ gserialver_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(gserialver_CFLAGS) \
+ 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-am__gtnameserv_SOURCES_DIST = toolwrapper.c
+ @CREATE_WRAPPERS_TRUE@am_gtnameserv_OBJECTS =  \
+ @CREATE_WRAPPERS_TRUE@	gtnameserv-toolwrapper.$(OBJEXT)
+ gtnameserv_OBJECTS = $(am_gtnameserv_OBJECTS)
+@@ -235,17 +222,9 @@
+ 	$(gkeytool_SOURCES) $(gnative2ascii_SOURCES) $(gorbd_SOURCES) \
+ 	$(grmic_SOURCES) $(grmid_SOURCES) $(grmiregistry_SOURCES) \
+ 	$(gserialver_SOURCES) $(gtnameserv_SOURCES)
+-DIST_SOURCES = $(am__gappletviewer_SOURCES_DIST) \
+-	$(am__gjar_SOURCES_DIST) $(am__gjarsigner_SOURCES_DIST) \
+-	$(am__gjavah_SOURCES_DIST) $(am__gjdoc_SOURCES_DIST) \
+-	$(am__gkeytool_SOURCES_DIST) $(am__gnative2ascii_SOURCES_DIST) \
+-	$(am__gorbd_SOURCES_DIST) $(am__grmic_SOURCES_DIST) \
+-	$(am__grmid_SOURCES_DIST) $(am__grmiregistry_SOURCES_DIST) \
+-	$(am__gserialver_SOURCES_DIST) $(am__gtnameserv_SOURCES_DIST)
+ DATA = $(noinst_DATA)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -1199,40 +1178,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-hook
+ check-am: all-am
+ check: $(BUILT_SOURCES)
+ 	$(MAKE) $(AM_MAKEFLAGS) check-am
+@@ -1343,9 +1288,9 @@
+ 
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ 	clean-generic clean-libtool clean-local clean-noinstPROGRAMS \
+-	ctags dist-hook distclean distclean-compile distclean-generic \
+-	distclean-libtool distclean-tags distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-binPROGRAMS \
++	ctags distclean distclean-compile distclean-generic \
++	distclean-libtool distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-binPROGRAMS \
+ 	install-binSCRIPTS install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+Index: libjava/classpath/configure.ac
+===================================================================
+--- a/src/libjava/classpath/configure.ac	(revision
++++ b/src/libjava/classpath/configure.ac	(revision
+@@ -75,7 +75,7 @@
+ AC_SUBST(CLASSPATH_CONVENIENCE)
+ 
+ AC_PREREQ(2.64)
+-AM_INIT_AUTOMAKE([1.9.0 gnu std-options tar-ustar -Wno-portability])
++AM_INIT_AUTOMAKE([1.9.0 gnu std-options tar-ustar no-dist -Wno-portability])
+ AC_CONFIG_HEADERS([include/config.h])
+ AC_PREFIX_DEFAULT(/usr/local/classpath)
+ 
+Index: libjava/classpath/doc/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/doc/Makefile.in	(revision
++++ b/src/libjava/classpath/doc/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = doc
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in texinfo.tex
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,7 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ INFO_DEPS = cp-tools.info
+ am__TEXINFO_TEX_DIR = $(srcdir)/../../gcc/doc/include
+ DVIS = cp-tools.dvi
+@@ -116,37 +115,10 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -756,81 +728,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@list='$(MANS)'; if test -n "$$list"; then \
+-	  list=`for p in $$list; do \
+-	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+-	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+-	  if test -n "$$list" && \
+-	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+-	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+-	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+-	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+-	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+-	    exit 1; \
+-	  else :; fi; \
+-	else :; fi
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-info
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile $(INFO_DEPS) $(MANS) all-local
+@@ -1020,18 +917,18 @@
+ 	all all-am all-local check check-am clean clean-aminfo \
+ 	clean-generic clean-libtool ctags ctags-recursive dist-info \
+ 	distclean distclean-generic distclean-libtool distclean-tags \
+-	distdir dvi dvi-am html html-am info info-am install \
+-	install-am install-data install-data-am install-dvi \
+-	install-dvi-am install-exec install-exec-am install-html \
+-	install-html-am install-info install-info-am install-man \
+-	install-man1 install-pdf install-pdf-am install-ps \
+-	install-ps-am install-strip installcheck installcheck-am \
+-	installdirs installdirs-am maintainer-clean \
+-	maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
+-	mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool pdf \
+-	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+-	uninstall-dvi-am uninstall-html-am uninstall-info-am \
+-	uninstall-man uninstall-man1 uninstall-pdf-am uninstall-ps-am
++	dvi dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-dvi install-dvi-am \
++	install-exec install-exec-am install-html install-html-am \
++	install-info install-info-am install-man install-man1 \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip installcheck installcheck-am installdirs \
++	installdirs-am maintainer-clean maintainer-clean-aminfo \
++	maintainer-clean-generic mostlyclean mostlyclean-aminfo \
++	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++	tags tags-recursive uninstall uninstall-am uninstall-dvi-am \
++	uninstall-html-am uninstall-info-am uninstall-man \
++	uninstall-man1 uninstall-pdf-am uninstall-ps-am
+ 
+ 
+ .texinfo.dvi:
+Index: libjava/classpath/doc/api/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/doc/api/Makefile.in	(revision
++++ b/src/libjava/classpath/doc/api/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = doc/api
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -69,9 +69,7 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ DATA = $(noinst_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -330,37 +328,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(DATA)
+@@ -459,16 +426,16 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	clean-local distclean distclean-generic distclean-libtool \
+-	distdir dvi dvi-am html html-am info info-am install \
+-	install-am install-data install-data-am install-data-local \
+-	install-dvi install-dvi-am install-exec install-exec-am \
+-	install-html install-html-am install-info install-info-am \
+-	install-man install-pdf install-pdf-am install-ps \
+-	install-ps-am install-strip installcheck installcheck-am \
+-	installdirs maintainer-clean maintainer-clean-generic \
+-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+-	ps ps-am uninstall uninstall-am uninstall-local
++	clean-local distclean distclean-generic distclean-libtool dvi \
++	dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-data-local install-dvi \
++	install-dvi-am install-exec install-exec-am install-html \
++	install-html-am install-info install-info-am install-man \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip installcheck installcheck-am installdirs \
++	maintainer-clean maintainer-clean-generic mostlyclean \
++	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++	uninstall uninstall-am uninstall-local
+ 
+ 
+ @CREATE_API_DOCS_TRUE@install-data-local:
+Index: libjava/classpath/external/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/Makefile.in	(revision
++++ b/src/libjava/classpath/external/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,7 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ 	html-recursive info-recursive install-data-recursive \
+ 	install-dvi-recursive install-exec-recursive \
+@@ -79,37 +78,10 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -496,65 +468,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile
+@@ -657,13 +570,13 @@
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ 	all all-am check check-am clean clean-generic clean-libtool \
+ 	ctags ctags-recursive distclean distclean-generic \
+-	distclean-libtool distclean-tags distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip installcheck \
+-	installcheck-am installdirs installdirs-am maintainer-clean \
++	distclean-libtool distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-data install-data-am \
++	install-dvi install-dvi-am install-exec install-exec-am \
++	install-html install-html-am install-info install-info-am \
++	install-man install-pdf install-pdf-am install-ps \
++	install-ps-am install-strip installcheck installcheck-am \
++	installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ 	uninstall uninstall-am
+Index: libjava/classpath/external/jsr166/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/jsr166/Makefile.in	(revision
++++ b/src/libjava/classpath/external/jsr166/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external/jsr166
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,8 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -398,37 +396,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -527,13 +494,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/external/sax/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/sax/Makefile.in	(revision
++++ b/src/libjava/classpath/external/sax/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external/sax
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,8 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -366,37 +364,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -495,13 +462,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/external/w3c_dom/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/w3c_dom/Makefile.in	(revision
++++ b/src/libjava/classpath/external/w3c_dom/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external/w3c_dom
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,8 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -473,37 +471,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -602,13 +569,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/external/relaxngDatatype/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/external/relaxngDatatype/Makefile.in	(revision
++++ b/src/libjava/classpath/external/relaxngDatatype/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = external/relaxngDatatype
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,8 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -338,37 +336,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile
+@@ -467,13 +434,13 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	distclean distclean-generic distclean-libtool distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs maintainer-clean \
++	distclean distclean-generic distclean-libtool dvi dvi-am html \
++	html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+Index: libjava/classpath/include/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/include/Makefile.in	(revision
++++ b/src/libjava/classpath/include/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = include
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ 	$(srcdir)/config.h.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+@@ -69,8 +69,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -500,37 +498,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ @CREATE_JNI_HEADERS_FALSE@all-local:
+@@ -632,8 +599,8 @@
+ 
+ .PHONY: all all-am all-local check check-am clean clean-generic \
+ 	clean-libtool distclean distclean-generic distclean-hdr \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-libtool dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/jni/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,7 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ 	html-recursive info-recursive install-data-recursive \
+ 	install-dvi-recursive install-exec-recursive \
+@@ -79,36 +78,9 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -510,65 +482,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile all-local
+@@ -671,16 +584,16 @@
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ 	all all-am all-local check check-am clean clean-generic \
+ 	clean-libtool ctags ctags-recursive distclean \
+-	distclean-generic distclean-libtool distclean-tags distdir dvi \
+-	dvi-am html html-am info info-am install install-am \
+-	install-data install-data-am install-dvi install-dvi-am \
+-	install-exec install-exec-am install-html install-html-am \
+-	install-info install-info-am install-man install-pdf \
+-	install-pdf-am install-ps install-ps-am install-strip \
+-	installcheck installcheck-am installdirs installdirs-am \
+-	maintainer-clean maintainer-clean-generic mostlyclean \
+-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+-	tags tags-recursive uninstall uninstall-am
++	distclean-generic distclean-libtool distclean-tags dvi dvi-am \
++	html html-am info info-am install install-am install-data \
++	install-data-am install-dvi install-dvi-am install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs installdirs-am maintainer-clean \
++	maintainer-clean-generic mostlyclean mostlyclean-generic \
++	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
++	uninstall uninstall-am
+ 
+ 
+ all-local:
+Index: libjava/classpath/native/jni/classpath/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/classpath/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/classpath/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/classpath
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -86,10 +86,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libclasspath_la_SOURCES)
+-DIST_SOURCES = $(libclasspath_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -445,37 +443,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -581,8 +548,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/jni/gstreamer-peer/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/gstreamer-peer/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/gstreamer-peer/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/gstreamer-peer
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -114,10 +114,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgstreamerpeer_la_SOURCES)
+-DIST_SOURCES = $(libgstreamerpeer_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -514,37 +512,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -653,8 +620,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/midi-dssi/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/midi-dssi/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/midi-dssi/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/midi-dssi
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -114,10 +114,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgjsmdssi_la_SOURCES)
+-DIST_SOURCES = $(libgjsmdssi_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -496,37 +494,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -635,8 +602,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/gconf-peer/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/gconf-peer/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/gconf-peer/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/gconf-peer
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -112,10 +112,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgconfpeer_la_SOURCES)
+-DIST_SOURCES = $(libgconfpeer_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -489,37 +487,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -628,8 +595,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-io/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-io/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/java-io/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-io
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -111,10 +111,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavaio_la_SOURCES)
+-DIST_SOURCES = $(libjavaio_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -494,37 +492,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -633,8 +600,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/native-lib/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/native-lib/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/native-lib/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/native-lib
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -86,10 +86,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libclasspathnative_la_SOURCES)
+-DIST_SOURCES = $(libclasspathnative_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -448,37 +446,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -584,8 +551,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/jni/java-util/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-util/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/java-util/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-util
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -108,10 +108,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavautil_la_SOURCES)
+-DIST_SOURCES = $(libjavautil_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -483,37 +481,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -622,8 +589,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-lang/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-lang/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/java-lang/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-lang
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -123,12 +123,8 @@
+ SOURCES = $(libjavalang_la_SOURCES) \
+ 	$(libjavalangmanagement_la_SOURCES) \
+ 	$(libjavalangreflect_la_SOURCES)
+-DIST_SOURCES = $(libjavalang_la_SOURCES) \
+-	$(libjavalangmanagement_la_SOURCES) \
+-	$(libjavalangreflect_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -521,37 +517,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -660,8 +625,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/midi-alsa/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/midi-alsa/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/midi-alsa/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/midi-alsa
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -114,10 +114,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgjsmalsa_la_SOURCES)
+-DIST_SOURCES = $(libgjsmalsa_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -496,37 +494,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -635,8 +602,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-nio/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-nio/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/java-nio/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-nio
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -119,10 +119,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavanio_la_SOURCES)
+-DIST_SOURCES = $(libjavanio_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -519,37 +517,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -658,8 +625,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-net/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-net/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/java-net/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-net
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -96,10 +96,6 @@
+ 	$(top_builddir)/native/jni/classpath/jcl.lo \
+ 	$(top_builddir)/native/jni/native-lib/libclasspathnative.la \
+ 	$(am__DEPENDENCIES_1)
+-am__libjavanet_la_SOURCES_DIST = javanet.c javanet.h \
+-	java_net_VMInetAddress.c java_net_VMNetworkInterface.c \
+-	java_net_VMURLConnection.c gnu_java_net_VMPlainSocketImpl.c \
+-	gnu_java_net_local_LocalSocketImpl.c local.c local.h
+ @ENABLE_LOCAL_SOCKETS_FALSE@am__objects_1 = gnu_java_net_local_LocalSocketImpl.lo
+ @ENABLE_LOCAL_SOCKETS_TRUE@am__objects_1 = gnu_java_net_local_LocalSocketImpl.lo \
+ @ENABLE_LOCAL_SOCKETS_TRUE@	local.lo
+@@ -121,10 +117,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavanet_la_SOURCES)
+-DIST_SOURCES = $(am__libjavanet_la_SOURCES_DIST)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -518,37 +512,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -657,8 +620,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/java-math/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/java-math/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/java-math/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/java-math
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -112,10 +112,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjavamath_la_SOURCES)
+-DIST_SOURCES = $(libjavamath_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -487,37 +485,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -626,8 +593,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/xmlj/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/xmlj/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/xmlj/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/xmlj
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -110,10 +110,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libxmlj_la_SOURCES)
+-DIST_SOURCES = $(libxmlj_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -511,37 +509,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -650,8 +617,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/jni/qt-peer/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/qt-peer/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/qt-peer/Makefile.in	(revision
+@@ -39,7 +39,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/qt-peer
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -116,10 +116,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libqtpeer_la_SOURCES) $(nodist_libqtpeer_la_SOURCES)
+-DIST_SOURCES = $(libqtpeer_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -577,37 +575,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: $(BUILT_SOURCES)
+ 	$(MAKE) $(AM_MAKEFLAGS) check-am
+@@ -717,8 +684,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/jni/gtk-peer/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jni/gtk-peer/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jni/gtk-peer/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jni/gtk-peer
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -150,10 +150,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgtkpeer_la_SOURCES)
+-DIST_SOURCES = $(libgtkpeer_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -620,37 +618,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -759,8 +726,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/Makefile.in	(revision
++++ b/src/libjava/classpath/native/Makefile.in	(revision
+@@ -35,7 +35,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -68,7 +68,6 @@
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ 	html-recursive info-recursive install-data-recursive \
+ 	install-dvi-recursive install-exec-recursive \
+@@ -79,36 +78,9 @@
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+-	distdir
++	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+-am__relativize = \
+-  dir0=`pwd`; \
+-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+-  sed_rest='s,^[^/]*/*,,'; \
+-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+-  sed_butlast='s,/*[^/]*$$,,'; \
+-  while test -n "$$dir1"; do \
+-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+-    if test "$$first" != "."; then \
+-      if test "$$first" = ".."; then \
+-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+-      else \
+-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+-        if test "$$first2" = "$$first"; then \
+-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+-        else \
+-          dir2="../$$dir2"; \
+-        fi; \
+-        dir0="$$dir0"/"$$first"; \
+-      fi; \
+-    fi; \
+-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+-  done; \
+-  reldir="$$dir2"
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -498,65 +470,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    test -d "$(distdir)/$$subdir" \
+-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+-	  if test "$$subdir" = .; then :; else \
+-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+-	    $(am__relativize); \
+-	    new_distdir=$$reldir; \
+-	    dir1=$$subdir; dir2="$(top_distdir)"; \
+-	    $(am__relativize); \
+-	    new_top_distdir=$$reldir; \
+-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+-	    ($(am__cd) $$subdir && \
+-	      $(MAKE) $(AM_MAKEFLAGS) \
+-	        top_distdir="$$new_top_distdir" \
+-	        distdir="$$new_distdir" \
+-		am__remove_distdir=: \
+-		am__skip_length_check=: \
+-		am__skip_mode_fix=: \
+-	        distdir) \
+-	      || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-recursive
+ all-am: Makefile
+@@ -659,13 +572,13 @@
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ 	all all-am check check-am clean clean-generic clean-libtool \
+ 	ctags ctags-recursive distclean distclean-generic \
+-	distclean-libtool distclean-tags distdir dvi dvi-am html \
+-	html-am info info-am install install-am install-data \
+-	install-data-am install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip installcheck \
+-	installcheck-am installdirs installdirs-am maintainer-clean \
++	distclean-libtool distclean-tags dvi dvi-am html html-am info \
++	info-am install install-am install-data install-data-am \
++	install-dvi install-dvi-am install-exec install-exec-am \
++	install-html install-html-am install-info install-info-am \
++	install-man install-pdf install-pdf-am install-ps \
++	install-ps-am install-strip installcheck installcheck-am \
++	installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+ 	uninstall uninstall-am
+Index: libjava/classpath/native/jawt/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/jawt/Makefile.in	(revision
++++ b/src/libjava/classpath/native/jawt/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/jawt
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -112,10 +112,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libjawt_la_SOURCES)
+-DIST_SOURCES = $(libjawt_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -492,37 +490,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -631,8 +598,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/native/fdlibm/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/fdlibm/Makefile.in	(revision
++++ b/src/libjava/classpath/native/fdlibm/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/fdlibm
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -95,10 +95,8 @@
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libfdlibm_la_SOURCES)
+-DIST_SOURCES = $(libfdlibm_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -553,37 +551,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -689,8 +656,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+Index: libjava/classpath/native/plugin/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/native/plugin/Makefile.in	(revision
++++ b/src/libjava/classpath/native/plugin/Makefile.in	(revision
+@@ -36,7 +36,7 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = native/plugin
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -112,10 +112,8 @@
+ 	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+ 	$(LDFLAGS) -o $@
+ SOURCES = $(libgcjwebplugin_la_SOURCES)
+-DIST_SOURCES = $(libgcjwebplugin_la_SOURCES)
+ ETAGS = etags
+ CTAGS = ctags
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -497,37 +495,6 @@
+ 
+ distclean-tags:
+ 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES)
+@@ -636,8 +603,8 @@
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ 	clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+-	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am install-dvi \
++	distclean-tags dvi dvi-am html html-am info info-am install \
++	install-am install-data install-data-am install-dvi \
+ 	install-dvi-am install-exec install-exec-am install-html \
+ 	install-html-am install-info install-info-am install-man \
+ 	install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \
+Index: libjava/classpath/lib/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/lib/Makefile.in	(revision
++++ b/src/libjava/classpath/lib/Makefile.in	(revision
+@@ -36,9 +36,9 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = lib
+-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/copy-vmresources.sh.in $(srcdir)/gen-classlist.sh.in \
+-	$(srcdir)/mkcollections.pl.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(srcdir)/mkcollections.pl.in $(srcdir)/gen-classlist.sh.in \
++	$(srcdir)/copy-vmresources.sh.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -72,9 +72,7 @@
+ 	copy-vmresources.sh
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ DATA = $(noinst_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -356,40 +354,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-hook
+ check-am: all-am
+ check: check-am
+ all-am: Makefile $(DATA)
+@@ -492,17 +456,16 @@
+ .MAKE: install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	clean-local dist-hook distclean distclean-generic \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am \
+-	install-data-local install-dvi install-dvi-am install-exec \
+-	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-pdf install-pdf-am \
+-	install-ps install-ps-am install-strip installcheck \
+-	installcheck-am installdirs maintainer-clean \
+-	maintainer-clean-generic mostlyclean mostlyclean-generic \
+-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+-	uninstall-local
++	clean-local distclean distclean-generic distclean-libtool dvi \
++	dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-data-local install-dvi \
++	install-dvi-am install-exec install-exec-am install-html \
++	install-html-am install-info install-info-am install-man \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip installcheck installcheck-am installdirs \
++	maintainer-clean maintainer-clean-generic mostlyclean \
++	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++	uninstall uninstall-am uninstall-local
+ 
+ 
+ sinclude $(JAVA_DEPEND)
+Index: libjava/classpath/ChangeLog.gcj
+===================================================================
+--- a/src/libjava/classpath/ChangeLog.gcj	(revision
++++ b/src/libjava/classpath/ChangeLog.gcj	(revision
+@@ -1,3 +1,42 @@
++2012-09-20  Jakub Jelinek  <jakub@redhat.com>
++
++	PR other/43620
++	* configure.ac (AM_INIT_AUTOMAKE): Add no-dist.
++	* Makefile.in: Regenerated.
++	* doc/Makefile.in: Regeneated.
++	* doc/api/Makefile.in: Regeneated.
++	* examples/Makefile.in: Regeneated.
++	* external/Makefile.in: Regeneated.
++	* external/jsr166/Makefile.in: Regeneated.
++	* external/relaxngDatatype/Makefile.in: Regeneated.
++	* external/sax/Makefile.in: Regeneated.
++	* external/w3c_dom/Makefile.in: Regeneated.
++	* include/Makefile.in: Regeneated.
++	* lib/Makefile.in: Regeneated.
++	* native/Makefile.in: Regeneated.
++	* native/fdlibm/Makefile.in: Regeneated.
++	* native/jawt/Makefile.in: Regeneated.
++	* native/jni/Makefile.in: Regeneated.
++	* native/jni/classpath/Makefile.in: Regeneated.
++	* native/jni/gconf-peer/Makefile.in: Regeneated.
++	* native/jni/gstreamer-peer/Makefile.in: Regeneated.
++	* native/jni/gtk-peer/Makefile.in: Regeneated.
++	* native/jni/java-io/Makefile.in: Regeneated.
++	* native/jni/java-lang/Makefile.in: Regeneated.
++	* native/jni/java-math/Makefile.in: Regeneated.
++	* native/jni/java-net/Makefile.in: Regeneated.
++	* native/jni/java-nio/Makefile.in: Regeneated.
++	* native/jni/java-util/Makefile.in: Regeneated.
++	* native/jni/midi-alsa/Makefile.in: Regeneated.
++	* native/jni/midi-dssi/Makefile.in: Regeneated.
++	* native/jni/native-lib/Makefile.in: Regeneated.
++	* native/jni/qt-peer/Makefile.in: Regeneated.
++	* native/jni/xmlj/Makefile.in: Regeneated.
++	* native/plugin/Makefile.in: Regeneated.
++	* resource/Makefile.in: Regeneated.
++	* scripts/Makefile.in: Regeneated.
++	* tools/Makefile.in: Regeneated.
++
+ 2011-11-29  Andreas Tobler  <andreast@fgznet.ch>
+ 
+ 	* config.rpath (ld_shlibs): Fix detection of FreeBSD-10 and up.
+Index: libjava/classpath/examples/Makefile.in
+===================================================================
+--- a/src/libjava/classpath/examples/Makefile.in	(revision
++++ b/src/libjava/classpath/examples/Makefile.in	(revision
+@@ -36,8 +36,8 @@
+ host_triplet = @host@
+ target_triplet = @target@
+ subdir = examples
+-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+-	$(srcdir)/Makefile.java2d.in $(srcdir)/Makefile.jawt.in
++DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
++	$(srcdir)/Makefile.jawt.in $(srcdir)/Makefile.java2d.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \
+ 	$(top_srcdir)/../../config/lead-dot.m4 \
+@@ -70,7 +70,6 @@
+ CONFIG_CLEAN_FILES = Makefile.jawt Makefile.java2d
+ CONFIG_CLEAN_VPATH_FILES =
+ SOURCES =
+-DIST_SOURCES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+@@ -94,7 +93,6 @@
+   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+ am__installdirs = "$(DESTDIR)$(exampledir)"
+ DATA = $(example_DATA)
+-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+ AMTAR = @AMTAR@
+ ANTLR = @ANTLR@
+@@ -419,40 +417,6 @@
+ ctags: CTAGS
+ CTAGS:
+ 
+-
+-distdir: $(DISTFILES)
+-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+-	list='$(DISTFILES)'; \
+-	  dist_files=`for file in $$list; do echo $$file; done | \
+-	  sed -e "s|^$$srcdirstrip/||;t" \
+-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+-	case $$dist_files in \
+-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+-			   sort -u` ;; \
+-	esac; \
+-	for file in $$dist_files; do \
+-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+-	  if test -d $$d/$$file; then \
+-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+-	    if test -d "$(distdir)/$$file"; then \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+-	    fi; \
+-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+-	  else \
+-	    test -f "$(distdir)/$$file" \
+-	    || cp -p $$d/$$file "$(distdir)/$$file" \
+-	    || exit 1; \
+-	  fi; \
+-	done
+-	$(MAKE) $(AM_MAKEFLAGS) \
+-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+-	  dist-hook
+ check-am: all-am
+ check: $(BUILT_SOURCES)
+ 	$(MAKE) $(AM_MAKEFLAGS) check-am
+@@ -557,17 +521,17 @@
+ .MAKE: all check install install-am install-strip
+ 
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+-	clean-local dist-hook distclean distclean-generic \
+-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-data install-data-am \
+-	install-data-local install-dvi install-dvi-am \
+-	install-exampleDATA install-exec install-exec-am install-html \
+-	install-html-am install-info install-info-am install-man \
+-	install-pdf install-pdf-am install-ps install-ps-am \
+-	install-strip installcheck installcheck-am installdirs \
+-	maintainer-clean maintainer-clean-generic mostlyclean \
+-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+-	uninstall uninstall-am uninstall-exampleDATA uninstall-local
++	clean-local distclean distclean-generic distclean-libtool dvi \
++	dvi-am html html-am info info-am install install-am \
++	install-data install-data-am install-data-local install-dvi \
++	install-dvi-am install-exampleDATA install-exec \
++	install-exec-am install-html install-html-am install-info \
++	install-info-am install-man install-pdf install-pdf-am \
++	install-ps install-ps-am install-strip installcheck \
++	installcheck-am installdirs maintainer-clean \
++	maintainer-clean-generic mostlyclean mostlyclean-generic \
++	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
++	uninstall-exampleDATA uninstall-local
+ 
+ 
+ # Make sure all sources and icons are also installed so users can use them.
--- gcc-4.6-4.6.3.orig/debian/patches/ada-default-project-path.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-default-project-path.diff
@@ -0,0 +1,113 @@
+# DP: - Change the default search path for project files to the one specified
+# DP:   by the Debian Policy for Ada: /usr/share/ada/adainclude.
+
+--- a/src/gcc/ada/Make-generated.in
++++ b/src/gcc/ada/Make-generated.in
+@@ -104,7 +104,7 @@
+ 	$(ECHO) "   S1 : constant String := \"$(ADA_INCLUDE_DIR)/\";" >>tmp-sdefault.adb
+ 	$(ECHO) "   S2 : constant String := \"$(ADA_RTL_OBJ_DIR)/\";" >>tmp-sdefault.adb
+ 	$(ECHO) "   S3 : constant String := \"$(target)/\";" >>tmp-sdefault.adb
+-	$(ECHO) "   S4 : constant String := \"$(libsubdir)/\";" >>tmp-sdefault.adb
++	$(ECHO) "   S4 : constant String := \"/usr/share/ada/adainclude/\";" >>tmp-sdefault.adb
+ 	$(ECHO) "   function Include_Dir_Default_Name return String_Ptr is" >>tmp-sdefault.adb
+ 	$(ECHO) "   begin" >>tmp-sdefault.adb
+ 	$(ECHO) "      return Relocate_Path (S0, S1);" >>tmp-sdefault.adb
+--- a/src/gcc/ada/prj-env.adb
++++ b/src/gcc/ada/prj-env.adb
+@@ -1923,41 +1923,10 @@
+ 
+       --  Set the initial value of Current_Project_Path
+ 
+-      if Add_Default_Dir then
+-         declare
+-            Prefix : String_Ptr := Sdefault.Search_Dir_Prefix;
+-
+-         begin
+-            if Prefix = null then
+-               Prefix := new String'(Executable_Prefix_Path);
+-
+-               if Prefix.all /= "" then
+-                  if Target_Name /= "" then
+-                     Add_Str_To_Name_Buffer
+-                       (Path_Separator & Prefix.all &
+-                        "lib" & Directory_Separator & "gpr" &
+-                        Directory_Separator & Target_Name);
+-                  end if;
+-
+-                  Add_Str_To_Name_Buffer
+-                    (Path_Separator & Prefix.all &
+-                     "share" & Directory_Separator & "gpr");
+-                  Add_Str_To_Name_Buffer
+-                    (Path_Separator & Prefix.all &
+-                     "lib" & Directory_Separator & "gnat");
+-               end if;
+-
+-            else
+-               Self.Path :=
+-                 new String'(Name_Buffer (1 .. Name_Len) & Path_Separator &
+-                             Prefix.all &
+-                             ".." &  Directory_Separator &
+-                             ".." & Directory_Separator &
+-                             ".." & Directory_Separator & "gnat");
+-            end if;
+-
+-            Free (Prefix);
+-         end;
++      if Add_Default_Dir and Sdefault.Search_Dir_Prefix /= null then
++         Self.Path :=
++           new String'(Name_Buffer (1 .. Name_Len) & Path_Separator &
++                         Sdefault.Search_Dir_Prefix.all);
+       end if;
+ 
+       if Self.Path = null then
+--- a/src/gcc/ada/gnatls.adb
++++ b/src/gcc/ada/gnatls.adb
+@@ -1617,9 +1617,6 @@
+       declare
+          Project_Path : String_Access := Getenv (Gpr_Project_Path);
+ 
+-         Lib : constant String :=
+-                 Directory_Separator & "lib" & Directory_Separator;
+-
+          First : Natural;
+          Last  : Natural;
+ 
+@@ -1679,36 +1676,8 @@
+          if Add_Default_Dir then
+             Name_Len := 0;
+             Add_Str_To_Name_Buffer (Sdefault.Search_Dir_Prefix.all);
+-
+-            --  On Windows, make sure that all directory separators are '\'
+-
+-            if Directory_Separator /= '/' then
+-               for J in 1 .. Name_Len loop
+-                  if Name_Buffer (J) = '/' then
+-                     Name_Buffer (J) := Directory_Separator;
+-                  end if;
+-               end loop;
+-            end if;
+-
+-            --  Find the sequence "/lib/"
+-
+-            while Name_Len >= Lib'Length
+-              and then Name_Buffer (Name_Len - 4 .. Name_Len) /= Lib
+-            loop
+-               Name_Len := Name_Len - 1;
+-            end loop;
+-
+-            --  If the sequence "/lib"/ was found, display the default
+-            --  directory <prefix>/lib/gnat/.
+-
+-            if Name_Len >= 5 then
+-               Name_Buffer (Name_Len + 1 .. Name_Len + 4) := "gnat";
+-               Name_Buffer (Name_Len + 5) := Directory_Separator;
+-               Name_Len := Name_Len + 5;
+-               Write_Str ("   ");
+-               Write_Line
+-                 (To_Host_Dir_Spec (Name_Buffer (1 .. Name_Len), True).all);
+-            end if;
++            Write_Str ("   ");
++            Write_Line (Name_Buffer (1 .. Name_Len));
+          end if;
+       end;
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/gcc_ada_gcc-interface_Makefile.in.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc_ada_gcc-interface_Makefile.in.diff
@@ -0,0 +1,35 @@
+--- a/src/gcc/ada/gcc-interface/Makefile.in	2011-11-18 12:46:58.000000000 +0100
++++ b/src/gcc/ada/gcc-interface/Makefile.in	2012-03-28 11:28:09.000000000 +0200
+@@ -1143,6 +1116,32 @@
+   LIBRARY_VERSION := $(LIB_VERSION)
+ endif
+ 
++ifeq ($(strip $(filter-out %86 gnu%,$(arch) $(osys))),)
++  LIBGNAT_TARGET_PAIRS = \
++  a-intnam.ads<a-intnam-freebsd.ads \
++  a-numaux.adb<a-numaux-x86.adb \
++  a-numaux.ads<a-numaux-x86.ads \
++  s-inmaop.adb<s-inmaop-posix.adb \
++  s-intman.adb<s-intman-posix.adb \
++  s-osinte.adb<s-osinte-gnu.adb \
++  s-osinte.ads<s-osinte-gnu.ads \
++  s-osprim.adb<s-osprim-posix.adb \
++  s-taprop.adb<s-taprop-gnu.adb \
++  s-taspri.ads<s-taspri-posix.ads \
++  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
++  system.ads<system-freebsd-x86.ads
++
++  TOOLS_TARGET_PAIRS =  \
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
++    indepsw.adb<indepsw-gnu.adb
++
++  EH_MECHANISM=-gcc
++  THREADSLIB = -lpthread -lrt
++  GNATLIB_SHARED = gnatlib-shared-dual
++  GMEM_LIB = gmemlib
++  LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
+ ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(arch) $(osys))),)
+   LIBGNAT_TARGET_PAIRS = \
+   a-intnam.ads<a-intnam-freebsd.ads \
--- gcc-4.6-4.6.3.orig/debian/patches/pr50946.diff
+++ gcc-4.6-4.6.3/debian/patches/pr50946.diff
@@ -0,0 +1,28 @@
+# DP: Fix PR target/50946, taken from the trunk.
+
+2011-03-25  Richard Sandiford  <richard.sandiford@linaro.org>
+
+	* config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS
+	case to VFPv1.
+ 
+--- a/src/gcc/config/arm/arm.h
++++ b/src/gcc/config/arm/arm.h
+@@ -1167,12 +1167,12 @@
+ }
+ 
+ /* FPA registers can't do subreg as all values are reformatted to internal
+-   precision.  VFP registers may only be accessed in the mode they
+-   were set.  */
+-#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS)	\
+-  (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO)		\
+-   ? reg_classes_intersect_p (FPA_REGS, (CLASS))	\
+-     || reg_classes_intersect_p (VFP_REGS, (CLASS))	\
++   precision.  In VFPv1, VFP registers could only be accessed in the mode
++   they were set, so subregs would be invalid there too.  However, we don't
++   support VFPv1 at the moment, and the restriction was lifted in VFPv2.  */
++#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS)		\
++  (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO)			\
++   ? reg_classes_intersect_p (FPA_REGS, (CLASS))		\
+    : 0)
+ 
+ /* The class value for index registers, and the one for base regs.  */
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-powerpc-undef.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-powerpc-undef.diff
@@ -0,0 +1,13 @@
+# DP: Undefine LINK_EH_SPEC before redefining it
+# DP: http://gcc.gnu.org/ml/gcc-patches/2011-02/msg01082.html
+
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -835,6 +835,7 @@
+   -dynamic-linker " LINUX_DYNAMIC_LINKER "}}"
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
++# undef  LINK_EH_SPEC
+ # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
+ #endif
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-fixed-symlinks.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-fixed-symlinks.diff
@@ -0,0 +1,24 @@
+# DP: Remove unneed '..' elements from symlinks in JAVA_HOME
+
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -831,7 +831,7 @@
+ 	$(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS)
+ 	relative() { \
+ 	  $(PERL) -e 'use File::Spec; \
+-	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \
++	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2 | sed -r 's,(bin|lib)[^/]*/\.\./,,'; \
+ 	}; \
+ 	RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \
+ 	ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -12461,7 +12461,7 @@
+ @CREATE_JAVA_HOME_TRUE@	$(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS)
+ @CREATE_JAVA_HOME_TRUE@	relative() { \
+ @CREATE_JAVA_HOME_TRUE@	  $(PERL) -e 'use File::Spec; \
+-@CREATE_JAVA_HOME_TRUE@	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \
++@CREATE_JAVA_HOME_TRUE@	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2 | sed -r 's,(bin|lib)[^/]*/\.\./,,'; \
+ @CREATE_JAVA_HOME_TRUE@	}; \
+ @CREATE_JAVA_HOME_TRUE@	RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \
+ @CREATE_JAVA_HOME_TRUE@	ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
--- gcc-4.6-4.6.3.orig/debian/patches/alpha-no-ev4-directive.diff
+++ gcc-4.6-4.6.3/debian/patches/alpha-no-ev4-directive.diff
@@ -0,0 +1,30 @@
+# DP: never emit .ev4 directive.
+
+---
+ gcc/config/alpha/alpha.c |    7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+--- a/src/gcc/config/alpha/alpha.c
++++ b/src/gcc/config/alpha/alpha.c
+@@ -9733,7 +9733,7 @@
+     fputs ("\t.set nomacro\n", asm_out_file);
+   if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX)
+     {
+-      const char *arch;
++      const char *arch = NULL;
+ 
+       if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX)
+ 	arch = "ev6";
+@@ -9743,10 +9743,9 @@
+ 	arch = "ev56";
+       else if (alpha_cpu == PROCESSOR_EV5)
+ 	arch = "ev5";
+-      else
+-	arch = "ev4";
+ 
+-      fprintf (asm_out_file, "\t.arch %s\n", arch);
++      if (arch)
++        fprintf (asm_out_file, "\t.arch %s\n", arch);
+     }
+ }
+ #endif
--- gcc-4.6-4.6.3.orig/debian/patches/powerpc_remove_many.diff
+++ gcc-4.6-4.6.3/debian/patches/powerpc_remove_many.diff
@@ -0,0 +1,31 @@
+# DP: Subject: [PATCH] remove -many on __SPE__ target
+# DP: this helps to to detect opcodes which are not part of the current
+# DP: CPU because without -many gas won't touch them. This currently could
+# DP: break the kernel build as the 603 on steroids cpus use performance
+# DP: counter opcodes which are not available on the steroid less 603 core.
+
+--- a/src/gcc/config/rs6000/rs6000.h
++++ b/src/gcc/config/rs6000/rs6000.h
+@@ -98,6 +98,12 @@
+ #define ASM_CPU_476_SPEC "-mpower4"
+ #endif
+ 
++#ifndef __SPE__
++#define ASM_CPU_SPU_MANY_NOT_SPE "-many"
++#else
++#define ASM_CPU_SPU_MANY_NOT_SPE
++#endif
++
+ /* Common ASM definitions used by ASM_SPEC among the various targets for
+    handling -mcpu=xxx switches.  There is a parallel list in driver-rs6000.c to
+    provide the default assembler options if the user uses -mcpu=native, so if
+@@ -170,7 +176,8 @@
+ %{mcpu=e500mc64: -me500mc64} \
+ %{maltivec: -maltivec} \
+ %{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: %(asm_cpu_power7)}} \
+--many"
++" \
++ASM_CPU_SPU_MANY_NOT_SPE
+ 
+ #define CPP_DEFAULT_SPEC ""
+ 
--- gcc-4.6-4.6.3.orig/debian/patches/pr47612.diff
+++ gcc-4.6-4.6.3/debian/patches/pr47612.diff
@@ -0,0 +1,29 @@
+# DP: Attachment 23909 to fix PR rtl-optimization/47612
+
+--- a/src/gcc/df-problems.c	(revision 172094)
++++ b/src/gcc/df-problems.c	(working copy)
+@@ -4001,7 +4001,10 @@ can_move_insns_across (rtx from, rtx to,
+ 	  if (bitmap_intersect_p (merge_set, test_use)
+ 	      || bitmap_intersect_p (merge_use, test_set))
+ 	    break;
+-	  max_to = insn;
++#ifdef HAVE_cc0
++	  if (!sets_cc0_p (insn))
++#endif
++	    max_to = insn;
+ 	}
+       next = NEXT_INSN (insn);
+       if (insn == to)
+@@ -4038,7 +4041,11 @@ can_move_insns_across (rtx from, rtx to,
+     {
+       if (NONDEBUG_INSN_P (insn))
+ 	{
+-	  if (!bitmap_intersect_p (test_set, local_merge_live))
++	  if (!bitmap_intersect_p (test_set, local_merge_live)
++#ifdef HAVE_cc0
++	      && !sets_cc0_p (insn)
++#endif
++	      )
+ 	    {
+ 	      max_to = insn;
+ 	      break;
--- gcc-4.6-4.6.3.orig/debian/patches/cell-branch-doc.diff
+++ gcc-4.6-4.6.3/debian/patches/cell-branch-doc.diff
@@ -0,0 +1,2 @@
+# DP: Updates from the cell-4_5-branch (documentation) up to 2010xxxx
+
--- gcc-4.6-4.6.3.orig/debian/patches/cross-include.diff
+++ gcc-4.6-4.6.3/debian/patches/cross-include.diff
@@ -0,0 +1,18 @@
+# DP: Set cross include path to .../include, not .../sys-include
+# DP: This should be a fix for famous limits.h issue
+
+---
+ gcc/configure.ac |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -764,7 +764,7 @@ AC_ARG_WITH(sysroot,
+ ], [
+  TARGET_SYSTEM_ROOT=
+  TARGET_SYSTEM_ROOT_DEFINE=
+- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
++ CROSS_SYSTEM_HEADER_DIR='$(prefix)/$(target_noncanonical)/include'
+ ])
+ AC_SUBST(TARGET_SYSTEM_ROOT)
+ AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
--- gcc-4.6-4.6.3.orig/debian/patches/libstdc++-man-3cxx.diff
+++ gcc-4.6-4.6.3/debian/patches/libstdc++-man-3cxx.diff
@@ -0,0 +1,91 @@
+# DP: Install libstdc++ man pages with suffix .3cxx instead of .3
+
+Index: b/src/libstdc++-v3/doc/doxygen/user.cfg.in
+===================================================================
+--- a/src/libstdc++-v3/doc/doxygen/user.cfg.in
++++ b/src/libstdc++-v3/doc/doxygen/user.cfg.in
+@@ -181,8 +181,8 @@
+ 
+ ALIASES = doctodo="@todo\nNeeds documentation! See http://gcc.gnu.org/onlinedocs/libstdc++/manual/documentation_style.html"
+ 
+-ALIASES += headername{1}="Instead, include <\1>."
+-ALIASES += headername{2}="Instead, include <\1> or <\2>."
++ALIASES += headername{1}="Instead, include \<\1\>."
++ALIASES += headername{2}="Instead, include \<\1\> or \<\2\>."
+ 
+ # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+ # sources only. Doxygen will then generate output that is more tailored for C.
+@@ -1388,7 +1388,7 @@
+ # The MAN_EXTENSION tag determines the extension that is added to
+ # the generated man pages (default is the subroutine's section .3)
+ 
+-MAN_EXTENSION          = .3
++MAN_EXTENSION          = .3cxx
+ 
+ # If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+ # then it will generate one additional man file for each entity
+Index: b/src/libstdc++-v3/scripts/run_doxygen
+===================================================================
+--- a/src/libstdc++-v3/scripts/run_doxygen
++++ b/src/libstdc++-v3/scripts/run_doxygen
+@@ -235,6 +235,9 @@
+ if $do_man; then
+ echo ::
+ echo :: Fixing up the man pages...
++mkdir -p $outdir/man/man3
++mv $outdir/man/man3cxx/* $outdir/man/man3/
++rmdir $outdir/man/man3cxx
+ cd $outdir/man/man3
+ 
+ # File names with embedded spaces (EVIL!) need to be....?  renamed or removed?
+@@ -256,7 +259,7 @@
+ # and I'm off getting coffee then anyhow, so I didn't care enough to make
+ # this super-fast.
+ g++ ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader
+-problematic=`egrep -l '#include <.*_.*>' [a-z]*.3`
++problematic=`egrep -l '#include <.*_.*>' [a-z]*.3 [a-z]*.3cxx`
+ for f in $problematic; do
+     # this is also slow, but safe and easy to debug
+     oldh=`sed -n '/fC#include </s/.*<\(.*\)>.*/\1/p' $f`
+@@ -269,7 +272,7 @@
+ # Some of the pages for generated modules have text that confuses certain
+ # implementations of man(1), e.g., Linux's.  We need to have another top-level
+ # *roff tag to /stop/ the .SH NAME entry.
+-problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3`
++problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3cxx`
+ #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3'
+ 
+ for f in $problematic; do
+@@ -283,7 +286,7 @@
+ done
+ 
+ # Also, break this (generated) line up.  It's ugly as sin.
+-problematic=`grep -l '[^^]Definition at line' *.3`
++problematic=`grep -l '[^^]Definition at line' *.3 *.3cxx`
+ for f in $problematic; do
+     sed 's/Definition at line/\
+ .PP\
+@@ -388,8 +391,8 @@
+ 	 istringstream ostringstream stringstream filebuf ifstream \
+ 	 ofstream fstream string;
+ do
+-    echo ".so man3/std::basic_${f}.3" > std::${f}.3
+-    echo ".so man3/std::basic_${f}.3" > std::w${f}.3
++    echo ".so man3/std::basic_${f}.3cxx" > std::${f}.3cxx
++    echo ".so man3/std::basic_${f}.3cxx" > std::w${f}.3cxx
+ done
+ 
+ echo ::
+Index: b/src/libstdc++-v3/include/profile/impl/profiler_algos.h
+===================================================================
+--- a/src/libstdc++-v3/include/profile/impl/profiler_algos.h
++++ b/src/libstdc++-v3/include/profile/impl/profiler_algos.h
+@@ -24,7 +24,7 @@
+ /** @file profile/impl/profiler_algos.h
+  *  @brief Algorithms used by the profile extension.
+  *
+- *  This file is needed to avoid including <algorithm> or <bits/stl_algo.h>.
++ *  This file is needed to avoid including \<algorithm\> or \<bits/stl_algo.h\>.
+  *  Including those files would result in recursive includes.
+  *  These implementations are oversimplified.  In general, efficiency may be
+  *  sacrificed to minimize maintenance overhead.
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-base-version.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-base-version.diff
@@ -0,0 +1,164 @@
+# DP: Set base version to 4.6, introduce full version 4.6.x.
+
+--- a/src/gcc/BASE-VER
++++ b/src/gcc/BASE-VER
+@@ -1 +1 @@
+-4.6.3
++4.6
+--- /dev/null
++++ b/src/gcc/FULL-VER
+@@ -0,0 +1 @@
++4.6.3
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -832,11 +832,13 @@
+ TM_H      = $(GTM_H) insn-flags.h $(OPTIONS_H)
+ 
+ # Variables for version information.
+-BASEVER     := $(srcdir)/BASE-VER  # 4.x.y
++FULLVER     := $(srcdir)/FULL-VER  # 4.x.y
++BASEVER     := $(srcdir)/BASE-VER  # 4.x
+ DEVPHASE    := $(srcdir)/DEV-PHASE # experimental, prerelease, ""
+ DATESTAMP   := $(srcdir)/DATESTAMP # YYYYMMDD or empty
+ REVISION    := $(srcdir)/REVISION  # [BRANCH revision XXXXXX]
+ 
++FULLVER_c   := $(shell cat $(FULLVER))
+ BASEVER_c   := $(shell cat $(BASEVER))
+ DEVPHASE_c  := $(shell cat $(DEVPHASE))
+ DATESTAMP_c := $(shell cat $(DATESTAMP))
+@@ -855,7 +857,7 @@
+ # development phase collapsed to the empty string in release mode
+ # (i.e. if DEVPHASE_c is empty).  The space immediately after the
+ # comma in the $(if ...) constructs is significant - do not remove it.
+-BASEVER_s   := "\"$(BASEVER_c)\""
++FULLVER_s   := "\"$(FULLVER_c)\""
+ DEVPHASE_s  := "\"$(if $(DEVPHASE_c), ($(DEVPHASE_c)))\""
+ DATESTAMP_s := "\"$(if $(DEVPHASE_c), $(DATESTAMP_c))\""
+ PKGVERSION_s:= "\"@PKGVERSION@\""
+@@ -2184,9 +2186,9 @@
+ 		$(MACHMODE_H)
+ 
+ prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) prefix.h \
+-	Makefile $(BASEVER)
++	Makefile $(FULLVER)
+ 	$(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
+-	-DPREFIX=\"$(prefix)\" -DBASEVER=$(BASEVER_s) \
++	-DPREFIX=\"$(prefix)\" -DBASEVER=$(FULLVER_s) \
+ 	  -c $(srcdir)/prefix.c $(OUTPUT_OPTION)
+ 
+ # Language-independent files.
+@@ -2257,9 +2259,9 @@
+ 
+ dumpvers: dumpvers.c
+ 
+-version.o: version.c version.h $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE)
++version.o: version.c version.h $(REVISION) $(DATESTAMP) $(FULLVER) $(DEVPHASE)
+ 	$(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
+-	-DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \
++	-DBASEVER=$(FULLVER_s) -DDATESTAMP=$(DATESTAMP_s) \
+ 	-DREVISION=$(REVISION_s) \
+ 	-DDEVPHASE=$(DEVPHASE_s) -DPKGVERSION=$(PKGVERSION_s) \
+ 	-DBUGURL=$(BUGURL_s) -c $(srcdir)/version.c $(OUTPUT_OPTION)
+@@ -2798,10 +2800,10 @@
+    tree-ssa-alias.h $(TREE_FLOW_H)
+ 
+ bversion.h: s-bversion; @true
+-s-bversion: BASE-VER
+-	echo "#define BUILDING_GCC_MAJOR `echo $(BASEVER_c) | sed -e 's/^\([0-9]*\).*$$/\1/'`" > bversion.h
+-	echo "#define BUILDING_GCC_MINOR `echo $(BASEVER_c) | sed -e 's/^[0-9]*\.\([0-9]*\).*$$/\1/'`" >> bversion.h
+-	echo "#define BUILDING_GCC_PATCHLEVEL `echo $(BASEVER_c) | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$$/\1/'`" >> bversion.h
++s-bversion: FULL-VER
++	echo "#define BUILDING_GCC_MAJOR `echo $(FULLVER_c) | sed -e 's/^\([0-9]*\).*$$/\1/'`" > bversion.h
++	echo "#define BUILDING_GCC_MINOR `echo $(FULLVER_c) | sed -e 's/^[0-9]*\.\([0-9]*\).*$$/\1/'`" >> bversion.h
++	echo "#define BUILDING_GCC_PATCHLEVEL `echo $(FULLVER_c) | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$$/\1/'`" >> bversion.h
+ 	echo "#define BUILDING_GCC_VERSION (BUILDING_GCC_MAJOR * 1000 + BUILDING_GCC_MINOR)" >> bversion.h
+ 	$(STAMP) s-bversion
+ 
+@@ -3802,9 +3804,9 @@
+ ## build/version.o is compiled by the $(COMPILER_FOR_BUILD) but needs
+ ## several C macro definitions, just like version.o
+ build/version.o:  version.c version.h \
+-                  $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE)
++                  $(REVISION) $(DATESTAMP) $(FULLVER) $(DEVPHASE)
+ 	$(COMPILER_FOR_BUILD) -c $(BUILD_COMPILERFLAGS) $(BUILD_CPPFLAGS) \
+-	-DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \
++	-DBASEVER=$(FULLVER_s) -DDATESTAMP=$(DATESTAMP_s) \
+ 	-DREVISION=$(REVISION_s) \
+ 	-DDEVPHASE=$(DEVPHASE_s) -DPKGVERSION=$(PKGVERSION_s) \
+ 	-DBUGURL=$(BUGURL_s) -o $@ $<
+@@ -3965,7 +3967,7 @@
+ cppbuiltin.o: cppbuiltin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+ 	cppbuiltin.h Makefile
+ 	$(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
+-	  $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) \
++	  $(PREPROCESSOR_DEFINES) -DBASEVER=$(FULLVER_s) \
+ 	  -c $(srcdir)/cppbuiltin.c $(OUTPUT_OPTION)
+ 
+ cppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+@@ -3986,8 +3988,8 @@
+ 		build/gcov-iov.o -o $@
+ 
+ gcov-iov.h: s-iov
+-s-iov: build/gcov-iov$(build_exeext) $(BASEVER) $(DEVPHASE)
+-	build/gcov-iov$(build_exeext) '$(BASEVER_c)' '$(DEVPHASE_c)' \
++s-iov: build/gcov-iov$(build_exeext) $(FULLVER) $(DEVPHASE)
++	build/gcov-iov$(build_exeext) '$(FULLVER_c)' '$(DEVPHASE_c)' \
+ 	    > tmp-gcov-iov.h
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-gcov-iov.h gcov-iov.h
+ 	$(STAMP) s-iov
+@@ -4211,8 +4213,8 @@
+ TEXI_CPPINT_FILES = cppinternals.texi gcc-common.texi gcc-vers.texi
+ 
+ # gcc-vers.texi is generated from the version files.
+-gcc-vers.texi: $(BASEVER) $(DEVPHASE)
+-	(echo "@set version-GCC $(BASEVER_c)"; \
++gcc-vers.texi: $(FULLVER) $(DEVPHASE)
++	(echo "@set version-GCC $(FULLVER_c)"; \
+ 	 if [ "$(DEVPHASE_c)" = "experimental" ]; \
+ 	 then echo "@set DEVELOPMENT"; \
+ 	 else echo "@clear DEVELOPMENT"; \
+@@ -4579,9 +4581,11 @@
+ install-driver: installdirs xgcc$(exeext)
+ 	-rm -f $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext)
+ 	-$(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext)
++ifneq ($(GCC_INSTALL_NAME),$(target_noncanonical)-gcc-$(version))
+ 	-rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-$(version)$(exeext)
+ 	-( cd $(DESTDIR)$(bindir) && \
+ 	   $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-$(version)$(exeext) )
++endif
+ 	-if [ -f gcc-cross$(exeext) ] ; then \
+ 	  if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \
+ 	    rm -f $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -775,7 +775,7 @@
+ install-data-local:
+ 	$(PRE_INSTALL)
+ ## Install the .pc file.
+-	@pc_version=`echo $(GCJVERSION) | sed -e 's/[.][^.]*$$//'`; \
++	@pc_version=$(GCJVERSION); \
+ 	file="libgcj-$${pc_version}.pc"; \
+ 	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir); \
+ 	echo "  $(INSTALL_DATA) libgcj.pc $(DESTDIR)$(pkgconfigdir)/$$file"; \
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -12412,7 +12412,7 @@
+ @BUILD_ECJ1_TRUE@	mv $(DESTDIR)$(libexecsubdir)/`echo ecjx | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` $(DESTDIR)$(libexecsubdir)/ecj1$(host_exeext)
+ install-data-local:
+ 	$(PRE_INSTALL)
+-	@pc_version=`echo $(GCJVERSION) | sed -e 's/[.][^.]*$$//'`; \
++	@pc_version=$(GCJVERSION); \
+ 	file="libgcj-$${pc_version}.pc"; \
+ 	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir); \
+ 	echo "  $(INSTALL_DATA) libgcj.pc $(DESTDIR)$(pkgconfigdir)/$$file"; \
+--- a/src/libgcc/Makefile.in
++++ b/src/libgcc/Makefile.in
+@@ -201,7 +201,7 @@
+ export toolexecdir
+ export toolexeclibdir
+ 
+-version := $(shell $(CC) -dumpversion)
++version := $(shell cat $(srcdir)/../gcc/BASE-VER)
+ 
+ ifeq ($(decimal_float),yes)
+ ifeq ($(enable_decimal_float),bid)
--- gcc-4.6-4.6.3.orig/debian/patches/gcc-linaro-updates.diff
+++ gcc-4.6-4.6.3/debian/patches/gcc-linaro-updates.diff
@@ -0,0 +1,2 @@
+# DP: Linaro updates from the 4.6-2011.xx-stable branch:
+
--- gcc-4.6-4.6.3.orig/debian/patches/note-gnu-stack.diff
+++ gcc-4.6-4.6.3/debian/patches/note-gnu-stack.diff
@@ -0,0 +1,170 @@
+# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc
+# DP: Taken from FC.
+
+gcc/
+
+2004-09-20  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/rs6000/ppc-asm.h: Add .note.GNU-stack section also
+	on ppc64-linux.
+
+	* config/ia64/lib1funcs.asm: Add .note.GNU-stack section on
+	ia64-linux.
+	* config/ia64/crtbegin.asm: Likewise.
+	* config/ia64/crtend.asm: Likewise.
+	* config/ia64/crti.asm: Likewise.
+	* config/ia64/crtn.asm: Likewise.
+
+2004-05-14  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/ia64/linux.h (TARGET_ASM_FILE_END): Define.
+
+boehm-gc/
+
+2005-02-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* ia64_save_regs_in_stack.s: Moved to...
+	* ia64_save_regs_in_stack.S: ... this.  Add .note.GNU-stack
+	on Linux.
+
+libffi/
+
+2007-05-11  Daniel Jacobowitz  <dan@debian.org>
+
+	* src/arm/sysv.S: Fix ARM comment marker.
+
+2005-02-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* src/alpha/osf.S: Add .note.GNU-stack on Linux.
+	* src/s390/sysv.S: Likewise.
+	* src/powerpc/linux64.S: Likewise.
+	* src/powerpc/linux64_closure.S: Likewise.
+	* src/powerpc/ppc_closure.S: Likewise.
+	* src/powerpc/sysv.S: Likewise.
+	* src/x86/unix64.S: Likewise.
+	* src/x86/sysv.S: Likewise.
+	* src/sparc/v8.S: Likewise.
+	* src/sparc/v9.S: Likewise.
+	* src/m68k/sysv.S: Likewise.
+	* src/ia64/unix.S: Likewise.
+	* src/arm/sysv.S: Likewise.
+
+---
+ boehm-gc/ia64_save_regs_in_stack.s   |   12 ------------
+ gcc/config/ia64/crtbegin.asm         |    4 ++++
+ gcc/config/ia64/crtend.asm           |    4 ++++
+ gcc/config/ia64/crti.asm             |    4 ++++
+ gcc/config/ia64/crtn.asm             |    4 ++++
+ gcc/config/ia64/lib1funcs.asm        |    4 ++++
+ gcc/config/ia64/linux.h              |    2 ++
+ gcc/config/rs6000/ppc-asm.h          |    2 +-
+ libffi/src/ia64/unix.S               |    4 ++++
+ libffi/src/powerpc/linux64.S         |    4 ++++
+ libffi/src/powerpc/linux64_closure.S |    4 ++++
+ 11 files changed, 35 insertions(+), 13 deletions(-)
+
+--- a/src/boehm-gc/ia64_save_regs_in_stack.s
++++ /dev/null
+@@ -1,12 +0,0 @@
+-        .text
+-        .align 16
+-        .global GC_save_regs_in_stack
+-        .proc GC_save_regs_in_stack
+-GC_save_regs_in_stack:
+-        .body
+-        flushrs
+-        ;;
+-        mov r8=ar.bsp
+-        br.ret.sptk.few rp
+-        .endp GC_save_regs_in_stack
+-
+--- /dev/null
++++ b/src/boehm-gc/ia64_save_regs_in_stack.S
+@@ -0,0 +1,15 @@
++        .text
++        .align 16
++        .global GC_save_regs_in_stack
++        .proc GC_save_regs_in_stack
++GC_save_regs_in_stack:
++        .body
++        flushrs
++        ;;
++        mov r8=ar.bsp
++        br.ret.sptk.few rp
++        .endp GC_save_regs_in_stack
++
++#ifdef __linux__
++	.section .note.GNU-stack,"",@progbits
++#endif
+--- a/src/gcc/config/ia64/crtbegin.asm
++++ b/src/gcc/config/ia64/crtbegin.asm
+@@ -252,3 +252,7 @@
+ .weak __cxa_finalize
+ #endif
+ .weak _Jv_RegisterClasses
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+--- a/src/gcc/config/ia64/crtend.asm
++++ b/src/gcc/config/ia64/crtend.asm
+@@ -119,3 +119,7 @@
+ 
+ 	br.ret.sptk.many rp
+ 	.endp __do_global_ctors_aux
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+--- a/src/gcc/config/ia64/crti.asm
++++ b/src/gcc/config/ia64/crti.asm
+@@ -51,3 +51,7 @@
+ 	.body
+ 
+ # end of crti.asm
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+--- a/src/gcc/config/ia64/crtn.asm
++++ b/src/gcc/config/ia64/crtn.asm
+@@ -41,3 +41,7 @@
+ 	br.ret.sptk.many b0
+ 
+ # end of crtn.asm
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+--- a/src/gcc/config/ia64/lib1funcs.asm
++++ b/src/gcc/config/ia64/lib1funcs.asm
+@@ -793,3 +793,7 @@
+ 	.endp __floattitf
+ #endif
+ #endif
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -29,6 +29,8 @@
+ 
+ #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
+ 
++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++
+ /* This is for -profile to use -lc_p instead of -lc.  */
+ #undef CC1_SPEC
+ #define CC1_SPEC "%{profile:-p} %{G*}"
+--- a/src/gcc/config/rs6000/ppc-asm.h
++++ b/src/gcc/config/rs6000/ppc-asm.h
+@@ -352,7 +352,7 @@
+ #endif
+ #endif
+ 
+-#if defined __linux__ && !defined __powerpc64__
++#if defined __linux__
+ 	.section .note.GNU-stack
+ 	.previous
+ #endif
--- gcc-4.6-4.6.3.orig/debian/patches/gdc-libphobos-build.diff
+++ gcc-4.6-4.6.3/debian/patches/gdc-libphobos-build.diff
@@ -0,0 +1,679 @@
+# DP: Setup gcc build system for libphobos.
+
+--- a/src/configure	2011-03-16 18:27:36.000000000 +0000
++++ b/src/configure	2011-05-28 21:37:07.919690215 +0100
+@@ -2720,7 +2720,8 @@
+ 		${libgcj} \
+ 		target-libobjc \
+ 		target-libada \
+-		target-libgo"
++		target-libgo \
++		target-libphobos"
+ 
+ # these tools are built using the target libraries, and are intended to
+ # run only in the target environment
+--- a/src/configure.ac	2011-03-16 18:27:36.000000000 +0000
++++ b/src/configure.ac	2011-05-28 21:37:07.923690230 +0100
+@@ -201,7 +201,8 @@
+ 		${libgcj} \
+ 		target-libobjc \
+ 		target-libada \
+-		target-libgo"
++		target-libgo \
++		target-libphobos"
+ 
+ # these tools are built using the target libraries, and are intended to
+ # run only in the target environment
+--- a/src/Makefile.def	2011-02-12 12:02:24.000000000 +0000
++++ b/src/Makefile.def	2011-05-28 21:37:07.947690350 +0100
+@@ -160,6 +160,7 @@
+ target_modules = { module= libgfortran; };
+ target_modules = { module= libobjc; };
+ target_modules = { module= libgo; };
++target_modules = { module= libphobos; };
+ target_modules = { module= libtermcap; no_check=true;
+                    missing=mostlyclean;
+                    missing=clean;
+--- a/src/Makefile.in	2011-02-12 12:02:24.000000000 +0000
++++ b/src/Makefile.in	2011-05-28 21:37:08.047690846 +0100
+@@ -963,6 +963,7 @@
+     maybe-configure-target-libgfortran \
+     maybe-configure-target-libobjc \
+     maybe-configure-target-libgo \
++    maybe-configure-target-libphobos \
+     maybe-configure-target-libtermcap \
+     maybe-configure-target-winsup \
+     maybe-configure-target-libgloss \
+@@ -1147,6 +1148,7 @@
+ all-target: maybe-all-target-libgfortran
+ all-target: maybe-all-target-libobjc
+ all-target: maybe-all-target-libgo
++all-target: maybe-all-target-libphobos
+ all-target: maybe-all-target-libtermcap
+ all-target: maybe-all-target-winsup
+ all-target: maybe-all-target-libgloss
+@@ -1270,6 +1272,7 @@
+ info-target: maybe-info-target-libgfortran
+ info-target: maybe-info-target-libobjc
+ info-target: maybe-info-target-libgo
++info-target: maybe-info-target-libphobos
+ info-target: maybe-info-target-libtermcap
+ info-target: maybe-info-target-winsup
+ info-target: maybe-info-target-libgloss
+@@ -1386,6 +1389,7 @@
+ dvi-target: maybe-dvi-target-libgfortran
+ dvi-target: maybe-dvi-target-libobjc
+ dvi-target: maybe-dvi-target-libgo
++dvi-target: maybe-dvi-target-libphobos
+ dvi-target: maybe-dvi-target-libtermcap
+ dvi-target: maybe-dvi-target-winsup
+ dvi-target: maybe-dvi-target-libgloss
+@@ -1502,6 +1506,7 @@
+ pdf-target: maybe-pdf-target-libgfortran
+ pdf-target: maybe-pdf-target-libobjc
+ pdf-target: maybe-pdf-target-libgo
++pdf-target: maybe-pdf-target-libphobos
+ pdf-target: maybe-pdf-target-libtermcap
+ pdf-target: maybe-pdf-target-winsup
+ pdf-target: maybe-pdf-target-libgloss
+@@ -1618,6 +1623,7 @@
+ html-target: maybe-html-target-libgfortran
+ html-target: maybe-html-target-libobjc
+ html-target: maybe-html-target-libgo
++html-target: maybe-html-target-libphobos
+ html-target: maybe-html-target-libtermcap
+ html-target: maybe-html-target-winsup
+ html-target: maybe-html-target-libgloss
+@@ -1734,6 +1740,7 @@
+ TAGS-target: maybe-TAGS-target-libgfortran
+ TAGS-target: maybe-TAGS-target-libobjc
+ TAGS-target: maybe-TAGS-target-libgo
++TAGS-target: maybe-TAGS-target-libphobos
+ TAGS-target: maybe-TAGS-target-libtermcap
+ TAGS-target: maybe-TAGS-target-winsup
+ TAGS-target: maybe-TAGS-target-libgloss
+@@ -1850,6 +1857,7 @@
+ install-info-target: maybe-install-info-target-libgfortran
+ install-info-target: maybe-install-info-target-libobjc
+ install-info-target: maybe-install-info-target-libgo
++install-info-target: maybe-install-info-target-libphobos
+ install-info-target: maybe-install-info-target-libtermcap
+ install-info-target: maybe-install-info-target-winsup
+ install-info-target: maybe-install-info-target-libgloss
+@@ -1966,6 +1974,7 @@
+ install-pdf-target: maybe-install-pdf-target-libgfortran
+ install-pdf-target: maybe-install-pdf-target-libobjc
+ install-pdf-target: maybe-install-pdf-target-libgo
++install-pdf-target: maybe-install-pdf-target-libphobos
+ install-pdf-target: maybe-install-pdf-target-libtermcap
+ install-pdf-target: maybe-install-pdf-target-winsup
+ install-pdf-target: maybe-install-pdf-target-libgloss
+@@ -2082,6 +2091,7 @@
+ install-html-target: maybe-install-html-target-libgfortran
+ install-html-target: maybe-install-html-target-libobjc
+ install-html-target: maybe-install-html-target-libgo
++install-html-target: maybe-install-html-target-libphobos
+ install-html-target: maybe-install-html-target-libtermcap
+ install-html-target: maybe-install-html-target-winsup
+ install-html-target: maybe-install-html-target-libgloss
+@@ -2198,6 +2208,7 @@
+ installcheck-target: maybe-installcheck-target-libgfortran
+ installcheck-target: maybe-installcheck-target-libobjc
+ installcheck-target: maybe-installcheck-target-libgo
++installcheck-target: maybe-installcheck-target-libphobos
+ installcheck-target: maybe-installcheck-target-libtermcap
+ installcheck-target: maybe-installcheck-target-winsup
+ installcheck-target: maybe-installcheck-target-libgloss
+@@ -2314,6 +2325,7 @@
+ mostlyclean-target: maybe-mostlyclean-target-libgfortran
+ mostlyclean-target: maybe-mostlyclean-target-libobjc
+ mostlyclean-target: maybe-mostlyclean-target-libgo
++mostlyclean-target: maybe-mostlyclean-target-libphobos
+ mostlyclean-target: maybe-mostlyclean-target-libtermcap
+ mostlyclean-target: maybe-mostlyclean-target-winsup
+ mostlyclean-target: maybe-mostlyclean-target-libgloss
+@@ -2430,6 +2442,7 @@
+ clean-target: maybe-clean-target-libgfortran
+ clean-target: maybe-clean-target-libobjc
+ clean-target: maybe-clean-target-libgo
++clean-target: maybe-clean-target-libphobos
+ clean-target: maybe-clean-target-libtermcap
+ clean-target: maybe-clean-target-winsup
+ clean-target: maybe-clean-target-libgloss
+@@ -2546,6 +2559,7 @@
+ distclean-target: maybe-distclean-target-libgfortran
+ distclean-target: maybe-distclean-target-libobjc
+ distclean-target: maybe-distclean-target-libgo
++distclean-target: maybe-distclean-target-libphobos
+ distclean-target: maybe-distclean-target-libtermcap
+ distclean-target: maybe-distclean-target-winsup
+ distclean-target: maybe-distclean-target-libgloss
+@@ -2662,6 +2676,7 @@
+ maintainer-clean-target: maybe-maintainer-clean-target-libgfortran
+ maintainer-clean-target: maybe-maintainer-clean-target-libobjc
+ maintainer-clean-target: maybe-maintainer-clean-target-libgo
++maintainer-clean-target: maybe-maintainer-clean-target-libphobos
+ maintainer-clean-target: maybe-maintainer-clean-target-libtermcap
+ maintainer-clean-target: maybe-maintainer-clean-target-winsup
+ maintainer-clean-target: maybe-maintainer-clean-target-libgloss
+@@ -2833,6 +2848,7 @@
+     maybe-check-target-libgfortran \
+     maybe-check-target-libobjc \
+     maybe-check-target-libgo \
++    maybe-check-target-libphobos \
+     maybe-check-target-libtermcap \
+     maybe-check-target-winsup \
+     maybe-check-target-libgloss \
+@@ -3056,6 +3072,7 @@
+     maybe-install-target-libgfortran \
+     maybe-install-target-libobjc \
+     maybe-install-target-libgo \
++    maybe-install-target-libphobos \
+     maybe-install-target-libtermcap \
+     maybe-install-target-winsup \
+     maybe-install-target-libgloss \
+@@ -3191,6 +3208,7 @@
+     maybe-install-strip-target-libgfortran \
+     maybe-install-strip-target-libobjc \
+     maybe-install-strip-target-libgo \
++    maybe-install-strip-target-libphobos \
+     maybe-install-strip-target-libtermcap \
+     maybe-install-strip-target-winsup \
+     maybe-install-strip-target-libgloss \
+@@ -51278,6 +51296,463 @@
+ 
+ 
+ 
++.PHONY: configure-target-libphobos maybe-configure-target-libphobos
++maybe-configure-target-libphobos:
++@if gcc-bootstrap
++configure-target-libphobos: stage_current
++@endif gcc-bootstrap
++@if target-libphobos
++maybe-configure-target-libphobos: configure-target-libphobos
++configure-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	echo "Checking multilib configuration for libphobos..."; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos ; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libphobos/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libphobos/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libphobos/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libphobos/Makefile; \
++	    mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libphobos/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos ; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	echo Configuring in $(TARGET_SUBDIR)/libphobos; \
++	cd "$(TARGET_SUBDIR)/libphobos" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libphobos/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	srcdiroption="--srcdir=$${topdir}/libphobos"; \
++	libsrcdir="$$s/libphobos"; \
++	rm -f no-such-file || : ; \
++	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} $${srcdiroption}  \
++	  || exit 1
++@endif target-libphobos
++
++
++
++
++
++.PHONY: all-target-libphobos maybe-all-target-libphobos
++maybe-all-target-libphobos:
++@if gcc-bootstrap
++all-target-libphobos: stage_current
++@endif gcc-bootstrap
++@if target-libphobos
++TARGET-target-libphobos=all
++maybe-all-target-libphobos: all-target-libphobos
++all-target-libphobos: configure-target-libphobos
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)  \
++		$(TARGET-target-libphobos))
++@endif target-libphobos
++
++
++
++
++
++.PHONY: check-target-libphobos maybe-check-target-libphobos
++maybe-check-target-libphobos:
++@if target-libphobos
++maybe-check-target-libphobos: check-target-libphobos
++
++check-target-libphobos:
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)   check)
++
++@endif target-libphobos
++
++.PHONY: install-target-libphobos maybe-install-target-libphobos
++maybe-install-target-libphobos:
++@if target-libphobos
++maybe-install-target-libphobos: install-target-libphobos
++
++install-target-libphobos: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
++
++@endif target-libphobos
++
++.PHONY: install-strip-target-libphobos maybe-install-strip-target-libphobos
++maybe-install-strip-target-libphobos:
++@if target-libphobos
++maybe-install-strip-target-libphobos: install-strip-target-libphobos
++
++install-strip-target-libphobos: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
++
++@endif target-libphobos
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-target-libphobos info-target-libphobos
++maybe-info-target-libphobos:
++@if target-libphobos
++maybe-info-target-libphobos: info-target-libphobos
++
++info-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing info in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           info) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-dvi-target-libphobos dvi-target-libphobos
++maybe-dvi-target-libphobos:
++@if target-libphobos
++maybe-dvi-target-libphobos: dvi-target-libphobos
++
++dvi-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing dvi in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           dvi) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-pdf-target-libphobos pdf-target-libphobos
++maybe-pdf-target-libphobos:
++@if target-libphobos
++maybe-pdf-target-libphobos: pdf-target-libphobos
++
++pdf-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing pdf in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           pdf) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-html-target-libphobos html-target-libphobos
++maybe-html-target-libphobos:
++@if target-libphobos
++maybe-html-target-libphobos: html-target-libphobos
++
++html-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing html in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           html) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-TAGS-target-libphobos TAGS-target-libphobos
++maybe-TAGS-target-libphobos:
++@if target-libphobos
++maybe-TAGS-target-libphobos: TAGS-target-libphobos
++
++TAGS-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing TAGS in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           TAGS) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-install-info-target-libphobos install-info-target-libphobos
++maybe-install-info-target-libphobos:
++@if target-libphobos
++maybe-install-info-target-libphobos: install-info-target-libphobos
++
++install-info-target-libphobos: \
++    configure-target-libphobos \
++    info-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-info in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-info) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-install-pdf-target-libphobos install-pdf-target-libphobos
++maybe-install-pdf-target-libphobos:
++@if target-libphobos
++maybe-install-pdf-target-libphobos: install-pdf-target-libphobos
++
++install-pdf-target-libphobos: \
++    configure-target-libphobos \
++    pdf-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-pdf in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-pdf) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-install-html-target-libphobos install-html-target-libphobos
++maybe-install-html-target-libphobos:
++@if target-libphobos
++maybe-install-html-target-libphobos: install-html-target-libphobos
++
++install-html-target-libphobos: \
++    configure-target-libphobos \
++    html-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-html in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-html) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-installcheck-target-libphobos installcheck-target-libphobos
++maybe-installcheck-target-libphobos:
++@if target-libphobos
++maybe-installcheck-target-libphobos: installcheck-target-libphobos
++
++installcheck-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing installcheck in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           installcheck) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-mostlyclean-target-libphobos mostlyclean-target-libphobos
++maybe-mostlyclean-target-libphobos:
++@if target-libphobos
++maybe-mostlyclean-target-libphobos: mostlyclean-target-libphobos
++
++mostlyclean-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           mostlyclean) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-clean-target-libphobos clean-target-libphobos
++maybe-clean-target-libphobos:
++@if target-libphobos
++maybe-clean-target-libphobos: clean-target-libphobos
++
++clean-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing clean in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           clean) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-distclean-target-libphobos distclean-target-libphobos
++maybe-distclean-target-libphobos:
++@if target-libphobos
++maybe-distclean-target-libphobos: distclean-target-libphobos
++
++distclean-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing distclean in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           distclean) \
++	  || exit 1
++
++@endif target-libphobos
++
++.PHONY: maybe-maintainer-clean-target-libphobos maintainer-clean-target-libphobos
++maybe-maintainer-clean-target-libphobos:
++@if target-libphobos
++maybe-maintainer-clean-target-libphobos: maintainer-clean-target-libphobos
++
++maintainer-clean-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           maintainer-clean) \
++	  || exit 1
++
++@endif target-libphobos
++
++
++
++
++
+ .PHONY: configure-target-libtermcap maybe-configure-target-libtermcap
+ maybe-configure-target-libtermcap:
+ @if gcc-bootstrap
+@@ -60184,6 +60659,7 @@
+ configure-target-libgfortran: stage_last
+ configure-target-libobjc: stage_last
+ configure-target-libgo: stage_last
++configure-target-libphobos: stage_last
+ configure-target-libtermcap: stage_last
+ configure-target-winsup: stage_last
+ configure-target-libgloss: stage_last
+@@ -60215,6 +60691,7 @@
+ configure-target-libgfortran: maybe-all-gcc
+ configure-target-libobjc: maybe-all-gcc
+ configure-target-libgo: maybe-all-gcc
++configure-target-libphobos: maybe-all-gcc
+ configure-target-libtermcap: maybe-all-gcc
+ configure-target-winsup: maybe-all-gcc
+ configure-target-libgloss: maybe-all-gcc
+@@ -61059,6 +61536,7 @@
+ configure-target-libgfortran: maybe-all-target-libgcc
+ configure-target-libobjc: maybe-all-target-libgcc
+ configure-target-libgo: maybe-all-target-libgcc
++configure-target-libphobos: maybe-all-target-libgcc
+ configure-target-libtermcap: maybe-all-target-libgcc
+ configure-target-winsup: maybe-all-target-libgcc
+ configure-target-libgloss: maybe-all-target-libgcc
+@@ -61092,6 +61570,8 @@
+ 
+ configure-target-libgo: maybe-all-target-newlib maybe-all-target-libgloss
+ 
++configure-target-libphobos: maybe-all-target-newlib maybe-all-target-libgloss
++
+ configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss
+ 
+ configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss
--- gcc-4.6-4.6.3.orig/debian/patches/libjava-nobiarch-check.diff
+++ gcc-4.6-4.6.3/debian/patches/libjava-nobiarch-check.diff
@@ -0,0 +1,25 @@
+# DP: For biarch builds, disable the testsuite for the non-default architecture
+# DP: for runtime libraries, which are not built by default (libjava).
+
+---
+ libjava/testsuite/Makefile.in |    4 +++-
+ 2 files changed, 25 insertions(+), 1 deletions(-)
+
+--- a/src/libjava/testsuite/Makefile.in
++++ b/src/libjava/testsuite/Makefile.in
+@@ -380,12 +380,14 @@
+ 
+ 
+ check-DEJAGNU: site.exp
++	runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-m[36][24]//;s/,-mabi=n32//;s/,-mabi=64//'`"; \
++	case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \
+ 	srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
+ 	EXPECT=$(EXPECT); export EXPECT; \
+ 	runtest=$(RUNTEST); \
+ 	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ 	  exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \
+-	    if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
++	    if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $$runtestflags; \
+ 	    then :; else exit_status=1; fi; \
+ 	  done; \
+ 	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
--- gcc-4.6-4.6.3.orig/debian/patches/ada-kfreebsd-gnu.diff
+++ gcc-4.6-4.6.3/debian/patches/ada-kfreebsd-gnu.diff
@@ -0,0 +1,251 @@
+Index: b/src/gcc/ada/s-osinte-kfreebsd-gnu.adb
+===================================================================
+--- /dev/null
++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.adb
+@@ -0,0 +1,158 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
++--                                                                          --
++--                   S Y S T E M . O S _ I N T E R F A C E                  --
++--                                                                          --
++--                                   B o d y                                --
++--                                                                          --
++--             Copyright (C) 1991-1994, Florida State University            --
++--                     Copyright (C) 1995-2006, AdaCore                     --
++--                                                                          --
++-- GNARL is free software; you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
++-- sion. GNARL is distributed in the hope that it will be useful, but WITH- --
++-- OUT 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  distributed with GNARL; see file COPYING.  If not, write --
++-- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
++-- Boston, MA 02110-1301, USA.                                              --
++--                                                                          --
++-- As a special exception,  if other files  instantiate  generics from this --
++-- unit, or you link  this unit with other files  to produce an executable, --
++-- this  unit  does not  by itself cause  the resulting  executable  to  be --
++-- covered  by the  GNU  General  Public  License.  This exception does not --
++-- however invalidate  any other reasons why  the executable file  might be --
++-- covered by the  GNU Public License.                                      --
++--                                                                          --
++-- GNARL was developed by the GNARL team at Florida State University.       --
++-- Extensive contributions were provided by Ada Core Technologies, Inc.     --
++--                                                                          --
++------------------------------------------------------------------------------
++
++--  This is the GNU/kFreeBSD version of this package.
++
++pragma Polling (Off);
++--  Turn off polling, we do not want ATC polling to take place during
++--  tasking operations. It causes infinite loops and other problems.
++
++--  This package encapsulates all direct interfaces to OS services
++--  that are needed by children of System.
++
++package body System.OS_Interface is
++
++   --------------------
++   -- Get_Stack_Base --
++   --------------------
++
++   function Get_Stack_Base (thread : pthread_t) return Address is
++      pragma Warnings (Off, thread);
++
++   begin
++      return Null_Address;
++   end Get_Stack_Base;
++
++   ------------------
++   -- pthread_init --
++   ------------------
++
++   procedure pthread_init is
++   begin
++      null;
++   end pthread_init;
++
++   -----------------------------------
++   -- pthread_mutexattr_setprotocol --
++   -----------------------------------
++
++   function pthread_mutexattr_setprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : int) return int is
++      pragma Unreferenced (attr, protocol);
++   begin
++      return 0;
++   end pthread_mutexattr_setprotocol;
++
++   -----------------------------------
++   -- pthread_mutexattr_getprotocol --
++   -----------------------------------
++
++   function pthread_mutexattr_getprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : access int) return int is
++      pragma Unreferenced (attr, protocol);
++   begin
++      return 0;
++   end pthread_mutexattr_getprotocol;
++
++   --------------------------------------
++   -- pthread_mutexattr_setprioceiling --
++   --------------------------------------
++
++   function pthread_mutexattr_setprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : int) return int is
++      pragma Unreferenced (attr, prioceiling);
++   begin
++      return 0;
++   end pthread_mutexattr_setprioceiling;
++
++   --------------------------------------
++   -- pthread_mutexattr_getprioceiling --
++   --------------------------------------
++
++   function pthread_mutexattr_getprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : access int) return int is
++      pragma Unreferenced (attr, prioceiling);
++   begin
++      return 0;
++   end pthread_mutexattr_getprioceiling;
++
++   -----------------
++   -- To_Duration --
++   -----------------
++
++   function To_Duration (TS : timespec) return Duration is
++   begin
++      return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
++   end To_Duration;
++
++   ------------------------
++   -- To_Target_Priority --
++   ------------------------
++
++   function To_Target_Priority
++     (Prio : System.Any_Priority) return Interfaces.C.int
++   is
++   begin
++      return Interfaces.C.int (Prio);
++   end To_Target_Priority;
++
++   -----------------
++   -- To_Timespec --
++   -----------------
++
++   function To_Timespec (D : Duration) return timespec is
++      S : time_t;
++      F : Duration;
++
++   begin
++      S := time_t (Long_Long_Integer (D));
++      F := D - Duration (S);
++
++      --  If F has negative value due to a round-up, adjust for positive F
++      --  value.
++
++      if F < 0.0 then
++         S := S - 1;
++         F := F + 1.0;
++      end if;
++
++      return timespec'(tv_sec => S,
++                       tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
++   end To_Timespec;
++
++end System.OS_Interface;
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1097,7 +1097,7 @@
+   a-numaux.ads<a-numaux-x86.ads \
+   s-inmaop.adb<s-inmaop-posix.adb \
+   s-intman.adb<s-intman-posix.adb \
+-  s-osinte.adb<s-osinte-posix.adb \
++  s-osinte.adb<s-osinte-kfreebsd-gnu.adb \
+   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
+   s-osprim.adb<s-osprim-posix.adb \
+   s-taprop.adb<s-taprop-posix.adb \
+@@ -1123,7 +1123,7 @@
+   a-numaux.ads<a-numaux-x86.ads \
+   s-inmaop.adb<s-inmaop-posix.adb \
+   s-intman.adb<s-intman-posix.adb \
+-  s-osinte.adb<s-osinte-posix.adb \
++  s-osinte.adb<s-osinte-kfreebsd-gnu.adb \
+   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
+   s-osprim.adb<s-osprim-posix.adb \
+   s-taprop.adb<s-taprop-posix.adb \
+@@ -1137,7 +1137,7 @@
+     indepsw.adb<indepsw-gnu.adb
+ 
+   EH_MECHANISM=-gcc
+-  THREADSLIB = -lpthread
++  THREADSLIB = -lpthread -lrt
+   GNATLIB_SHARED = gnatlib-shared-dual
+   GMEM_LIB = gmemlib
+   LIBRARY_VERSION := $(LIB_VERSION)
+@@ -1165,7 +1165,7 @@
+     indepsw.adb<indepsw-gnu.adb
+ 
+   EH_MECHANISM=-gcc
+-  THREADSLIB = -lpthread
++  THREADSLIB = -lpthread -lrt
+   GNATLIB_SHARED = gnatlib-shared-dual
+   GMEM_LIB = gmemlib
+   LIBRARY_VERSION := $(LIB_VERSION)
+Index: b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads
+===================================================================
+--- a/src/gcc/ada/s-osinte-kfreebsd-gnu.ads
++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads
+@@ -47,6 +47,7 @@
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-lpthread");
++   pragma Linker_Options ("-lrt");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype char           is Interfaces.C.char;
+@@ -431,31 +432,25 @@
+    PTHREAD_PRIO_PROTECT : constant := 2;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+ 
++   --  GNU/kFreeBSD does not support Thread Priority Protection or Thread
++   --  Priority Inheritance and lacks some pthread_mutexattr_* functions.
++   --  Replace them with dummy versions.
++
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+-   pragma Import
+-      (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
+ 
+    function pthread_mutexattr_getprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : access int) return int;
+-   pragma Import
+-     (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+-   pragma Import
+-     (C, pthread_mutexattr_setprioceiling,
+-      "pthread_mutexattr_setprioceiling");
+ 
+    function pthread_mutexattr_getprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : access int) return int;
+-   pragma Import
+-     (C, pthread_mutexattr_getprioceiling,
+-      "pthread_mutexattr_getprioceiling");
+ 
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
--- gcc-4.6-4.6.3.orig/debian/patches/gdc-driver-nophobos.diff
+++ gcc-4.6-4.6.3/debian/patches/gdc-driver-nophobos.diff
@@ -0,0 +1,49 @@
+# DP: Modify gdc driver to have no libphobos by default.
+
+--- a/src/gcc/d/d-lang.cc	2011-07-24 15:48:55.796035654 +0100
++++ b/src/gcc/d/d-lang.cc	2011-07-24 18:19:45.108908785 +0100
+@@ -184,7 +184,7 @@
+ d_init_options_struct (struct gcc_options *opts)
+ {
+     // GCC options
+-    opts->x_flag_exceptions = 1;
++    opts->x_flag_exceptions = 0;
+ 
+     // Avoid range issues for complex multiply and divide.
+     opts->x_flag_complex_method = 2;
+--- a/src/gcc/d/dmain.d 1970-01-01 01:00:00.000000000 +0100
++++ b/src/gcc/d/dmain.d 2011-02-20 23:45:24.799761560 +0000
+@@ -0,0 +1,22 @@
++extern (C) size_t strlen(const char* s);
++extern (C) void* malloc(size_t s);
++
++int main(char[][] args); // U _Dmain
++
++extern (C) int main(int argc, char** argv) {
++    char[][] args;
++    char[] *am;
++    int i;
++
++    am = cast(char[] *) malloc(argc * (char[]).sizeof);
++
++    for(i = 0; i < argc; i++) {
++       am[i] = argv[i][0 .. strlen(argv[i])];
++    }
++
++    args = am[0 .. argc];
++
++    return main(args);
++}
++
++
+--- a/src/gcc/d/d-spec.c	2011-07-24 15:48:55.820035782 +0100
++++ b/src/gcc/d/d-spec.c	2011-07-24 18:20:43.841200023 +0100
+@@ -114,7 +114,7 @@
+ 
+     /* If nonzero, use the standard D runtime library when linking with
+        standard libraries. */
+-    int phobos = 1;
++    int phobos = 0;
+ 
+     /* The number of arguments being added to what's in argv, other than
+        libraries.  We use this to track the number of times we've inserted
--- gcc-4.6-4.6.3.orig/debian/patches/svn-doc-updates.diff
+++ gcc-4.6-4.6.3/debian/patches/svn-doc-updates.diff
@@ -0,0 +1,105 @@
+# DP: updates from the 4.6 branch upto 20110816 (documentation).
+
+svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_6_1_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch \
+	| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
+	| awk '/^Index:.*\.texi/ {skip=0; print; next} /^Index:/ {skip=1; next} skip==0'
+
+Index: gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi	(.../tags/gcc_4_6_1_release)
++++ b/src/gcc/doc/invoke.texi	(.../branches/gcc-4_6-branch)
+@@ -611,7 +611,8 @@
+ -momit-leaf-frame-pointer  -mno-red-zone -mno-tls-direct-seg-refs @gol
+ -mcmodel=@var{code-model} -mabi=@var{name} @gol
+ -m32  -m64 -mlarge-data-threshold=@var{num} @gol
+--msse2avx -mfentry -m8bit-idiv}
++-msse2avx -mfentry -m8bit-idiv @gol
++-mavx256-split-unaligned-load -mavx256-split-unaligned-store}
+ 
+ @emph{i386 and x86-64 Windows Options}
+ @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll
+@@ -12172,6 +12173,10 @@
+ @item corei7-avx
+ Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
+ SSE4.1, SSE4.2, AVX, AES and PCLMUL instruction set support.
++@item core-avx-i
++Intel Core CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
++SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND and F16C instruction
++set support.
+ @item atom
+ Intel Atom CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3
+ instruction set support.
+@@ -12769,6 +12774,12 @@
+ to 255, 8bit unsigned integer divide will be used instead of
+ 32bit/64bit integer divide.
+ 
++@item -mavx256-split-unaligned-load
++@item -mavx256-split-unaligned-store
++@opindex avx256-split-unaligned-load
++@opindex avx256-split-unaligned-store
++Split 32-byte AVX unaligned load and store.
++
+ @end table
+ 
+ These @samp{-m} switches are supported in addition to the above
+Index: gcc/doc/md.texi
+===================================================================
+--- a/src/gcc/doc/md.texi	(.../tags/gcc_4_6_1_release)
++++ b/src/gcc/doc/md.texi	(.../branches/gcc-4_6-branch)
+@@ -4641,8 +4641,9 @@
+ string.  The instruction is not allowed to prefetch more than one byte
+ at a time since either string may end in the first byte and reading past
+ that may access an invalid page or segment and cause a fault.  The
+-effect of the instruction is to store a value in operand 0 whose sign
+-indicates the result of the comparison.
++comparison terminates early if the fetched bytes are different or if
++they are equal to zero.  The effect of the instruction is to store a
++value in operand 0 whose sign indicates the result of the comparison.
+ 
+ @cindex @code{cmpstr@var{m}} instruction pattern
+ @item @samp{cmpstr@var{m}}
+@@ -4660,8 +4661,10 @@
+ order starting at the beginning of each string.  The instruction is not allowed
+ to prefetch more than one byte at a time since either string may end in the
+ first byte and reading past that may access an invalid page or segment and
+-cause a fault.  The effect of the instruction is to store a value in operand 0
+-whose sign indicates the result of the comparison.
++cause a fault.  The comparison will terminate when the fetched bytes
++are different or if they are equal to zero.  The effect of the
++instruction is to store a value in operand 0 whose sign indicates the
++result of the comparison.
+ 
+ @cindex @code{cmpmem@var{m}} instruction pattern
+ @item @samp{cmpmem@var{m}}
+@@ -4669,9 +4672,10 @@
+ of @samp{cmpstr@var{m}}.  The two memory blocks specified are compared
+ byte by byte in lexicographic order starting at the beginning of each
+ block.  Unlike @samp{cmpstr@var{m}} the instruction can prefetch
+-any bytes in the two memory blocks.  The effect of the instruction is
+-to store a value in operand 0 whose sign indicates the result of the
+-comparison.
++any bytes in the two memory blocks.  Also unlike @samp{cmpstr@var{m}}
++the comparison will not stop if both bytes are zero.  The effect of
++the instruction is to store a value in operand 0 whose sign indicates
++the result of the comparison.
+ 
+ @cindex @code{strlen@var{m}} instruction pattern
+ @item @samp{strlen@var{m}}
+@@ -5510,7 +5514,7 @@
+ @cindex @code{stack_protect_set} instruction pattern
+ @item @samp{stack_protect_set}
+ 
+-This pattern, if defined, moves a @code{Pmode} value from the memory
++This pattern, if defined, moves a @code{ptr_mode} value from the memory
+ in operand 1 to the memory in operand 0 without leaving the value in
+ a register afterward.  This is to avoid leaking the value some place
+ that an attacker might use to rewrite the stack guard slot after
+@@ -5521,7 +5525,7 @@
+ @cindex @code{stack_protect_test} instruction pattern
+ @item @samp{stack_protect_test}
+ 
+-This pattern, if defined, compares a @code{Pmode} value from the
++This pattern, if defined, compares a @code{ptr_mode} value from the
+ memory in operand 1 with the memory in operand 0 without leaving the
+ value in a register afterward and branches to operand 2 if the values
+ weren't equal.
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-libstdcxx.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-libstdcxx.mk
@@ -0,0 +1,433 @@
+
+ifeq ($(with_libcxx),yes)
+  $(lib_binaries)  += libstdcxx
+endif
+ifeq ($(with_lib64cxx),yes)
+  $(lib_binaries)  += lib64stdcxx
+endif
+ifeq ($(with_lib64cxxdbg),yes)
+  $(lib_binaries)	+= lib64stdcxxdbg
+endif
+ifeq ($(with_lib32cxx),yes)
+  $(lib_binaries)	+= lib32stdcxx
+endif
+ifeq ($(with_lib32cxxdbg),yes)
+  $(lib_binaries)	+= lib32stdcxxdbg
+endif
+ifeq ($(with_libn32cxx),yes)
+  $(lib_binaries)	+= libn32stdcxx
+endif
+ifeq ($(with_libn32cxxdbg),yes)
+  $(lib_binaries)	+= libn32stdcxxdbg
+endif
+ifeq ($(with_libhfcxx),yes)
+  $(lib_binaries)	+= libhfstdcxx
+endif
+ifeq ($(with_libhfcxxdbg),yes)
+  $(lib_binaries)	+= libhfstdcxxdbg
+endif
+ifeq ($(with_libsfcxx),yes)
+  $(lib_binaries)	+= libsfstdcxx
+endif
+ifeq ($(with_libsfcxxdbg),yes)
+  $(lib_binaries)	+= libsfstdcxxdbg
+endif
+
+ifeq ($(with_cxxdev),yes)
+  $(lib_binaries)  += libstdcxx-dev
+  ifneq ($(DEB_CROSS),yes)
+    indep_binaries := $(indep_binaries) libstdcxx-doc
+  endif
+endif
+
+libstdc_ext = -$(BASE_VERSION)
+
+p_lib	= libstdc++$(CXX_SONAME)$(cross_lib_arch)
+p_lib64	= lib64stdc++$(CXX_SONAME)$(cross_lib_arch)
+p_lib32	= lib32stdc++$(CXX_SONAME)$(cross_lib_arch)
+p_libn32= libn32stdc++$(CXX_SONAME)$(cross_lib_arch)
+p_libhf	= libhfstdc++$(CXX_SONAME)$(cross_lib_arch)
+p_libsf	= libsfstdc++$(CXX_SONAME)$(cross_lib_arch)
+p_dev	= libstdc++$(CXX_SONAME)$(libstdc_ext)-dev$(cross_lib_arch)
+p_pic	= libstdc++$(CXX_SONAME)$(libstdc_ext)-pic$(cross_lib_arch)
+p_dbg	= libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbg64	= lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbg32	= lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbgn32= libn32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbghf	= libhfstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbgsf	= libsfstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_libd	= libstdc++$(CXX_SONAME)$(libstdc_ext)-doc
+
+d_lib	= debian/$(p_lib)
+d_lib64	= debian/$(p_lib64)
+d_lib32	= debian/$(p_lib32)
+d_libn32= debian/$(p_libn32)
+d_libhf	= debian/$(p_libhf)
+d_libsf	= debian/$(p_libsf)
+d_dev	= debian/$(p_dev)
+d_pic	= debian/$(p_pic)
+d_dbg	= debian/$(p_dbg)
+d_dbg64	= debian/$(p_dbg64)
+d_dbg32	= debian/$(p_dbg32)
+d_dbghf	= debian/$(p_dbghf)
+d_dbgsf	= debian/$(p_dbgsf)
+d_libd	= debian/$(p_libd)
+
+dirs_dev = \
+	$(docdir)/$(p_base)/C++ \
+	$(usr_lib) \
+	$(gcc_lib_dir)/include \
+	$(cxx_inc_dir)
+
+files_dev = \
+	$(cxx_inc_dir)/ \
+	$(gcc_lib_dir)/libstdc++.{a,so} \
+	$(gcc_lib_dir)/libsupc++.a
+
+dirs_dbg = \
+	$(docdir) \
+	$(PF)/lib/debug/$(usr_lib) \
+	$(usr_lib)/debug \
+	$(gcc_lib_dir)
+files_dbg = \
+	$(usr_lib)/debug/libstdc++.{a,so*}
+
+ifneq ($(DEB_CROSS),yes)
+  dirs_dbg  += $(PF)/share/gcc-$(BASE_VERSION)/python
+  files_dbg += $(PF)/share/gcc-$(BASE_VERSION)/python/libstdcxx
+endif
+
+dirs_pic = \
+	$(docdir) \
+	$(gcc_lib_dir)
+files_pic = \
+	$(gcc_lib_dir)/libstdc++_pic.a
+
+# ----------------------------------------------------------------------
+
+gxx_baseline_dir = $(shell \
+			sed -n '/^baseline_dir *=/s,.*= *\(.*\)$$,\1,p' \
+			    $(buildlibdir)/libstdc++-v3/testsuite/Makefile)
+gxx_baseline_file = $(gxx_baseline_dir)/baseline_symbols.txt
+
+debian/README.libstdc++-baseline:
+	cat debian/README.libstdc++-baseline.in \
+		> debian/README.libstdc++-baseline
+
+	baseline_name=`basename $(gxx_baseline_dir)`; \
+	baseline_parentdir=`dirname $(gxx_baseline_dir)`; \
+	compat_baseline_name=""; \
+	if [ -f "$(gxx_baseline_file)" ]; then \
+	  ( \
+	    echo "A baseline file for $$baseline_name was found."; \
+	    echo "Running the check-abi script ..."; \
+	    echo ""; \
+	    $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite \
+		check-abi; \
+	  ) >> debian/README.libstdc++-baseline; \
+	else \
+	  ( \
+	    echo "No baseline file found for $$baseline_name."; \
+	    echo "Generating a new baseline file ..."; \
+	    echo ""; \
+	  ) >> debian/README.libstdc++-baseline; \
+	  mkdir -p $(gxx_baseline_dir); \
+	  $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite new-abi-baseline; \
+	  if [ -f $(gxx_baseline_file) ]; then \
+	    cat $(gxx_baseline_file); \
+	  else \
+	    cat $$(find $(buildlibdir)/libstdc++-v3 $(srcdir)/libstdc++-v3 -name '.new') || true; \
+	  fi >> debian/README.libstdc++-baseline; \
+	fi
+
+# ----------------------------------------------------------------------
+define __do_libstdcxx
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l)
+
+	dh_installdirs -p$(p_l) \
+		$(docdir) \
+		$(usr_lib$(2))
+
+	cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \
+		$(d_l)/$(usr_lib$(2))/.
+
+	debian/dh_doclink -p$(p_l) $(p_base)
+	debian/dh_rmemptydirs -p$(p_l)
+
+	dh_strip -p$(p_l)
+	dh_compress -p$(p_l)
+	dh_fixperms -p$(p_l)
+
+	dh_makeshlibs -p$(p_l) || echo FIXME: libstdc++ symbols
+	$(call cross_mangle_shlibs,$(p_l))
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		-L$(p_l$(2)gcc) -l:$(d)/$(usr_lib$(2)):
+	$(call cross_mangle_substvars,$(p_l))
+
+	dh_gencontrol -p$(p_l) -- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_l))
+	dh_installdeb -p$(p_l)
+	dh_md5sums -p$(p_l)
+	dh_builddeb -p$(p_l)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+define __do_libstdcxx_dbg
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_d)
+	dh_installdirs -p$(p_d) \
+		$(PF)/lib/debug/$(usr_lib$(2)) \
+		$(usr_lib$(2))
+
+	cp -p $(d)/$(usr_lib$(2))/libstdc++.so.*.py \
+		$(d_d)/$(PF)/lib/debug/$(usr_lib$(2))/.;
+	$(if $(filter yes,$(with_lib$(2)cxx)),
+		cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \
+			$(d_d)/$(usr_lib$(2))/.;
+		dh_strip -p$(p_d) --keep-debug;
+		$(if $(filter yes,$(with_common_libs)),, # if !with_common_libs
+			# remove the debug symbols for libstdc++
+			# built by a newer version of GCC
+			rm -rf $(d_d)/usr/lib/debug/$(PF);
+		)
+		rm -f $(d_d)/$(usr_lib$(2))/libstdc++.so.*[0-9]
+	)
+
+	$(if $(filter yes,$(with_debug)),
+		mv $(d)/$(usr_lib$(2))/debug $(d_d)/$(usr_lib$(2))/.;
+		rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a
+	)
+
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \
+		-L$(p_l$(2)gcc) -l:$(d)/$(usr_lib$(2)):
+	$(call cross_mangle_substvars,$(p_d))
+
+	debian/dh_doclink -p$(p_d) $(p_base)
+	debian/dh_rmemptydirs -p$(p_d)
+
+	dh_compress -p$(p_d)
+	dh_fixperms -p$(p_d)
+	dh_gencontrol -p$(p_d) -- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_d))
+
+	dh_installdeb -p$(p_d)
+	dh_md5sums -p$(p_d)
+	dh_builddeb -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_libstdcxx = $(call __do_libstdcxx,lib$(1)stdc++$(CXX_SONAME),$(1))
+do_libstdcxx_dbg = $(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1))
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libstdcxx: $(install_stamp)
+	$(call do_libstdcxx,)
+
+$(binary_stamp)-lib64stdcxx: $(install_stamp)
+	$(call do_libstdcxx,64)
+
+$(binary_stamp)-lib32stdcxx: $(install_stamp)
+	$(call do_libstdcxx,32)
+
+$(binary_stamp)-libn32stdcxx: $(install_stamp)
+	$(call do_libstdcxx,n32)
+
+$(binary_stamp)-libhfstdcxx: $(install_stamp)
+	$(call do_libstdcxx,hf)
+
+$(binary_stamp)-libsfstdcxx: $(install_stamp)
+	$(call do_libstdcxx,sf)
+
+$(binary_stamp)-lib64stdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,64)
+
+$(binary_stamp)-lib32stdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,32)
+
+$(binary_stamp)-libn32stdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,n32)
+
+$(binary_stamp)-libhfstdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,hf)
+
+$(binary_stamp)-libsfstdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,sf)
+
+# ----------------------------------------------------------------------
+libcxxdev_deps = $(install_stamp)
+ifeq ($(with_libcxx),yes)
+  libcxxdev_deps += $(binary_stamp)-libstdcxx
+endif
+ifeq ($(with_check),yes)
+  libcxxdev_deps += debian/README.libstdc++-baseline
+endif
+$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_dev) $(d_pic)
+	dh_installdirs -p$(p_dev) $(dirs_dev)
+	dh_installdirs -p$(p_pic) $(dirs_pic)
+	dh_installdirs -p$(p_dbg) $(dirs_dbg)
+
+	: # - correct libstdc++-v3 file locations
+	mv $(d)/$(usr_lib)/libsupc++.a $(d)/$(gcc_lib_dir)/
+	mv $(d)/$(usr_lib)/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/
+	ln -sf ../../../$(DEB_TARGET_GNU_TYPE)/libstdc++.so.$(CXX_SONAME) \
+		$(d)/$(gcc_lib_dir)/libstdc++.so
+	mv $(d)/$(usr_lib)/libstdc++_pic.a $(d)/$(gcc_lib_dir)/
+
+	rm -f $(d)/$(usr_lib)/debug/libstdc++_pic.a
+	rm -f $(d)/$(usr_lib64)/debug/libstdc++_pic.a
+
+	: # remove precompiled headers
+	-find $(d) -type d -name '*.gch' | xargs rm -rf
+
+	for i in $(d)/$(PF)/include/c++/$(GCC_VERSION)/*-linux; do \
+	  if [ -d $$i ]; then mv $$i $$i-gnu; fi; \
+	done
+
+	DH_COMPAT=2 dh_movefiles -p$(p_dev) $(files_dev)
+	DH_COMPAT=2 dh_movefiles -p$(p_pic) $(files_pic)
+ifeq ($(with_debug),yes)
+	DH_COMPAT=2 dh_movefiles -p$(p_dbg) $(files_dbg)
+endif
+
+	dh_link -p$(p_dev) \
+		/$(usr_lib)/libstdc++.so.$(CXX_SONAME) \
+		/$(gcc_lib_dir)/libstdc++.so \
+		/$(cxx_inc_dir) /$(PFL)/include/c++/$(GCC_VERSION)
+
+	debian/dh_doclink -p$(p_dev) $(p_base)
+	debian/dh_doclink -p$(p_pic) $(p_base)
+	debian/dh_doclink -p$(p_dbg) $(p_base)
+	cp -p $(srcdir)/libstdc++-v3/ChangeLog \
+		$(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++
+ifeq ($(with_check),yes)
+	cp -p debian/README.libstdc++-baseline \
+		$(d_dev)/$(docdir)/$(p_base)/C++/README.libstdc++-baseline
+	if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \
+	then \
+	  cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \
+	    $(d_dev)/$(docdir)/$(p_base)/C++/libstdc++_symbols.txt; \
+	fi
+endif
+	cp -p $(buildlibdir)/libstdc++-v3/src/libstdc++-symbols.ver \
+		$(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map
+
+	cp -p $(d)/$(usr_lib)/libstdc++.so.*.py \
+		$(d_dbg)/$(PF)/lib/debug/$(usr_lib)/
+ifeq ($(with_libcxx),yes)
+	cp -a $(d)/$(usr_lib)/libstdc++.so.*[0-9] \
+		$(d_dbg)/$(usr_lib)/
+	dh_strip -p$(p_dbg) --keep-debug
+	rm -f $(d_dbg)/$(usr_lib)/libstdc++.so.*[0-9]
+endif
+
+	dh_strip -p$(p_dev) --dbg-package=$(p_dbg)
+ifneq ($(with_common_libs),yes)
+	: # remove the debug symbols for libstdc++ built by a newer version of GCC
+	rm -rf $(d_dbg)/usr/lib/debug/$(PF)
+endif
+	dh_strip -p$(p_pic)
+
+ifeq ($(with_cxxdev),yes)
+	debian/dh_rmemptydirs -p$(p_dev)
+	debian/dh_rmemptydirs -p$(p_pic)
+	debian/dh_rmemptydirs -p$(p_dbg)
+endif
+
+	dh_compress -p$(p_dev) -p$(p_pic) -p$(p_dbg) -X.txt
+	dh_fixperms -p$(p_dev) -p$(p_pic) -p$(p_dbg)
+# XXX: what about biarchn32?
+#ifeq ($(biarch64),yes)
+#	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib64
+#else
+#	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib32/debug
+#endif
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg)
+	$(call cross_mangle_substvars,$(p_dbg))
+	dh_gencontrol -p$(p_dev) -p$(p_pic) -p$(p_dbg) \
+		-- -v$(DEB_VERSION) $(common_substvars)
+
+	dh_installdeb -p$(p_dev) -p$(p_pic) -p$(p_dbg)
+	dh_md5sums -p$(p_dev) -p$(p_pic) -p$(p_dbg)
+	dh_builddeb -p$(p_dev) -p$(p_pic) -p$(p_dbg)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+
+doxygen_doc_dir = $(buildlibdir)/libstdc++-v3/doc
+
+doxygen-docs: $(build_doxygen_stamp)
+$(build_doxygen_stamp):
+	$(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-html-doxygen
+	$(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-man-doxygen
+	-find $(doxygen_doc_dir)/doxygen/html -name 'struct*' -empty | xargs rm -f
+
+	touch $@
+
+$(binary_stamp)-libstdcxx-doc: $(install_stamp) doxygen-docs
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_libd)
+	dh_installdirs -p$(p_libd) \
+		$(docdir)/$(p_base)/libstdc++ \
+		$(PF)/share/man
+
+#	debian/dh_doclink -p$(p_libd) $(p_base)
+	dh_link -p$(p_libd) /usr/share/doc/$(p_base) /usr/share/doc/$(p_libd)
+	dh_installdocs -p$(p_libd)
+	rm -f $(d_libd)/$(docdir)/$(p_base)/copyright
+
+	cp -a $(srcdir)/libstdc++-v3/doc/html \
+		$(d_libd)/$(docdir)/$(p_base)/libstdc++/.
+
+	cp -a $(doxygen_doc_dir)/doxygen/html \
+		$(d_libd)/$(docdir)/$(p_base)/libstdc++/.
+
+	: FIXME: depending on the doxygen version
+	if [ -d $(doxygen_doc_dir)/doxygen/man/man3cxx ]; then \
+	  cp -a $(doxygen_doc_dir)/doxygen/man/man3cxx \
+	    $(d_libd)/$(PF)/share/man/man3; \
+	  if [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \
+	    cp -a $(doxygen_doc_dir)/doxygen/man/man3/* \
+	      $(d_libd)/$(PF)/share/man/man3/; \
+	  fi; \
+	elif [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \
+	  cp -a $(doxygen_doc_dir)/doxygen/man/man3 \
+	    $(d_libd)/$(PF)/share/man/man3; \
+	fi
+
+	for i in $(d_libd)/$(PF)/share/man/man3/*.3; do \
+	  [ -f $${i} ] || continue; \
+	  mv $${i} $${i}cxx; \
+	done
+	rm -f $(d_libd)/$(PF)/share/man/man3/todo.3*
+
+	mkdir -p $(d_libd)/usr/share/lintian/overrides
+	cp -p debian/$(p_libd).overrides \
+		$(d_libd)/usr/share/lintian/overrides/$(p_libd)
+
+	dh_compress -p$(p_libd) -Xhtml/17_intro -X.txt -X.tag -X.map
+	dh_fixperms -p$(p_libd)
+	dh_gencontrol -p$(p_libd) -- -v$(DEB_VERSION) $(common_substvars)
+
+	dh_installdeb -p$(p_libd)
+	dh_md5sums -p$(p_libd)
+	dh_builddeb -p$(p_libd)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-base.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-base.mk
@@ -0,0 +1,51 @@
+$(lib_binaries) += base
+
+# ---------------------------------------------------------------------------
+# gcc-base
+
+ifneq (,$(filter $(distrelease),oneiric))
+  additional_links = 4.6.1
+#else ifneq (,$(filter $(distrelease),wheezy sid precise))
+#  additional_links = 4.6.2
+else
+  additional_links =
+endif
+
+$(binary_stamp)-base: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_base)
+	dh_installdirs -p$(p_base) \
+		$(gcc_lexec_dir)
+
+	ln -sf $(BASE_VERSION) \
+	    $(d_base)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lib_dir))
+	for link in $(additional_links); do \
+	  ln -sf $(BASE_VERSION) \
+	    $(d_base)/$$(dirname $(gcc_lib_dir))/$$link; \
+        done
+ifneq ($(gcc_lib_dir),$(gcc_lexec_dir))
+	ln -sf $(BASE_VERSION) \
+	    $(d_base)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lexec_dir))
+	for link in $(additional_links); do \
+	  ln -sf $(BASE_VERSION) \
+	    $(d_base)/$$(dirname $(gcc_lexec_dir))/$$link; \
+        done
+endif
+
+ifeq ($(with_spu),yes)
+	mkdir -p $(d_base)/$(gcc_spu_lexec_dir)
+	mkdir -p $(d_base)/$(gcc_spu_lib_dir)
+	ln -sf $(BASE_VERSION) $(d_base)/$(spulibexecdir)/gcc/spu/$(GCC_VERSION)
+	ln -sf $(BASE_VERSION) $(d_base)/usr/spu/lib/gcc/spu/$(GCC_VERSION)
+endif
+
+	dh_installdocs -p$(p_base) debian/README.Debian.$(DEB_TARGET_ARCH)
+	dh_installchangelogs -p$(p_base)
+	dh_compress -p$(p_base)
+	dh_fixperms -p$(p_base)
+	dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_base)
+	dh_md5sums -p$(p_base)
+	dh_builddeb -p$(p_base)
+	touch $@
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-cxx.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-cxx.mk
@@ -0,0 +1,136 @@
+ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchhf) $(biarchsf)))
+  arch_binaries  := $(arch_binaries) cxx-multi
+endif
+arch_binaries  := $(arch_binaries) cxx
+
+dirs_cxx = \
+	$(docdir)/$(p_base)/C++ \
+	$(PF)/bin \
+	$(PF)/share/info \
+	$(gcc_lexec_dir) \
+	$(PF)/share/man/man1
+files_cxx = \
+	$(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \
+	$(gcc_lexec_dir)/cc1plus
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_cxx += \
+	$(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1
+endif
+
+p_cxx_m	= g++$(pkg_ver)-multilib$(cross_bin_arch)
+d_cxx_m	= debian/$(p_cxx_m)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-cxx: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cxx)
+	dh_installdirs -p$(p_cxx) $(dirs_cxx)
+	DH_COMPAT=2 dh_movefiles -p$(p_cxx) $(files_cxx)
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf g++$(pkg_ver) \
+	    $(d_cxx)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver)
+	ln -sf g++$(pkg_ver) \
+	    $(d_cxx)/$(PF)/bin/$(TARGET_ALIAS)-g++$(pkg_ver)
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+# g++ man page is a .so link
+	rm -f $(d_cxx)/$(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1
+	ln -sf $(cmd_prefix)gcc$(pkg_ver).1.gz \
+		$(d_cxx)/$(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1.gz
+  ifneq ($(DEB_CROSS),yes)
+	ln -sf g++$(pkg_ver).1.gz \
+	    $(d_cxx)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver).1.gz
+	ln -sf g++$(pkg_ver).1.gz \
+	    $(d_cxx)/$(PF)/share/man/man1/$(TARGET_ALIAS)-g++$(pkg_ver).1.gz
+  endif
+endif
+
+	debian/dh_doclink -p$(p_cxx) $(p_base)
+	cp -p debian/README.C++ $(d_cxx)/$(docdir)/$(p_base)/C++/
+	cp -p $(srcdir)/gcc/cp/ChangeLog \
+		$(d_cxx)/$(docdir)/$(p_base)/C++/changelog
+	debian/dh_rmemptydirs -p$(p_cxx)
+
+	mkdir -p $(d_cxx)/$(docdir)/$(p_base)/test-summaries
+	echo "TEST COMPARE BEGIN"
+ifeq ($(with_check),yes)
+	cp -p $$(find $(builddir) -mindepth 3 -name '*.sum') \
+		$(d_cxx)/$(docdir)/$(p_base)/test-summaries/
+  ifeq (0,1)
+	cd $(builddir); \
+	for i in $(CURDIR)/$(d_cxx)/$(docdir)/$(p_base)/test-summaries/*.sum; do \
+	  b=$$(basename $$i); \
+	  if [ -f /usr/share/doc/$(p_base)/test-summaries/$$b.gz ]; then \
+	    zcat /usr/share/doc/$(p_base)/test-summaries/$$b.gz > /tmp/$$b; \
+	    if sh $(srcdir)/contrib/test_summary /tmp/$$b $$i; then \
+	      echo "$$b: OK"; \
+	    else \
+	      echo "$$b: FAILURES"; \
+	    fi; \
+	    rm -f /tmp/$$b; \
+	  else \
+	    echo "Test summary for $$b is not available"; \
+	  fi; \
+	done
+  endif
+else
+	echo "Nothing to compare (testsuite not run)"
+endif	
+	echo "TEST COMPARE END"
+
+	dh_strip -p$(p_cxx)
+	dh_compress -p$(p_cxx)
+	dh_fixperms -p$(p_cxx)
+	dh_shlibdeps -p$(p_cxx)
+	dh_gencontrol -p$(p_cxx) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_cxx)
+	dh_md5sums -p$(p_cxx)
+	dh_builddeb -p$(p_cxx)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+define do_cxx
+	dh_installdirs -p$(p_cxx_m) $(gcc_lib_dir($1))
+	mv $(d)/$(usr_lib$(1))/lib*c++*.{a,so} $(d)/$(gcc_lib_dir$(1))/.
+	DH_COMPAT=2 dh_movefiles -p$(p_cxx_m) \
+		$(gcc_lib_dir$(1))/libstdc++.{a,so} \
+	        $(gcc_lib_dir$(1))/libsupc++.a \
+		$(gcc_lib_dir$(1))/libstdc++_pic.a
+	dh_link -p$(p_cxx_m) \
+		/$(usr_lib$(1))/libstdc++.so.$(CXX_SONAME) \
+		/$(gcc_lib_dir$(1))/libstdc++.so
+
+endef
+
+$(binary_stamp)-cxx-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cxx_m)
+	dh_installdirs -p$(p_cxx_m) \
+		$(docdir)
+
+	$(foreach flavour,$(flavours), \
+		$(call do_cxx,$(flavour)))
+
+	debian/dh_doclink -p$(p_cxx_m) $(p_base)
+	debian/dh_rmemptydirs -p$(p_cxx_m)
+
+	dh_strip -p$(p_cxx_m)
+	dh_compress -p$(p_cxx_m)
+	dh_fixperms -p$(p_cxx_m)
+	dh_shlibdeps -p$(p_cxx_m)
+	dh_gencontrol -p$(p_cxx_m) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_cxx_m)
+	dh_md5sums -p$(p_cxx_m)
+	dh_builddeb -p$(p_cxx_m)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-objc.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-objc.mk
@@ -0,0 +1,88 @@
+ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchhf) $(biarchsf)))
+  arch_binaries  := $(arch_binaries) objc-multi
+endif
+arch_binaries := $(arch_binaries) objc
+
+p_objc	= gobjc$(pkg_ver)$(cross_bin_arch)
+d_objc	= debian/$(p_objc)
+
+p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch)
+d_objc_m= debian/$(p_objc_m)
+
+dirs_objc = \
+	$(docdir)/$(p_base)/ObjC \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir)/include
+
+files_objc = \
+	$(gcc_lexec_dir)/cc1obj \
+	$(gcc_lib_dir)/include/objc
+
+define do_objc
+	dh_installdirs -p$(2) $(gcc_lib_dir$(1))
+	$(call install_gcc_lib,libobjc,$(OBJC_SONAME),$(1),$(2))
+	$(if $(filter yes,$(with_objc_gc)),
+		dh_link -p$(2) \
+		  /$(usr_lib$(1))/libobjc_gc.so.$(OBJC_SONAME) \
+		  /$(gcc_lib_dir$(1))/libobjc_gc.so
+	)
+
+endef
+
+$(binary_stamp)-objc: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objc)
+	dh_installdirs -p$(p_objc) $(dirs_objc)
+	DH_COMPAT=2 dh_movefiles -p$(p_objc) $(files_objc)
+
+	$(call do_objc,,$(p_objc))
+
+	cp -p $(srcdir)/libobjc/{README*,THREADS*} \
+		$(d_objc)/$(docdir)/$(p_base)/ObjC/.
+
+	cp -p $(srcdir)/libobjc/ChangeLog \
+		$(d_objc)/$(docdir)/$(p_base)/ObjC/changelog.libobjc
+
+	debian/dh_doclink -p$(p_objc) $(p_base)
+
+	debian/dh_rmemptydirs -p$(p_objc)
+
+	dh_strip -p$(p_objc)
+	dh_compress -p$(p_objc)
+
+	dh_fixperms -p$(p_objc)
+	dh_shlibdeps -p$(p_objc)
+	dh_gencontrol -p$(p_objc) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_objc)
+	dh_md5sums -p$(p_objc)
+	dh_builddeb -p$(p_objc)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-objc-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objc_m)
+	dh_installdirs -p$(p_objc_m) $(docdir)
+
+	$(foreach flavour,$(flavours), \
+		$(call do_objc,$(flavour),$(p_objc_m)))
+
+	debian/dh_doclink -p$(p_objc_m) $(p_base)
+
+	dh_strip -p$(p_objc_m)
+	dh_compress -p$(p_objc_m)
+
+	dh_fixperms -p$(p_objc_m)
+	dh_shlibdeps -p$(p_objc_m)
+	dh_gencontrol -p$(p_objc_m) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_objc_m)
+	dh_md5sums -p$(p_objc_m)
+	dh_builddeb -p$(p_objc_m)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-softfloat.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-softfloat.mk
@@ -0,0 +1,36 @@
+arch_binaries  := $(arch_binaries) softfloat
+
+p_softfloat  = gcc$(pkg_ver)-soft-float
+d_softfloat  = debian/$(p_softfloat)
+
+dirs_softfloat = \
+	$(PFL)/$(libdir) \
+	$(gcc_lib_dir)
+
+files_softfloat = \
+	$(PFL)/$(libdir)/soft-float \
+	$(gcc_lib_dir)/soft-float
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-softfloat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_softfloat)
+	dh_installdirs -p$(p_softfloat) $(dirs_softfloat)
+	DH_COMPAT=2 dh_movefiles -p$(p_softfloat) $(files_softfloat)
+	rm -rf $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.so*
+	mv $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.a \
+		$(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp_nonshared.a
+	debian/dh_doclink -p$(p_softfloat) $(p_base)
+	dh_strip -p$(p_softfloat) -Xlibgcj.a
+	dh_compress -p$(p_softfloat)
+	dh_fixperms -p$(p_softfloat)
+	dh_shlibdeps -p$(p_softfloat)
+	dh_gencontrol -p$(p_softfloat) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_softfloat)
+	dh_md5sums -p$(p_softfloat)
+	dh_builddeb -p$(p_softfloat)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-libgccmath.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-libgccmath.mk
@@ -0,0 +1,141 @@
+ifeq ($(with_libgmath),yes)
+  arch_binaries  := $(arch_binaries) libgmath
+endif
+#ifeq ($(with_libgmathdev),yes)
+#  arch_binaries  := $(arch_binaries) libgmathdev
+#endif
+ifeq ($(with_lib64gmath),yes)
+  arch_binaries  := $(arch_binaries) lib64gmath
+endif
+ifeq ($(with_lib32gmath),yes)
+  arch_binaries	:= $(arch_binaries) lib32gmath
+endif
+
+p_gmath		= libgccmath$(GCCMATH_SONAME)
+p_l32gmath	= lib32gccmath$(GCCMATH_SONAME)
+p_l64gmath	= lib64gccmath$(GCCMATH_SONAME)
+p_gmathd	= libgccmath$(GCCMATH_SONAME)-dev
+
+d_gmath		= debian/$(p_gmath)
+d_l32gmath	= debian/$(p_l32gmath)
+d_l64gmath	= debian/$(p_l64gmath)
+d_gmathd	= debian/$(p_gmathd)
+
+dirs_gmath = \
+	$(docdir) \
+	$(PF)/$(libdir)
+files_gmath = \
+	$(PF)/$(libdir)/libgcc-math.so.*
+
+dirs_gmathd = \
+	$(docdir)/$(p_base)
+ifeq ($(with_libgmath),yes)
+files_gmathd = \
+	$(PF)/$(libdir)/libgcc-math.{a,so}
+endif
+
+ifeq ($(with_lib32gmath),yes)
+	dirs_gmathd  += $(lib32)
+	files_gmathd += $(lib32)/libgcc-math.{a,so}
+endif
+ifeq ($(with_lib64gmath),yes)
+	dirs_gmathd  += $(PF)/lib64
+	files_gmathd += $(PF)/lib64/libgcc-math.{a,so}
+endif
+
+$(binary_stamp)-libgmath: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+	rm -rf $(d_gmath)
+	dh_installdirs -p$(p_gmath) $(dirs_gmath)
+	DH_COMPAT=2 dh_movefiles -p$(p_gmath) $(files_gmath)
+	debian/dh_doclink -p$(p_gmath) $(p_base)
+	debian/dh_rmemptydirs -p$(p_gmath)
+	dh_strip -p$(p_gmath)
+	dh_compress -p$(p_gmath)
+	dh_fixperms -p$(p_gmath)
+	dh_makeshlibs -p$(p_gmath) -V '$(p_gmath) (>= $(DEB_GCCMATH_SOVERSION))'
+	dh_shlibdeps -p$(p_gmath)
+	dh_gencontrol -p$(p_gmath) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_gmath)
+	dh_md5sums -p$(p_gmath)
+	dh_builddeb -p$(p_gmath)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgmathdev: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gmathd)
+	dh_installdirs -p$(p_gmathd) $(dirs_gmathd)
+	DH_COMPAT=2 dh_movefiles -p$(p_gmathd) $(files_gmathd)
+	debian/dh_doclink -p$(p_gmathd) $(p_base)
+	cp -p $(srcdir)/libgcc-math/ChangeLog \
+		$(d_gmathd)/$(docdir)/$(p_base)/changelog.libgcc-math
+	debian/dh_rmemptydirs -p$(p_gmathd)
+	dh_strip -p$(p_gmathd)
+	dh_compress -p$(p_gmathd)
+	dh_fixperms -p$(p_gmathd)
+	dh_shlibdeps -p$(p_gmathd)
+	dh_gencontrol -p$(p_gmathd) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_gmathd)
+	dh_md5sums -p$(p_gmathd)
+	dh_builddeb -p$(p_gmathd)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-lib64gmath: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l64gmath)
+	dh_installdirs -p$(p_l64gmath) \
+		$(PF)/lib64
+	DH_COMPAT=2 dh_movefiles -p$(p_l64gmath) \
+		$(PF)/lib64/libgcc-math.so.*
+
+	debian/dh_doclink -p$(p_l64gmath) $(p_base)
+
+	dh_strip -p$(p_l64gmath)
+	dh_compress -p$(p_l64gmath)
+	dh_fixperms -p$(p_l64gmath)
+	dh_makeshlibs -p$(p_l64gmath) -V '$(p_l64gmath) (>= $(DEB_GCCMATH_SOVERSION))'
+#	dh_shlibdeps -p$(p_l64gmath)
+	dh_gencontrol -p$(p_l64gmath) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_l64gmath)
+	dh_md5sums -p$(p_l64gmath)
+	dh_builddeb -p$(p_l64gmath)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-lib32gmath: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l32gmath)
+	dh_installdirs -p$(p_l32gmath) \
+		$(lib32)
+	DH_COMPAT=2 dh_movefiles -p$(p_l32gmath) \
+		$(lib32)/libgcc-math.so.*
+
+	debian/dh_doclink -p$(p_l32gmath) $(p_base)
+
+	dh_strip -p$(p_l32gmath)
+	dh_compress -p$(p_l32gmath)
+	dh_fixperms -p$(p_l32gmath)
+	dh_makeshlibs -p$(p_l32gmath) -V '$(p_l32gmath) (>= $(DEB_GCCMATH_SOVERSION))'
+	dh_shlibdeps -p$(p_l32gmath)
+	dh_gencontrol -p$(p_l32gmath) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_l32gmath)
+	dh_md5sums -p$(p_l32gmath)
+	dh_builddeb -p$(p_l32gmath)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-libssp.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-libssp.mk
@@ -0,0 +1,150 @@
+arch_binaries  := $(arch_binaries) libssp
+ifeq ($(with_lib64ssp),yes)
+  arch_binaries  := $(arch_binaries) lib64ssp
+endif
+ifeq ($(with_lib32ssp),yes)
+  arch_binaries	:= $(arch_binaries) lib32ssp
+endif
+ifeq ($(with_libn32ssp),yes)
+  arch_binaries	:= $(arch_binaries) libn32ssp
+endif
+
+p_ssp	= libssp$(SSP_SONAME)
+p_ssp32	= lib32ssp$(SSP_SONAME)
+p_ssp64	= lib64ssp$(SSP_SONAME)
+p_sspd	= libssp$(SSP_SONAME)-dev
+
+d_ssp	= debian/$(p_ssp)
+d_ssp32	= debian/$(p_ssp32)
+d_ssp64	= debian/$(p_ssp64)
+d_sspd	= debian/$(p_sspd)
+
+dirs_ssp = \
+	$(docdir)/$(p_base) \
+	$(PF)/$(libdir)
+files_ssp = \
+	$(PF)/$(libdir)/libssp.so.*
+
+dirs_sspd = \
+	$(docdir) \
+	$(PF)/include \
+	$(PF)/$(libdir)
+files_sspd = \
+	$(gcc_lib_dir)/include/ssp \
+	$(PF)/$(libdir)/libssp.{a,so} \
+	$(PF)/$(libdir)/libssp_nonshared.a
+
+ifeq ($(with_lib32ssp),yes)
+	dirs_sspd  += $(lib32)
+	files_sspd += $(lib32)/libssp.{a,so}
+	files_sspd += $(lib32)/libssp_nonshared.a
+endif
+ifeq ($(with_lib64ssp),yes)
+	dirs_sspd  += $(PF)/lib64
+	files_sspd += $(PF)/lib64/libssp.{a,so}
+	files_sspd += $(PF)/lib64/libssp_nonshared.a
+endif
+
+$(binary_stamp)-libssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_ssp)
+	dh_installdirs -p$(p_ssp)
+
+	DH_COMPAT=2 dh_movefiles -p$(p_ssp) $(files_ssp)
+	debian/dh_doclink -p$(p_ssp) $(p_base)
+
+	debian/dh_rmemptydirs -p$(p_ssp)
+
+	dh_strip -p$(p_ssp)
+	dh_compress -p$(p_ssp)
+	dh_fixperms -p$(p_ssp)
+	dh_makeshlibs -p$(p_ssp) -V '$(p_ssp) (>= $(DEB_SOVERSION))'
+	dh_shlibdeps -p$(p_ssp)
+	dh_gencontrol -p$(p_ssp) \
+		-- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_ssp)
+	dh_md5sums -p$(p_ssp)
+	dh_builddeb -p$(p_ssp)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-lib64ssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_ssp64)
+	dh_installdirs -p$(p_ssp64) \
+		$(PF)/lib64
+	DH_COMPAT=2 dh_movefiles -p$(p_ssp64) \
+		$(PF)/lib64/libssp.so.*
+
+	debian/dh_doclink -p$(p_ssp64) $(p_base)
+
+	dh_strip -p$(p_ssp64)
+	dh_compress -p$(p_ssp64)
+	dh_fixperms -p$(p_ssp64)
+	dh_makeshlibs -p$(p_ssp64) -V '$(p_ssp64) (>= $(DEB_SOVERSION))'
+#	dh_shlibdeps -p$(p_ssp64)
+	dh_gencontrol -p$(p_ssp64) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_ssp64)
+	dh_md5sums -p$(p_ssp64)
+	dh_builddeb -p$(p_ssp64)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-lib32ssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_ssp32)
+	dh_installdirs -p$(p_ssp32) \
+		$(lib32)
+	DH_COMPAT=2 dh_movefiles -p$(p_ssp32) \
+		$(lib32)/libssp.so.*
+
+	debian/dh_doclink -p$(p_ssp32) $(p_base)
+
+	dh_strip -p$(p_ssp32)
+	dh_compress -p$(p_ssp32)
+	dh_fixperms -p$(p_ssp32)
+	dh_makeshlibs -p$(p_ssp32) -V '$(p_ssp32) (>= $(DEB_SOVERSION))'
+#	dh_shlibdeps -p$(p_ssp32)
+	dh_gencontrol -p$(p_ssp32) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_ssp32)
+	dh_md5sums -p$(p_ssp32)
+	dh_builddeb -p$(p_ssp32)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libn32ssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_sspn32)
+	dh_installdirs -p$(p_sspn32) \
+		$(PF)/$(libn32)
+	DH_COMPAT=2 dh_movefiles -p$(p_sspn32) \
+		$(PF)/$(libn32)/libssp.so.*
+
+	debian/dh_doclink -p$(p_sspn32) $(p_base)
+
+	dh_strip -p$(p_sspn32)
+	dh_compress -p$(p_sspn32)
+	dh_fixperms -p$(p_sspn32)
+	dh_makeshlibs -p$(p_sspn32) -V '$(p_sspn32) (>= $(DEB_SOVERSION))'
+#	dh_shlibdeps -p$(p_sspn32)
+	dh_gencontrol -p$(p_sspn32) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_sspn32)
+	dh_md5sums -p$(p_sspn32)
+	dh_builddeb -p$(p_sspn32)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-libobjc.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-libobjc.mk
@@ -0,0 +1,78 @@
+ifeq ($(with_objcdev),yes)
+  $(lib_binaries) += libobjc
+endif
+ifeq ($(with_lib64objc),yes)
+  $(lib_binaries)  += lib64objc
+endif
+ifeq ($(with_lib32objc),yes)
+  $(lib_binaries)	+= lib32objc
+endif
+ifeq ($(with_libn32objc),yes)
+  $(lib_binaries)	+= libn32objc
+endif
+ifeq ($(with_libhfobjc),yes)
+  $(lib_binaries)	+= libhfobjc
+endif
+ifeq ($(with_libsfobjc),yes)
+  $(lib_binaries)	+= libsfobjc
+endif
+
+files_lobjc = \
+	$(usr_lib$(2))/libobjc.so.*
+ifeq ($(with_objc_gc),yes)
+  files_lobjc += \
+	$(usr_lib$(2))/libobjc_gc.so.*
+endif
+
+define __do_libobjc
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) \
+		$(usr_lib$(2))
+	DH_COMPAT=2 dh_movefiles -p$(p_l) \
+		$(files_lobjc)
+
+	debian/dh_doclink -p$(p_l) $(p_base)
+	debian/dh_doclink -p$(p_d) $(p_base)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	dh_compress -p$(p_l) -p$(p_d)
+	dh_fixperms -p$(p_l) -p$(p_d)
+	dh_makeshlibs -p$(p_l) -Xlibobjc_gc.so
+	$(call cross_mangle_shlibs,$(p_l))
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l)
+	$(call cross_mangle_substvars,$(p_l))
+	dh_gencontrol -p$(p_l) -p$(p_d) \
+		-- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_l))
+	dh_installdeb -p$(p_l) -p$(p_d)
+	dh_md5sums -p$(p_l) -p$(p_d)
+	dh_builddeb -p$(p_l) -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(1))
+
+$(binary_stamp)-libobjc: $(install_stamp)
+	$(call do_libobjc,)
+
+$(binary_stamp)-lib64objc: $(install_stamp)
+	$(call do_libobjc,64)
+
+$(binary_stamp)-lib32objc: $(install_stamp)
+	$(call do_libobjc,32)
+
+$(binary_stamp)-libn32objc: $(install_stamp)
+	$(call do_libobjc,n32)
+
+$(binary_stamp)-libhfobjc: $(install_stamp)
+	$(call do_libobjc,hf)
+
+$(binary_stamp)-libsfobjc: $(install_stamp)
+	$(call do_libobjc,sf)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-objcxx.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-objcxx.mk
@@ -0,0 +1,65 @@
+ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchhf) $(biarchsf)))
+  arch_binaries  := $(arch_binaries) objcxx-multi
+endif
+arch_binaries := $(arch_binaries) objcxx
+
+p_objcx		= gobjc++$(pkg_ver)$(cross_bin_arch)
+d_objcx		= debian/$(p_objcx)
+
+p_objcx_m	= gobjc++$(pkg_ver)-multilib$(cross_bin_arch)
+d_objcx_m	= debian/$(p_objcx_m)
+
+dirs_objcx = \
+	$(docdir)/$(p_base)/Obj-C++ \
+	$(gcc_lexec_dir)
+
+files_objcx = \
+	$(gcc_lexec_dir)/cc1objplus
+
+$(binary_stamp)-objcxx: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objcx)
+	dh_installdirs -p$(p_objcx) $(dirs_objcx)
+	DH_COMPAT=2 dh_movefiles -p$(p_objcx) $(files_objcx)
+
+	debian/dh_doclink -p$(p_objcx) $(p_base)
+	cp -p $(srcdir)/gcc/objcp/ChangeLog \
+		$(d_objcx)/$(docdir)/$(p_base)/Obj-C++/changelog
+
+	debian/dh_rmemptydirs -p$(p_objcx)
+
+	dh_strip -p$(p_objcx)
+	dh_compress -p$(p_objcx)
+
+	dh_fixperms -p$(p_objcx)
+	dh_shlibdeps -p$(p_objcx)
+	dh_gencontrol -p$(p_objcx) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_objcx)
+	dh_md5sums -p$(p_objcx)
+	dh_builddeb -p$(p_objcx)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-objcxx-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objcx_m)
+
+	debian/dh_doclink -p$(p_objcx_m) $(p_base)
+	debian/dh_rmemptydirs -p$(p_objcx_m)
+	dh_strip -p$(p_objcx_m)
+	dh_compress -p$(p_objcx_m)
+
+	dh_fixperms -p$(p_objcx_m)
+	dh_shlibdeps -p$(p_objcx_m)
+	dh_gencontrol -p$(p_objcx_m) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_objcx_m)
+	dh_md5sums -p$(p_objcx_m)
+	dh_builddeb -p$(p_objcx_m)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-libquadmath.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-libquadmath.mk
@@ -0,0 +1,67 @@
+$(lib_binaries)  += libqmath
+ifeq ($(with_lib64qmath),yes)
+  $(lib_binaries)  += lib64qmath
+endif
+ifeq ($(with_lib32qmath),yes)
+  $(lib_binaries)	+= lib32qmath
+endif
+ifeq ($(with_libn32qmath),yes)
+  $(lib_binaries)	+= libn32qmath
+endif
+ifeq ($(with_libhfqmath),yes)
+  $(lib_binaries)	+= libhfqmath
+endif
+ifeq ($(with_libsfqmath),yes)
+  $(lib_binaries)	+= libsfqmath
+endif
+
+define __do_qmath
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(2)
+	DH_COMPAT=2 dh_movefiles -p$(p_l) $(2)/libquadmath.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_base)
+	debian/dh_doclink -p$(p_d) $(p_base)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	dh_compress -p$(p_l) -p$(p_d)
+	dh_fixperms -p$(p_l) -p$(p_d)
+	dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(cross_shlibdeps) dh_shlibdeps -p$(p_l)
+	$(call cross_mangle_substvars,$(p_l))
+	dh_gencontrol -p$(p_l) -p$(p_d)	\
+		-- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_l))
+	dh_installdeb -p$(p_l) -p$(p_d)
+	dh_md5sums -p$(p_l) -p$(p_d)
+	dh_builddeb -p$(p_l) -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_qmath = $(call __do_qmath,lib$(1)quadmath$(QMATH_SONAME),$(usr_lib$(1)))
+
+$(binary_stamp)-libqmath: $(install_stamp)
+	$(call do_qmath,)
+
+$(binary_stamp)-lib64qmath: $(install_stamp)
+	$(call do_qmath,64)
+
+$(binary_stamp)-lib32qmath: $(install_stamp)
+	$(call do_qmath,32)
+
+$(binary_stamp)-libn32qmath: $(install_stamp)
+	$(call do_qmath,n32)
+
+$(binary_stamp)-libhfqmath: $(install_stamp)
+	$(call do_qmath,hf)
+
+$(binary_stamp)-libsfqmath: $(install_stamp)
+	$(call do_qmath,sf)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-spu.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-spu.mk
@@ -0,0 +1,162 @@
+arch_binaries  := $(arch_binaries) spu spu-cxx spu-fortran
+
+p_spugcc  = gcc$(pkg_ver)-spu
+p_spucxx  = g++$(pkg_ver)-spu
+p_spuf95  = gfortran$(pkg_ver)-spu
+
+d_spugcc  = debian/$(p_spugcc)
+d_spucxx  = debian/$(p_spucxx)
+d_spuf95  = debian/$(p_spuf95)
+
+dirs_spugcc = \
+	$(PF)/bin \
+	$(gcc_spu_lexec_dir) \
+	$(gcc_spu_lib_dir) \
+
+files_spugcc = \
+	$(PF)/bin/spu-{cpp,gcc}$(pkg_ver) \
+	$(gcc_spu_lexec_dir)/{cc1,collect2,lto1,lto-wrapper} \
+	$(gcc_spu_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \
+	$(gcc_spu_lib_dir)/{include,include-fixed} \
+	$(gcc_spu_lib_dir)/{libgcc.a,libgcov.a,crtbegin.o,crtend.o} \
+
+ifeq ($(with_spucache),yes)
+    files_spugcc += \
+	$(gcc_spu_lib_dir)/libgcc_cache*.a
+  ifeq ($(with_spumea64),yes)
+    files_spugcc += \
+	$(gcc_spu_lib_dir)/mea64/libgcc_cache*.a
+  endif
+endif
+ifeq ($(with_spumea64),yes)
+    files_spugcc += \
+        $(gcc_spu_lib_dir)/mea64/{libgcc.a,libgcov.a,crtbegin.o,crtend.o}
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+    files_spugcc += \
+	$(PF)/share/man/man1/spu-{cpp,gcc}$(pkg_ver).1
+endif
+
+dirs_spucxx = \
+	$(PF)/bin \
+	$(gcc_spu_lexec_dir) \
+	$(gcc_spu_lib_dir) \
+
+files_spucxx = \
+	$(PF)/bin/spu-g++$(pkg_ver) \
+	$(gcc_spu_lexec_dir)/cc1plus \
+	$(PF)/spu/include/c++ \
+	$(gcc_spu_lib_dir)/lib{sup,std}c++.a
+
+ifeq ($(with_spumea64),yes)
+    files_spucxx += \
+	$(gcc_spu_lib_dir)/mea64/lib{sup,std}c++.a
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+    files_spucxx += \
+	$(PF)/share/man/man1/spu-g++$(pkg_ver).1
+endif
+
+dirs_spuf95 = \
+	$(PF)/bin \
+	$(gcc_spu_lexec_dir) \
+	$(gcc_spu_lib_dir) \
+
+files_spuf95 = \
+	$(PF)/bin/spu-gfortran$(pkg_ver) \
+	$(gcc_spu_lexec_dir)/f951 \
+	$(gcc_spu_lib_dir)/finclude \
+	$(gcc_spu_lib_dir)/libgfortran.spec \
+	$(gcc_spu_lib_dir)/libgfortranbegin.a \
+	$(gcc_spu_lib_dir)/libgfortran{,begin}.a
+
+ifeq ($(with_spumea64),yes)
+    files_spuf95 += \
+	$(gcc_spu_lib_dir)/mea64/libgfortranbegin.a \
+	$(gcc_spu_lib_dir)/mea64/libgfortran{,begin}.a
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+    files_spuf95 += \
+	$(PF)/share/man/man1/spu-gfortran$(pkg_ver).1
+endif
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-spu: $(install_spu_stamp)
+	dh_testdir
+	dh_testroot
+
+	mv $(install_spu_stamp) $(install_spu_stamp)-tmp
+
+	dh_installdirs -p$(p_spugcc) $(dirs_spugcc)
+	DH_COMPAT=2 dh_movefiles --sourcedir=$(d_spu) -p$(p_spugcc) $(files_spugcc)
+
+	debian/dh_doclink -p$(p_spugcc) $(p_base)
+	debian/dh_rmemptydirs -p$(p_spugcc)
+
+	-dh_strip -p$(p_spugcc) -X.o -Xlibgcc.a -Xlibgcov.a
+	dh_compress -p$(p_spugcc)
+	dh_fixperms -p$(p_spugcc)
+	dh_shlibdeps -p$(p_spugcc)
+	dh_gencontrol -p$(p_spugcc) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_spugcc)
+	dh_md5sums -p$(p_spugcc)
+	dh_builddeb -p$(p_spugcc)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_spu_stamp)-tmp $(install_spu_stamp)
+
+$(binary_stamp)-spu-cxx: $(install_spu_stamp)
+	dh_testdir
+	dh_testroot
+
+	mv $(install_spu_stamp) $(install_spu_stamp)-tmp
+
+	dh_installdirs -p$(p_spucxx) $(dirs_spucxx)
+	DH_COMPAT=2 dh_movefiles --sourcedir=$(d_spu) -p$(p_spucxx) $(files_spucxx)
+
+	ln -sf $(BASE_VERSION) $(d_spucxx)/usr/spu/include/c++/$(GCC_VERSION)
+
+	debian/dh_doclink -p$(p_spucxx) $(p_base)
+	debian/dh_rmemptydirs -p$(p_spucxx)
+
+	-dh_strip -p$(p_spucxx)
+	dh_compress -p$(p_spucxx)
+	dh_fixperms -p$(p_spucxx)
+	dh_shlibdeps -p$(p_spucxx)
+	dh_gencontrol -p$(p_spucxx) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_spucxx)
+	dh_md5sums -p$(p_spucxx)
+	dh_builddeb -p$(p_spucxx)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_spu_stamp)-tmp $(install_spu_stamp)
+
+$(binary_stamp)-spu-fortran: $(install_spu_stamp)
+	dh_testdir
+	dh_testroot
+
+	mv $(install_spu_stamp) $(install_spu_stamp)-tmp
+
+	dh_installdirs -p$(p_spuf95) $(dirs_spuf95)
+	mv $(d_spu)/$(PF)/spu/lib/libgfortran.spec $(d_spu)/$(gcc_spu_lib_dir)/
+
+	DH_COMPAT=2 dh_movefiles --sourcedir=$(d_spu) -p$(p_spuf95) $(files_spuf95)
+
+	debian/dh_doclink -p$(p_spuf95) $(p_base)
+	debian/dh_rmemptydirs -p$(p_spuf95)
+
+	-dh_strip -p$(p_spuf95)
+	dh_compress -p$(p_spuf95)
+	dh_fixperms -p$(p_spuf95)
+	dh_shlibdeps -p$(p_spuf95)
+	dh_gencontrol -p$(p_spuf95) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_spuf95)
+	dh_md5sums -p$(p_spuf95)
+	dh_builddeb -p$(p_spuf95)
+
+	@echo "Listing installed files not included in any package:"
+	-find $(d_spu) ! -type d
+
+	trap '' 1 2 3 15; touch $@; mv $(install_spu_stamp)-tmp $(install_spu_stamp)
+	touch $@
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-gcc.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-gcc.mk
@@ -0,0 +1,359 @@
+ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchhf) $(biarchsf)))
+  arch_binaries  := $(arch_binaries) gcc-multi
+endif
+ifeq ($(with_plugins),yes)
+  arch_binaries  := $(arch_binaries) gcc-plugindev
+endif
+
+arch_binaries  := $(arch_binaries) gcc
+
+ifneq ($(DEB_CROSS),yes)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    indep_binaries := $(indep_binaries) gcc-doc
+  endif
+  ifeq ($(with_nls),yes)
+    indep_binaries := $(indep_binaries) gcc-locales
+  endif
+endif
+
+# gcc must be moved after g77 and g++
+# not all files $(PF)/include/*.h are part of gcc,
+# but it becomes difficult to name all these files ...
+
+dirs_gcc = \
+	$(docdir)/$(p_base)/{gcc,libssp,gomp,quadmath} \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir)/{include,include-fixed} \
+	$(PF)/share/man/man1 $(libgcc_dir)
+
+# XXX: what about triarch mapping?
+files_gcc = \
+	$(PF)/bin/$(cmd_prefix){gcc,gcov}$(pkg_ver) \
+	$(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \
+	$(gcc_lib_dir)/include/std*.h \
+	$(shell for h in \
+		    README features.h arm_neon.h \
+		    {cpuid,decfloat,float,iso646,limits,mm3dnow,mm_malloc}.h \
+		    {ppu_intrinsics,paired,spu2vmx,vec_types,si2vmx}.h \
+		    {,a,b,e,i,n,p,s,t,w,x}mmintrin.h mmintrin-common.h \
+		    {abm,avx,bmi,fma4,ia32,lwp,popcnt,tbm,x86,xop,}intrin.h \
+		    {cross-stdarg,syslimits,unwind,varargs}.h; \
+		do \
+		  test -e $(d)/$(gcc_lib_dir)/include/$$h \
+		    && echo $(gcc_lib_dir)/include/$$h; \
+		  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \
+		    && echo $(gcc_lib_dir)/include-fixed/$$h; \
+		done) \
+	$(shell for d in \
+		  asm bits gnu linux $(TARGET_ALIAS) \
+		  $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS)); \
+		do \
+		  test -e $(d)/$(gcc_lib_dir)/include/$$d \
+		    && echo $(gcc_lib_dir)/include/$$d; \
+		  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$d \
+		    && echo $(gcc_lib_dir)/include-fixed/$$d; \
+		done) \
+	$(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \
+		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+    files_gcc += \
+	$(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1
+endif
+
+ifeq ($(with_libssp),yes)
+    files_gcc += $(gcc_lib_dir)/include/ssp
+endif
+ifeq ($(with_gomp),yes)
+    files_gcc += $(gcc_lib_dir)/include/omp.h
+endif
+ifeq ($(with_qmath),yes)
+    files_gcc += $(gcc_lib_dir)/include/quadmath{,_weak}.h
+endif
+
+ifeq ($(DEB_TARGET_ARCH),ia64)
+    files_gcc += $(gcc_lib_dir)/include/ia64intrin.h
+endif
+
+ifeq ($(DEB_TARGET_ARCH),m68k)
+    files_gcc += $(gcc_lib_dir)/include/math-68881.h
+endif
+
+ifeq ($(DEB_TARGET_ARCH),$(findstring $(DEB_TARGET_ARCH),powerpc ppc64 powerpcspe))
+    files_gcc += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h,spe.h}
+endif
+
+usr_doc_files = debian/README.Bugs \
+	$(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) \
+	$(shell test -f test-summary && echo test-summary)
+
+p_loc	= gcc$(pkg_ver)-locales
+d_loc	= debian/$(p_loc)
+
+p_gcc_m	= gcc$(pkg_ver)-multilib$(cross_bin_arch)
+d_gcc_m	= debian/$(p_gcc_m)
+
+p_pld	= gcc$(pkg_ver)-plugin-dev$(cross_bin_arch)
+d_pld	= debian/$(p_pld)
+
+# __do_gcc_libs(flavour,package,todir,fromdir)
+define __do_gcc_libs
+	dh_installdirs -p$(2) $(3)
+# stage1 builds static libgcc only
+	$(if $(filter $(DEB_STAGE),stage1),,
+		: # libgcc_s.so may be a linker script on some architectures
+		set -e; \
+		if [ -h $(4)/libgcc_s.so ]; then \
+		  rm -f $(4)/libgcc_s.so; \
+		  dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \
+		    $(3)/libgcc_s.so; \
+		else \
+		  mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \
+		  dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \
+		    $(3)/libgcc_s.so.$(GCC_SONAME); \
+		fi; \
+		$(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \
+		    $(gcc_lib_dir)/libgcc_s_$(1).so;)
+	)
+	DH_COMPAT=2 dh_movefiles -p$(2) \
+		$(3)/{libgcc*,libgcov.a,*.o}
+	$(if $(filter yes, $(with_lib$(1)gmath)),
+		$(call install_gcc_lib,libgcc-math,$(GCC_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_libssp)),
+		$(call install_gcc_lib,libssp,$(SSP_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_ssp)),
+		mv $(4)/libssp_nonshared.a debian/$(2)/$(3)/;
+	)
+	$(if $(filter yes, $(with_gomp)),
+		$(call install_gcc_lib,libgomp,$(GOMP_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_qmath)),
+		$(call install_gcc_lib,libquadmath,$(QMATH_SONAME),$(1),$(2))
+	)
+
+endef
+
+# do_gcc_libs(flavour,pkg)
+define do_gcc_libs
+	$(call __do_gcc_libs,$(1),$(2),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1)))
+endef
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcc: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gcc)
+	dh_installdirs -p$(p_gcc) $(dirs_gcc)
+
+	$(call do_gcc_libs,,$(p_gcc))
+
+ifeq ($(with_linaro_branch),yes)
+	if [ -f $(srcdir)/ChangeLog.linaro ]; then \
+	  cp -p $(srcdir)/ChangeLog.linaro \
+		$(d_gcc)/$(docdir)/$(p_base)/changelog.linaro; \
+	fi
+endif
+ifeq ($(with_libssp),yes)
+	cp -p $(srcdir)/libssp/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_base)/libssp/changelog
+endif
+ifeq ($(with_gomp),yes)
+	mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc)/$(gcc_lib_dir)/
+	cp -p $(srcdir)/libgomp/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_base)/gomp/changelog
+endif
+ifeq ($(with_qmath),yes)
+	cp -p $(srcdir)/libquadmath/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_base)/quadmath/changelog
+endif
+
+	DH_COMPAT=2 dh_movefiles -p$(p_gcc) $(files_gcc)
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf gcc$(pkg_ver) \
+	    $(d_gcc)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gcc$(pkg_ver)
+	ln -sf gcc$(pkg_ver) \
+	    $(d_gcc)/$(PF)/bin/$(TARGET_ALIAS)-gcc$(pkg_ver)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf gcc$(pkg_ver).1 \
+	    $(d_gcc)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gcc$(pkg_ver).1
+	ln -sf gcc$(pkg_ver).1 \
+	    $(d_gcc)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gcc$(pkg_ver).1
+endif
+endif
+
+#	dh_installdebconf
+	debian/dh_doclink -p$(p_gcc) $(p_base)
+	cp -p $(usr_doc_files) $(d_gcc)/$(docdir)/$(p_base)/.
+	if [ -f testsuite-comparision ]; then \
+	  cp -p testsuite-comparision $(d_gcc)/$(docdir)/$(p_base)/. ; \
+	fi
+	cp -p debian/README.ssp $(d_gcc)/$(docdir)/$(p_base)/
+	cp -p debian/NEWS.gcc $(d_gcc)/$(docdir)/$(p_base)/NEWS
+	cp -p debian/NEWS.html $(d_gcc)/$(docdir)/$(p_base)/NEWS.html
+	cp -p $(srcdir)/ChangeLog $(d_gcc)/$(docdir)/$(p_base)/changelog
+	cp -p $(srcdir)/gcc/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_base)/gcc/changelog
+	if [ -f $(builddir)/gcc/.bad_compare ]; then \
+	  ( \
+	    echo "The comparision of the stage2 and stage3 object files shows differences."; \
+	    echo "The Debian package was modified to ignore these differences."; \
+	    echo ""; \
+	    echo "The following files differ:"; \
+	    echo ""; \
+	    cat $(builddir)/gcc/.bad_compare; \
+	  ) > $(d_gcc)/$(docdir)/$(p_base)/BOOTSTRAP_COMPARISION_FAILURE; \
+	else \
+	  true; \
+	fi
+	debian/dh_rmemptydirs -p$(p_gcc)
+	dh_strip -p$(p_gcc)
+	dh_compress -p$(p_gcc) -X README.Bugs
+	dh_fixperms -p$(p_gcc)
+	dh_shlibdeps -p$(p_gcc)
+	dh_gencontrol -p$(p_gcc) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_gcc)
+	dh_md5sums -p$(p_gcc)
+	dh_builddeb -p$(p_gcc)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+	: # remove empty directories, when all components are in place
+	-find $(d) -type d -empty -delete
+
+	@echo "Listing installed files not included in any package:"
+	-find $(d) ! -type d
+
+# ----------------------------------------------------------------------
+
+$(binary_stamp)-gcc-multi: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gcc_m)
+	dh_installdirs -p$(p_gcc_m) $(docdir)
+
+	$(foreach flavour,$(flavours), \
+		$(call do_gcc_libs,$(flavour),$(p_gcc_m)))
+
+	debian/dh_doclink -p$(p_gcc_m) $(p_base)
+	debian/dh_rmemptydirs -p$(p_gcc_m)
+
+	dh_strip -p$(p_gcc_m)
+	dh_compress -p$(p_gcc_m)
+	dh_shlibdeps -p$(p_gcc_m)
+	dh_fixperms -p$(p_gcc_m)
+	dh_installdeb -p$(p_gcc_m)
+	dh_gencontrol -p$(p_gcc_m) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_gcc_m)
+	dh_builddeb -p$(p_gcc_m)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcc-plugindev: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_pld)
+	dh_installdirs -p$(p_pld) \
+		$(docdir) \
+		$(gcc_lib_dir)/plugin/include/config/arm
+	DH_COMPAT=2 dh_movefiles -p$(p_pld) \
+		$(gcc_lib_dir)/plugin
+
+	cp $(builddir)/gcc/build/gengtype $(d_pld)/$(gcc_lib_dir)/
+	cp $(builddir)/gcc/gtype.state $(d_pld)/$(gcc_lib_dir)/
+
+ifneq (,$(filter arm% mips% sh% sparc%,$(DEB_TARGET_GNU_CPU)))
+	# see GCC #45078; vxworks-dummy.h is included for cpu_type in arm,
+	# i386, mips, sh and sparc but only installed when it's i386; copy it
+	# manually on the other arches where it's included
+	cp $(srcdir)/gcc/config/vxworks-dummy.h \
+		$(d_pld)/$(gcc_lib_dir)/plugin/include/config/
+endif
+	cp $(srcdir)/gcc/config/arm/arm-cores.def \
+		$(d_pld)/$(gcc_lib_dir)/plugin/include/config/arm/
+
+	debian/dh_doclink -p$(p_pld) $(p_base)
+	debian/dh_rmemptydirs -p$(p_pld)
+
+	dh_strip -p$(p_pld)
+	dh_compress -p$(p_pld)
+	dh_shlibdeps -p$(p_pld)
+	dh_fixperms -p$(p_pld)
+	dh_installdeb -p$(p_pld)
+	dh_gencontrol -p$(p_pld) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_pld)
+	dh_builddeb -p$(p_pld)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcc-locales: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_loc)
+	dh_installdirs -p$(p_loc) \
+		$(docdir)
+	DH_COMPAT=2 dh_movefiles -p$(p_loc) \
+		$(PF)/share/locale/*/*/cpplib*.* \
+		$(PF)/share/locale/*/*/gcc*.*
+
+	debian/dh_doclink -p$(p_loc) $(p_base)
+	debian/dh_rmemptydirs -p$(p_loc)
+
+	dh_compress -p$(p_loc)
+	dh_fixperms -p$(p_loc)
+	dh_installdeb -p$(p_loc)
+	dh_gencontrol -p$(p_loc) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_loc)
+	dh_builddeb -p$(p_loc)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcc-doc: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_doc)
+	dh_installdirs -p$(p_doc) \
+		$(docdir)/$(p_base) \
+		$(PF)/share/info
+	DH_COMPAT=2 dh_movefiles -p$(p_doc) \
+		$(PF)/share/info/gcc*
+	rm -f $(d_doc)/$(PF)/share/info/gccinst*
+
+ifeq ($(with_gomp),yes)
+	$(MAKE) -C $(buildlibdir)/libgomp stamp-build-info
+	cp -p $(buildlibdir)/libgomp/libgomp$(pkg_ver).info $(d_doc)/$(PF)/share/info/
+endif
+
+	debian/dh_doclink -p$(p_doc) $(p_base)
+	dh_installdocs -p$(p_doc) html/gcc.html html/gccint.html
+ifeq ($(with_gomp),yes)
+	cp -p html/libgomp.html $(d_doc)/usr/share/doc/$(p_doc)/
+endif
+	rm -f $(d_doc)/$(docdir)/$(p_base)/copyright
+	debian/dh_rmemptydirs -p$(p_doc)
+
+	dh_compress -p$(p_doc)
+	dh_fixperms -p$(p_doc)
+	dh_installdeb -p$(p_doc)
+	dh_gencontrol -p$(p_doc) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_doc)
+	dh_builddeb -p$(p_doc)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-hppa64.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-hppa64.mk
@@ -0,0 +1,29 @@
+arch_binaries  := $(arch_binaries) hppa64
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-hppa64: $(install_hppa64_stamp)
+	dh_testdir
+	dh_testroot
+
+#	dh_installdirs -p$(p_hppa64)
+
+	: # provide as and ld links
+	dh_link -p $(p_hppa64) \
+		/usr/bin/hppa64-linux-gnu-as \
+		/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(GCC_VERSION)/as \
+		/usr/bin/hppa64-linux-gnu-ld \
+		/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(GCC_VERSION)/ld
+
+	debian/dh_doclink -p$(p_hppa64) $(p_base)
+	debian/dh_rmemptydirs -p$(p_hppa64)
+
+	dh_strip -p$(p_hppa64) -X.o -Xlibgcc.a -Xlibgcov.a
+	dh_compress -p$(p_hppa64)
+	dh_fixperms -p$(p_hppa64)
+	dh_shlibdeps -p$(p_hppa64)
+	dh_gencontrol -p$(p_hppa64) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_hppa64)
+	dh_md5sums -p$(p_hppa64)
+	dh_builddeb -p$(p_hppa64)
+
+	touch $@
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-java.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-java.mk
@@ -0,0 +1,724 @@
+ifeq ($(with_gcj_base_only),yes)
+  arch_binaries  := $(arch_binaries) jbase
+else
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    arch_binaries  := $(arch_binaries) jbase
+  endif
+else
+  arch_binaries  := $(arch_binaries) jbase
+endif
+
+ifeq ($(with_libgcj),yes)
+  ifeq ($(with_java),yes)
+    arch_binaries  := $(arch_binaries) java gcjjre
+    indep_binaries  := $(indep_binaries) libgcjjar
+  endif
+
+  ifeq ($(with_javadev),yes)
+    arch_binaries  := $(arch_binaries) libgcjdev libgcjdbg
+    indep_binaries := $(indep_binaries) libgcjsrc
+    ifeq ($(with_libgcj_doc),yes)
+      indep_binaries := $(indep_binaries) libgcjdoc
+    endif
+  endif
+endif
+
+ifeq ($(with_gcj),yes)
+    arch_binaries  := $(arch_binaries) gcj
+endif
+endif
+
+p_jbase	= gcj$(pkg_ver)-base
+p_jdk	= gcj$(pkg_ver)-jdk
+p_jrehl	= gcj$(pkg_ver)-jre-headless
+p_jre	= gcj$(pkg_ver)-jre
+p_jar	= gcj$(pkg_ver)-jre-lib
+p_jsrc	= gcj$(pkg_ver)-source
+p_jlib	= libgcj$(PKG_LIBGCJ_EXT)
+p_jdbg	= libgcj$(PKG_GCJ_EXT)-dbg
+p_jlibx	= libgcj$(PKG_LIBGCJ_EXT)-awt
+p_jgtk	= libgcj$(PKG_GCJ_EXT)-awt-gtk
+p_jqt	= libgcj$(PKG_GCJ_EXT)-awt-qt
+p_jdev	= libgcj$(PKG_GCJ_EXT)-dev
+p_jdoc	= libgcj-doc
+
+d_jbase	= debian/$(p_jbase)
+d_jdk	= debian/$(p_jdk)
+d_jrehl	= debian/$(p_jrehl)
+d_jar	= debian/$(p_jar)
+d_jsrc	= debian/$(p_jsrc)
+d_jlib	= debian/$(p_jlib)
+d_jdbg	= debian/$(p_jdbg)
+d_jlibx	= debian/$(p_jlibx)
+d_jgtk	= debian/$(p_jgtk)
+d_jqt	= debian/$(p_jqt)
+d_jdev	= debian/$(p_jdev)
+d_jdoc	= debian/$(p_jdoc)
+d_jre	= debian/$(p_jre)
+
+GCJ_BASE_VERSION = $(BASE_VERSION)
+
+gcj_vlibdir	= $(PF)/$(libdir)/gcj-$(BASE_VERSION)-$(GCJ_SONAME)
+
+jre_tools = java keytool orbd rmid rmiregistry tnameserv
+jdk_tools = appletviewer jar jarsigner javac javadoc javah native2ascii rmic serialver
+
+dirs_jdk = \
+	$(docdir)/$(p_jbase) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(PF)/share/info \
+	$(gcc_lexec_dir) \
+	$(jvm_dir)/bin
+
+files_jdk = \
+	$(PF)/bin/{gappletviewer,gjdoc,gcj,gc-analyze,gjar,gjarsigner,gcjh,gjavah,gnative2ascii,grmic,gserialver,jv-convert,jcf-dump}$(pkg_ver) \
+	$(PF)/share/man/man1/{gappletviewer,gjdoc,gjar,gjarsigner,gcjh,gjavah,gnative2ascii,gserialver}$(pkg_ver).1 \
+	$(gcc_lexec_dir)/{ecj1,jc1,jvgenmain} \
+	$(gcc_lib_dir)/include/{jni.h,jni_md.h,jvmpi.h} \
+	$(gcc_lib_dir)/include/{jawt.h,jawt_md.h} \
+	$(gcc_lib_dir)/include/gcj/libgcj-config.h \
+	$(PF)/$(libdir)/lib{gij,gcj,gcj-tools}.so \
+	$(PF)/$(libdir)/libgcj.spec \
+	$(jvm_dir)/include \
+	$(jvm_dir)/bin/{appletviewer,jar,jarsigner,javadoc,javah,native2ascii,rmic,serialver} \
+	$(PF)/lib/jvm-exports
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_jdk += \
+	$(PF)/share/info/gcj* \
+	$(PF)/share/man/man1/{gcj,gc-analyze,grmic,jv-convert,jcf-dump}$(pkg_ver).1
+endif
+
+dirs_jrehl = \
+	$(docdir)/$(p_jbase) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(jvm_dir)/bin \
+	var/lib/gcj$(pkg_ver)
+
+files_jrehl = \
+	$(PF)/bin/{gij,gcj-dbtool,gorbd,grmid,grmiregistry,gkeytool,gtnameserv}$(pkg_ver) \
+	$(PF)/share/man/man1/{gorbd,grmid,grmiregistry,gkeytool,gtnameserv}$(pkg_ver).1 \
+	$(jvm_dir)/jre \
+	$(jvm_dir)/bin/{java,keytool,orbd,rmid,rmiregistry,tnameserv} \
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_jrehl += \
+	$(PF)/share/man/man1/{gij,gcj-dbtool}$(pkg_ver).1
+endif
+
+dirs_jlib = \
+	$(docdir)/$(p_jbase) \
+	$(gcj_vlibdir) \
+	$(PF)/$(libdir) \
+	$(jvm_dir)/jre/lib
+
+files_jlib = \
+	$(PF)/$(libdir)/libgij.so.* \
+	$(PF)/$(libdir)/libgcj-tools.so.* \
+	$(PF)/$(libdir)/libgcj.so.* \
+	$(gcj_vlibdir)/libjvm.so \
+	$(gcj_vlibdir)/libjavamath.so \
+	$(jvm_dir)/jre/lib/security
+
+#	$(gcj_vlibdir)/libgconfpeer.so
+
+ifeq ($(with_java_alsa),yes)
+  files_jlib += \
+	$(gcj_vlibdir)/libgjsmalsa.so
+endif
+
+dirs_jar = \
+	$(PF)/share/java \
+	$(jvm_dir)/lib \
+
+files_jar = \
+	$(PF)/share/java/libgcj-$(BASE_VERSION).jar \
+	$(PF)/share/java/libgcj-tools-$(BASE_VERSION).jar \
+	$(jvm_dir)/jre/lib/rt.jar \
+	$(jvm_dir)/lib/tools.jar
+
+dirs_jlibx = \
+	$(PF)/$(libdir) \
+	$(gcj_vlibdir) \
+	$(PF)/share/java
+
+files_jlibx = \
+	$(gcj_vlibdir)/libjawt.so \
+	$(gcj_vlibdir)/libgtkpeer.so
+
+#files_jgtk = \
+#	$(gcj_vlibdir)/libgtkpeer.so
+#files_jqt = \
+#	$(gcj_vlibdir)/libqtpeer.so
+
+dirs_jdev = \
+	$(PF)/{include,lib} \
+	$(jvm_dir)/include
+
+files_jdev = \
+	$(cxx_inc_dir)/{org,gcj,java,javax} \
+	$(cxx_inc_dir)/gnu/{awt,classpath,gcj,java,javax} \
+	$(PF)/$(libdir)/pkgconfig/libgcj-$(BASE_VERSION).pc \
+	$(gcj_vlibdir)/lib*peer.so
+
+ifeq ($(with_static_java),yes)
+  files_jdev += \
+	$(PF)/$(libdir)/libgij.a \
+	$(PF)/$(libdir)/libgcj.a \
+	$(PF)/$(libdir)/libgcj-tools.a
+endif
+
+ifeq (,$(p_l64gcc))
+  p_l64gcc = lib64gcc$(GCC_SONAME)
+  d_l64gcc = debian/$(p_l64gcc)
+endif
+
+ifeq ($(with_standalone_gcj),yes)
+
+  dirs_gcj += \
+	$(gcc_lib_dir)/include \
+	$(PF)/share/man/man1
+
+# XXX: what about triarch mapping?
+  files_gcj += \
+	$(PF)/bin/{cpp,gcc,gcov}$(pkg_ver) \
+	$(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \
+	$(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \
+	$(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \
+	$(gcc_lib_dir)/include/std*.h \
+	$(shell for h in \
+		    README features.h arm_neon.h \
+		    {cpuid,decfloat,float,iso646,limits,mm3dnow,mm_malloc}.h \
+		    {ppu_intrinsics,paired,spu2vmx,vec_types,si2vmx}.h \
+		    {,a,b,e,i,n,p,s,t,w,x}mmintrin.h mmintrin-common.h \
+		    {abm,avx,bmi,fma4,ia32,lwp,popcnt,tbm,x86,xop,}intrin.h \
+		    {cross-stdarg,syslimits,unwind,varargs}.h; \
+		do \
+		  test -e $(d)/$(gcc_lib_dir)/include/$$h \
+		    && echo $(gcc_lib_dir)/include/$$h; \
+		  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \
+		    && echo $(gcc_lib_dir)/include-fixed/$$h; \
+		done) \
+	$(shell for d in \
+		  asm bits gnu linux $(TARGET_ALIAS) \
+		  $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS)); \
+		do \
+		  test -e $(d)/$(gcc_lib_dir)/include/$$d \
+		    && echo $(gcc_lib_dir)/include/$$d; \
+		  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$d \
+		    && echo $(gcc_lib_dir)/include-fixed/$$d; \
+		done) \
+	$(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \
+		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
+
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    files_gcj += \
+	$(PF)/share/man/man1/{cpp,gcc,gcov}$(pkg_ver).1
+  endif
+
+  ifeq ($(biarch64),yes)
+    files_gcj += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
+  endif
+  ifeq ($(biarch32),yes)
+    files_gcj += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
+  endif
+  ifeq ($(biarchn32),yes)
+    files_gcj += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
+  endif
+
+  ifeq ($(DEB_HOST_ARCH),ia64)
+    files_gcj += $(gcc_lib_dir)/include/ia64intrin.h
+  endif
+
+  ifeq ($(DEB_HOST_ARCH),m68k)
+    files_gcj += $(gcc_lib_dir)/include/math-68881.h
+  endif
+
+  ifeq ($(DEB_TARGET_ARCH),$(findstring $(DEB_TARGET_ARCH),powerpc ppc64 powerpcspe))
+    files_gcj += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h,spe.h}
+  endif
+
+endif
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-jbase: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_jbase)
+	dh_installdirs -p$(p_jbase)
+	dh_installdocs -p$(p_jbase)
+	dh_installchangelogs -p$(p_jbase)
+	dh_compress -p$(p_jbase)
+	dh_fixperms -p$(p_jbase)
+	dh_gencontrol -p$(p_jbase) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jbase)
+	dh_md5sums -p$(p_jbase)
+	dh_builddeb -p$(p_jbase)
+	touch $@
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgcjjar: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	dh_installdirs -p$(p_jar) $(dirs_jar)
+	DH_COMPAT=2 dh_movefiles -p$(p_jar) $(files_jar)
+
+	ln -sf libgcj-$(BASE_VERSION).jar \
+		$(d_jar)/$(PF)/share/java/libgcj-$(GCC_VERSION).jar
+	ln -sf libgcj-tools-$(BASE_VERSION).jar \
+		$(d_jar)/$(PF)/share/java/libgcj-tools-$(GCC_VERSION).jar
+	debian/dh_doclink -p$(p_jar) $(p_jbase)
+	debian/dh_rmemptydirs -p$(p_jar)
+	dh_compress -p$(p_jar)
+	dh_fixperms -p$(p_jar)
+	dh_gencontrol -p$(p_jar) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jar)
+	dh_md5sums -p$(p_jar)
+	dh_builddeb -p$(p_jar)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(build_javasrc_stamp): $(build_stamp)
+	PATH=$(PWD)/bin:$$PATH \
+	  $(MAKE) -C $(buildlibdir)/libjava src.zip
+	touch $@
+
+$(binary_stamp)-libgcjsrc: $(install_stamp) $(build_javasrc_stamp)
+	dh_testdir
+	dh_testroot
+
+	dh_installdirs -p$(p_jsrc) $(PF)/share/java $(jvm_dir)
+	cp -p $(buildlibdir)/libjava/src.zip \
+	   $(d_jsrc)/$(PF)/share/java/libgcj-src-$(BASE_VERSION).zip
+	dh_link -p$(p_jsrc) \
+		$(PF)/share/java/libgcj-src-$(BASE_VERSION).zip \
+		$(jvm_dir)/src.zip
+	debian/dh_doclink -p$(p_jsrc) $(p_jbase)
+	debian/dh_rmemptydirs -p$(p_jsrc)
+	dh_compress -p$(p_jsrc)
+	dh_fixperms -p$(p_jsrc)
+	dh_gencontrol -p$(p_jsrc) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jsrc)
+	dh_md5sums -p$(p_jsrc)
+	dh_builddeb -p$(p_jsrc)
+
+	touch $@
+
+# ----------------------------------------------------------------------
+libgcj_version = $$($(builddir)/gcc/xgcc -B$(builddir)/gcc/ --version \
+			 | sed -n '/^xgcc/s/[^)]*) *\(.*\)/\1/p' | sed 's/ \[[^[]*$$//')
+libgcj_title = LibGCJ Classpath
+libgcjhbox_href = http://gcc.gnu.org/java
+libgcjhbox = <span class='logo'><a href='$(libgcjhbox_href)' target='_top'>$(title)</a> ($(libgcj_version))
+
+$(build_javadoc_stamp): $(build_stamp) $(build_javasrc_stamp)
+	mkdir -p $(builddir)/java-src
+	cd $(builddir)/java-src && fastjar -xf $(buildlibdir)/libjava/src.zip
+
+	mkdir -p $(builddir)/html
+	$(buildlibdir)/libjava/gjdoc \
+	    -licensetext \
+	    -use \
+	    -sourcepath "$(builddir)/java-src" \
+	    -encoding UTF-8 \
+	    -breakiterator \
+	    -linksource \
+	    -splitindex \
+	    -d $(builddir)/html \
+	    -doctitle "$(libgcj_title) $(libgcj_version)" \
+	    -windowtitle "$(libgcj_title) $(libgcj_version) Documentation" \
+	    -header "$(classpathbox)" \
+	    -footer "$(classpathbox)" \
+	    -subpackages gnu:java:javax:org
+
+	touch $@
+
+$(binary_stamp)-libgcjdoc: $(install_stamp) $(build_javadoc_stamp)
+	dh_testdir
+	dh_testroot
+
+	dh_installdocs -p$(p_jdoc)
+	dh_installchangelogs -p$(p_jdoc)
+	mkdir -p $(d_jdoc)/usr/share/doc/$(p_jbase)
+	cp -al $(builddir)/html $(d_jdoc)/usr/share/doc/$(p_jbase)/api
+	ln -sf api $(d_jdoc)/usr/share/doc/$(p_jbase)/html
+	ln -sf ../$(p_jbase)/api $(d_jdoc)/usr/share/doc/$(p_jdoc)/api
+	ln -sf ../$(p_jbase)/html $(d_jdoc)/usr/share/doc/$(p_jdoc)/html
+	dh_compress -p$(p_jdoc) -X.java -X.c
+	dh_fixperms -p$(p_jdoc)
+	dh_gencontrol -p$(p_jdoc) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jdoc)
+	dh_md5sums -p$(p_jdoc)
+	dh_builddeb -p$(p_jdoc)
+
+	touch $@
+
+# ----------------------------------------------------------------------
+
+#peer_pkgs =
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#  peer_pkgs += -p$(p_jgtk)
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#  peer_pkgs += -p$(p_jqt)
+#endif
+
+$(binary_stamp)-java: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	dh_installdirs -p$(p_jrehl)   $(dirs_jrehl)
+	dh_installdirs -p$(p_jlib)  $(dirs_jlib)
+	dh_installdirs -p$(p_jlibx) $(dirs_jlibx)
+
+	DH_COMPAT=2 dh_movefiles -p$(p_jrehl)   $(files_jrehl)
+	rm -f $(d_jrehl)/$(jvm_dir)/jre/lib/rt.jar
+	DH_COMPAT=2 dh_movefiles -p$(p_jlib)  $(files_jlib)
+	DH_COMPAT=2 dh_movefiles -p$(p_jlibx) $(files_jlibx)
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#	DH_COMPAT=2 dh_movefiles -p$(p_jgtk) $(files_jgtk)
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#	DH_COMPAT=2 dh_movefiles -p$(p_jqt) $(files_jqt)
+#endif
+
+# FIXME
+#	  $(jvm_dir) $(PF)/lib/jvm/$(jvm_name_long) \
+
+	dh_link -p$(p_jrehl) \
+	  $(jvm_dir) $(PF)/lib/jvm/java-gcj$(pkg_ver) \
+	  $(PF)/bin/gij$(pkg_ver) $(jvm_dir)/bin/gij \
+	  $(PF)/bin/gij$(pkg_ver) $(jvm_dir)/jre/bin/gij \
+	  $(PF)/bin/gcj-dbtool$(pkg_ver) $(jvm_dir)/bin/gcj-dbtool \
+	  $(PF)/bin/gcj-dbtool$(pkg_ver) $(jvm_dir)/jre/bin/gcj-dbtool \
+	  $(PF)/share/man/man1/gkeytool$(pkg_ver).1 $(jvm_dir)/man/man1/keytool.1 \
+	  $(PF)/share/man/man1/gorbd$(pkg_ver).1 $(jvm_dir)/man/man1/orbd.1 \
+	  $(PF)/share/man/man1/grmid$(pkg_ver).1 $(jvm_dir)/man/man1/rmid.1 \
+	  $(PF)/share/man/man1/grmiregistry$(pkg_ver).1 $(jvm_dir)/man/man1/rmiregistry.1 \
+	  $(PF)/share/man/man1/gtnameserv$(pkg_ver).1 $(jvm_dir)/man/man1/tnameserv.1 \
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	dh_link -p$(p_jrehl) \
+	  $(PF)/share/man/man1/gij$(pkg_ver).1 $(jvm_dir)/man/man1/java.1 \
+	  $(PF)/share/man/man1/grmic$(pkg_ver).1 $(jvm_dir)/man/man1/rmiregistry.1
+endif
+
+ifneq ($(DEB_TARGET_ARCH_CPU),$(java_cpu))
+	ln -sf $(java_cpu) $(d_jlib)/$(jvm_dir)/jre/lib/$(DEB_TARGET_ARCH_CPU)
+endif
+
+	dh_link -p$(p_jlib) \
+	  etc/java/cacerts-gcj $(jvm_dir)/jre/lib/cacerts \
+	  $(foreach i, jvm javamath, \
+		$(gcj_vlibdir)/lib$(i).so $(jvm_dir)/lib/lib$(i).so)
+
+	dh_link -p$(p_jlibx) \
+	  $(foreach i, jawt, $(gcj_vlibdir)/lib$(i).so $(jvm_dir)/lib/lib$(i).so)
+
+ifeq ($(DEB_HOST_ARCH),hppa)
+	mv $(d_jrehl)/$(PF)/bin/gij$(pkg_ver) \
+		$(d_jrehl)/$(PF)/bin/gij$(pkg_ver).bin
+	install -m755 debian/gij-hppa $(d_jrehl)/$(PF)/bin/gij$(pkg_ver)
+endif
+
+	ln -s ../libgcj.so.$(GCJ_SONAME) \
+		$(d_jlib)/$(gcj_vlibdir)/libgcj_bc.so.1
+
+	: # provide .jinfo file
+	( \
+	  echo 'name=$(jvm_name_short)'; \
+	  echo 'alias=java-gcj$(pkg_ver)'; \
+	  echo 'priority=$(priority)'; \
+	  echo 'section=main'; \
+	  echo ''; \
+	  for i in $(jre_tools); do \
+	    echo "jre $$i /$(jvm_dir)/jre/bin/$$i"; \
+	  done; \
+	  for i in $(jdk_tools); do \
+	    echo "jdk $$i /$(jvm_dir)/bin/$$i"; \
+	  done; \
+	) > $(d_jrehl)/usr/lib/jvm/.java-gcj$(pkg_ver).jinfo
+
+	cp -p $(srcdir)/libjava/{NEWS,README,THANKS} \
+		$(d_jrehl)/usr/share/doc/$(p_jbase)/
+
+	debian/dh_doclink -p$(p_jrehl) $(p_jbase)
+	debian/dh_doclink -p$(p_jlib)  $(p_jbase)
+	debian/dh_doclink -p$(p_jlibx) $(p_jbase)
+
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#	debian/dh_doclink -p$(p_jgtk) $(p_jbase)
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#	debian/dh_doclink -p$(p_jqt) $(p_jbase)
+#endif
+
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    ifeq ($(with_check),yes)
+	cp -p test-summary $(d_jrehl)/usr/share/doc/$(p_jbase)/test-summary
+    endif
+  endif
+endif
+	debian/dh_rmemptydirs -p$(p_jrehl)
+	debian/dh_rmemptydirs -p$(p_jlib)
+	debian/dh_rmemptydirs -p$(p_jlibx)
+
+	mkdir -p $(d_jrehl)/var/lib/gcj$(pkg_ver)
+
+	dh_makeshlibs -p$(p_jlib) -V '$(p_jlib) (>= $(DEB_GCJ_SOVERSION))'
+	echo "libgcj_bc 1 libgcj-bc (>= 4.2.2-1)" >> debian/$(p_jlib)/DEBIAN/shlibs
+	cat debian/$(p_jlib)/DEBIAN/shlibs >> debian/shlibs.local
+
+	dh_makeshlibs -p$(p_jlibx) -V '$(p_jlibx) (>= $(DEB_GCJ_SOVERSION))'
+
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#	dh_makeshlibs -p$(p_jgtk) -V '$(p_jgtk) (>= $(DEB_GCJ_SOVERSION))'
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#	dh_makeshlibs -p$(p_jqt) -V '$(p_jqt) (>= $(DEB_GCJ_SOVERSION))'
+#endif
+
+	dh_strip --dbg-package=$(p_jdbg) \
+		-p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+	rm -f $(d_jdbg)/$(gcc_lib_dir)/libgcj_bc.so
+
+	dh_compress -p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+	dh_fixperms -p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+# the libstdc++ binary packages aren't built yet ...
+	echo 'libstdc++ $(CXX_SONAME) libstdc++$(CXX_SONAME) (>= $(DEB_STDCXX_SOVERSION))' \
+	    >> debian/shlibs.local
+	-[ -d $(d_l64gcc) ] && mv $(d_l64gcc) $(d_l64gcc).saved
+ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),yes-no)
+	dh_shlibdeps \
+		-L$(p_jlib) \
+		-l$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir) \
+		-p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+else
+	dh_shlibdeps \
+		-L$(p_lgcc) \
+		-L$(p_jlib) \
+		-l:$(d)/$(PF)/$(libdir):$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir):$(d_lgcc)/lib \
+		-p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+endif
+	-[ -d $(d_l64gcc).saved ] && mv $(d_l64gcc).saved $(d_l64gcc)
+	sed -e 's/$(p_jlib)[^,]*//' -e 's/, *,/,/' debian/$(p_jlib).substvars \
+		>> debian/$(p_jlib).substvars.tmp \
+	    && mv -f debian/$(p_jlib).substvars.tmp debian/$(p_jlib).substvars
+	rm -f debian/shlibs.local
+
+	dh_gencontrol \
+		-p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs) \
+		-- -v$(DEB_VERSION) $(common_substvars)
+
+	mkdir -p $(d_jlib)/usr/share/lintian/overrides
+	cp -p debian/$(p_jlib).overrides \
+		$(d_jlib)/usr/share/lintian/overrides/$(p_jlib)
+	mkdir -p $(d_jlibx)/usr/share/lintian/overrides
+	cp -p debian/$(p_jlibx).overrides \
+		$(d_jlibx)/usr/share/lintian/overrides/$(p_jlibx)
+	mkdir -p $(d_jrehl)/usr/share/lintian/overrides
+	cp -p debian/$(p_jrehl).overrides \
+		$(d_jrehl)/usr/share/lintian/overrides/$(p_jrehl)
+
+	dh_installdeb -p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+	dh_md5sums -p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+	dh_builddeb -p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcj: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_jdk)
+	dh_installdirs -p$(p_jdk)  $(dirs_jdk)
+
+#	mkdir -p $(d_jdk)/usr/share/lintian/overrides
+#	cp -p debian/$(p_jdk).overrides \
+#		$(d_jdk)/usr/share/lintian/overrides/$(p_jdk)
+	cp -p $(srcdir)/gcc/java/ChangeLog \
+		$(d_jdk)/usr/share/doc/$(p_jbase)/changelog.gcj
+	cp -p $(srcdir)/libjava/ChangeLog \
+		$(d_jdk)/usr/share/doc/$(p_jbase)/changelog.libjava
+
+ifeq ($(with_standalone_gcj),yes)
+	rm -f $(d)/$(PF)/$(libdir)/libgcc_s.so
+	ln -sf /$(libdir)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/libgcc_s.so
+endif
+	DH_COMPAT=2 dh_movefiles -p$(p_jdk)  $(files_jdk)
+
+	for i in libgij libgcj libgcj-tools; do \
+	  dh_link -p$(p_jdk) \
+	    /$(PF)/$(libdir)/$$i.so.$(GCJ_SONAME) /$(gcc_lib_dir)/$$i.so \
+	    /$(PF)/$(libdir)/$$i.so.$(GCJ_SONAME) /$(jvm_dir)/lib/$$i.so; \
+	  rm -f $(d_jdk)/$(PF)/$(libdir)/$$i.{la,so}; \
+	done
+
+	ln -sf gcj$(pkg_ver) \
+	    $(d_jdk)/$(PF)/bin/$(TARGET_ALIAS)-gcj$(pkg_ver)
+
+	install -m755 debian/jdb.sh $(d_jdk)/$(jvm_dir)/bin/jdb
+
+	mv $(d_jdk)/$(PF)/$(libdir)/libgcj.spec $(d_jdk)/$(gcc_lib_dir)/
+
+	install -m 755 $(d)/$(PF)/$(libdir)/libgcj_bc.so.1 \
+		$(d_jdk)/$(gcc_lib_dir)/libgcj_bc.so
+	$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -shared -fpic -xc /dev/null \
+		-o build/libgcj.so -Wl,-soname,libgcj.so.$(GCJ_SONAME) -nostdlib
+	$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -shared -fpic \
+		$(srcdir)/libjava/libgcj_bc.c \
+		-o $(d_jdk)/$(gcc_lib_dir)/libgcj_bc.so \
+		-Wl,-soname,libgcj_bc.so.1 $(builddir)/libgcj.so -shared-libgcc 
+
+	dh_link -p$(p_jdk) \
+	  $(gcc_lib_dir)/include/gcj $(jvm_dir)/include/gcj \
+	  usr/bin/ecj $(jvm_dir)/bin/javac \
+	  usr/bin/fastjar $(jvm_dir)/bin/jar \
+	  $(PF)/share/man/man1/ecj.1 $(jvm_dir)/man/man1/javac.1 \
+	  $(PF)/share/man/man1/fastjar.1 $(jvm_dir)/man/man1/jar.1
+
+	dh_link -p$(p_jdk) \
+	  $(PF)/bin/gcj$(pkg_ver) $(jvm_dir)/bin/gcj \
+	  $(PF)/share/man/man1/gjarsigner$(pkg_ver).1 $(jvm_dir)/man/man1/jarsigner.1 \
+	  $(PF)/share/man/man1/gjdoc$(pkg_ver).1 $(jvm_dir)/man/man1/javadoc.1 \
+	  $(PF)/share/man/man1/gjavah$(pkg_ver).1 $(jvm_dir)/man/man1/javah.1 \
+	  $(PF)/share/man/man1/gserialver$(pkg_ver).1 $(jvm_dir)/man/man1/serialver.1 \
+	  $(PF)/share/man/man1/gappletviewer$(pkg_ver).1 $(jvm_dir)/man/man1/appletviewer.1
+
+ifneq (,$(filter $(DEB_HOST_ARCH), arm armel))
+	ln -sf ../../ecj1 $(d_jdk)/$(gcc_lexec_dir)/ecj1
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf gcj$(pkg_ver).1 \
+	    $(d_jdk)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gcj$(pkg_ver).1
+	cp -p html/gcj.html $(d_jdk)/$(docdir)/$(p_jbase)/
+endif
+
+	debian/dh_doclink -p$(p_jdk) $(p_jbase)
+
+	cp -p debian/FAQ.gcj $(d_jdk)/$(docdir)/$(p_jbase)/
+
+	cp -p debian/gcj-wrapper$(pkg_ver) $(d_jdk)/$(PF)/bin/
+	chmod 755 $(d_jdk)/$(PF)/bin/gcj-wrapper$(pkg_ver)
+	cp -p debian/gcj-wrapper$(pkg_ver).1 $(d_jdk)/$(PF)/share/man/man1/
+
+	debian/dh_rmemptydirs -p$(p_jdk)
+
+	dh_strip -p$(p_jdk)
+	dh_compress -p$(p_jdk) -X.java
+	dh_fixperms -p$(p_jdk)
+	dh_shlibdeps -p$(p_jdk) -l$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/lib -Xecj1
+	dh_gencontrol -p$(p_jdk) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jdk)
+	dh_md5sums -p$(p_jdk)
+	dh_builddeb -p$(p_jdk)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgcjdev: $(build_html_stamp) $(install_stamp) $(binary_stamp)-java
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	dh_installdirs -p$(p_jdev) $(dirs_jdev)
+
+	DH_COMPAT=2 dh_movefiles -p$(p_jdev) $(files_jdev)
+
+ifeq ($(with_static_java),yes)
+	for i in libgij libgcj libgcj-tools; do \
+	  mv $(d_jdev)/$(PF)/$(libdir)/$$i.a $(d_jdev)/$(gcc_lib_dir)/; \
+	done
+endif
+
+	ln -sf libgcj-$(BASE_VERSION).pc \
+		$(d_jdev)/$(PF)/$(libdir)/pkgconfig/libgcj$(PKG_GCJ_EXT).pc
+	sed -i -e 's,-[IL][^ ]* *,,' \
+		$(d_jdev)/$(PF)/$(libdir)/pkgconfig/libgcj-$(BASE_VERSION).pc
+
+	debian/dh_doclink -p$(p_jdev) $(p_jbase)
+
+	debian/dh_rmemptydirs -p$(p_jdev)
+
+#	mkdir -p $(d_jdev)/usr/share/lintian/overrides
+#	cp -p debian/libgcj$(PKG_GCJ_EXT)-dev.overrides \
+#		$(d_jdev)/usr/share/lintian/overrides/$(p_jdev)
+
+	DH_COMPAT=5 dh_strip -p$(p_jdev) --dbg-package=$(p_jdbg)
+	dh_compress -p$(p_jdev) -X.java
+	dh_fixperms -p$(p_jdev)
+ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),yes-no)
+	dh_shlibdeps \
+		-l$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir) \
+		-p$(p_jdev)
+else
+	dh_shlibdeps \
+		-L$(p_lgcc) \
+		-l:$(d)/$(PF)/$(libdir):$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir):$(d_lgcc)/lib \
+		-p$(p_jdev)
+endif
+	dh_gencontrol -p$(p_jdev) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jdev)
+	dh_md5sums -p$(p_jdev)
+	dh_builddeb -p$(p_jdev)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgcjdbg: $(install_stamp) $(binary_stamp)-java $(binary_stamp)-libgcjdev $(binary_stamp)-gcjjre
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	debian/dh_doclink -p$(p_jdbg) $(p_jbase)
+
+	for i in libgij libgcj libgcj-tools; do \
+	  if [ -f $(d_jdbg)/usr/lib/debug/usr/lib/$$i.so.$(GCJ_SONAME).0.0 ]; then \
+	    ln -sf $$i.so.$(GCJ_SONAME).0.0 \
+	      $(d_jdbg)/usr/lib/debug/usr/lib/$$i.so.$(GCJ_SONAME); \
+	  fi; \
+	done
+#	ln -sf libgconfpeer.so.0.0.0 \
+#	  $(d_jdbg)/usr/lib/debug/$(gcj_vlibdir)/libgconfpeer.so.0
+
+	dh_compress -p$(p_jdbg)
+	dh_fixperms -p$(p_jdbg)
+	dh_gencontrol -p$(p_jdbg) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jdbg)
+	dh_md5sums -p$(p_jdbg)
+	dh_builddeb -p$(p_jdbg)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcjjre: $(install_stamp) $(binary_stamp)-java
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+#	dh_installdirs -p$(p_jre) \
+#		$(PF)/bin \
+#		$(PF)/share/man/man1 \
+#		$(jvm_dir)/bin
+
+	debian/dh_doclink -p$(p_jre) $(p_jbase)
+	DH_COMPAT=5 dh_strip -p$(p_jre) --dbg-package=$(p_jdbg)
+	dh_compress -p$(p_jre)
+	dh_fixperms -p$(p_jre)
+	dh_gencontrol -p$(p_jre) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jre)
+	dh_md5sums -p$(p_jre)
+	dh_builddeb -p$(p_jre)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-nof.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-nof.mk
@@ -0,0 +1,56 @@
+arch_binaries  := $(arch_binaries) nof
+
+p_nof  = gcc$(pkg_ver)-nof
+d_nof  = debian/$(p_nof)
+
+dirs_nof = \
+	$(docdir) \
+	$(usr_lib)/nof
+ifeq ($(with_cdev),yes)
+  dirs_nof += \
+	$(gcc_lib_dir)/nof
+endif
+
+ifeq ($(with_cdev),yes)
+  files_nof = \
+	$(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \
+	$(gcc_lib_dir)/libgcc_s_nof.so \
+	$(usr_lib)/nof \
+	$(gcc_lib_dir)/nof
+else
+  files_nof = \
+	$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME)
+endif
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-nof: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	mv $(d)/$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) $(d)/$(libgcc_dir)/.
+	rm -f $(d)/$(usr_lib)/libgcc_s_nof.so
+	ln -sf $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \
+		$(d)/$(gcc_lib_dir)/libgcc_s_nof.so
+
+	rm -rf $(d_nof)
+	dh_installdirs -p$(p_nof) $(dirs_nof)
+	DH_COMPAT=2 dh_movefiles -p$(p_nof) $(files_nof)
+	debian/dh_doclink -p$(p_nof) $(p_base)
+	dh_strip -p$(p_nof)
+	dh_compress -p$(p_nof)
+	dh_fixperms -p$(p_nof)
+	dh_shlibdeps -p$(p_nof)
+
+	dh_makeshlibs -p$(p_nof)
+	: # Only keep the shlibs file for the libgcc_s_nof library
+	fgrep libgcc_s_nof debian/$(p_nof)/DEBIAN/shlibs \
+		> debian/$(p_nof)/DEBIAN/shlibs.tmp
+	mv -f debian/$(p_nof)/DEBIAN/shlibs.tmp debian/$(p_nof)/DEBIAN/shlibs
+
+	dh_gencontrol -p$(p_nof) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_nof)
+	dh_md5sums -p$(p_nof)
+	dh_builddeb -p$(p_nof)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-neon.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-neon.mk
@@ -0,0 +1,53 @@
+arch_binaries  := $(arch_binaries) neon
+
+p_nlgcc		= libgcc$(GCC_SONAME)-neon
+p_ngomp		= libgomp$(GOMP_SONAME)-neon
+p_nlobjc	= libobjc$(OBJC_SONAME)-neon
+p_nflib		= libgfortran$(FORTRAN_SONAME)-neon
+p_nlcxx		= libstdc++$(CXX_SONAME)-neon
+
+d_nlgcc		= debian/$(p_nlgcc)
+d_ngomp		= debian/$(p_ngomp)
+d_nlobjc	= debian/$(p_nlobjc)
+d_nflib		= debian/$(p_nflib)
+d_nlcxx		= debian/$(p_nlcxx)
+
+neon_pkgs = -p$(p_nlgcc) -p$(p_ngomp) -p$(p_nlobjc) -p$(p_nflib) -p$(p_nlcxx)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-neon: $(install_neon_stamp)
+	dh_testdir
+	dh_testroot
+
+	dh_installdirs -p$(p_nlgcc) \
+		$(PF)/share/doc \
+		lib/neon
+	dh_installdirs -A -p$(p_ngomp) -p$(p_nlobjc) -p$(p_nflib) -p$(p_nlcxx) \
+		$(PF)/share/doc \
+		$(PF)/lib/neon
+
+	cp -a $(d_neon)/$(PF)/lib/libgcc*.so.* \
+		$(d_nlgcc)/lib/neon/
+	cp -a $(d_neon)/$(PF)/lib/libgomp*.so.* \
+		$(d_ngomp)/$(PF)/lib/neon/
+	cp -a $(d_neon)/$(PF)/lib/libobjc*.so.* \
+		$(d_nlobjc)/$(PF)/lib/neon/
+	cp -a $(d_neon)/$(PF)/lib/libgfortran*.so.* \
+		$(d_nflib)/$(PF)/lib/neon/
+	cp -a $(d_neon)/$(PF)/lib/libstdc++*.so.* \
+		$(d_nlcxx)/$(PF)/lib/neon/
+
+	for p in $(p_nlgcc) $(p_ngomp) $(p_nlobjc) $(p_nflib) $(p_nlcxx); do \
+	  ln -s ../$(p_base) debian/$$p/usr/share/doc/$$p; \
+	done
+
+	dh_strip $(neon_pkgs)
+	dh_compress $(neon_pkgs)
+	dh_fixperms $(neon_pkgs)
+	dh_shlibdeps $(neon_pkgs)
+	dh_gencontrol $(neon_pkgs) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb $(neon_pkgs)
+	dh_md5sums $(neon_pkgs)
+	dh_builddeb $(neon_pkgs)
+
+	touch $@
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-libmudflap.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-libmudflap.mk
@@ -0,0 +1,135 @@
+ifeq ($(with_dev),yes)
+  $(lib_binaries)  += libmudflapdev
+endif
+
+ifeq ($(with_libmudflap),yes)
+  $(lib_binaries)  += libmudflap
+  ifeq ($(with_lib64mudflap),yes)
+    $(lib_binaries)  += lib64mudflap
+  endif
+  ifeq ($(with_lib32mudflap),yes)
+    $(lib_binaries)	+= lib32mudflap
+  endif
+  ifeq ($(with_libn32mudflap),yes)
+    $(lib_binaries)	+= libn32mudflap
+  endif
+  ifeq ($(with_libhfmudflap),yes)
+    $(lib_binaries)	+= libhfmudflap
+  endif
+  ifeq ($(with_libsfmudflap),yes)
+    $(lib_binaries)	+= libsfmudflap
+  endif
+endif
+
+p_mfd	= libmudflap$(MUDFLAP_SONAME)$(pkg_ver)-dev$(cross_lib_arch)
+d_mfd	= debian/$(p_mfd)
+
+define __do_mudflap
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	DH_COMPAT=2 dh_movefiles -p$(p_l) $(usr_lib$(2))/libmudflap*.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_base)
+	debian/dh_doclink -p$(p_d) $(p_base)
+
+	debian/dh_rmemptydirs -p$(p_l)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	dh_compress -p$(p_l) -p$(p_d)
+	dh_fixperms -p$(p_l) -p$(p_d)
+	dh_makeshlibs -p$(p_l) -V '$(p_l) (>= $(DEB_SOVERSION))'
+	$(call cross_mangle_shlibs,$(p_l))
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l)
+	$(call cross_mangle_substvars,$(p_l))
+	dh_gencontrol -p$(p_l) -p$(p_d) \
+		-- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_l))
+	dh_installdeb -p$(p_l) -p$(p_d)
+	dh_md5sums -p$(p_l) -p$(p_d)
+	dh_builddeb -p$(p_l) -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_mudflap = $(call __do_mudflap,lib$(1)mudflap$(MUDFLAP_SONAME),$(1))
+
+define __do_mudflap_dev
+	dh_installdirs -p$(p_mfd) $(1)
+	DH_COMPAT=2 dh_movefiles -p$(p_mfd) $(1)/libmudflap*.a
+	rm -f $(d)/$(2)/libmudflap*.so
+	mv $(d)/$(2)/libmudflap*.a $(d_mfd)/$(1)/
+	dh_link -p$(p_mfd) \
+	  /$(2)/libmudflap.so.$(MUDFLAP_SONAME) /$(1)/libmudflap.so \
+	  /$(2)/libmudflapth.so.$(MUDFLAP_SONAME) /$(1)/libmudflapth.so
+endef
+
+do_mudflap_dev = $(call __do_mudflap_dev,$(gcc_lib_dir$(1)),$(usr_lib$(1)))
+
+# ----------------------------------------------------------------------
+
+$(binary_stamp)-libmudflap: $(install_stamp)
+	$(call do_mudflap,)
+
+$(binary_stamp)-lib64mudflap: $(install_stamp)
+	$(call do_mudflap,64)
+
+$(binary_stamp)-lib32mudflap: $(install_stamp)
+	$(call do_mudflap,32)
+
+$(binary_stamp)-libn32mudflap: $(install_stamp)
+	$(call do_mudflap,n32)
+
+$(binary_stamp)-libhfmudflap: $(install_stamp)
+	$(call do_mudflap,hf)
+
+$(binary_stamp)-libsfmudflap: $(install_stamp)
+	$(call do_mudflap,sf)
+
+$(binary_stamp)-libmudflapdev: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_mfd)
+	dh_installdirs -p$(p_mfd) $(docdir)/$(p_base)/mudflap
+
+	DH_COMPAT=2 dh_movefiles -p$(p_mfd) $(gcc_lib_dir)/include/mf-runtime.h
+
+	$(call do_mudflap_dev,)
+ifeq ($(with_lib32mudflap),yes)
+	$(call do_mudflap_dev,32)
+endif
+ifeq ($(with_lib64mudflap),yes)
+	$(call do_mudflap_dev,64)
+endif
+ifeq ($(with_libn32mudflap),yes)
+	$(call do_mudflap_dev,n32)
+endif
+ifeq ($(with_libhfmudflap),yes)
+	$(call do_mudflap_dev,hf)
+endif
+ifeq ($(with_libsfmudflap),yes)
+	$(call do_mudflap_dev,sf)
+endif
+
+	cp -p $(srcdir)/libmudflap/ChangeLog \
+		$(d_mfd)/$(docdir)/$(p_base)/mudflap/changelog
+
+	debian/dh_doclink -p$(p_mfd) $(p_base)
+	debian/dh_rmemptydirs -p$(p_mfd)
+
+	dh_strip -p$(p_mfd)
+	dh_compress -p$(p_mfd)
+	dh_fixperms -p$(p_mfd)
+	dh_shlibdeps -p$(p_mfd)
+	dh_gencontrol -p$(p_mfd) \
+		-- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_mfd)
+	dh_md5sums -p$(p_mfd)
+	dh_builddeb -p$(p_mfd)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-libgomp.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-libgomp.mk
@@ -0,0 +1,67 @@
+$(lib_binaries)  += libgomp
+ifeq ($(with_lib64gomp),yes)
+  $(lib_binaries)  += lib64gomp
+endif
+ifeq ($(with_lib32gomp),yes)
+  $(lib_binaries)	+= lib32gomp
+endif
+ifeq ($(with_libn32gomp),yes)
+  $(lib_binaries)	+= libn32gomp
+endif
+ifeq ($(with_libhfgomp),yes)
+  $(lib_binaries)	+= libhfgomp
+endif
+ifeq ($(with_libsfgomp),yes)
+  $(lib_binaries)	+= libsfgomp
+endif
+
+define __do_gomp
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	DH_COMPAT=2 dh_movefiles -p$(p_l) $(usr_lib$(2))/libgomp.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_base)
+	debian/dh_doclink -p$(p_d) $(p_base)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	dh_compress -p$(p_l) -p$(p_d)
+	dh_fixperms -p$(p_l) -p$(p_d)
+	dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l)
+	$(call cross_mangle_substvars,$(p_l))
+	dh_gencontrol -p$(p_l) -p$(p_d)	\
+		-- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_l))
+	dh_installdeb -p$(p_l) -p$(p_d)
+	dh_md5sums -p$(p_l) -p$(p_d)
+	dh_builddeb -p$(p_l) -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(1))
+
+$(binary_stamp)-libgomp: $(install_stamp)
+	$(call do_gomp,)
+
+$(binary_stamp)-lib64gomp: $(install_stamp)
+	$(call do_gomp,64)
+
+$(binary_stamp)-lib32gomp: $(install_stamp)
+	$(call do_gomp,32)
+
+$(binary_stamp)-libn32gomp: $(install_stamp)
+	$(call do_gomp,n32)
+
+$(binary_stamp)-libhfgomp: $(install_dependencies)
+	$(call do_gomp,hf)
+
+$(binary_stamp)-libsfgomp: $(install_dependencies)
+	$(call do_gomp,sf)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-ada.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-ada.mk
@@ -0,0 +1,359 @@
+arch_binaries := $(arch_binaries) gnatbase ada
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  indep_binaries := $(indep_binaries) ada-doc
+endif
+
+ifeq ($(with_libgnat),yes)
+  arch_binaries := $(arch_binaries) libgnat
+endif
+
+p_gbase	= gnat-$(GNAT_VERSION)-base
+p_gnat	= gnat-$(GNAT_VERSION)
+p_lgnat	= libgnat-$(GNAT_VERSION)
+p_lgnat_dbg = $(p_lgnat)-dbg
+p_lgnatvsn = libgnatvsn$(GNAT_VERSION)
+p_lgnatvsn_dev = $(p_lgnatvsn)-dev
+p_lgnatvsn_dbg = $(p_lgnatvsn)-dbg
+p_lgnatprj = libgnatprj$(GNAT_VERSION)
+p_lgnatprj_dev = $(p_lgnatprj)-dev
+p_lgnatprj_dbg = $(p_lgnatprj)-dbg
+p_gnatd	= $(p_gnat)-doc
+
+d_gbase	= debian/$(p_gbase)
+d_gnat	= debian/$(p_gnat)
+d_lgnat	= debian/$(p_lgnat)
+d_lgnatvsn = debian/$(p_lgnatvsn)
+d_lgnatprj = debian/$(p_lgnatprj)
+d_gnatd	= debian/$(p_gnatd)
+
+GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatlink \
+             gnatls gnatmake gnatname gnatprep gnatxref gnathtml
+
+dirs_gnat = \
+	$(docdir)/$(p_base) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(gcc_lib_dir) \
+	$(gcc_lexec_dir)
+
+files_gnat = \
+	$(gcc_lexec_dir)/gnat1 \
+	$(gcc_lib_dir)/{adalib,adainclude} \
+	$(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(i))
+ifeq ($(with_gnat_zcx)-$(with_gnat_sjlj),yes-yes)
+  files_gnat += \
+	$(gcc_lib_dir)/rts-native
+# rts-sjlj moved to a separate package
+endif
+
+dirs_lgnat = \
+	$(docdir) \
+	$(PF)/lib
+files_lgnat = \
+	$(PF)/$(libdir)/lib{gnat,gnarl}-$(GNAT_SONAME).so.1
+
+$(binary_stamp)-gnatbase: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	dh_installdocs -p$(p_gbase) debian/README.gnat debian/README.maintainers
+ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+  ifeq ($(with_check),yes)
+	dh_installdocs -p$(p_gbase) test-summary
+  endif
+endif
+ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+	mkdir -p $(d_gbase)/$(docdir)/$(p_base)
+	ln -sf ../$(p_gbase) $(d_gbase)/$(docdir)/$(p_base)/Ada
+endif
+	dh_installchangelogs -p$(p_gbase) src/gcc/ada/ChangeLog
+	dh_compress -p$(p_gbase)
+	dh_fixperms -p$(p_gbase)
+	dh_gencontrol -p$(p_gbase) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_gbase)
+	dh_md5sums -p$(p_gbase)
+	dh_builddeb -p$(p_gbase)
+	touch $@
+
+
+$(binary_stamp)-libgnat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	: # libgnat
+	rm -rf $(d_lgnat)
+	dh_installdirs -p$(p_lgnat) $(dirs_lgnat)
+
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  mv $(d)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d)/$(PF)/$(libdir)/. ; \
+	  rm -f $(d)/$(gcc_lib_dir)/adalib/$$lib.so.1; \
+	done
+	dh_movefiles -p$(p_lgnat) $(files_lgnat)
+
+	debian/dh_doclink -p$(p_lgnat) $(p_gbase)
+
+	debian/dh_rmemptydirs -p$(p_lgnat)
+
+	dh_strip -p$(p_lgnat) --dbg-package=$(p_lgnat_dbg)
+	dh_compress -p$(p_lgnat)
+	dh_fixperms -p$(p_lgnat)
+	b=libgnat; \
+	v=$(GNAT_VERSION); \
+	for ext in preinst postinst prerm postrm; do \
+	  for t in '' -dev -dbg; do \
+	    if [ -f debian/$$b$$t.$$ext ]; then \
+	      cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \
+	    fi; \
+	  done; \
+	done
+	dh_makeshlibs -p$(p_lgnat) -V '$(p_lgnat) (>= $(DEB_VERSION))'
+
+	mkdir -p $(d_lgnat)/usr/share/lintian/overrides
+	cp -p debian/$(p_lgnat).overrides \
+		$(d_lgnat)/usr/share/lintian/overrides/$(p_lgnat)
+
+	dh_shlibdeps -p$(p_lgnat)
+	dh_gencontrol -p$(p_lgnat) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_lgnat)
+	dh_md5sums -p$(p_lgnat)
+	dh_builddeb -p$(p_lgnat)
+
+	: # $(p_lgnat_dbg)
+	debian/dh_doclink -p$(p_lgnat_dbg) $(p_gbase)
+	dh_compress -p$(p_lgnat_dbg)
+	dh_fixperms -p$(p_lgnat_dbg)
+	dh_gencontrol -p$(p_lgnat_dbg) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_lgnat_dbg)
+	dh_md5sums -p$(p_lgnat_dbg)
+	dh_builddeb -p$(p_lgnat_dbg)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+
+$(binary_stamp)-libgnatvsn: $(binary_stamp)-libgnat
+	: # $(p_lgnatvsn_dev)
+	dh_movefiles -p$(p_lgnatvsn_dev) usr/lib/ada/adalib/gnatvsn
+	dh_movefiles -p$(p_lgnatvsn_dev) usr/share/ada/adainclude/gnatvsn
+	dh_install -p$(p_lgnatvsn_dev) \
+	   debian/gnatvsn.gpr usr/share/ada/adainclude
+	dh_movefiles -p$(p_lgnatvsn_dev) usr/$(libdir)/libgnatvsn.a
+	dh_link -p$(p_lgnatvsn_dev) \
+	   usr/$(libdir)/libgnatvsn.so.$(GNAT_VERSION) \
+	   usr/$(libdir)/libgnatvsn.so
+	dh_strip -p$(p_lgnatvsn_dev) -X.a --keep-debug
+	dh_fixperms -p$(p_lgnatvsn_dev)
+	debian/dh_doclink -p$(p_lgnatvsn_dev) $(p_gbase)
+	dh_gencontrol -p$(p_lgnatvsn_dev) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_lgnatvsn_dev)
+	dh_builddeb -p$(p_lgnatvsn_dev)
+
+	: # $(p_lgnatvsn)
+	mkdir -p $(d_lgnatvsn)/usr/share/lintian/overrides
+	cp -p debian/$(p_lgnatvsn).overrides \
+		$(d_lgnatvsn)/usr/share/lintian/overrides/$(p_lgnatvsn)
+	dh_movefiles -p$(p_lgnatvsn) usr/$(libdir)/libgnatvsn.so.$(GNAT_VERSION)
+	debian/dh_doclink -p$(p_lgnatvsn) $(p_gbase)
+	dh_strip -p$(p_lgnatvsn) --dbg-package=$(p_lgnatvsn_dbg)
+	dh_makeshlibs -p$(p_lgnatvsn) -V '$(p_lgnatvsn) (>= $(DEB_VERSION))'
+	cat debian/$(p_lgnatvsn)/DEBIAN/shlibs >> debian/shlibs.local
+	dh_shlibdeps -p$(p_lgnatvsn) -L$(p_lgnat)
+	dh_gencontrol -p$(p_lgnatvsn) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_lgnatvsn)
+	dh_md5sums -p$(p_lgnatvsn)
+	dh_builddeb -p$(p_lgnatvsn)
+
+	: # $(p_lgnatvsn_dbg)
+	debian/dh_doclink -p$(p_lgnatvsn_dbg) $(p_gbase)
+	dh_compress -p$(p_lgnatvsn_dbg)
+	dh_fixperms -p$(p_lgnatvsn_dbg)
+	dh_gencontrol -p$(p_lgnatvsn_dbg) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_lgnatvsn_dbg)
+	dh_md5sums -p$(p_lgnatvsn_dbg)
+	dh_builddeb -p$(p_lgnatvsn_dbg)
+	touch $@
+
+$(binary_stamp)-libgnatprj: $(binary_stamp)-libgnat $(binary_stamp)-libgnatvsn
+	: # $(p_lgnatprj_dev)
+	dh_movefiles -p$(p_lgnatprj_dev) usr/lib/ada/adalib/gnatprj
+	dh_movefiles -p$(p_lgnatprj_dev) usr/share/ada/adainclude/gnatprj
+	dh_install -p$(p_lgnatprj_dev) \
+	   debian/gnatprj.gpr usr/share/ada/adainclude
+	dh_movefiles -p$(p_lgnatprj_dev) usr/$(libdir)/libgnatprj.a
+	dh_link -p$(p_lgnatprj_dev) \
+	   usr/$(libdir)/libgnatprj.so.$(GNAT_VERSION) \
+	   usr/$(libdir)/libgnatprj.so
+	dh_strip -p$(p_lgnatprj_dev) -X.a --keep-debug
+	dh_fixperms -p$(p_lgnatprj_dev)
+	debian/dh_doclink -p$(p_lgnatprj_dev) $(p_gbase)
+	dh_gencontrol -p$(p_lgnatprj_dev) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_lgnatprj_dev)
+	dh_builddeb -p$(p_lgnatprj_dev)
+
+	: # $(p_lgnatprj)
+	mkdir -p $(d_lgnatprj)/usr/share/lintian/overrides
+	cp -p debian/$(p_lgnatprj).overrides \
+		$(d_lgnatprj)/usr/share/lintian/overrides/$(p_lgnatprj)
+	dh_movefiles -p$(p_lgnatprj) usr/$(libdir)/libgnatprj.so.$(GNAT_VERSION)
+	debian/dh_doclink -p$(p_lgnatprj) $(p_gbase)
+	dh_strip -p$(p_lgnatprj) --dbg-package=$(p_lgnatprj_dbg)
+	dh_makeshlibs -p$(p_lgnatprj) -V '$(p_lgnatprj) (>= $(DEB_VERSION))'
+	cat debian/$(p_lgnatprj)/DEBIAN/shlibs >> debian/shlibs.local
+	dh_shlibdeps -p$(p_lgnatprj) -L$(p_lgnat) -L$(p_lgnatvsn)
+	dh_gencontrol -p$(p_lgnatprj) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_lgnatprj)
+	dh_md5sums -p$(p_lgnatprj)
+	dh_builddeb -p$(p_lgnatprj)
+
+	: # $(p_lgnatprj_dbg)
+	debian/dh_doclink -p$(p_lgnatprj_dbg) $(p_gbase)
+	dh_compress -p$(p_lgnatprj_dbg)
+	dh_fixperms -p$(p_lgnatprj_dbg)
+	dh_gencontrol -p$(p_lgnatprj_dbg) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_lgnatprj_dbg)
+	dh_md5sums -p$(p_lgnatprj_dbg)
+	dh_builddeb -p$(p_lgnatprj_dbg)
+	touch $@
+
+ifeq ($(with_libgnat),yes)
+$(binary_stamp)-ada: $(install_stamp) $(binary_stamp)-libgnat
+$(binary_stamp)-ada: $(binary_stamp)-libgnatvsn
+$(binary_stamp)-ada: $(binary_stamp)-libgnatprj
+else
+$(binary_stamp)-ada: $(install_stamp)
+endif
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+	: # gnat
+	rm -rf $(d_gnat)
+	dh_installdirs -p$(p_gnat) $(dirs_gnat)
+	# Upstream does not install gnathtml.
+	cp src/gcc/ada/gnathtml.pl debian/tmp/$(PF)/bin/gnathtml
+	chmod 755 debian/tmp/$(PF)/bin/gnathtml
+	dh_movefiles -p$(p_gnat) $(files_gnat)
+ifeq ($(with_gnat_zcx)-$(with_gnat_sjlj),yes-yes)
+	dh_installdirs -p$(p_gnat)-sjlj $(gcc_lib_dir)
+	dh_movefiles -p$(p_gnat)-sjlj $(gcc_lib_dir)/rts-sjlj
+	dh_link -p$(p_gnat)-sjlj \
+	   $(gcc_lib_dir)/rts-sjlj usr/share/ada/adainclude/rts-sjlj
+	dh_link -p$(p_gnat)-sjlj \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a
+	dh_link -p$(p_gnat)-sjlj \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a
+else
+	dh_link -p$(p_gnat) \
+	   $(gcc_lib_dir)/adalib/libgnarl.a \
+	   $(gcc_lib_dir)/adalib/libgnarl-$(GNAT_VERSION).a
+endif
+
+ifeq (0,1)
+ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+	mkdir -p $(d_gnat)/$(libexecdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION)
+	ln -sf ../$(GCC_VERSION)/gnat1 \
+	  $(d_gnat)/$(libexecdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION)/gnat1
+	mkdir -p $(d_gnat)/$(PF)/$(libdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION)
+	ln -sf ../$(GCC_VERSION)/adalib \
+	  $(d_gnat)/$(PF)/$(libdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION)/adalib
+	ln -sf ../$(GCC_VERSION)/adainclude \
+	  $(d_gnat)/$(PF)/$(libdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION)/adainclude
+endif
+endif
+
+ifeq ($(with_libgnat),yes)
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  dh_link -p$(p_gnat) \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so; \
+	done
+  ifeq ($(with_gnat_zcx)-$(with_gnat_sjlj),yes-yes)
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  dh_link -p$(p_gnat) \
+	    /$(PF)/$(libdir)/$$vlib.so.1 $(gcc_lib_dir)/rts-native/adalib/$$lib.so; \
+	done
+  else
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  dh_link -p$(p_gnat) \
+	    /$(PF)/$(libdir)/$$vlib.so.1 $(gcc_lib_dir)/adalib/$$lib.so; \
+	done
+  endif
+endif
+	debian/dh_doclink -p$(p_gnat)      $(p_gbase)
+	debian/dh_doclink -p$(p_gnat)-sjlj $(p_gbase)
+	for i in $(GNAT_TOOLS); do \
+	  case "$$i" in \
+	    gnat) cp -p debian/gnat.1 $(d_gnat)/$(PF)/share/man/man1/ ;; \
+	    *) ln -sf gnat.1 $(d_gnat)/$(PF)/share/man/man1/$$i.1; \
+	  esac; \
+	done
+
+	debian/dh_rmemptydirs -p$(p_gnat)
+
+	dh_strip -p$(p_gnat)
+	dh_compress -p$(p_gnat)
+	dh_fixperms -p$(p_gnat)
+	find $(d_gnat) -name '*.ali' | xargs chmod 444
+	dh_shlibdeps -p$(p_gnat)
+	dh_gencontrol -p$(p_gnat) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_gnat)
+	dh_md5sums -p$(p_gnat)
+	dh_builddeb -p$(p_gnat)
+
+ifeq ($(with_libgnat)-$(with_gnat_zcx)-$(with_gnat_sjlj),yes-yes-yes)
+	dh_strip -p$(p_gnat)-sjlj
+	dh_compress -p$(p_gnat)-sjlj
+	dh_fixperms -p$(p_gnat)-sjlj
+	find $(d_gnat)-sjlj -name '*.ali' | xargs chmod 444
+	dh_shlibdeps -p$(p_gnat)-sjlj
+	dh_gencontrol -p$(p_gnat)-sjlj -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_gnat)-sjlj
+	dh_md5sums -p$(p_gnat)-sjlj
+	dh_builddeb -p$(p_gnat)-sjlj
+endif
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+
+ada_info_dir = $(d_gnatd)/$(PF)/share/info
+
+$(binary_stamp)-ada-doc: $(build_html_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gnatd)
+	dh_installdirs -p$(p_gnatd) \
+		$(PF)/share/info
+
+	cd $(ada_info_dir) && \
+	    makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \
+		-I $(builddir)/gcc \
+		-o gnat_ugn-$(GNAT_VERSION).info \
+		$(builddir)/gcc/doc/gnat_ugn.texi
+	cd $(ada_info_dir) && \
+	    makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \
+		-I $(builddir)/gcc \
+		-o gnat_rm-$(GNAT_VERSION).info \
+		$(srcdir)/gcc/ada/gnat_rm.texi
+	cd $(ada_info_dir) && \
+	    makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \
+		-I $(builddir)/gcc \
+		-o gnat-style-$(GNAT_VERSION).info \
+		$(srcdir)/gcc/ada/gnat-style.texi
+
+	dh_installdocs -p$(p_gnatd) \
+	    html/gnat_ugn.html html/gnat_rm.html html/gnat-style.html
+	dh_installchangelogs -p$(p_gnatd)
+	dh_compress -p$(p_gnatd)
+	dh_fixperms -p$(p_gnatd)
+	dh_installdeb -p$(p_gnatd)
+	dh_gencontrol -p$(p_gnatd) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_gnatd)
+	dh_builddeb -p$(p_gnatd)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-source.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-source.mk
@@ -0,0 +1,53 @@
+indep_binaries := $(indep_binaries) gcc-source
+
+ifeq ($(BACKPORT),true)
+  p_source = gcc$(pkg_ver)-$(GCC_VERSION)-source
+else
+  p_source = gcc$(pkg_ver)-source
+endif
+d_source= debian/$(p_source)
+
+$(binary_stamp)-gcc-source:
+	dh_testdir
+	dh_testroot
+
+	dh_installdocs -p$(p_source)
+	dh_installchangelogs -p$(p_source)
+
+	dh_install -p$(p_source) $(gcc_tarball) usr/src/gcc$(pkg_ver)
+#	dh_install -p$(p_source) $(gcj_tarball) usr/src/gcc$(pkg_ver)
+	tar cf - $$(find './debian' -mindepth 1 \( \
+		-name .svn -prune -o \
+		-path './debian/gcc-*' -type d -prune -o \
+		-path './debian/cpp-*' -type d -prune -o \
+		-path './debian/*fortran*' -type d -prune -o \
+		-path './debian/lib*' -type d -prune -o \
+		-path './debian/patches/*' -prune -o \
+		-path './debian/tmp*' -prune -o \
+		-path './debian/files' -prune -o \
+		-path './debian/rules.d/*' -prune -o \
+		-path './debian/soname-cache' -prune -o \
+		-path './debian/*substvars*' -prune -o \
+		-path './debian/gcc-snapshot*' -prune -o \
+		-path './debian/*[0-9]*.p*' -prune -o \
+		-path './debian/*$(pkg_ver)[.-]*' -prune -o \
+		-print \) ) \
+	  | tar -x -C $(d_source)/usr/src/gcc$(pkg_ver)  -f -
+	# FIXME: Remove generated files
+	find $(d_source)/usr/src/gcc$(pkg_ver) -name '*.debhelper.log' -o -name .svn | xargs rm -rf
+
+	dh_link -p$(p_source) \
+		/usr/src/gcc$(pkg_ver)/debian/patches /usr/src/gcc$(pkg_ver)/patches
+
+	mkdir -p $(d_source)/usr/share/lintian/overrides
+	cp -p debian/$(p_source).overrides \
+		$(d_source)/usr/share/lintian/overrides/$(p_source)
+
+	dh_fixperms -p$(p_source)
+	dh_compress -p$(p_source)
+	dh_gencontrol -p$(p_source) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_source)
+	dh_md5sums -p$(p_source)
+	dh_builddeb -p$(p_source)
+
+	touch $@
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-libgcc.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-libgcc.mk
@@ -0,0 +1,134 @@
+ifeq ($(with_libgcc),yes)
+  $(lib_binaries)	+= libgcc
+
+  ifeq ($(with_lib64gcc),yes)
+    $(lib_binaries)	+= lib64gcc
+  endif
+  ifeq ($(biarch32),yes)
+    $(lib_binaries)	+= lib32gcc
+  endif
+  ifeq ($(biarchn32),yes)
+    $(lib_binaries)	+= libn32gcc
+  endif
+  ifeq ($(biarchhf),yes)
+    $(lib_binaries)	+= libhfgcc
+  endif
+  ifeq ($(biarchsf),yes)
+    $(lib_binaries)	+= libsfgcc
+  endif
+endif
+
+p_lgcc		= libgcc$(GCC_SONAME)$(cross_lib_arch)
+p_lgccdbg	= libgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+d_lgcc		= debian/$(p_lgcc)
+d_lgccdbg	= debian/$(p_lgccdbg)
+
+p_l32gcc	= lib32gcc$(GCC_SONAME)$(cross_lib_arch)
+p_l32gccdbg	= lib32gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+d_l32gcc	= debian/$(p_l32gcc)
+d_l32gccdbg	= debian/$(p_l32gccdbg)
+
+p_l64gcc	= lib64gcc$(GCC_SONAME)$(cross_lib_arch)
+p_l64gccdbg	= lib64gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+d_l64gcc	= debian/$(p_l64gcc)
+d_l64gccdbg	= debian/$(p_l64gccdbg)
+
+p_ln32gcc	= libn32gcc$(GCC_SONAME)$(cross_lib_arch)
+p_ln32gccdbg	= libn32gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+d_ln32gcc	= debian/$(p_ln32gcc)
+d_ln32gccdbg	= debian/$(p_ln32gccdbg)
+
+p_lhfgcc	= libhfgcc$(GCC_SONAME)$(cross_lib_arch)
+p_lhfgccdbg	= libhfgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+d_lhfgcc	= debian/$(p_lhfgcc)
+d_lhfgccdbg	= debian/$(p_lhfgccdbg)
+
+p_lsfgcc	= libsfgcc$(GCC_SONAME)$(cross_lib_arch)
+p_lsfgccdbg	= libsfgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+d_lsfgcc	= debian/$(p_lsfgcc)
+d_lsfgccdbg	= debian/$(p_lsfgccdbg)
+
+define __do_libgcc
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+
+	dh_installdirs -p$(p_l) \
+		$(docdir)/$(p_l) \
+		$(libgcc_dir$(2))
+
+	$(if $(filter yes,$(with_shared_libgcc)),
+		mv $(d)/$(usr_lib$(2))/libgcc_s.so.$(GCC_SONAME) \
+			$(d_l)/$(libgcc_dir$(2))/.
+	)
+
+	debian/dh_doclink -p$(p_l) $(if $(3),$(3),$(p_base))
+	debian/dh_doclink -p$(p_d) $(if $(3),$(3),$(p_base))
+	debian/dh_rmemptydirs -p$(p_l)
+	debian/dh_rmemptydirs -p$(p_d)
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+
+	# see Debian #533843 for the __aeabi symbol handling; this construct is
+	# just to include the symbols for dpkg versions older than 1.15.3 which
+	# didn't allow bypassing the symbol blacklist
+	$(if $(filter yes,$(with_shared_libgcc)),
+		dh_makeshlibs -p$(p_l) -p$(p_d) \
+			-- -v$(DEB_LIBGCC_VERSION)
+		$(call cross_mangle_shlibs,$(p_l))
+		$(if $(filter arm-linux-gnueabi%,$(DEB_TARGET_GNU_TYPE)),
+			if head -1 $(d_l)/DEBIAN/symbols | grep -q '^lib'; then \
+			  grep -q '^ __aeabi' $(d_l)/DEBIAN/symbols \
+			    || cat debian/libgcc1.symbols.aeabi \
+				>> $(d_l)/DEBIAN/symbols; \
+			fi
+		)
+	)
+
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l)
+	$(call cross_mangle_substvars,$(p_l))
+
+	dh_compress -p$(p_l) -p$(p_d)
+	dh_fixperms -p$(p_l) -p$(p_d)
+	dh_gencontrol -p$(p_l) -p$(p_d) \
+		-- -v$(DEB_LIBGCC_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_l))
+
+	$(if $(2),,	# only for native
+		mkdir -p $(d_l)/usr/share/lintian/overrides
+		echo '$(p_l): package-name-doesnt-match-sonames' \
+			> $(d_l)/usr/share/lintian/overrides/$(p_l)
+	)
+
+	dh_installdeb -p$(p_l) -p$(p_d)
+	dh_md5sums -p$(p_l) -p$(p_d)
+	dh_builddeb -p$(p_l) -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_libgcc = $(call __do_libgcc,lib$(1)gcc$(GCC_SONAME),$(1),$(2))
+# ----------------------------------------------------------------------
+
+$(binary_stamp)-libgcc: $(install_dependencies)
+ifeq ($(with_standalone_gcj),yes)
+	$(call do_libgcc,,$(p_jbase))
+else
+	$(call do_libgcc,,)
+endif
+
+$(binary_stamp)-lib64gcc: $(install_dependencies)
+	$(call do_libgcc,64,)
+
+$(binary_stamp)-lib32gcc: $(install_dependencies)
+	$(call do_libgcc,32,)
+
+$(binary_stamp)-libn32gcc: $(install_dependencies)
+	$(call do_libgcc,n32,)
+
+$(binary_stamp)-libhfgcc: $(install_dependencies)
+	$(call do_libgcc,hf)
+
+$(binary_stamp)-libsfgcc: $(install_dependencies)
+	$(call do_libgcc,sf)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-go.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-go.mk
@@ -0,0 +1,216 @@
+ifeq ($(with_libgo),yes)
+  $(lib_binaries) += libgo
+endif
+ifeq ($(with_lib64go),yes)
+  $(lib_binaries) += lib64go
+endif
+ifeq ($(with_lib32go),yes)
+  $(lib_binaries) += lib32go
+endif
+ifeq ($(with_libn32go),yes)
+  $(lib_binaries) += libn32go
+endif
+
+arch_binaries  := $(arch_binaries) gccgo
+ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32)))
+  arch_binaries  := $(arch_binaries) gccgo-multi
+endif
+ifneq ($(DEB_CROSS),yes)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    #indep_binaries := $(indep_binaries) go-doc
+  endif
+endif
+
+p_go	= gccgo$(pkg_ver)$(cross_bin_arch)
+p_go_m	= gccgo$(pkg_ver)-multilib$(cross_bin_arch)
+p_god	= gccgo$(pkg_ver)-doc
+p_golib	= libgo$(GO_SONAME)$(cross_lib_arch)
+
+d_go	= debian/$(p_go)
+d_go_m	= debian/$(p_go_m)
+d_god	= debian/$(p_god)
+d_golib	= debian/$(p_golib)
+
+dirs_go = \
+	$(docdir)/$(p_base)/go \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir) \
+	$(PF)/include \
+	$(PF)/share/man/man1
+files_go = \
+	$(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \
+	$(gcc_lexec_dir)/go1
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_go += \
+	$(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1
+endif
+
+# ----------------------------------------------------------------------
+define __do_gccgo
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(2)
+	DH_COMPAT=2 dh_movefiles -p$(p_l) \
+		$(2)/libgo.so.* $(2)/go
+
+	debian/dh_doclink -p$(p_l) $(p_base)
+	debian/dh_doclink -p$(p_d) $(p_base)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	dh_compress -p$(p_l) -p$(p_d)
+	dh_fixperms -p$(p_l) -p$(p_d)
+	dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		-L$(p_l$(2)go) -l:$(d)/$(usr_lib$(2)):
+	$(call cross_mangle_substvars,$(p_l))
+	dh_gencontrol -p$(p_l) -p$(p_d) \
+		-- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_l))
+	dh_installdeb -p$(p_l) -p$(p_d)
+	dh_md5sums -p$(p_l) -p$(p_d)
+	dh_builddeb -p$(p_l) -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_gccgo = $(call __do_gccgo,lib$(1)go$(GO_SONAME),$(usr_lib$(1)))
+
+define install_gccgo_lib
+	mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/
+	rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so}
+	dh_link -p$(4) \
+	  /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so
+endef
+
+define do_go_dev
+	dh_installdirs -p$(2) $(gcc_lib_dir$(1))
+	DH_COMPAT=2 dh_movefiles -p$(2) \
+		$(gcc_lib_dir$(1))/libgobegin.a
+	$(call install_gccgo_lib,libgo,$(GO_SONAME),$(1),$(2))
+endef
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgo: $(install_stamp)
+	$(call do_gccgo,)
+
+$(binary_stamp)-lib64go: $(install_stamp)
+	$(call do_gccgo,64)
+
+$(binary_stamp)-lib32go: $(install_stamp)
+	$(call do_gccgo,32)
+
+$(binary_stamp)-libn32go: $(install_stamp)
+	$(call do_gccgo,n32)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gccgo: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_go)
+	dh_installdirs -p$(p_go) $(dirs_go)
+
+	mv $(d)/$(usr_lib)/libgobegin.a \
+		$(d)/$(gcc_lib_dir)/
+	if [ -f $(d)/$(usr_lib64)/libgobegin.a ]; then \
+	    mv $(d)/$(usr_lib64)/libgobegin.a \
+		$(d)/$(gcc_lib_dir)/64/; \
+	fi
+	if [ -f $(d)/$(usr_lib32)/libgobegin.a ]; then \
+	    mv $(d)/$(usr_lib32)/libgobegin.a \
+		$(d)/$(gcc_lib_dir)/32/; \
+	fi
+
+	DH_COMPAT=2 dh_movefiles -p$(p_go) $(files_go)
+
+	$(call do_go_dev,,$(p_go))
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf gccgo$(pkg_ver) \
+	    $(d_go)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gccgo$(pkg_ver)
+	ln -sf gccgo$(pkg_ver) \
+	    $(d_go)/$(PF)/bin/$(TARGET_ALIAS)-gccgo$(pkg_ver)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf gccgo$(pkg_ver).1 \
+	    $(d_go)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gccgo$(pkg_ver).1
+	ln -sf gccgo$(pkg_ver).1 \
+	    $(d_go)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gccgo$(pkg_ver).1
+endif
+endif
+
+	debian/dh_doclink -p$(p_go) $(p_base)
+
+#	cp -p $(srcdir)/gcc/go/ChangeLog \
+#		$(d_go)/$(docdir)/$(p_base)/go/changelog
+	debian/dh_rmemptydirs -p$(p_go)
+
+	dh_strip -p$(p_go)
+	dh_compress -p$(p_go)
+	dh_fixperms -p$(p_go)
+	dh_shlibdeps -p$(p_go)
+	dh_gencontrol -p$(p_go) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_go)
+	dh_md5sums -p$(p_go)
+	dh_builddeb -p$(p_go)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gccgo-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_go_m)
+	dh_installdirs -p$(p_go_m) $(docdir)
+
+	$(foreach flavour,$(flavours), \
+		$(call do_go_dev,$(flavour),$(p_go_m)))
+
+	debian/dh_doclink -p$(p_go_m) $(p_base)
+	debian/dh_rmemptydirs -p$(p_go_m)
+	dh_strip -p$(p_go_m)
+	dh_compress -p$(p_go_m)
+	dh_fixperms -p$(p_go_m)
+	dh_shlibdeps -p$(p_go_m)
+	dh_gencontrol -p$(p_go_m) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_go_m)
+	dh_md5sums -p$(p_go_m)
+	dh_builddeb -p$(p_go_m)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-go-doc: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_god)
+	dh_installdirs -p$(p_god) \
+		$(docdir)/$(p_base)/go \
+		$(PF)/share/info
+#	DH_COMPAT=2 dh_movefiles -p$(p_god) \
+#		$(PF)/share/info/gfortran*
+
+	debian/dh_doclink -p$(p_god) $(p_base)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	dh_installdocs -p$(p_god)
+	rm -f $(d_god)/$(docdir)/$(p_base)/copyright
+#	cp -p html/gccgo.html $(d_god)/$(docdir)/$(p_base)/go/
+endif
+
+	dh_compress -p$(p_god)
+	dh_fixperms -p$(p_god)
+	dh_installdeb -p$(p_god)
+	dh_gencontrol -p$(p_god) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_god)
+	dh_builddeb -p$(p_god)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-d.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-d.mk
@@ -0,0 +1,131 @@
+arch_binaries := $(arch_binaries) gdc
+
+ifeq ($(with_libphobos),yes)
+  arch_binaries += libphobos
+endif
+
+p_gdc           = gdc$(pkg_ver)
+p_libphobos     = libphobos$(libphobos_version)$(pkg_ver)-dev
+
+d_gdc           = debian/$(p_gdc)
+d_libphobos     = debian/$(p_libphobos)
+
+gdc_include_dir := $(PF)/include/d$(libphobos_version)
+
+dirs_gdc = \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(gdc_include_dir)/$(BASE_VERSION) \
+	$(gcc_lexec_dir)
+
+files_gdc = \
+	$(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \
+	$(PF)/bin/$(cmd_prefix)gdmd$(pkg_ver) \
+	$(PF)/share/man/man1/gdc$(pkg_ver).1 \
+	$(PF)/share/man/man1/gdmd$(pkg_ver).1 \
+	$(gcc_lexec_dir)/cc1d
+
+
+dirs_libphobos = \
+	$(PF)/lib \
+	$(gdc_include_dir)/$(BASE_VERSION) \
+	$(gcc_lib_dir)
+
+files_libphobos = \
+	$(PF)/$(libdir)/libgphobos$(libphobos_version).a \
+	$(gdc_include_dir)/$(BASE_VERSION)
+
+links_gdc = \
+	/$(gdc_include_dir)/$(BASE_VERSION) \
+		/$(gdc_include_dir)/$(GCC_VERSION) \
+	/$(docdir)/$(p_gcc)/README.Bugs \
+		/$(docdir)/$(p_gdc)/README.Bugs
+
+
+$(binary_stamp)-gdc: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gdc)
+	dh_installdirs -p$(p_gdc) $(dirs_gdc)
+
+	dh_installdocs -p$(p_gdc) \
+		src/gcc/d/{README,GDC.html,History}
+	dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog
+
+	DH_COMPAT=2 dh_movefiles -p$(p_gdc) -X/zlib/ $(files_gdc)
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf gdc$(pkg_ver) \
+	    $(d_gdc)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gdc$(pkg_ver)
+	ln -sf gdc$(pkg_ver) \
+	    $(d_gdc)/$(PF)/bin/$(TARGET_ALIAS)-gdc$(pkg_ver)
+	ln -sf gdc$(pkg_ver).1 \
+	    $(d_gdc)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gdc$(pkg_ver).1
+	ln -sf gdc$(pkg_ver).1 \
+	    $(d_gdc)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gdc$(pkg_ver).1
+
+	ln -sf gdmd$(pkg_ver) \
+	    $(d_gdc)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gdmd$(pkg_ver)
+	ln -sf gdmd$(pkg_ver) \
+	    $(d_gdc)/$(PF)/bin/$(TARGET_ALIAS)-gdmd$(pkg_ver)
+	ln -sf gdmd$(pkg_ver).1 \
+	    $(d_gdc)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gdmd$(pkg_ver).1
+	ln -sf gdmd$(pkg_ver).1 \
+	    $(d_gdc)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gdmd$(pkg_ver).1
+endif
+
+	# Always needed by gdc.
+	cp $(srcdir)/gcc/d/druntime/object.di \
+	    $(d_gdc)/$(gdc_include_dir)/$(BASE_VERSION)/
+
+	dh_link -p$(p_gdc) $(links_gdc)
+
+	dh_strip -p$(p_gdc)
+	dh_compress -p$(p_gdc)
+	dh_fixperms -p$(p_gdc)
+	dh_shlibdeps -p$(p_gdc)
+	dh_gencontrol -p$(p_gdc) --  -v$(DEB_GDC_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_gdc)
+	dh_md5sums -p$(p_gdc)
+	dh_builddeb -p$(p_gdc)
+
+	find $(d_gdc) -type d -empty -delete
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-libphobos: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_libphobos)
+	dh_installdirs -p$(p_libphobos) $(dirs_libphobos)
+
+	DH_COMPAT=2 dh_movefiles -p$(p_libphobos) -X/zlib/ $(files_libphobos)
+
+	# better to have it there, avoid conflicts
+	mv $(d_libphobos)/$(PF)/$(libdir)/libgphobos$(libphobos_version).a \
+	    $(d_libphobos)/$(gcc_lib_dir)
+
+	# included in gdc package
+	rm -f $(d_libphobos)/$(gdc_include_dir)/$(BASE_VERSION)/object.di
+
+	# no need to have it twice
+	dh_link -p$(p_libphobos) \
+	    /$(PF)/share/doc/$(p_gdc) /$(PF)/share/doc/$(p_libphobos)
+
+	dh_strip -p$(p_libphobos)
+	dh_compress -p$(p_libphobos)
+	dh_fixperms -p$(p_libphobos)
+	dh_shlibdeps -p$(p_libphobos)
+	dh_gencontrol -p$(p_libphobos) --  -v$(DEB_GDC_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_libphobos)
+	dh_md5sums -p$(p_libphobos)
+	dh_builddeb -p$(p_libphobos)
+
+	find $(d_libphobos) -type d -empty -delete
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-fortran.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-fortran.mk
@@ -0,0 +1,217 @@
+ifeq ($(with_libgfortran),yes)
+  $(lib_binaries) += libgfortran
+endif
+ifeq ($(with_lib64gfortran),yes)
+  $(lib_binaries) += lib64fortran
+endif
+ifeq ($(with_lib32gfortran),yes)
+  $(lib_binaries) += lib32fortran
+endif
+ifeq ($(with_libn32gfortran),yes)
+  $(lib_binaries) += libn32fortran
+endif
+ifeq ($(with_libhfgfortran),yes)
+  $(lib_binaries) += libhffortran
+endif
+ifeq ($(with_libsfgfortran),yes)
+  $(lib_binaries) += libsffortran
+endif
+
+ifeq ($(with_fdev),yes)
+  ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchhf) $(biarchsf)))
+    arch_binaries  := $(arch_binaries) fdev-multi
+  endif
+  arch_binaries  := $(arch_binaries) fdev
+  ifneq ($(DEB_CROSS),yes)
+    ifneq ($(GFDL_INVARIANT_FREE),yes)
+      indep_binaries := $(indep_binaries) fortran-doc
+    endif
+  endif
+endif
+
+p_g95	= gfortran$(pkg_ver)$(cross_bin_arch)
+p_g95_m	= gfortran$(pkg_ver)-multilib$(cross_bin_arch)
+p_g95d	= gfortran$(pkg_ver)-doc
+p_flib	= libgfortran$(FORTRAN_SONAME)$(cross_lib_arch)
+
+d_g95	= debian/$(p_g95)
+d_g95_m	= debian/$(p_g95_m)
+d_g95d	= debian/$(p_g95d)
+
+dirs_g95 = \
+	$(docdir)/$(p_base)/fortran \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir) \
+	$(PF)/include \
+	$(PF)/share/man/man1
+files_g95 = \
+	$(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \
+	$(gcc_lib_dir)/finclude \
+	$(gcc_lexec_dir)/f951 
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_g95 += \
+	$(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1
+endif
+
+# ----------------------------------------------------------------------
+define __do_fortran
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	DH_COMPAT=2 dh_movefiles -p$(p_l) $(usr_lib$(2))/libgfortran.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_base)
+	debian/dh_doclink -p$(p_d) $(p_base)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	dh_compress -p$(p_l) -p$(p_d)
+	dh_fixperms -p$(p_l) -p$(p_d)
+	dh_makeshlibs -p$(p_l) || echo FIXME: libgfortran symbols
+	$(call cross_mangle_shlibs,$(p_l))
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		-L$(p_l$(2)quadmath) -l:$(d)/$(usr_lib$(2)): || echo FIXME libgfortran symbols
+	$(call cross_mangle_substvars,$(p_l))
+	dh_gencontrol -p$(p_l) -p$(p_d) \
+		-- -v$(DEB_VERSION) $(common_substvars)
+	$(call cross_mangle_control,$(p_l))
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+	dh_installdeb -p$(p_l) -p$(p_d)
+	dh_md5sums -p$(p_l) -p$(p_d)
+	dh_builddeb -p$(p_l) -p$(p_d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(1))
+
+define do_fortran_dev
+	dh_installdirs -p$(2) $(gcc_lib_dir$(1))
+	DH_COMPAT=2 dh_movefiles -p$(2) \
+		$(gcc_lib_dir$(1))/libgfortranbegin.a
+	$(call install_gcc_lib,libgfortran,$(FORTRAN_SONAME),$(1),$(2))
+endef
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgfortran: $(install_stamp)
+	$(call do_fortran,)
+
+$(binary_stamp)-lib64fortran: $(install_stamp)
+	$(call do_fortran,64)
+
+$(binary_stamp)-lib32fortran: $(install_stamp)
+	$(call do_fortran,32)
+
+$(binary_stamp)-libn32fortran: $(install_stamp)
+	$(call do_fortran,n32)
+
+$(binary_stamp)-libhffortran: $(install_stamp)
+	$(call do_fortran,hf)
+
+$(binary_stamp)-libsffortran: $(install_stamp)
+	$(call do_fortran,sf)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-fdev: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_g95)
+	dh_installdirs -p$(p_g95) $(dirs_g95)
+
+	DH_COMPAT=2 dh_movefiles -p$(p_g95) $(files_g95)
+
+	$(call do_fortran_dev,,$(p_g95))
+
+	mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95)/$(gcc_lib_dir)/
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf gfortran$(pkg_ver) \
+	    $(d_g95)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gfortran$(pkg_ver)
+	ln -sf gfortran$(pkg_ver) \
+	    $(d_g95)/$(PF)/bin/$(TARGET_ALIAS)-gfortran$(pkg_ver)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf gfortran$(pkg_ver).1 \
+	    $(d_g95)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gfortran$(pkg_ver).1
+	ln -sf gfortran$(pkg_ver).1 \
+	    $(d_g95)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gfortran$(pkg_ver).1
+endif
+endif
+
+	debian/dh_doclink -p$(p_g95) $(p_base)
+
+	cp -p $(srcdir)/gcc/fortran/ChangeLog \
+		$(d_g95)/$(docdir)/$(p_base)/fortran/changelog
+	debian/dh_rmemptydirs -p$(p_g95)
+
+	dh_strip -p$(p_g95)
+	dh_compress -p$(p_g95)
+	dh_fixperms -p$(p_g95)
+	dh_shlibdeps -p$(p_g95)
+	dh_gencontrol -p$(p_g95) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_g95)
+	dh_md5sums -p$(p_g95)
+	dh_builddeb -p$(p_g95)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-fdev-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_g95_m)
+	dh_installdirs -p$(p_g95_m) $(docdir)
+
+	$(foreach flavour,$(flavours), \
+		$(call do_fortran_dev,$(flavour),$(p_g95_m)))
+
+	debian/dh_doclink -p$(p_g95_m) $(p_base)
+	debian/dh_rmemptydirs -p$(p_g95_m)
+	dh_strip -p$(p_g95_m)
+	dh_compress -p$(p_g95_m)
+	dh_fixperms -p$(p_g95_m)
+	dh_shlibdeps -p$(p_g95_m)
+	dh_gencontrol -p$(p_g95_m) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_g95_m)
+	dh_md5sums -p$(p_g95_m)
+	dh_builddeb -p$(p_g95_m)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-fortran-doc: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_g95d)
+	dh_installdirs -p$(p_g95d) \
+		$(docdir)/$(p_base)/fortran \
+		$(PF)/share/info
+	DH_COMPAT=2 dh_movefiles -p$(p_g95d) \
+		$(PF)/share/info/gfortran*
+
+	debian/dh_doclink -p$(p_g95d) $(p_base)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	dh_installdocs -p$(p_g95d)
+	rm -f $(d_g95d)/$(docdir)/$(p_base)/copyright
+	cp -p html/gfortran.html $(d_g95d)/$(docdir)/$(p_base)/fortran/
+endif
+
+	dh_compress -p$(p_g95d)
+	dh_fixperms -p$(p_g95d)
+	dh_installdeb -p$(p_g95d)
+	dh_gencontrol -p$(p_g95d) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_g95d)
+	dh_builddeb -p$(p_g95d)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-cpp.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-cpp.mk
@@ -0,0 +1,86 @@
+arch_binaries  := $(arch_binaries) cpp
+ifneq ($(DEB_CROSS),yes)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    indep_binaries := $(indep_binaries) cpp-doc
+  endif
+endif
+
+dirs_cpp = \
+	$(docdir) \
+	$(PF)/share/man/man1 \
+	$(PF)/bin \
+	$(gcc_lexec_dir)
+
+files_cpp = \
+	$(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \
+	$(gcc_lexec_dir)/cc1 \
+	$(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0}
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_cpp += \
+	$(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1
+endif
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-cpp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cpp)
+	dh_installdirs -p$(p_cpp) $(dirs_cpp)
+	DH_COMPAT=2 dh_movefiles -p$(p_cpp) $(files_cpp)
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf cpp$(pkg_ver) \
+	    $(d_cpp)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-cpp$(pkg_ver)
+	ln -sf cpp$(pkg_ver) \
+	    $(d_cpp)/$(PF)/bin/$(TARGET_ALIAS)-cpp$(pkg_ver)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf cpp$(pkg_ver).1 \
+	    $(d_cpp)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-cpp$(pkg_ver).1
+	ln -sf cpp$(pkg_ver).1 \
+	    $(d_cpp)/$(PF)/share/man/man1/$(TARGET_ALIAS)-cpp$(pkg_ver).1
+  endif
+endif
+
+	debian/dh_doclink -p$(p_cpp) $(p_base)
+	debian/dh_rmemptydirs -p$(p_cpp)
+
+	dh_strip -p$(p_cpp)
+	dh_compress -p$(p_cpp)
+	dh_fixperms -p$(p_cpp)
+	dh_shlibdeps -p$(p_cpp)
+	dh_gencontrol -p$(p_cpp) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_cpp)
+	dh_md5sums -p$(p_cpp)
+	dh_builddeb -p$(p_cpp)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-cpp-doc: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cppd)
+	dh_installdirs -p$(p_cppd) \
+		$(docdir)/$(p_base) \
+		$(PF)/share/info
+	DH_COMPAT=2 dh_movefiles -p$(p_cppd) \
+		$(PF)/share/info/cpp*
+
+	debian/dh_doclink -p$(p_cppd) $(p_base)
+	dh_installdocs -p$(p_cppd) html/cpp.html html/cppinternals.html
+	rm -f $(d_cppd)/$(docdir)/$(p_base)/copyright
+	debian/dh_rmemptydirs -p$(p_cppd)
+
+	dh_compress -p$(p_cppd)
+	dh_fixperms -p$(p_cppd)
+	dh_installdeb -p$(p_cppd)
+	dh_gencontrol -p$(p_cppd) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_md5sums -p$(p_cppd)
+	dh_builddeb -p$(p_cppd)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-fixincl.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-fixincl.mk
@@ -0,0 +1,47 @@
+arch_binaries  := $(arch_binaries) fixincl
+
+p_fix	= fixincludes
+d_fix	= debian/$(p_fix)
+
+dirs_fix = \
+	$(docdir)/$(p_base)/fixincludes \
+	$(PF)/share/man/man1 \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir)
+files_fix = \
+	$(gcc_lexec_dir)/install-tools \
+	$(gcc_lib_dir)/install-tools
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-fixincl: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_fix)
+	dh_installdirs -p$(p_fix) $(dirs_fix)
+	DH_COMPAT=2 dh_movefiles -p$(p_fix) $(files_fix)
+
+#	$(IP) $(builddir)/gcc/fixinc/fixincl $(d_fix)/$(PF)/lib/fixincludes/
+#	sed -e "s,^FIXINCL=\(.*\),FIXINCL=/$(PF)/lib/fixincludes/fixincl," \
+#	    $(builddir)/gcc/fixinc.sh \
+#		> $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh
+#	chmod 755 $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh
+	$(IR) $(srcdir)/fixincludes/README \
+	    $(d_fix)/$(docdir)/$(p_base)/fixincludes
+	sed -e 's,@LIBEXECDIR@,$(gcc_lexec_dir),g' debian/fixincludes.in \
+	    > $(d_fix)/$(PF)/bin/fixincludes
+	chmod 755 $(d_fix)/$(PF)/bin/fixincludes
+
+	debian/dh_doclink -p$(p_fix) $(p_base)
+	dh_strip -p$(p_fix)
+	dh_compress -p$(p_fix)
+	dh_fixperms -p$(p_fix)
+	dh_shlibdeps -p$(p_fix)
+	dh_gencontrol -p$(p_fix) -- -v$(DEB_EVERSION) $(common_substvars)
+	dh_installdeb -p$(p_fix)
+	dh_md5sums -p$(p_fix)
+	dh_builddeb -p$(p_fix)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
--- gcc-4.6-4.6.3.orig/debian/rules.d/binary-snapshot.mk
+++ gcc-4.6-4.6.3/debian/rules.d/binary-snapshot.mk
@@ -0,0 +1,217 @@
+arch_binaries  := $(arch_binaries) snapshot
+
+ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE)))
+  p_snap = gcc-snapshot
+else ifneq (,$(findstring gcc-linaro, $(PKGSOURCE)))
+  p_snap = gcc-linaro
+else
+  $(error unknown build for single gcc package)
+endif
+
+ifeq ($(DEB_CROSS),yes)
+  p_snap := $(p_snap)$(cross_bin_arch)
+endif
+d_snap	= debian/$(p_snap)
+
+dirs_snap = \
+	$(docdir)/$(p_snap) \
+	usr/lib
+
+ifeq ($(with_spu),yes)
+  snapshot_depends = binutils-spu
+  snapshot_recommends = newlib-spu
+endif
+ifeq ($(with_hppa64),yes)
+  snapshot_depends = binutils-hppa64
+endif
+
+$(stampdir)/ecj_binaries: $(install_snap_stamp)
+	mkdir -p $(builddir)/aot/jar $(builddir)/aot/bin
+	cp $(ecj_jar) $(builddir)/aot/jar/ecj-standalone.jar
+	zip -d $(builddir)/aot/jar/ecj-standalone.jar \
+		'org/eclipse/jdt/core/JDTCompilerAdapter*'
+
+	cd $(builddir)/aot/jar \
+	  && fastjar xf ecj-standalone.jar \
+	  && find -name '*.rsc' -o -name '*.properties' \
+		| fastjar -c -@ - -f ../resources.jar
+	rm -rf $(builddir)/aot/jar/META-INF $(builddir)/aot/jar/org
+	$(d)/$(PF)/bin/gcj \
+	    -c -O2 -g -fPIC -fjni -findirect-dispatch \
+	    -o $(builddir)/aot/bin/resources.o $(builddir)/aot/resources.jar
+
+	cp $(srcdir)/libjava/contrib/classfile.py $(builddir)/aot/
+	cp $(buildlibdir)/libjava/contrib/*.py $(builddir)/aot/
+	grep -v '^sys.path.insert' $(buildlibdir)/libjava/contrib/aot-compile \
+	    > $(builddir)/aot/aot-compile
+	chmod 755 $(builddir)/aot/aot-compile
+	patch -p1 < debian/patches/aotcompile.diff
+	LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(CURDIR)/$(d)/$(PF)/lib \
+	RPATH=-Wl,-rpath,/$(PF)/lib \
+	PYTHONPATH=$(builddir)/aot \
+	  python $(builddir)/aot/aot-compile \
+	    --gcj=$(CURDIR)/$(d)/$(PF)/bin/gcj \
+	    --dbtool=$(CURDIR)/$(d)/$(PF)/bin/gcj-dbtool \
+	    $(builddir)/aot/jar $(builddir)/aot/bin
+	touch $@
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-snapshot: $(install_snap_stamp) \
+    $(if $(filter $(with_ecj),yes),$(stampdir)/ecj_binaries)
+	dh_testdir
+	dh_testroot
+	mv $(install_snap_stamp) $(install_snap_stamp)-tmp
+
+	rm -rf $(d_snap)
+	dh_installdirs -p$(p_snap) $(dirs_snap)
+
+	mv $(d)/$(PF) $(d_snap)/usr/lib/
+
+	find $(d_snap) -name '*.gch' -type d | xargs -r rm -rf
+	find $(d_snap) -name '*.la' -o -name '*.lai' | xargs -r rm -f
+
+	rm -rf $(d_snap)/$(PF)/lib/nof
+ifeq ($(with_java),yes)
+	mv $(d)/usr/lib/jvm $(d_snap)/usr/lib/
+
+	dh_link -p$(p_snap) \
+	  $(gcc_lib_dir)/include/gcj $(jvm_dir)/include/gcj \
+	  usr/bin/ecj $(jvm_dir)/bin/javac
+
+  ifneq ($(DEB_TARGET_ARCH_CPU),$(java_cpu))
+	ln -sf $(java_cpu) $(d_snap)/$(jvm_dir)/jre/lib/$(DEB_TARGET_ARCH_CPU)
+  endif
+  ifeq ($(with_ecj),yes)
+	install -m755 $(builddir)/aot/bin/javac $(d_snap)/$(jvm_dir)/bin/javac
+	install -m755 $(builddir)/aot/bin/ecj1 $(d_snap)/$(gcc_lexec_dir)/ecj1
+
+    ifeq (./,$(dir $(ecj_jar)))
+	install -m 644 $(ecj_jar) $(d_snap)/$(jvm_dir)/lib/ecj.jar
+    else
+	dh_link -p$(p_snap) \
+	  $(ecj_jar) $(jvm_dir)/lib/ecj.jar
+    endif
+  endif
+
+	: # provide .jinfo file
+	( \
+	  echo 'name=$(jvm_name_short)'; \
+	  echo 'alias=java-gcj$(pkg_ver)'; \
+	  echo 'priority=$(priority)'; \
+	  echo 'section=main'; \
+	  echo ''; \
+	  for i in $(jre_tools); do \
+	    echo "jre $$i /$(jvm_dir)/jre/bin/$$i"; \
+	  done; \
+	  for i in $(jdk_tools); do \
+	    echo "jdk $$i /$(jvm_dir)/bin/$$i"; \
+	  done; \
+	) > $(d_snap)/usr/lib/jvm/.java-gcj$(pkg_ver)-snap.jinfo
+endif
+
+ifeq ($(with_ada),yes FIXME: apply our ada patches)
+	dh_link -p$(p_snap) \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a
+	dh_link -p$(p_snap) \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a
+
+	set -e; \
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  mv $(d_snap)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_snap)/$(PF)/$(libdir)/. ; \
+	  rm -f $(d_snap)/$(gcc_lib_dir)/adalib/$$lib.so.1; \
+	  dh_link -p$(p_snap) \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \
+	done
+endif
+ifeq ($(with_ada),yes)
+	ln -sf gcc $(d_snap)/$(PF)/bin/gnatgcc
+endif
+
+ifeq ($(with_hppa64),yes)
+	: # provide as and ld links
+	dh_link -p $(p_snap) \
+		/usr/bin/hppa64-linux-gnu-as \
+		/$(PF)/libexec/gcc/hppa64-linux-gnu/$(GCC_VERSION)/as \
+		/usr/bin/hppa64-linux-gnu-ld \
+		/$(PF)/libexec/gcc/hppa64-linux-gnu/$(GCC_VERSION)/ld
+endif
+
+# don't do this; would create a b-d on gcc-snapshot
+#ifeq ($(with_spu),yes)
+#	dh_link -p $(p_snap) /usr/spu /$(PF)/spu
+#endif
+
+ifeq ($(with_check),yes)
+	dh_installdocs -p$(p_snap) test-summary
+  ifeq ($(with_pascal),yes)
+	cp -p gpc-test-summary $(d_snap)/$(docdir)/$(p_snap)/
+  endif
+else
+	dh_installdocs -p$(p_snap)
+endif
+	if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \
+	then \
+	  cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \
+	    $(d_snap)/$(docdir)/$(p_snap)/libstdc++6_symbols.txt; \
+	fi
+	cp -p debian/README.snapshot \
+		$(d_snap)/$(docdir)/$(p_snap)/README.Debian
+	cp -p debian/README.Bugs \
+		$(d_snap)/$(docdir)/$(p_snap)/
+	dh_installchangelogs -p$(p_snap)
+ifeq ($(DEB_TARGET_ARCH),hppa)
+	dh_strip -p$(p_snap) -Xdebug -X.o -X.a
+else
+	dh_strip -p$(p_snap) -Xdebug
+endif
+	dh_compress -p$(p_snap) -X README.Bugs
+	-find $(d_snap) -type d ! -perm 755 -exec chmod 755 {} \;
+	dh_fixperms -p$(p_snap)
+ifeq ($(with_ada),yes)
+	find $(d_snap)/$(gcc_lib_dir) -name '*.ali' | xargs -r chmod 444
+endif
+
+	mkdir -p $(d_snap)/usr/share/lintian/overrides
+	cp -p debian/gcc-snapshot.overrides \
+		$(d_snap)/usr/share/lintian/overrides/$(p_snap)
+
+	( \
+	  echo 'libgcc_s $(GCC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libobjc $(OBJC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgfortran $(FORTRAN_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libmudflap $(MUDFLAP_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libmudflapth $(MUDFLAP_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libffi $(FFI_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgcj $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgcj-tools $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgij $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgcj_bc 1 ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgomp $(GOMP_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgnat-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgnarl-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \
+	) > debian/shlibs.local
+
+	DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps)  \
+	  dh_shlibdeps -p$(p_snap) -l$(CURDIR)/$(d_snap)/$(PF)/lib:$(CURDIR)/$(d_snap)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib -Xlibgcj-tools -Xlibmudflap
+	-sed -i -e 's/$(p_snap)[^,]*, //g' debian/$(p_snap).substvars
+
+ifeq ($(with_multiarch_lib),yes)
+	: # paths needed for relative lookups from startfile_prefixes
+	for ma in $(xarch_multiarch_names); do \
+	  mkdir -p $(d_snap)/lib/$$ma; \
+	  mkdir -p $(d_snap)/usr/lib/$$ma; \
+	done
+endif
+
+	dh_gencontrol -p$(p_snap) -- $(common_substvars) \
+		'-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)'
+	dh_installdeb -p$(p_snap)
+	dh_md5sums -p$(p_snap)
+	dh_builddeb -p$(p_snap)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_snap_stamp)-tmp $(install_snap_stamp)
