[cfe-commits] r144063 - in /cfe/trunk: lib/AST/TypePrinter.cpp test/SemaOpenCL/address-spaces.cl test/SemaOpenCL/local.cl

Peter Collingbourne peter at pcc.me.uk
Mon Nov 7 18:52:58 PST 2011


Author: pcc
Date: Mon Nov  7 20:52:58 2011
New Revision: 144063

URL: http://llvm.org/viewvc/llvm-project?rev=144063&view=rev
Log:
TypePrinter: print OpenCL address space names.  Patch by Richard
Membarth, test case by myself.

Added:
    cfe/trunk/test/SemaOpenCL/address-spaces.cl
Removed:
    cfe/trunk/test/SemaOpenCL/local.cl
Modified:
    cfe/trunk/lib/AST/TypePrinter.cpp

Modified: cfe/trunk/lib/AST/TypePrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/TypePrinter.cpp?rev=144063&r1=144062&r2=144063&view=diff
==============================================================================
--- cfe/trunk/lib/AST/TypePrinter.cpp (original)
+++ cfe/trunk/lib/AST/TypePrinter.cpp Mon Nov  7 20:52:58 2011
@@ -1162,9 +1162,21 @@
   AppendTypeQualList(S, getCVRQualifiers());
   if (unsigned addrspace = getAddressSpace()) {
     if (!S.empty()) S += ' ';
-    S += "__attribute__((address_space(";
-    S += llvm::utostr_32(addrspace);
-    S += ")))";
+    switch (addrspace) {
+      case LangAS::opencl_global:
+        S += "__global";
+        break;
+      case LangAS::opencl_local:
+        S += "__local";
+        break;
+      case LangAS::opencl_constant:
+        S += "__constant";
+        break;
+      default:
+        S += "__attribute__((address_space(";
+        S += llvm::utostr_32(addrspace);
+        S += ")))";
+    }
   }
   if (Qualifiers::GC gc = getObjCGCAttr()) {
     if (!S.empty()) S += ' ';

Added: cfe/trunk/test/SemaOpenCL/address-spaces.cl
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/address-spaces.cl?rev=144063&view=auto
==============================================================================
--- cfe/trunk/test/SemaOpenCL/address-spaces.cl (added)
+++ cfe/trunk/test/SemaOpenCL/address-spaces.cl Mon Nov  7 20:52:58 2011
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
+
+__constant int ci = 1;
+
+__kernel void foo(__global int *gip) {
+  __local int li;
+  __local int lj = 2; // expected-error {{'__local' variable cannot have an initializer}}
+
+  int *ip;
+  ip = gip; // expected-error {{assigning '__global int *' to 'int *' changes address space of pointer}}
+  ip = &li; // expected-error {{assigning '__local int *' to 'int *' changes address space of pointer}}
+  ip = &ci; // expected-error {{assigning '__constant int *' to 'int *' changes address space of pointer}}
+}

Removed: cfe/trunk/test/SemaOpenCL/local.cl
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/local.cl?rev=144062&view=auto
==============================================================================
--- cfe/trunk/test/SemaOpenCL/local.cl (original)
+++ cfe/trunk/test/SemaOpenCL/local.cl (removed)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-
-__kernel void foo(void) {
-  __local int i;
-  __local int j = 2; // expected-error {{'__local' variable cannot have an initializer}}
-}





More information about the cfe-commits mailing list