<p>Once the blocks are created, we can emit the conditional branch that chooses
between them. Note that creating new blocks does not implicitly affect the
-LLVMBuilder, so it is still inserting into the block that the condition
+IRBuilder, so it is still inserting into the block that the condition
went into. Also note that it is creating a branch to the "then" block and the
"else" block, even though the "else" block isn't inserted into the function yet.
This is all ok: it is the standard way that LLVM supports forward
#include "llvm/Analysis/Verifier.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Transforms/Scalar.h"
-#include "llvm/Support/LLVMBuilder.h"
+#include "llvm/Support/IRBuilder.h"
#include <cstdio>
#include <string>
#include <map>
if (LastChar == '#') {
// Comment until end of line.
do LastChar = getchar();
- while (LastChar != EOF && LastChar != '\n' & LastChar != '\r');
+ while (LastChar != EOF && LastChar != '\n' && LastChar != '\r');
if (LastChar != EOF)
return gettok();
//===----------------------------------------------------------------------===//
static Module *TheModule;
-static LLVMFoldingBuilder Builder;
+static IRBuilder Builder;
static std::map<std::string, Value*> NamedValues;
static FunctionPassManager *TheFPM;
MainLoop();
TheFPM = 0;
- } // Free module provider and pass manager.
-
+
+ // Print out all of the generated code.
+ TheModule->dump();
+ } // Free module provider (and thus the module) and pass manager.
- // Print out all of the generated code.
- TheModule->dump();
return 0;
}
</pre>
</div>
+<a href="LangImpl6.html">Next: Extending the language: user-defined operators</a>
</div>
<!-- *********************************************************************** -->