summaryrefslogtreecommitdiffstats
path: root/llvm/examples/Kaleidoscope/Chapter4/toy.cpp
diff options
context:
space:
mode:
authorEugene Zelenko <eugene.zelenko@gmail.com>2016-11-18 21:57:58 +0000
committerEugene Zelenko <eugene.zelenko@gmail.com>2016-11-18 21:57:58 +0000
commitae7ac95cc9fd34ce55b404050e523abe1a943260 (patch)
tree40c557e513ab5e7baabaeebe539190faa59620a7 /llvm/examples/Kaleidoscope/Chapter4/toy.cpp
parent09c311b9a46c72ffea99026755db046cc2b0364f (diff)
downloadbcm5719-llvm-ae7ac95cc9fd34ce55b404050e523abe1a943260.tar.gz
bcm5719-llvm-ae7ac95cc9fd34ce55b404050e523abe1a943260.zip
[Examples] Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes.
Differential revision: https://reviews.llvm.org/D26433 llvm-svn: 287384
Diffstat (limited to 'llvm/examples/Kaleidoscope/Chapter4/toy.cpp')
-rw-r--r--llvm/examples/Kaleidoscope/Chapter4/toy.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/llvm/examples/Kaleidoscope/Chapter4/toy.cpp b/llvm/examples/Kaleidoscope/Chapter4/toy.cpp
index 836a2053cbe..39b9563bc28 100644
--- a/llvm/examples/Kaleidoscope/Chapter4/toy.cpp
+++ b/llvm/examples/Kaleidoscope/Chapter4/toy.cpp
@@ -15,6 +15,7 @@
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Scalar/GVN.h"
#include "../include/KaleidoscopeJIT.h"
+#include <algorithm>
#include <cassert>
#include <cctype>
#include <cstdint>
@@ -103,11 +104,14 @@ static int gettok() {
//===----------------------------------------------------------------------===//
// Abstract Syntax Tree (aka Parse Tree)
//===----------------------------------------------------------------------===//
+
namespace {
+
/// ExprAST - Base class for all expression nodes.
class ExprAST {
public:
- virtual ~ExprAST() {}
+ virtual ~ExprAST() = default;
+
virtual Value *codegen() = 0;
};
@@ -117,6 +121,7 @@ class NumberExprAST : public ExprAST {
public:
NumberExprAST(double Val) : Val(Val) {}
+
Value *codegen() override;
};
@@ -126,6 +131,7 @@ class VariableExprAST : public ExprAST {
public:
VariableExprAST(const std::string &Name) : Name(Name) {}
+
Value *codegen() override;
};
@@ -138,6 +144,7 @@ public:
BinaryExprAST(char Op, std::unique_ptr<ExprAST> LHS,
std::unique_ptr<ExprAST> RHS)
: Op(Op), LHS(std::move(LHS)), RHS(std::move(RHS)) {}
+
Value *codegen() override;
};
@@ -150,6 +157,7 @@ public:
CallExprAST(const std::string &Callee,
std::vector<std::unique_ptr<ExprAST>> Args)
: Callee(Callee), Args(std::move(Args)) {}
+
Value *codegen() override;
};
@@ -163,6 +171,7 @@ class PrototypeAST {
public:
PrototypeAST(const std::string &Name, std::vector<std::string> Args)
: Name(Name), Args(std::move(Args)) {}
+
Function *codegen();
const std::string &getName() const { return Name; }
};
@@ -176,8 +185,10 @@ public:
FunctionAST(std::unique_ptr<PrototypeAST> Proto,
std::unique_ptr<ExprAST> Body)
: Proto(std::move(Proto)), Body(std::move(Body)) {}
+
Function *codegen();
};
+
} // end anonymous namespace
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud