]> granicus.if.org Git - clang/commit
[AST] Fix -ast-print for _Bool when have diagnostics
authorJoel E. Denny <jdenny.ornl@gmail.com>
Mon, 14 May 2018 18:41:44 +0000 (18:41 +0000)
committerJoel E. Denny <jdenny.ornl@gmail.com>
Mon, 14 May 2018 18:41:44 +0000 (18:41 +0000)
commitb8a4da9becf7fb8eb153b992455983d28bc11ffd
tree9f211f8787c56b03434088ca1284672c3b0cf4b2
parentec47066bad48dbb7478ec8d2f35392bd317068e7
[AST] Fix -ast-print for _Bool when have diagnostics

For example, given:

  #define bool _Bool
  _Bool i;
  void fn() { 1; }

-ast-print produced:

  tmp.c:3:13: warning: expression result unused
  void fn() { 1; }
              ^
  bool i;
  void fn() {
      1;
  }

That fails to compile because bool is undefined.

Details:

Diagnostics print _Bool as bool when the latter is defined as the
former.  However, diagnostics were altering the printing policy for
-ast-print as well.  The printed source was then invalid because the
preprocessor eats the bool definition.

Problematic diagnostics included suppressed warnings (e.g., add
-Wno-unused-value to the above example), including those that are
suppressed by default.

This patch fixes this bug and cleans up some related comments.

Reviewed by: aaron.ballman, rsmith

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@332275 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Sema/Sema.h
lib/Frontend/ASTConsumers.cpp
lib/Sema/Sema.cpp
test/Misc/ast-print-bool.c [new file with mode: 0644]