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++;