REPOSITORY
  rL LLVM

================
Comment at: lib/AST/ASTContext.cpp:4910
@@ -4910,1 +4909,3 @@
+         !VD->getFirstDecl()->isOutOfLine() && VD->getFirstDecl()->hasInit() &&
+         VD->getFirstDecl() == VD;
 }
----------------
Can the last two lines be simplified to this?
  VD->isFirstDecl() && VD->hasInit()
The first declaration of a static data member cannot be out of line, unless I'm 
mistaken.

================
Comment at: test/CodeGenCXX/dllexport-members.cpp:113-115
@@ -112,5 +112,5 @@
   // MSC-DAG: @"\01?StaticConstField@ExportMembers@@2HB"          = dllexport 
constant i32 1, align 4
-  // MSC-DAG: @"\01?StaticConstFieldEqualInit@ExportMembers@@2HB" = weak_odr 
dllexport constant i32 1, comdat, align 4
-  // MSC-DAG: @"\01?StaticConstFieldBraceInit@ExportMembers@@2HB" = weak_odr 
dllexport constant i32 1, comdat, align 4
-  // MSC-DAG: @"\01?ConstexprField@ExportMembers@@2HB"            = weak_odr 
dllexport constant i32 1, comdat, align 4
   // GNU-DAG: @_ZN13ExportMembers11StaticFieldE                   = dllexport 
global i32 1, align 4
----------------
Can you add at least one test here that exercises the weak_odr linkage case? Do 
something like this, where the member is referenced but not defined outside the 
class:
  struct A { static const int V = 42; };
  int f() { return A::V; }

================
Comment at: test/CodeGenCXX/ms-integer-static-data-members.cpp:1-10
@@ -1,5 +1,11 @@
-// RUN: %clang_cc1 -emit-llvm -triple=i386-pc-win32 -fms-compatibility %s -o - 
| FileCheck %s
-// RUN: %clang_cc1 -DINLINE_INIT -emit-llvm -triple=i386-pc-win32 
-fms-compatibility %s -o - | FileCheck %s --check-prefix=CHECK-INLINE
+// RUN: %clang_cc1 -DREFERENCED -emit-llvm -triple=i386-pc-win32 
-fms-compatibility %s -o - | FileCheck %s
+
+// RUN: %clang_cc1 -DINLINE_INIT -emit-llvm -triple=i386-pc-win32 
-fms-compatibility %s -o - | FileCheck %s 
--check-prefix=CHECK-INLINE-NODEF-NOTREF
+// RUN: %clang_cc1 -DINLINE_INIT -DREFERENCED -emit-llvm -triple=i386-pc-win32 
-fms-compatibility %s -o - | FileCheck %s --check-prefix=CHECK-INLINE-NODEF-REF
+
+// RUN: %clang_cc1 -DINLINE_INIT -DREAL_DEFINITION -emit-llvm 
-triple=i386-pc-win32 -fms-compatibility %s -o - | FileCheck %s 
--check-prefix=CHECK-INLINE-DEF-NOTREF
+// RUN: %clang_cc1 -DINLINE_INIT -DREAL_DEFINITION -DREFERENCED -emit-llvm 
-triple=i386-pc-win32 -fms-compatibility %s -o - | FileCheck %s 
--check-prefix=CHECK-INLINE-DEF-REF
+
 // RUN: %clang_cc1 -DREAL_DEFINITION -emit-llvm -triple=i386-pc-win32 
-fms-compatibility %s -o - | FileCheck %s --check-prefix=CHECK-OUTOFLINE
-// RUN: %clang_cc1 -DINLINE_INIT -DREAL_DEFINITION -emit-llvm 
-triple=i386-pc-win32 -fms-compatibility %s -o - | FileCheck %s 
--check-prefix=CHECK-INLINE
+// RUN: %clang_cc1 -DREAL_DEFINITION -DREFERENCED -emit-llvm 
-triple=i386-pc-win32 -fms-compatibility %s -o - | FileCheck %s 
--check-prefix=CHECK-OUTOFLINE
 
----------------
I think the explosion in RUN lines here is getting out of hand. We can test all 
the cases in a single TU if we just have multiple static data members in S. Do 
you mind doing that cleanup?

http://reviews.llvm.org/D9850

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to