From 12c9bb638e8e428bccca0ee8f76c26776f75d5b0 Mon Sep 17 00:00:00 2001
From: Saurabh Deoras <sdeoras@gmail.com>
Date: Thu, 10 Jan 2019 14:49:47 -0800
Subject: [PATCH] use smaller slice length for 32-bit arch

Signed-off-by: Saurabh Deoras <sdeoras@gmail.com>
---
 tensorflow/go/attrs.go | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tensorflow/go/attrs.go b/tensorflow/go/attrs.go
index f86c5737bc7..ed1a1f0b541 100644
--- a/tensorflow/go/attrs.go
+++ b/tensorflow/go/attrs.go
@@ -170,7 +170,8 @@ func listAttribute(op *Operation, cname *C.char, meta C.TF_AttrMetadata) (interf
 			}
 			// A []C.int64_t slice backed by C memory.
 			// See: https://github.com/golang/go/wiki/cgo#turning-c-arrays-into-go-slices
-			slice := (*[1 << 30]C.int64_t)(unsafe.Pointer(dim))[:numDim:numDim]
+			// Using [1<<27] instead of [1<<30] so it works on 32-bit architecture
+			slice := (*[1 << 27]C.int64_t)(unsafe.Pointer(dim))[:numDim:numDim]
 			list[i] = makeCShape(slice)
 		}
 		return list, nil