diff --git a/libgo/Makefile.am b/libgo/Makefile.am
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -646,12 +646,6 @@ go_net_sock_file = go/net/sock_linux.go
 go_net_sockopt_file = go/net/sockopt_linux.go
 go_net_sockoptip_file = go/net/sockoptip_linux.go
 else
-if LIBGO_IS_IRIX
-go_net_cgo_file = go/net/cgo_linux.go
-go_net_sock_file = go/net/sock_linux.go
-go_net_sockopt_file = go/net/sockopt_linux.go
-go_net_sockoptip_file = go/net/sockoptip_linux.go
-else
 if LIBGO_IS_SOLARIS
 go_net_cgo_file = go/net/cgo_linux.go
 go_net_sock_file = go/net/sock_linux.go
@@ -671,7 +665,6 @@ go_net_sockoptip_file = go/net/sockoptip
 endif
 endif
 endif
-endif
 
 if LIBGO_IS_LINUX
 go_net_sendfile_file = go/net/sendfile_linux.go
@@ -754,9 +747,6 @@ else
 if LIBGO_IS_SOLARIS
 go_os_sys_file = go/os/sys_uname.go
 else
-if LIBGO_IS_IRIX
-go_os_sys_file = go/os/sys_uname.go
-else
 if LIBGO_IS_RTEMS
 go_os_sys_file = go/os/sys_uname.go
 else
@@ -764,7 +754,6 @@ go_os_sys_file = go/os/sys_bsd.go
 endif
 endif
 endif
-endif
 
 if LIBGO_IS_SOLARIS
 go_os_stat_file = go/os/stat_solaris.go
@@ -862,12 +851,8 @@ go_sync_files = \
 if LIBGO_IS_SOLARIS
 go_syslog_file = go/log/syslog/syslog_libc.go
 else
-if LIBGO_IS_IRIX
-go_syslog_file = go/log/syslog/syslog_libc.go
-else
 go_syslog_file = go/log/syslog/syslog_unix.go
 endif
-endif
 
 go_log_syslog_files = \
 	go/log/syslog/syslog.go \
@@ -1464,13 +1449,9 @@ else
 if LIBGO_IS_SOLARIS
 syscall_socket_file = go/syscall/socket_solaris.go
 else
-if LIBGO_IS_IRIX
-syscall_socket_file = go/syscall/socket_irix.go
-else
 syscall_socket_file = go/syscall/socket_bsd.go
 endif
 endif
-endif
 
 # Support for uname.
 if LIBGO_IS_SOLARIS
diff --git a/libgo/configure.ac b/libgo/configure.ac
--- a/libgo/configure.ac
+++ b/libgo/configure.ac
@@ -126,7 +126,6 @@ AC_SUBST(go_include)
 
 is_darwin=no
 is_freebsd=no
-is_irix=no
 is_linux=no
 is_netbsd=no
 is_rtems=no
@@ -135,7 +134,6 @@ GOOS=unknown
 case ${host} in
   *-*-darwin*)   is_darwin=yes;  GOOS=darwin ;;
   *-*-freebsd*)  is_freebsd=yes; GOOS=freebsd ;;
-  *-*-irix6*)    is_irix=yes;    GOOS=irix ;;
   *-*-linux*)    is_linux=yes;   GOOS=linux ;;
   *-*-netbsd*)	 is_netbsd=yes;  GOOS=netbsd ;;
   *-*-rtems*)    is_rtems=yes;   GOOS=rtems ;;
@@ -143,7 +141,6 @@ case ${host} in
 esac
 AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes)
 AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
-AM_CONDITIONAL(LIBGO_IS_IRIX, test $is_irix = yes)
 AM_CONDITIONAL(LIBGO_IS_LINUX, test $is_linux = yes)
 AM_CONDITIONAL(LIBGO_IS_NETBSD, test $is_netbsd = yes)
 AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
@@ -285,11 +282,6 @@ AC_SUBST(GO_SYSCALL_OS_ARCH_FILE)
 dnl Special flags used to generate sysinfo.go.
 OSCFLAGS="-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
 case "$target" in
-    mips-sgi-irix6.5*)
-	# IRIX 6 needs _XOPEN_SOURCE=500 for the XPG5 version of struct
-	# msghdr in <sys/socket.h>.
-	OSCFLAGS="$OSCFLAGS -D_XOPEN_SOURCE=500"
-	;;
     *-*-solaris2.[[89]])
 	# Solaris 8/9 need this so struct msghdr gets the msg_control
 	# etc. fields in <sys/socket.h> (_XPG4_2).
