r332314 - [AST] Fix printing tag decl groups in decl contexts
Hans Wennborg via cfe-commits
cfe-commits at lists.llvm.org
Tue May 15 03:23:27 PDT 2018
This broke the ast-print-record-decl.c test on Windows, see for
example http://lab.llvm.org:8011/builders/clang-with-thin-lto-windows/builds/9066
One way to reproduce the failure on Linux is to pass a Windows triple
to this ast-print command:
--- a/test/Misc/ast-print-record-decl.c
+++ b/test/Misc/ast-print-record-decl.c
@@ -54,7 +54,7 @@
// RUN: -DKW=struct -DBASES=' : B' -o - -xc++ %s \
// RUN: | FileCheck --check-prefixes=CHECK,LLVM %s
//
-// RUN: %clang_cc1 -verify -ast-print -DKW=struct -DBASES=' : B' -xc++ %s \
+// RUN: %clang_cc1 -verify -triple i686-pc-win32 -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
What's happening is that on Windows, "__single_inheritance(1)" is
printed before T1. But if I change the test to allow that in the
output, it still doesn't pass as Clang doesn't seem able to parse it.
I've worked around the problem by adding a Linux triple here in
r332335, but someone should probably look into it properly.
Thanks,
Hans
On Tue, May 15, 2018 at 2:44 AM, Joel E. Denny via cfe-commits
<cfe-commits at lists.llvm.org> wrote:
> Author: jdenny
> Date: Mon May 14 17:44:14 2018
> New Revision: 332314
>
> URL: http://llvm.org/viewvc/llvm-project?rev=332314&view=rev
> Log:
> [AST] Fix printing tag decl groups in decl contexts
>
> For example, given:
>
> struct T1 {
> struct T2 *p0;
> };
>
> -ast-print produced:
>
> struct T1 {
> struct T2;
> struct T2 *p0;
> };
>
> Compiling that produces a warning that the first struct T2 declaration
> does not declare anything.
>
> Details:
>
> A tag decl group is one or more decls that share a type specifier that
> is a tag decl (that is, a struct/union/class/enum decl). Within
> functions, the parser builds such a tag decl group as part of a
> DeclStmt. However, in decl contexts, such as file scope or a member
> list, the parser does not group together the members of a tag decl
> group. Previously, detection of tag decl groups during printing was
> implemented but only if the tag decl was unnamed. Otherwise, as in
> the above example, the members of the group did not print together and
> so sometimes introduced warnings.
>
> This patch extends detection of tag decl groups in decl contexts to
> any tag decl that is recorded in the AST as not free-standing.
>
> Reviewed by: rsmith
>
> Differential Revision: https://reviews.llvm.org/D45465
>
> Modified:
> cfe/trunk/lib/AST/DeclPrinter.cpp
> cfe/trunk/test/Misc/ast-print-enum-decl.c
> cfe/trunk/test/Misc/ast-print-record-decl.c
> cfe/trunk/test/Sema/ast-print.c
> cfe/trunk/test/SemaCXX/ast-print.cpp
More information about the cfe-commits
mailing list