diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/internal/writer/KernelWriter.java b/com.amd.aparapi/src/java/com/amd/aparapi/internal/writer/KernelWriter.java
index 92ce2fe930cda4a348b1c8b26b42eb0fb5cb19a7..16763ccbe5d31fcce2d2cf3a6aa215c79428eda4 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/internal/writer/KernelWriter.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/internal/writer/KernelWriter.java
@@ -73,6 +73,11 @@ public abstract class KernelWriter extends BlockWriter{
 
    private final String cvtShortArrayToShortStar = "short* ";
 
+   /** When declaring a __private struct pointer field, we always omit the "__private" qualifier. This is because the NVidia OpenCL compiler, at time of writing
+    * erroneously complains about explicitly qualifying pointers with __private ("error: field may not be qualified with an address space").
+    */
+   private static final boolean IMPLICIT_PRIVATE_FIELDS = true;
+
    // private static Logger logger = Logger.getLogger(Config.getLoggerName());
 
    private Entrypoint entryPoint = null;
@@ -333,7 +338,9 @@ public abstract class KernelWriter extends BlockWriter{
          while (signature.startsWith("[")) {
             if (isPointer == false) {
                argLine.append(argType + " ");
-               thisStructLine.append(type + " ");
+               if (!(type.equals(__private) && IMPLICIT_PRIVATE_FIELDS)) {
+                  thisStructLine.append(type + " ");
+               }
             }
             isPointer = true;
             numDimensions++;