change name of branch instruction to "jumpif"
This commit is contained in:
19
test.c
19
test.c
@@ -2,6 +2,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void) {
|
||||
// define program
|
||||
GravityModule module = gravityCreateModule();
|
||||
GravityBuilder builder = gravityCreateBuilder();
|
||||
|
||||
@@ -20,27 +21,33 @@ int main(void) {
|
||||
gravityAppendBlockArgument(elseBlock, ptrType);
|
||||
|
||||
GravityBlock mergeBlock = gravityStartBlock("merge", mainFunc);
|
||||
gravityAppendBlockArgument(mergeBlock, ptrType);
|
||||
|
||||
// write entry
|
||||
gravityBuilderSwitchToBlock(builder, entryBlock);
|
||||
GravityValue x = gravityBuildAlloc(builder, charType, "x");
|
||||
|
||||
gravityBuildBr(builder, gravityNewIntConstant(charType, 1), thenBlock, (GravityValue[]){x}, elseBlock, (GravityValue[]){x});
|
||||
GravityValue oneConst = gravityBuildIntConstant(builder, charType, 1, "true");
|
||||
gravityBuildBr(builder, oneConst, thenBlock, (GravityValue[]){x}, elseBlock, (GravityValue[]){x});
|
||||
|
||||
// then block
|
||||
gravityBuilderSwitchToBlock(builder, thenBlock);
|
||||
GravityValue thenValue = gravityGetBlockArg(thenBlock, 0);
|
||||
gravityBuildStore(builder, thenValue, gravityNewIntConstant(charType, 5));
|
||||
gravityBuildJump(builder, mergeBlock, NULL);
|
||||
GravityValue fiveConst = gravityBuildIntConstant(builder, charType, 5, "five");
|
||||
gravityBuildStore(builder, thenValue, fiveConst);
|
||||
gravityBuildJump(builder, mergeBlock, (GravityValue[]){thenValue});
|
||||
|
||||
// else block
|
||||
gravityBuilderSwitchToBlock(builder, elseBlock);
|
||||
GravityValue elseValue = gravityGetBlockArg(elseBlock, 0);
|
||||
gravityBuildStore(builder, elseValue, gravityNewIntConstant(charType, 10));
|
||||
gravityBuildJump(builder, mergeBlock, NULL);
|
||||
GravityValue tenConst = gravityBuildIntConstant(builder, charType, 10, "ten");
|
||||
gravityBuildStore(builder, elseValue, tenConst);
|
||||
gravityBuildJump(builder, mergeBlock, (GravityValue[]){elseValue});
|
||||
|
||||
// merge block
|
||||
gravityBuilderSwitchToBlock(builder, mergeBlock);
|
||||
GravityValue xValue = gravityBuildLoad(builder, x, "xValue");
|
||||
GravityValue xVar = gravityGetBlockArg(mergeBlock, 0);
|
||||
GravityValue xValue = gravityBuildLoad(builder, xVar, "xValue");
|
||||
gravityBuildRet(builder, xValue);
|
||||
|
||||
printf("%s\n", gravityFunctionToCStr(mainFunc));
|
||||
|
||||
Reference in New Issue
Block a user