diff --git a/libgo/go/net/http/cgi/host.go b/libgo/go/net/http/cgi/host.go
--- a/libgo/go/net/http/cgi/host.go
+++ b/libgo/go/net/http/cgi/host.go
@@ -35,7 +35,6 @@ var osDefaultInheritEnv = map[string][]s
 	"darwin":  {"DYLD_LIBRARY_PATH"},
 	"freebsd": {"LD_LIBRARY_PATH"},
 	"hpux":    {"LD_LIBRARY_PATH", "SHLIB_PATH"},
-	"irix":    {"LD_LIBRARY_PATH", "LD_LIBRARYN32_PATH", "LD_LIBRARY64_PATH"},
 	"linux":   {"LD_LIBRARY_PATH"},
 	"openbsd": {"LD_LIBRARY_PATH"},
 	"solaris": {"LD_LIBRARY_PATH", "LD_LIBRARY_PATH_32", "LD_LIBRARY_PATH_64"},
diff --git a/libgo/go/syscall/socket_irix.go b/libgo/go/syscall/socket_irix.go
deleted file mode 100644
--- a/libgo/go/syscall/socket_irix.go
+++ /dev/null
@@ -1,130 +0,0 @@
-// socket_irix.go -- Socket handling specific to IRIX 6.
-
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package syscall
-
-const SizeofSockaddrInet4 = 16
-const SizeofSockaddrInet6 = 28
-const SizeofSockaddrUnix = 110
-
-type RawSockaddrInet4 struct {
-	Family uint16
-	Port   uint16
-	Addr   [4]byte /* in_addr */
-	Zero   [8]uint8
-}
-
-func (sa *RawSockaddrInet4) setLen() Socklen_t {
-	return SizeofSockaddrInet4
-}
-
-type RawSockaddrInet6 struct {
-	Family   uint16
-	Port     uint16
-	Flowinfo uint32
-	Addr     [16]byte /* in6_addr */
-	Scope_id uint32
-}
-
-func (sa *RawSockaddrInet6) setLen() Socklen_t {
-	return SizeofSockaddrInet6
-}
-
-type RawSockaddrUnix struct {
-	Family uint16
-	Path   [108]int8
-}
-
-func (sa *RawSockaddrUnix) setLen(int) {
-}
-
-func (sa *RawSockaddrUnix) getLen() (int, error) {
-	if sa.Path[0] == 0 {
-		// "Abstract" Unix domain socket.
-		// Rewrite leading NUL as @ for textual display.
-		// (This is the standard convention.)
-		// Not friendly to overwrite in place,
-		// but the callers below don't care.
-		sa.Path[0] = '@'
-	}
-
-	// Assume path ends at NUL.
-	// This is not technically the GNU/Linux semantics for
-	// abstract Unix domain sockets--they are supposed
-	// to be uninterpreted fixed-size binary blobs--but
-	// everyone uses this convention.
-	n := 0
-	for n < len(sa.Path)-3 && sa.Path[n] != 0 {
-		n++
-	}
-
-	return n, nil
-}
-
-type RawSockaddr struct {
-	Family uint16
-	Data   [14]int8
-}
-
-// BindToDevice binds the socket associated with fd to device.
-func BindToDevice(fd int, device string) (err error) {
-	return ENOSYS
-}
-
-// <netdb.h> only provides struct addrinfo, AI_* and EAI_* if  _NO_XOPEN4
-// && _NO_XOPEN5, but -D_XOPEN_SOURCE=500 is required for msg_control etc.
-// in struct msghgr, so simply provide them here.
-type Addrinfo struct {
-	Ai_flags     int32
-	Ai_family    int32
-	Ai_socktype  int32
-	Ai_protocol  int32
-	Ai_addrlen   int32
-	Ai_canonname *uint8
-	Ai_addr      *_sockaddr
-	Ai_next      *Addrinfo
-}
-
-const (
-	AI_PASSIVE     = 0x00000001
-	AI_CANONNAME   = 0x00000002
-	AI_NUMERICHOST = 0x00000004
-	AI_NUMERICSERV = 0x00000008
-	AI_ALL         = 0x00000100
-	AI_ADDRCONFIG  = 0x00000400
-	AI_V4MAPPED    = 0x00000800
-	AI_DEFAULT     = (AI_V4MAPPED | AI_ADDRCONFIG)
-)
-
-const (
-	EAI_ADDRFAMILY = 1
-	EAI_AGAIN      = 2
-	EAI_BADFLAGS   = 3
-	EAI_FAIL       = 4
-	EAI_FAMILY     = 5
-	EAI_MEMORY     = 6
-	EAI_NODATA     = 7
-	EAI_NONAME     = 8
-	EAI_SERVICE    = 9
-	EAI_SOCKTYPE   = 10
-	EAI_SYSTEM     = 11
-	EAI_BADHINTS   = 12
-	EAI_OVERFLOW   = 13
-	EAI_MAX        = 14
-)
-
-func anyToSockaddrOS(rsa *RawSockaddrAny) (Sockaddr, error) {
-	return nil, EAFNOSUPPORT
-}
-
-// <netinet/in.h.h> only provides IPV6_* etc. if  _NO_XOPEN4 && _NO_XOPEN5,
-// so as above simply provide them here.
-const (
-	IPV6_UNICAST_HOPS   = 48
-	IPV6_MULTICAST_IF   = IP_MULTICAST_IF
-	IPV6_MULTICAST_HOPS = IP_MULTICAST_TTL
-	IPV6_MULTICAST_LOOP = IP_MULTICAST_LOOP
-)
diff --git a/libgo/go/time/zoneinfo_unix.go b/libgo/go/time/zoneinfo_unix.go
--- a/libgo/go/time/zoneinfo_unix.go
+++ b/libgo/go/time/zoneinfo_unix.go
@@ -23,11 +23,10 @@ func initTestingZone() {
 }
 
 // Many systems use /usr/share/zoneinfo, Solaris 2 has
