46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
//== PseudoConstantAnalysis.h - Find Pseudo-constants in the AST -*- C++ -*-==//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file tracks the usage of variables in a Decl body to see if they are
|
|
// never written to, implying that they constant. This is useful in static
|
|
// analysis to see if a developer might have intended a variable to be const.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_CLANG_ANALYSIS_ANALYSES_PSEUDOCONSTANTANALYSIS_H
|
|
#define LLVM_CLANG_ANALYSIS_ANALYSES_PSEUDOCONSTANTANALYSIS_H
|
|
|
|
#include "clang/AST/Stmt.h"
|
|
|
|
namespace clang {
|
|
|
|
class PseudoConstantAnalysis {
|
|
public:
|
|
PseudoConstantAnalysis(const Stmt *DeclBody);
|
|
~PseudoConstantAnalysis();
|
|
|
|
bool isPseudoConstant(const VarDecl *VD);
|
|
bool wasReferenced(const VarDecl *VD);
|
|
|
|
private:
|
|
void RunAnalysis();
|
|
inline static const Decl *getDecl(const Expr *E);
|
|
|
|
// for storing the result of analyzed ValueDecls
|
|
void *NonConstantsImpl;
|
|
void *UsedVarsImpl;
|
|
|
|
const Stmt *DeclBody;
|
|
bool Analyzed;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|