[llvm] r326731 - [llvm-pdbdump] Dump restrict type qualifier

Aaron Smith via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 5 10:29:43 PST 2018


Author: asmith
Date: Mon Mar  5 10:29:43 2018
New Revision: 326731

URL: http://llvm.org/viewvc/llvm-project?rev=326731&view=rev
Log:
[llvm-pdbdump] Dump restrict type qualifier

Reviewers: zturner, llvm-commits, rnk

Reviewed By: zturner

Subscribers: majnemer

Differential Revision: https://reviews.llvm.org/D43639

Added:
    llvm/trunk/test/tools/llvm-pdbdump/Inputs/TypeQualifiersTest.cpp
    llvm/trunk/test/tools/llvm-pdbdump/Inputs/TypeQualifiersTest.pdb
    llvm/trunk/test/tools/llvm-pdbdump/type-qualifiers.test
Modified:
    llvm/trunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpp
    llvm/trunk/tools/llvm-pdbutil/PrettyTypedefDumper.cpp
    llvm/trunk/tools/llvm-pdbutil/PrettyVariableDumper.cpp

Added: llvm/trunk/test/tools/llvm-pdbdump/Inputs/TypeQualifiersTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-pdbdump/Inputs/TypeQualifiersTest.cpp?rev=326731&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-pdbdump/Inputs/TypeQualifiersTest.cpp (added)
+++ llvm/trunk/test/tools/llvm-pdbdump/Inputs/TypeQualifiersTest.cpp Mon Mar  5 10:29:43 2018
@@ -0,0 +1,55 @@
+// Compile with "cl /c /Zi /GR- TypeQualifiersTest.cpp"
+// Link with "link TypeQualifiersTest.obj /debug /nodefaultlib /entry:main"
+
+union Union {
+  int * __restrict x_member;
+  float * __restrict y_member;
+  int* volatile __restrict m_volatile;
+  const char* m_const;
+};
+
+int f(const volatile int* __restrict arg_crv) {
+  Union u;
+  return 1;
+}
+
+void g(int& __restrict arg_ref) {
+}
+
+namespace NS {
+  class Class {
+  public:
+    int get() const { return 1;}
+    int set() __restrict { return 2; }
+    void help() volatile { return; }
+  };
+
+  struct Foo {
+    int a;
+    int b;
+    int func(int x) __restrict { return 1; }
+  };
+
+  Foo s = { 10 };
+
+  const int* __restrict p_object = &s.a;
+
+  volatile int Foo:: * __restrict p_data_member = &Foo::a;
+
+  int (Foo::* p_member_func)(int) __restrict = &Foo::func;
+}
+
+typedef long* __restrict RestrictTypedef;
+RestrictTypedef RestrictVar;
+
+typedef volatile int* __restrict RankNArray[10][100];
+RankNArray ArrayVar;
+
+int main() {
+  NS::Class ClassVar;
+  ClassVar.get();
+  ClassVar.help();
+  ClassVar.set();
+
+  return 0;
+}

Added: llvm/trunk/test/tools/llvm-pdbdump/Inputs/TypeQualifiersTest.pdb
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-pdbdump/Inputs/TypeQualifiersTest.pdb?rev=326731&view=auto
==============================================================================
    (empty)