-// /usr/share/lib/zoneinfo, IRIX 6 has /usr/lib/locale/TZ.
+// /usr/share/lib/zoneinfo.
 var zoneDirs = []string{
 	"/usr/share/zoneinfo/",
 	"/usr/share/lib/zoneinfo/",
-	"/usr/lib/locale/TZ/",
 	runtime.GOROOT() + "/lib/time/zoneinfo/",
 }
 
diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh
--- a/libgo/mksysinfo.sh
+++ b/libgo/mksysinfo.sh
@@ -30,15 +30,6 @@ cat > sysinfo.c <<EOF
 #include <errno.h>
 #include <fcntl.h>
 #include <netinet/in.h>
-/* <netinet/tcp.h> needs u_char/u_short, but <sys/bsd_types> is only
-   included by <netinet/in.h> if _SGIAPI (i.e. _SGI_SOURCE
-   && !_XOPEN_SOURCE.
-   <sys/termios.h> only defines TIOCNOTTY if !_XOPEN_SOURCE, while
-   <sys/ttold.h> does so unconditionally.  */
-#ifdef __sgi__
-#include <sys/bsd_types.h>
-#include <sys/ttold.h>
-#endif
 #include <netinet/tcp.h>
 #include <signal.h>
 #include <sys/ioctl.h>
@@ -375,17 +366,12 @@ echo $timeval | \
       -e 's/tv_sec *[a-zA-Z0-9_]*/Sec Timeval_sec_t/' \
       -e 's/tv_usec *[a-zA-Z0-9_]*/Usec Timeval_usec_t/' >> ${OUT}
 timespec=`grep '^type _timespec ' gen-sysinfo.go || true`
-if test "$timespec" = ""; then
-  # IRIX 6.5 has __timespec instead.
-  timespec=`grep '^type ___timespec ' gen-sysinfo.go || true`
-fi
 timespec_sec=`echo $timespec | sed -n -e 's/^.*tv_sec \([^ ]*\);.*$/\1/p'`
 timespec_nsec=`echo $timespec | sed -n -e 's/^.*tv_nsec \([^ ]*\);.*$/\1/p'`
 echo "type Timespec_sec_t $timespec_sec" >> ${OUT}
 echo "type Timespec_nsec_t $timespec_nsec" >> ${OUT}
 echo $timespec | \
-  sed -e 's/^type ___timespec /type Timespec /' \
-      -e 's/^type _timespec /type Timespec /' \
+  sed -e 's/^type _timespec /type Timespec /' \
       -e 's/tv_sec *[a-zA-Z0-9_]*/Sec Timespec_sec_t/' \
       -e 's/tv_nsec *[a-zA-Z0-9_]*/Nsec Timespec_nsec_t/' >> ${OUT}
 
