r332411 - [Attr] Don't print implicit attributes
Joel E. Denny via cfe-commits
cfe-commits at lists.llvm.org
Tue May 15 15:16:48 PDT 2018
Author: jdenny
Date: Tue May 15 15:16:47 2018
New Revision: 332411
URL: http://llvm.org/viewvc/llvm-project?rev=332411&view=rev
Log:
[Attr] Don't print implicit attributes
Fixes bug reported at:
http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20180514/228390.html
Reviewed by: aaron.ballman
Differential Revision: https://reviews.llvm.org/D46894
Modified:
cfe/trunk/lib/AST/DeclPrinter.cpp
cfe/trunk/test/Misc/ast-print-record-decl.c
Modified: cfe/trunk/lib/AST/DeclPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=332411&r1=332410&r2=332411&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclPrinter.cpp (original)
+++ cfe/trunk/lib/AST/DeclPrinter.cpp Tue May 15 15:16:47 2018
@@ -215,7 +215,7 @@ void DeclPrinter::prettyPrintAttributes(
if (D->hasAttrs()) {
AttrVec &Attrs = D->getAttrs();
for (auto *A : Attrs) {
- if (A->isInherited())
+ if (A->isInherited() || A->isImplicit())
continue;
switch (A->getKind()) {
#define ATTR(X)
Modified: cfe/trunk/test/Misc/ast-print-record-decl.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/ast-print-record-decl.c?rev=332411&r1=332410&r2=332411&view=diff
==============================================================================
--- cfe/trunk/test/Misc/ast-print-record-decl.c (original)
+++ cfe/trunk/test/Misc/ast-print-record-decl.c Tue May 15 15:16:47 2018
@@ -54,20 +54,34 @@
// RUN: -DKW=struct -DBASES=' : B' -o - -xc++ %s \
// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s
//
-// RUN: %clang_cc1 -verify -triple x86_64-linux -ast-print -DKW=struct -DBASES=' : B' -xc++ %s \
-// RUN: > %t.cpp
+// RUN: %clang_cc1 -verify -ast-print -DKW=struct -DBASES=' : B' -xc++ %s \
+// RUN: > %t.cpp
// RUN: FileCheck --check-prefixes=CHECK,PRINT,PRINT-CXX -DKW=struct \
// RUN: -DBASES=' : B' %s --input-file %t.cpp
//
// Now check compiling and printing of the printed file.
//
-// RUN: echo "// expected""-warning@* 10 {{'T' is deprecated}}" >> %t.cpp
-// RUN: echo "// expected""-note@* 10 {{'T' has been explicitly marked deprecated here}}" >> %t.cpp
+// RUN: echo "// expected""-warning@* 10 {{'T' is deprecated}}" > %t.diags
+// RUN: echo "// expected""-note@* 10 {{'T' has been explicitly marked deprecated here}}" >> %t.diags
+// RUN: cat %t.diags >> %t.cpp
//
// RUN: %clang -target x86_64-linux -Xclang -verify -S -emit-llvm -o - %t.cpp \
// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s
//
-// RUN: %clang_cc1 -verify -triple x86_64-linux -ast-print %t.cpp \
+// RUN: %clang_cc1 -verify -ast-print %t.cpp \
+// RUN: | FileCheck --check-prefixes=CHECK,PRINT,PRINT-CXX -DKW=struct \
+// RUN: -DBASES=' : B' %s
+//
+// Make sure implicit attributes aren't printed. See comments in inMemberPtr
+// for details.
+//
+// RUN: %clang_cc1 -triple i686-pc-win32 -verify -ast-print -DKW=struct \
+// RUN: -DBASES=' : B' -xc++ %s > %t.cpp
+// RUN: FileCheck --check-prefixes=CHECK,PRINT,PRINT-CXX -DKW=struct \
+// RUN: -DBASES=' : B' %s --input-file %t.cpp
+//
+// RUN: cat %t.diags >> %t.cpp
+// RUN: %clang_cc1 -triple i686-pc-win32 -verify -ast-print %t.cpp \
// RUN: | FileCheck --check-prefixes=CHECK,PRINT,PRINT-CXX -DKW=struct \
// RUN: -DBASES=' : B' %s
@@ -236,6 +250,9 @@ void inInit() {
#ifdef __cplusplus
// PRINT-CXX-LABEL: inMemberPtr
void inMemberPtr() {
+ // Under windows, the implicit attribute __single_inheritance used to print
+ // between KW and T1 here, but that wasn't faithful to the original source.
+ //
// PRINT-CXX-NEXT: [[KW]] T1 {
// PRINT-CXX-NEXT: int i;
// PRINT-CXX-NEXT: };
More information about the cfe-commits
mailing list