LLVM: lib/FileCheck/FileCheckImpl.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_LIB_FILECHECK_FILECHECKIMPL_H
16#define LLVM_LIB_FILECHECK_FILECHECKIMPL_H
17
25#include
26#include
27#include
28#include
29
30namespace llvm {
31
32
33
34
35
36
37
38
53
54private:
56 unsigned Precision = 0;
57
58 bool AlternateForm = false;
59
60public:
61
63
64
65
68 Precision == Other.Precision && AlternateForm == Other.AlternateForm;
69 }
70
72 return !(*this == Other);
73 }
74
75 bool operator==(Kind OtherValue) const { return Value == OtherValue; }
76
77 bool operator!=(Kind OtherValue) const { return !(*this == OtherValue); }
78
79
81
85 : Value(Value), Precision(Precision){};
87 : Value(Value), Precision(Precision), AlternateForm(AlternateForm){};
88
89
90
91
93
94
95
96
98
99
100
103};
104
105
106
108public:
110
112 return std::make_error_code(std::errc::value_too_large);
113 }
114
115 void log(raw_ostream &OS) const override { OS << "overflow error"; }
116};
117
118
119
121 bool &Overflow);
123 bool &Overflow);
125 bool &Overflow);
127 bool &Overflow);
128Expected exprMax(const APInt &Lhs, const APInt &Rhs, bool &Overflow);
129Expected exprMin(const APInt &Lhs, const APInt &Rhs, bool &Overflow);
130
131
133private:
135
136public:
138
140
142
143
144
146
147
148
149
150
155};
156
157
159private:
160
162
163public:
166
167
169};
170
171
172
174private:
176
177public:
179
181
183
187
188
190 OS << "undefined variable: " << VarName;
191 }
192};
193
194
196private:
197
198 std::unique_ptr AST;
199
200
202
203public:
204
205
207 : AST(std::move(AST)), Format(Format) {}
208
209
210
212
214};
215
216
218private:
219
221
222
223
225
226
227 std::optional Value;
228
229
230
231 std::optional StrValue;
232
233
234
235
236 std::optional<size_t> DefLineNumber;
237
238public:
239
240
241
243 std::optional<size_t> DefLineNumber = std::nullopt)
244 : Name(Name), ImplicitFormat(ImplicitFormat),
245 DefLineNumber(DefLineNumber) {}
246
247
249
250
252
253
254 std::optional getValue() const { return Value; }
255
256
257
258
259
260
261 std::optional getStringValue() const { return StrValue; }
262
263
264
265
267 std::optional NewStrValue = std::nullopt) {
268 Value = NewValue;
269 StrValue = NewStrValue;
270 }
271
272
273
275 Value = std::nullopt;
276 StrValue = std::nullopt;
277 }
278
279
280
282};
283
284
285
287private:
288
290
291public:
294
296
297
300 return Variable->getImplicitFormat();
301 }
302};
303
304
306
307
309private:
310
311 std::unique_ptr LeftOperand;
312
313
314 std::unique_ptr RightOperand;
315
316
318
319public:
321 std::unique_ptr LeftOp,
322 std::unique_ptr RightOp)
323 : ExpressionAST(ExpressionStr), EvalBinop(EvalBinop) {
324 LeftOperand = std::move(LeftOp);
325 RightOperand = std::move(RightOp);
326 }
327
328
329
330
331
333
334
335
336
337
339 getImplicitFormat(const SourceMgr &SM) const override;
340};
341
342class FileCheckPatternContext;
343
344
346protected:
347
348
349
350
351
352
354
355
356
358
359
361
362public:
366
368
369
371
372
374
375
376
377
379
380
381
382
384};
385
387public:
391
392
393
395
396
397
398
400};
401
403private:
404
405
406 std::unique_ptr ExpressionPointer;
407
408public:
410 std::unique_ptr ExpressionPointer,
413 ExpressionPointer(std::move(ExpressionPointer)) {}
414
415
416
418
419
420
421
423};
424
425
426
427
428
429
430
431
434
435private:
436
437
438
439
441
442
443
444
446
447
448
449
450
452
453
454
456
457
458
459 std::vector<std::unique_ptr> NumericVariables;
460
461
462
463 std::vector<std::unique_ptr> Expressions;
464
465
466
467 std::vector<std::unique_ptr> Substitutions;
468
469public:
470
471
473
474
475
476
477
480
481
482
484
485
486
487
488
490
491private:
492
493
494 template <class... Types> NumericVariable *makeNumericVariable(Types... args);
495
496
497
499
500
501
503 std::unique_ptr Expression,
504 size_t InsertIdx);
505};
506
507
508
510private:
513
514public:
516
518 : Diagnostic(Diag), Range(Range) {}
519
523
524
525 void log(raw_ostream &OS) const override { Diagnostic.print(nullptr, OS); }
526
529
535
539 return get(SM, Start, ErrMsg, SMRange(Start, End));
540 }
541};
542
544public:
546
550
551
553 OS << "String not found in input";
554 }
555};
556
557
558
559
560
561
562
563
564
565
566
568public:
570
574
575
577 OS << "error previously reported";
578 }
579
581 if (HasErrorReported)
584 }
585};
586
588 SMLoc PatternLoc;
589
590
591
593
594
595
596 std::string RegExStr;
597
598
599
600
601
602
603
604 std::vector<Substitution *> Substitutions;
605
606
607
608
609
610
611
612
613
614
615
616
617 std::map<StringRef, unsigned> VariableDefs;
618
619
620
621
622
623 struct NumericVariableMatch {
624
625
627
628
629
630 unsigned CaptureParenGroup;
631 };
632
633
634
635
637
638
639
640
641
642
643
645
647
648
649
650
651 std::optional<size_t> LineNumber;
652
653
654 bool IgnoreCase = false;
655
656public:
658 std::optional<size_t> Line = std::nullopt)
659 : Context(Context), CheckTy(Ty), LineNumber(Line) {}
660
661
663
664
665
667
668
670
671
676
677
678
679
680
681
684
685
686
687
688
689
690
691
692
693
696 StringRef Expr, std::optional<NumericVariable *> &DefinedNumericVariable,
697 bool IsLegacyLineExpr, std::optional<size_t> LineNumber,
699
700
701
702
703
704
705
721
722
723
724
725
726
727
728
729
730
731
734
737 std::vector *Diags) const;
739 std::vector *Diags) const;
740
742 return !(Substitutions.empty() && VariableDefs.empty());
743 }
746 std::vector *Diags) const;
747
749
750 int getCount() const { return CheckTy.getCount(); }
751
752private:
753 bool AddRegExToRegEx(StringRef RS, unsigned &CurParen, SourceMgr &SM);
754 void AddBackrefToRegEx(unsigned BackrefNum);
755
756
757
758 unsigned computeMatchDistance(StringRef Buffer) const;
759
760
761
762
763
764
766
767
768
769
770
771
774 std::optional<size_t> LineNumber, ExpressionFormat ImplicitFormat,
776
777
778
779
780
781
783 StringRef Name, bool IsPseudo, std::optional<size_t> LineNumber,
785 enum class AllowedOperand { LineVar, LegacyLiteral, Any };
786
787
788
789
790
791
792
793
794
795 static Expected<std::unique_ptr>
796 parseNumericOperand(StringRef &Expr, AllowedOperand AO, bool ConstraintParsed,
797 std::optional<size_t> LineNumber,
798 FileCheckPatternContext *Context, const SourceMgr &SM);
799
800
801
802
803
804
805
806
807
808 static Expected<std::unique_ptr>
809 parseBinop(StringRef Expr, StringRef &RemainingExpr,
810 std::unique_ptr LeftOp, bool IsLegacyLineExpr,
811 std::optional<size_t> LineNumber, FileCheckPatternContext *Context,
812 const SourceMgr &SM);
813
814
815
816
817
818
819
820 static Expected<std::unique_ptr>
821 parseParenExpr(StringRef &Expr, std::optional<size_t> LineNumber,
822 FileCheckPatternContext *Context, const SourceMgr &SM);
823
824
825
826
827
828
829
830
831 static Expected<std::unique_ptr>
832 parseCallExpr(StringRef &Expr, StringRef FuncName,
833 std::optional<size_t> LineNumber,
834 FileCheckPatternContext *Context, const SourceMgr &SM);
835};
836
837
838
839
840
841
843
845
846
848
849
851
852
853
854
862
863
865
867 std::vector &&D)
869
870
873 std::vector *Diags) const;
874
875
876
878
879
881
882
883
885 const std::vector<const DagNotPrefixInfo *> &NotStrings,
887 std::vector *Diags) const;
888
890 std::vector<const DagNotPrefixInfo *> &NotStrings,
892 std::vector *Diags) const;
893};
894
895}
896
897#endif
This file defines the StringMap class.
This file implements a class to represent arbitrary precision integral constant values and operations...
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
#define LLVM_ABI_FOR_TEST
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
Class for arbitrary precision integers.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
BinaryOperation(StringRef ExpressionStr, binop_eval_t EvalBinop, std::unique_ptr< ExpressionAST > LeftOp, std::unique_ptr< ExpressionAST > RightOp)
Definition FileCheckImpl.h:320
StringRef getMessage() const
Definition FileCheckImpl.h:527
ErrorDiagnostic(SMDiagnostic &&Diag, SMRange Range)
Definition FileCheckImpl.h:517
std::error_code convertToErrorCode() const override
Convert this error to a std::error_code.
Definition FileCheckImpl.h:520
static LLVM_ABI_FOR_TEST char ID
Definition FileCheckImpl.h:515
void log(raw_ostream &OS) const override
Print diagnostic associated with this error when printing the error.
Definition FileCheckImpl.h:525
static Error get(const SourceMgr &SM, SMLoc Loc, const Twine &ErrMsg, SMRange Range={})
Definition FileCheckImpl.h:530
SMRange getRange() const
Definition FileCheckImpl.h:528
static Error get(const SourceMgr &SM, StringRef Buffer, const Twine &ErrMsg)
Definition FileCheckImpl.h:536
Base class for user error types.
An error that has already been reported.
Definition FileCheckImpl.h:567
static Error reportedOrSuccess(bool HasErrorReported)
Definition FileCheckImpl.h:580
static char ID
Definition FileCheckImpl.h:569
void log(raw_ostream &OS) const override
Print diagnostic associated with this error when printing the error.
Definition FileCheckImpl.h:576
std::error_code convertToErrorCode() const override
Convert this error to a std::error_code.
Definition FileCheckImpl.h:571
Lightweight error class with error context and mandatory checking.
static ErrorSuccess success()
Create a success value.
Tagged union holding either a T or a Error.
Base class representing the AST of a given expression.
Definition FileCheckImpl.h:132
ExpressionAST(StringRef ExpressionStr)
Definition FileCheckImpl.h:137
virtual Expected< APInt > eval() const =0
Evaluates and.
StringRef getExpressionStr() const
Definition FileCheckImpl.h:141
virtual ~ExpressionAST()=default
virtual Expected< ExpressionFormat > getImplicitFormat(const SourceMgr &SM) const
Definition FileCheckImpl.h:152
ExpressionLiteral(StringRef ExpressionStr, APInt Val)
Definition FileCheckImpl.h:164
Expected< APInt > eval() const override
Definition FileCheckImpl.h:168
Class representing an expression and its matching format.
Definition FileCheckImpl.h:195
ExpressionFormat getFormat() const
Definition FileCheckImpl.h:213
Expression(std::unique_ptr< ExpressionAST > AST, ExpressionFormat Format)
Generic constructor for an expression represented by the given AST and whose matching format is Forma...
Definition FileCheckImpl.h:206
ExpressionAST * getAST() const
Definition FileCheckImpl.h:211
Class holding the Pattern global state, shared by all patterns: tables holding values of variables an...
Definition FileCheckImpl.h:432
LLVM_ABI_FOR_TEST Error defineCmdlineVariables(ArrayRef< StringRef > CmdlineDefines, SourceMgr &SM)
Defines string and numeric variables from definitions given on the command line, passed as a vector o...
LLVM_ABI_FOR_TEST void createLineVariable()
Create @LINE pseudo variable.
LLVM_ABI_FOR_TEST Expected< StringRef > getPatternVarValue(StringRef VarName)
friend class Pattern
Definition FileCheckImpl.h:433
LLVM_ABI_FOR_TEST void clearLocalVars()
Undefines local variables (variables whose name does not start with a '$' sign), i....
Definition FileCheckImpl.h:543
std::error_code convertToErrorCode() const override
Convert this error to a std::error_code.
Definition FileCheckImpl.h:547
void log(raw_ostream &OS) const override
Print diagnostic associated with this error when printing the error.
Definition FileCheckImpl.h:552
static LLVM_ABI_FOR_TEST char ID
Definition FileCheckImpl.h:545
NumericSubstitution(FileCheckPatternContext *Context, StringRef ExpressionStr, std::unique_ptr< Expression > ExpressionPointer, size_t InsertIdx)
Definition FileCheckImpl.h:409
NumericVariableUse(StringRef Name, NumericVariable *Variable)
Definition FileCheckImpl.h:292
Expected< ExpressionFormat > getImplicitFormat(const SourceMgr &SM) const override
Definition FileCheckImpl.h:299
Class representing a numeric variable and its associated current value.
Definition FileCheckImpl.h:217
void clearValue()
Clears value of this numeric variable, regardless of whether it is currently defined or not.
Definition FileCheckImpl.h:274
void setValue(APInt NewValue, std::optional< StringRef > NewStrValue=std::nullopt)
Sets value of this numeric variable to NewValue, and sets the input buffer string from which it was p...
Definition FileCheckImpl.h:266
ExpressionFormat getImplicitFormat() const
Definition FileCheckImpl.h:251
StringRef getName() const
Definition FileCheckImpl.h:248
std::optional< StringRef > getStringValue() const
Definition FileCheckImpl.h:261
std::optional< APInt > getValue() const
Definition FileCheckImpl.h:254
NumericVariable(StringRef Name, ExpressionFormat ImplicitFormat, std::optional< size_t > DefLineNumber=std::nullopt)
Constructor for a variable Name with implicit format ImplicitFormat defined at line DefLineNumber or ...
Definition FileCheckImpl.h:242
std::optional< size_t > getDefLineNumber() const
Definition FileCheckImpl.h:281
Class to represent an overflow error that might result when manipulating a value.
Definition FileCheckImpl.h:107
static LLVM_ABI_FOR_TEST char ID
Definition FileCheckImpl.h:109
void log(raw_ostream &OS) const override
Print an error message to an output stream.
Definition FileCheckImpl.h:115
std::error_code convertToErrorCode() const override
Convert this error to a std::error_code.
Definition FileCheckImpl.h:111
Definition FileCheckImpl.h:587
static LLVM_ABI_FOR_TEST Expected< VariableProperties > parseVariable(StringRef &Str, const SourceMgr &SM)
Parses the string at the start of Str for a variable name.
LLVM_ABI_FOR_TEST MatchResult match(StringRef Buffer, const SourceMgr &SM) const
Matches the pattern string against the input buffer Buffer.
void printFuzzyMatch(const SourceMgr &SM, StringRef Buffer, std::vector< FileCheckDiag > *Diags) const
void printSubstitutions(const SourceMgr &SM, StringRef Buffer, SMRange MatchRange, FileCheckDiag::MatchType MatchTy, std::vector< FileCheckDiag > *Diags) const
Prints the value of successful substitutions.
bool hasVariable() const
Definition FileCheckImpl.h:741
SMLoc getLoc() const
Definition FileCheckImpl.h:662
FileCheckPatternContext * getContext() const
Definition FileCheckImpl.h:666
static LLVM_ABI_FOR_TEST Expected< std::unique_ptr< Expression > > parseNumericSubstitutionBlock(StringRef Expr, std::optional< NumericVariable * > &DefinedNumericVariable, bool IsLegacyLineExpr, std::optional< size_t > LineNumber, FileCheckPatternContext *Context, const SourceMgr &SM)
Parses Expr for a numeric substitution block at line LineNumber, or before input is parsed if LineNum...
Pattern(Check::FileCheckType Ty, FileCheckPatternContext *Context, std::optional< size_t > Line=std::nullopt)
Definition FileCheckImpl.h:657
LLVM_ABI_FOR_TEST void printVariableDefs(const SourceMgr &SM, FileCheckDiag::MatchType MatchTy, std::vector< FileCheckDiag > *Diags) const
static LLVM_ABI_FOR_TEST bool isValidVarNameStart(char C)
int getCount() const
Definition FileCheckImpl.h:750
Check::FileCheckType getCheckTy() const
Definition FileCheckImpl.h:748
LLVM_ABI_FOR_TEST bool parsePattern(StringRef PatternStr, StringRef Prefix, SourceMgr &SM, const FileCheckRequest &Req)
Parses the pattern in PatternStr and initializes this Pattern instance accordingly.
Instances of this class encapsulate one diagnostic report, allowing printing to a raw_ostream as a ca...
Represents a location in source code.
static SMLoc getFromPointer(const char *Ptr)
Represents a range in source code.
This owns the files read by a parser, handles include stacks, and handles diagnostic wrangling.
LLVM_ABI SMDiagnostic GetMessage(SMLoc Loc, DiagKind Kind, const Twine &Msg, ArrayRef< SMRange > Ranges={}, ArrayRef< SMFixIt > FixIts={}) const
Return an SMDiagnostic at the specified location with the specified string.
StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...
StringRef - Represent a constant reference to a string, i.e.
constexpr size_t size() const
size - Get the string size.
constexpr const char * data() const
data - Get a pointer to the start of the string (which may not be null terminated).
StringSubstitution(FileCheckPatternContext *Context, StringRef VarName, size_t InsertIdx)
Definition FileCheckImpl.h:388
Class representing a substitution to perform in the RegExStr string.
Definition FileCheckImpl.h:345
virtual ~Substitution()=default
Substitution(FileCheckPatternContext *Context, StringRef VarName, size_t InsertIdx)
Definition FileCheckImpl.h:363
StringRef getFromString() const
Definition FileCheckImpl.h:370
size_t InsertIdx
Definition FileCheckImpl.h:360
size_t getIndex() const
Definition FileCheckImpl.h:373
FileCheckPatternContext * Context
Pointer to a class instance holding, among other things, the table with the values of live string var...
Definition FileCheckImpl.h:353
virtual Expected< std::string > getResultRegex() const =0
virtual Expected< std::string > getResultForDiagnostics() const =0
StringRef FromStr
The string that needs to be substituted for something else.
Definition FileCheckImpl.h:357
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
UndefVarError(StringRef VarName)
Definition FileCheckImpl.h:180
std::error_code convertToErrorCode() const override
Convert this error to a std::error_code.
Definition FileCheckImpl.h:184
StringRef getVarName() const
Definition FileCheckImpl.h:182
static LLVM_ABI_FOR_TEST char ID
Definition FileCheckImpl.h:178
void log(raw_ostream &OS) const override
Print name of variable associated with this error.
Definition FileCheckImpl.h:189
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI std::error_code inconvertibleErrorCode()
The value returned by this function can be returned from convertToErrorCode for Error values where no...
LLVM_ABI_FOR_TEST Expected< APInt > exprAdd(const APInt &Lhs, const APInt &Rhs, bool &Overflow)
Performs operation and.
Expected< APInt >(*)(const APInt &, const APInt &, bool &) binop_eval_t
Type of functions evaluating a given binary operation.
Definition FileCheckImpl.h:305
LLVM_ABI_FOR_TEST Expected< APInt > exprMul(const APInt &Lhs, const APInt &Rhs, bool &Overflow)
Error make_error(ArgTs &&... Args)
Make a Error instance representing failure using the given error info type.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Expected< APInt > exprMax(const APInt &Lhs, const APInt &Rhs, bool &Overflow)
LLVM_ABI_FOR_TEST Expected< APInt > exprDiv(const APInt &Lhs, const APInt &Rhs, bool &Overflow)
Expected< APInt > exprMin(const APInt &Lhs, const APInt &Rhs, bool &Overflow)
LLVM_ABI_FOR_TEST Expected< APInt > exprSub(const APInt &Lhs, const APInt &Rhs, bool &Overflow)
Implement std::hash so that hash_code can be used in STL containers.
Type representing the format an expression value should be textualized into for matching.
Definition FileCheckImpl.h:39
LLVM_ABI_FOR_TEST APInt valueFromStringRepr(StringRef StrVal, const SourceMgr &SM) const
StringRef toString() const
bool operator!=(const ExpressionFormat &Other) const
Definition FileCheckImpl.h:71
bool operator==(Kind OtherValue) const
Definition FileCheckImpl.h:75
LLVM_ABI_FOR_TEST Expected< std::string > getMatchingString(APInt Value) const
LLVM_ABI_FOR_TEST Expected< std::string > getWildcardRegex() const
ExpressionFormat(Kind Value)
Definition FileCheckImpl.h:83
Kind
Definition FileCheckImpl.h:40
@ HexLower
Value should be printed as a lowercase hex number.
Definition FileCheckImpl.h:51
@ HexUpper
Value should be printed as an uppercase hex number.
Definition FileCheckImpl.h:49
@ Signed
Value is a signed integer and should be printed as a decimal number.
Definition FileCheckImpl.h:47
@ Unsigned
Value is an unsigned integer and should be printed as a decimal number.
Definition FileCheckImpl.h:45
@ NoFormat
Denote absence of format.
Definition FileCheckImpl.h:43
ExpressionFormat(Kind Value, unsigned Precision)
Definition FileCheckImpl.h:84
bool operator!=(Kind OtherValue) const
Definition FileCheckImpl.h:77
ExpressionFormat()=default
bool operator==(const ExpressionFormat &Other) const
Define format equality: formats are equal if neither is NoFormat and their kinds and precision are th...
Definition FileCheckImpl.h:66
ExpressionFormat(Kind Value, unsigned Precision, bool AlternateForm)
Definition FileCheckImpl.h:86
MatchType
What type of match result does this diagnostic describe?
Contains info about various FileCheck options.
Pattern DagNotPat
Definition FileCheckImpl.h:856
StringRef DagNotPrefix
Definition FileCheckImpl.h:857
DagNotPrefixInfo(const Pattern &P, StringRef S)
Definition FileCheckImpl.h:859
bool CheckNext(const SourceMgr &SM, StringRef Buffer) const
Verifies that there is a single line in the given Buffer.
Pattern Pat
The pattern to match.
Definition FileCheckImpl.h:844
bool CheckSame(const SourceMgr &SM, StringRef Buffer) const
Verifies that there is no newline in the given Buffer.
std::vector< DagNotPrefixInfo > DagNotStrings
Hold the DAG/NOT strings occurring in the input file.
Definition FileCheckImpl.h:864
SMLoc Loc
The location in the match file that the check string was specified.
Definition FileCheckImpl.h:850
StringRef Prefix
Which prefix name this check matched.
Definition FileCheckImpl.h:847
FileCheckString(Pattern &&P, StringRef S, SMLoc L, std::vector< DagNotPrefixInfo > &&D)
Definition FileCheckImpl.h:866
size_t CheckDag(const SourceMgr &SM, StringRef Buffer, std::vector< const DagNotPrefixInfo * > &NotStrings, const FileCheckRequest &Req, std::vector< FileCheckDiag > *Diags) const
Matches "dag strings" and their mixed "not strings".
bool CheckNot(const SourceMgr &SM, StringRef Buffer, const std::vector< const DagNotPrefixInfo * > &NotStrings, const FileCheckRequest &Req, std::vector< FileCheckDiag > *Diags) const
Verifies that none of the strings in NotStrings are found in the given Buffer.
Error TheError
Definition FileCheckImpl.h:715
MatchResult(Match M, Error E)
Definition FileCheckImpl.h:718
MatchResult(size_t MatchPos, size_t MatchLen, Error E)
Definition FileCheckImpl.h:716
std::optional< Match > TheMatch
Definition FileCheckImpl.h:714
MatchResult(Error E)
Definition FileCheckImpl.h:719
Definition FileCheckImpl.h:709
size_t Len
Definition FileCheckImpl.h:711
size_t Pos
Definition FileCheckImpl.h:710
Parsing information about a variable.
Definition FileCheckImpl.h:672
bool IsPseudo
Definition FileCheckImpl.h:674
StringRef Name
Definition FileCheckImpl.h:673