summaryrefslogtreecommitdiff
path: root/gcc/config/ia64/build.hacks
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/ia64/build.hacks')
-rw-r--r--gcc/config/ia64/build.hacks97
1 files changed, 97 insertions, 0 deletions
diff --git a/gcc/config/ia64/build.hacks b/gcc/config/ia64/build.hacks
new file mode 100644
index 00000000000..5da0d83ba22
--- /dev/null
+++ b/gcc/config/ia64/build.hacks
@@ -0,0 +1,97 @@
+The gcse.c patch fixes an optimization problem. This is probably not the right
+solution, but it was quick. I will replace with a better solution later.
+
+The libio/libstdc++ patches are useful if you have a version of glibc without
+thread support. There is no official ia64 glibc version yet, and some of the
+unofficial ones in common use are missing thread support. libio/libstdc++
+assume that glibc always has thread support, so we need to patch them until
+the official ia64 glibc is available.
+
+Index: gcc/gcse.c
+===================================================================
+RCS file: /cvs/cvsfiles/devo/gcc/gcse.c,v
+retrieving revision 1.87
+diff -p -r1.87 gcse.c
+*** gcse.c 2000/01/11 14:59:28 1.87
+--- gcse.c 2000/02/16 04:17:06
+*************** try_replace_reg (from, to, insn)
+*** 4039,4045 ****
+ information. */
+ if (!success && !note)
+ {
+! if (!set)
+ return 0;
+ note = REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EQUAL,
+ copy_rtx (SET_SRC (set)),
+--- 4039,4048 ----
+ information. */
+ if (!success && !note)
+ {
+! /* Don't add a REG_EQUAL note for a CCmode destination, because this
+! confuses the code in cse.c that simplifies compare and branch
+! instructions. */
+! if (!set || GET_MODE_CLASS (GET_MODE (SET_DEST (set))) == MODE_CC)
+ return 0;
+ note = REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EQUAL,
+ copy_rtx (SET_SRC (set)),
+Index: libio/configure.in
+===================================================================
+RCS file: /cvs/cvsfiles/devo/libio/configure.in,v
+retrieving revision 1.57
+diff -p -r1.57 configure.in
+*** configure.in 1999/10/26 03:42:26 1.57
+--- configure.in 2000/02/16 04:17:56
+*************** case "${target}" in
+*** 57,62 ****
+--- 57,64 ----
+ frags="linux.mt linuxaxp1.mt mtsafe.mt" ;;
+ *-linux-gnulibc1)
+ frags=linuxlibc1.mt ;;
++ # ??? glibc does not have thread support yet, so we can't use mtsafe.mt.
++ ia64*-linux-gnu) frags="linux.mt" ;;
+ *-linux-gnu) frags="linux.mt mtsafe.mt" ;;
+ *-sco3.2v[45]*) frags=sco4.mt ;;
+ *-isc*) frags=isc.mt ;;
+Index: libstdc++/configure.in
+===================================================================
+RCS file: /cvs/cvsfiles/devo/libstdc++/configure.in,v
+retrieving revision 1.46
+diff -p -r1.46 configure.in
+*** configure.in 1999/09/21 19:26:16 1.46
+--- configure.in 2000/02/16 04:17:57
+*************** fi
+*** 89,94 ****
+--- 89,96 ----
+ case "${target}" in
+ alpha*-*-linux-gnulibc1) frags="${frags} linux.mt" ;;
+ powerpc*-*-linux-gnulibc1) frags="${frags} linux.mt" ;;
++ # ??? ia64 glibc port does not have thread support yet.
++ ia64*-*-linux-gnu) ;;
+ *-*-linux-gnu) frags="${frags} linux.mt" ;;
+ *-*-openbsd*)
+ case "x${enable_threads}" in
+Index: libstdc++/stl/stl_config.h
+===================================================================
+RCS file: /cvs/cvsfiles/devo/libstdc++/stl/stl_config.h,v
+retrieving revision 1.17
+diff -p -r1.17 stl_config.h
+*** stl_config.h 1999/12/24 16:21:31 1.17
+--- stl_config.h 2000/02/16 04:17:58
+***************
+*** 168,174 ****
+ # if defined(__linux__)
+ /* glibc pre 2.0 is very buggy. We have to disable thread for it.
+ It should be upgraded to glibc 2.0 or later. */
+! # if !defined(_NOTHREADS) && __GLIBC__ >= 2 && defined(_G_USING_THUNKS)
+ # define __STL_PTHREADS
+ # ifdef __STRICT_ANSI__
+ /* Work around a bug in the glibc 2.0.x pthread.h. */
+--- 168,175 ----
+ # if defined(__linux__)
+ /* glibc pre 2.0 is very buggy. We have to disable thread for it.
+ It should be upgraded to glibc 2.0 or later. */
+! /* ??? ia64 glibc port does not have thread support yet. */
+! # if !defined(_NOTHREADS) && __GLIBC__ >= 2 && defined(_G_USING_THUNKS) && !defined(__ia64__)
+ # define __STL_PTHREADS
+ # ifdef __STRICT_ANSI__
+ /* Work around a bug in the glibc 2.0.x pthread.h. */