Author: rsmith
Date: Fri Dec  9 13:35:45 2016
New Revision: 289258

URL: http://llvm.org/viewvc/llvm-project?rev=289258&view=rev
Log:
Add tests for a couple more DRs.

Added:
    cfe/trunk/test/CXX/drs/dr118.cpp
    cfe/trunk/test/CXX/drs/dr158.cpp
Modified:
    cfe/trunk/test/CXX/drs/dr0xx.cpp
    cfe/trunk/test/CXX/drs/dr1xx.cpp
    cfe/trunk/www/cxx_dr_status.html
    cfe/trunk/www/make_cxx_dr_status

Modified: cfe/trunk/test/CXX/drs/dr0xx.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr0xx.cpp?rev=289258&r1=289257&r2=289258&view=diff
==============================================================================
--- cfe/trunk/test/CXX/drs/dr0xx.cpp (original)
+++ cfe/trunk/test/CXX/drs/dr0xx.cpp Fri Dec  9 13:35:45 2016
@@ -333,7 +333,7 @@ namespace dr27 { // dr27: yes
   E &m = true ? n : n;
 }
 
-// dr28: na
+// dr28: na lib
 
 namespace dr29 { // dr29: 3.4
   void dr29_f0(); // expected-note {{here}}

Added: cfe/trunk/test/CXX/drs/dr118.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr118.cpp?rev=289258&view=auto
==============================================================================
--- cfe/trunk/test/CXX/drs/dr118.cpp (added)
+++ cfe/trunk/test/CXX/drs/dr118.cpp Fri Dec  9 13:35:45 2016
@@ -0,0 +1,26 @@
+// RUN: %clang_cc1 -triple x86_64-linux -std=c++98 %s -pedantic-errors 
-emit-llvm -o - | FileCheck %s --implicit-check-not " call "
+// RUN: %clang_cc1 -triple x86_64-linux -std=c++11 %s -pedantic-errors 
-emit-llvm -o - | FileCheck %s --implicit-check-not " call "
+// RUN: %clang_cc1 -triple x86_64-linux -std=c++14 %s -pedantic-errors 
-emit-llvm -o - | FileCheck %s --implicit-check-not " call "
+// RUN: %clang_cc1 -triple x86_64-linux -std=c++1z %s -pedantic-errors 
-emit-llvm -o - | FileCheck %s --implicit-check-not " call "
+
+// dr118: yes
+
+struct S {
+  virtual void f();
+};
+void (S::*pmf)();
+
+// CHECK-LABEL: define {{.*}} @_Z1g
+void g(S *sp) {
+  // CHECK: call void %
+  sp->f();        // 1: polymorphic
+  // CHECK: call void @
+  sp->S::f();     // 2: non-polymorphic
+  // CHECK: call void @
+  (sp->S::f)();   // 3: non-polymorphic
+  // CHECK: call void %
+  (sp->*pmf)();   // 4: polymorphic
+  // CHECK: call void %
+  (sp->*&S::f)(); // 5: polymorphic
+}
+

Added: cfe/trunk/test/CXX/drs/dr158.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr158.cpp?rev=289258&view=auto
==============================================================================
--- cfe/trunk/test/CXX/drs/dr158.cpp (added)
+++ cfe/trunk/test/CXX/drs/dr158.cpp Fri Dec  9 13:35:45 2016
@@ -0,0 +1,27 @@
+// RUN: %clang_cc1 -triple x86_64-linux -std=c++98 %s -O3 -disable-llvm-optzns 
-pedantic-errors -emit-llvm -o - | FileCheck %s
+// RUN: %clang_cc1 -triple x86_64-linux -std=c++11 %s -O3 -disable-llvm-optzns 
-pedantic-errors -emit-llvm -o - | FileCheck %s
+// RUN: %clang_cc1 -triple x86_64-linux -std=c++14 %s -O3 -disable-llvm-optzns 
-pedantic-errors -emit-llvm -o - | FileCheck %s
+// RUN: %clang_cc1 -triple x86_64-linux -std=c++1z %s -O3 -disable-llvm-optzns 
-pedantic-errors -emit-llvm -o - | FileCheck %s
+
+// dr158: yes
+
+// CHECK-LABEL: define {{.*}} @_Z1f
+const int *f(const int * const *p, int **q) {
+  // CHECK: load i32**, {{.*}}, !tbaa ![[INTPTR_TBAA:[^,]*]]
+  const int *x = *p;
+  // CHECK: store i32* null, {{.*}}, !tbaa ![[INTPTR_TBAA]]
+  *q = 0;
+  return x;
+}
+
+struct A {};
+
+// CHECK-LABEL: define {{.*}} @_Z1g
+const int *(A::*const *g(const int *(A::* const **p)[3], int 
*(A::***q)[3]))[3] {
+  // CHECK: load i64**, {{.*}}, !tbaa ![[MEMPTR_TBAA:[^,]*]]
+  const int *(A::*const *x)[3] = *p;
+  // CHECK: store i64* null, {{.*}}, !tbaa ![[MEMPTR_TBAA]]
+  *q = 0;
+  return x;
+}
+

Modified: cfe/trunk/test/CXX/drs/dr1xx.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr1xx.cpp?rev=289258&r1=289257&r2=289258&view=diff
==============================================================================
--- cfe/trunk/test/CXX/drs/dr1xx.cpp (original)
+++ cfe/trunk/test/CXX/drs/dr1xx.cpp Fri Dec  9 13:35:45 2016
@@ -35,7 +35,7 @@ namespace dr102 { // dr102: yes
 }
 
 // dr103: na
-// dr104 FIXME: add codegen test
+// dr104: na lib
 // dr105: na
 
 namespace dr106 { // dr106: sup 540
@@ -202,7 +202,7 @@ namespace dr116 { // dr116: yes
 }
 
 // dr117: na
-// dr118 FIXME: add codegen test
+// dr118 is in its own file.
 // dr119: na
 // dr120: na
 
@@ -608,7 +608,7 @@ namespace dr155 { // dr155: dup 632
   struct S { int n; } s = { { 1 } }; // expected-warning {{braces around 
scalar initializer}}
 }
 