Added: llvm/trunk/test/tools/llvm-pdbdump/type-qualifiers.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-pdbdump/type-qualifiers.test?rev=326731&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-pdbdump/type-qualifiers.test (added)
+++ llvm/trunk/test/tools/llvm-pdbdump/type-qualifiers.test Mon Mar  5 10:29:43 2018
@@ -0,0 +1,25 @@
+; RUN: llvm-pdbutil pretty -all -class-recurse-depth=1 \
+; RUN:   %p/Inputs/TypeQualifiersTest.pdb > %t
+; RUN: FileCheck -input-file=%t %s -check-prefix=GLOBALS_FUNC
+; RUN: FileCheck -input-file=%t %s -check-prefix=GLOBALS_DATA
+; RUN: FileCheck -input-file=%t %s -check-prefix=QUALS
+
+; GLOBALS_FUNC: ---GLOBALS---
+; GLOBALS_FUNC-DAG: int __cdecl f(const volatile int* __restrict arg_crv)
+; GLOBALS_FUNC-DAG: void __cdecl g(int& __restrict arg_ref)
+
+; GLOBALS_DATA: ---GLOBALS---
+; GLOBALS_DATA-DAG: static volatile int* __restrict ArrayVar[10][100]
+; GLOBALS_DATA-DAG: static long* __restrict RestrictVar
+; GLOBALS_DATA-DAG: static const int* __restrict NS::p_object
+; GLOBALS_DATA-DAG: static NS::Foo NS::s
+; GLOBALS_DATA-DAG: static volatile int* __restrict NS::p_data_member
+
+; QUALS: ---TYPES---
+; QUALS-DAG: typedef RankNArray
+; QUALS-DAG: typedef long* __restrict RestrictTypedef
+; QUALS: union Union
+; QUALS-DAG: int* __restrict x_member
+; QUALS-DAG: float* __restrict y_member
+; QUALS-DAG: int* volatile __restrict m_volatile
+; QUALS-DAG: const char* m_const

Modified: llvm/trunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpp?rev=326731&r1=326730&r2=326731&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpp (original)
+++ llvm/trunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpp Mon Mar  5 10:29:43 2018
@@ -252,6 +252,9 @@ void FunctionDumper::dump(const PDBSymbo
       WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile ";
     PointeeType->dump(*this);
     Printer << (Symbol.isReference() ? "&" : "*");
+
+    if (Symbol.getRawSymbol().isRestrictedType())
+      WithColor(Printer, PDB_ColorItem::Keyword).get() << " __restrict";
   }
 }
 

Modified: llvm/trunk/tools/llvm-pdbutil/PrettyTypedefDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbutil/PrettyTypedefDumper.cpp?rev=326731&r1=326730&r2=326731&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbutil/PrettyTypedefDumper.cpp (original)
+++ llvm/trunk/tools/llvm-pdbutil/PrettyTypedefDumper.cpp Mon Mar  5 10:29:43 2018
@@ -63,6 +63,9 @@ void TypedefDumper::dump(const PDBSymbol
     PointeeType->dump(*this);
     Printer << ((Symbol.isReference()) ? "&" : "*");
   }
+
+  if (Symbol.getRawSymbol().isRestrictedType())
+    WithColor(Printer, PDB_ColorItem::Keyword).get() << " __restrict";
 }
 
 void TypedefDumper::dump(const PDBSymbolTypeFunctionSig &Symbol) {

Modified: llvm/trunk/tools/llvm-pdbutil/PrettyVariableDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbutil/PrettyVariableDumper.cpp?rev=326731&r1=326730&r2=326731&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbutil/PrettyVariableDumper.cpp (original)
+++ llvm/trunk/tools/llvm-pdbutil/PrettyVariableDumper.cpp Mon Mar  5 10:29:43 2018
@@ -169,6 +169,9 @@ void VariableDumper::dumpRight(const PDB
     WithColor(Printer, PDB_ColorItem::Keyword).get() << " const";
   if (Symbol.isVolatileType())
     WithColor(Printer, PDB_ColorItem::Keyword).get() << " volatile";
+
+  if (Symbol.getRawSymbol().isRestrictedType())
+    WithColor(Printer, PDB_ColorItem::Keyword).get() << " __restrict";
 }
 
 void VariableDumper::dump(const PDBSymbolTypePointer &Symbol) {
@@ -189,6 +192,9 @@ void VariableDumper::dump(const PDBSymbo
     WithColor(Printer, PDB_ColorItem::Keyword).get() << " const ";
   if (Symbol.isVolatileType())
     WithColor(Printer, PDB_ColorItem::Keyword).get() << " volatile ";
+
+  if (Symbol.getRawSymbol().isRestrictedType())
+    WithColor(Printer, PDB_ColorItem::Keyword).get() << " __restrict ";
 }
 
 void VariableDumper::dumpRight(const PDBSymbolTypePointer &Symbol) {




More information about the llvm-commits mailing list