mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 07:16:05 +00:00

This is accomplished by making VerifyDiagnosticsConsumer a CommentHandler, which then only reads the -verify directives that are actually in live blocks of code. It also makes it simpler to handle -verify directives that appear in header files, though we still have to manually reparse some files depending on how they are generated. This requires some test changes. In particular, all PCH tests now have their -verify directives outside the "header" portion of the file, using the @line syntax added in r159978. Other tests have been modified mostly to make it clear what is being tested, and to prevent polluting the expected output with the directives themselves. Patch by Andy Gibbs! (with slight modifications) The new Frontend/verify-* tests exercise the functionality of this commit, as well as r159978, r159979, and r160053 (Andy's other -verify enhancements). llvm-svn: 160068
48 lines
1.0 KiB
C
48 lines
1.0 KiB
C
// Test this without pch.
|
|
// RUN: %clang_cc1 -include %s -fsyntax-only -verify %s
|
|
|
|
// Test with pch.
|
|
// RUN: %clang_cc1 -emit-pch -o %t %s
|
|
// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s
|
|
|
|
#ifndef HEADER
|
|
#define HEADER
|
|
|
|
extern float y;
|
|
extern int *ip, x;
|
|
|
|
float z;
|
|
|
|
int z2 = 17;
|
|
|
|
#define MAKE_HAPPY(X) X##Happy
|
|
int MAKE_HAPPY(Very);
|
|
|
|
#define A_MACRO_IN_THE_PCH 492
|
|
#define FUNCLIKE_MACRO(X, Y) X ## Y
|
|
|
|
#define PASTE2(x,y) x##y
|
|
#define PASTE1(x,y) PASTE2(x,y)
|
|
#define UNIQUE(x) PASTE1(x,__COUNTER__)
|
|
|
|
int UNIQUE(a); // a0
|
|
int UNIQUE(a); // a1
|
|
|
|
#else
|
|
|
|
int *ip2 = &x;
|
|
float *fp = &ip; // expected-warning{{incompatible pointer types}}
|
|
double z; // expected-error{{redefinition}} expected-note@14{{previous}}
|
|
int z2 = 18; // expected-error{{redefinition}} expected-note@16{{previous}}
|
|
double VeryHappy; // expected-error{{redefinition}} expected-note@19{{previous definition is here}}
|
|
|
|
int Q = A_MACRO_IN_THE_PCH;
|
|
|
|
int R = FUNCLIKE_MACRO(A_MACRO_, IN_THE_PCH);
|
|
|
|
|
|
int UNIQUE(a); // a2
|
|
int *Arr[] = { &a0, &a1, &a2 };
|
|
|
|
#endif
|