-// dr158 FIXME write codegen test
+// dr158 is in its own file.
 
 namespace dr159 { // dr159: 3.5
   namespace X { void f(); }

Modified: cfe/trunk/www/cxx_dr_status.html
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_dr_status.html?rev=289258&r1=289257&r2=289258&view=diff
==============================================================================
--- cfe/trunk/www/cxx_dr_status.html (original)
+++ cfe/trunk/www/cxx_dr_status.html Fri Dec  9 13:35:45 2016
@@ -207,7 +207,7 @@
     <td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#28";>28</a></td>
     <td>CD1</td>
     <td>'exit', 'signal' and static object destruction</td>
-    <td class="na" align="center">N/A</td>
+    <td class="na" align="center">N/A (Library DR)</td>
   </tr>
   <tr id="29">
     <td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#29";>29</a></td>
@@ -663,7 +663,7 @@
     <td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#104";>104</a></td>
     <td>NAD</td>
     <td>Destroying the exception temp when no handler is found</td>
-    <td class="none" align="center">Unknown</td>
+    <td class="na" align="center">N/A (Library DR)</td>
   </tr>
   <tr id="105">
     <td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#105";>105</a></td>
@@ -747,7 +747,7 @@
     <td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#118";>118</a></td>
     <td>CD1</td>
     <td>Calls via pointers to virtual member functions</td>
-    <td class="none" align="center">Unknown</td>
+    <td class="full" align="center">Yes</td>
   </tr>
   <tr id="119">
     <td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#119";>119</a></td>
@@ -987,7 +987,7 @@
     <td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#158";>158</a></td>
     <td>CD1</td>
     <td>Aliasing and qualification conversions</td>
-    <td class="none" align="center">Unknown</td>
+    <td class="full" align="center">Yes</td>
   </tr>
   <tr id="159">
     <td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#159";>159</a></td>

Modified: cfe/trunk/www/make_cxx_dr_status
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/www/make_cxx_dr_status?rev=289258&r1=289257&r2=289258&view=diff
==============================================================================
--- cfe/trunk/www/make_cxx_dr_status (original)
+++ cfe/trunk/www/make_cxx_dr_status Fri Dec  9 13:35:45 2016
@@ -126,6 +126,9 @@ def availability(issue):
   elif status == 'na':
     avail = 'N/A'
     avail_style = ' class="na"'
+  elif status == 'na lib':
+    avail = 'N/A (Library DR)'
+    avail_style = ' class="na"'
   elif status.startswith('sup '):
     dup = status.split(' ', 1)[1]
     avail = 'Superseded by <a href="#%s">%s</a>' % (dup, dup)


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to