llvm-c-kaleidoscope
llvm-c-kaleidoscope copied to clipboard
Not compatible with LLVM 3.6
The code uses the old JIT. Only MCJIT seems to be available in more recent versions of LLVM.
This prevents the code from compiling.
hi, after make say error:
$ make mkdir -p build mkdir -p build/bison yacc -dv -o src/parser.c src/parser.y lex --header-file=src/lexer.h -o src/lexer.c src/lexer.l cc
llvm-config --cflags-g -Wall -Wextra -Wno-self-assign -std=c99 -c -o src/kaleidoscope.o src/kaleidoscope.c In file included from src/kaleidoscope.c:8:0: src/ast.h:87:6: warning: ISO C99 doesn’t support unnamed structs/unions [-Wpedantic] }; ^ In file included from src/codegen.h:4:0, from src/kaleidoscope.c:10: /usr/lib/llvm-3.8/include/llvm-c/Core.h:83:23: warning: enumerator value for ‘LLVMNonLazyBind’ is not an integer constant expression [-Wpedantic] LLVMNonLazyBind = 1 << 31 ^ src/kaleidoscope.c: In function ‘main’: src/kaleidoscope.c:25:5: warning: implicit declaration of function ‘LLVMLinkInJIT’ [-Wimplicit-function-declaration] LLVMLinkInJIT(); ^~~~~~~~~~~~~ src/kaleidoscope.c:75:64: warning: passing argument 1 of ‘kal_ast_prototype_create’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] kal_ast_node *prototype = kal_ast_prototype_create("", NULL, 0); ^~ In file included from src/kaleidoscope.c:8:0: src/ast.h:108:15: note: expected ‘char *’ but argument is of type ‘const char *’ kal_ast_node *kal_ast_prototype_create(char name, char args, ^~~~~~~~~~~~~~~~~~~~~~~~ src/kaleidoscope.c: At top level: cc1: warning: unrecognized command line option ‘-Wno-self-assign’ ccllvm-config --cflags-g -Wall -Wextra -Wno-self-assign -std=c99 -c -o src/codegen.o src/codegen.c In file included from src/codegen.c:4:0: /usr/lib/llvm-3.8/include/llvm-c/Core.h:83:23: warning: enumerator value for ‘LLVMNonLazyBind’ is not an integer constant expression [-Wpedantic] LLVMNonLazyBind = 1 << 31 ^ In file included from src/codegen.h:5:0, from src/codegen.c:7: src/ast.h:87:6: warning: ISO C99 doesn’t support unnamed structs/unions [-Wpedantic] }; ^ cc1: warning: unrecognized command line option ‘-Wno-self-assign’ cc -g -Wall -Wextra -Wno-self-assign -std=c99 -c -o src/ast.o src/ast.c src/ast.c: In function ‘kal_ast_variable_create’: src/ast.c:44:27: warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration] node->variable.name = strdup(name); ^~~~~~ src/ast.c:44:25: warning: assignment makes pointer from integer without a cast [-Wint-conversion] node->variable.name = strdup(name); ^ src/ast.c: In function ‘kal_ast_call_create’: src/ast.c:89:21: warning: assignment makes pointer from integer without a cast [-Wint-conversion] node->call.name = strdup(name); ^ src/ast.c: In function ‘kal_ast_prototype_create’: src/ast.c:118:26: warning: assignment makes pointer from integer without a cast [-Wint-conversion] node->prototype.name = strdup(name); ^ src/ast.c:123:33: warning: assignment makes pointer from integer without a cast [-Wint-conversion] node->prototype.args[i] = strdup(args[i]); ^ src/ast.c: At top level: cc1: warning: unrecognized command line option ‘-Wno-self-assign’ cc -g -Wall -Wextra -Wno-self-assign -std=c99 -c -o src/lexer.o src/lexer.c src/lexer.l: In function ‘yylex’: src/lexer.l:4:38: warning: implicit declaration of function ‘strndup’ [-Wimplicit-function-declaration] #define SAVE_STRING yylval->string = strndup(yytext, yyleng) ^ src/lexer.l:22:1: note: in expansion of macro ‘SAVE_STRING’ [a-zA-Z_][a-zA-Z0-9_] SAVE_STRING; return TIDENTIFIER; ^~~~~~~~~~~ src/lexer.l:4:36: warning: assignment makes pointer from integer without a cast [-Wint-conversion] #define SAVE_STRING yylval->string = strndup(yytext, yyleng) ^ src/lexer.l:22:1: note: in expansion of macro ‘SAVE_STRING’ [a-zA-Z_][a-zA-Z0-9_] SAVE_STRING; return TIDENTIFIER; ^~~~~~~~~~~ src/lexer.c: In function ‘yy_get_next_buffer’: src/lexer.c:627:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for ( n = 0; n < max_size &&
^ src/lexer.c:1168:3: note: in expansion of macro ‘YY_INPUT’ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), ^~~~~~~~ src/lexer.c: In function ‘yy_init_buffer’: src/lexer.c:1525:48: warning: implicit declaration of function ‘fileno’ [-Wimplicit-function-declaration] b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; ^~~~~~ src/lexer.c: In function ‘yy_scan_bytes’: src/lexer.c:1728:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for ( i = 0; i < _yybytes_len; ++i ) ^ At top level: src/lexer.c:1316:16: warning: ‘input’ defined but not used [-Wunused-function] static int input (yyscan_t yyscanner) ^~~~~ src/lexer.c:1272:17: warning: ‘yyunput’ defined but not used [-Wunused-function] static void yyunput (int c, char * yy_bp , yyscan_t yyscanner) ^~~~~~~ cc1: warning: unrecognized command line option ‘-Wno-self-assign’ cc -g -Wall -Wextra -Wno-self-assign -std=c99 -c -o src/parser.o src/parser.c src/parser.y: In function ‘yyerror’: src/parser.y:8:24: warning: unused parameter ‘scanner’ [-Wunused-parameter] void yyerror(void scanner, const char s) { printf("ERROR: %s\n", s); } ^~~~~~~ src/parser.y: In function ‘yyparse’: src/parser.y:81:115: warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration] | TIDENTIFIER { $$.count = 1; $$.args = malloc(sizeof(char)); $$.args[0] = strdup($1); } ^
src/parser.y:81:113: warning: assignment makes pointer from integer without a cast [-Wint-conversion] | TIDENTIFIER { $$.count = 1; $$.args = malloc(sizeof(char)); $$.args[0] = strdup($1); } ^ src/parser.y:82:213: warning: assignment makes pointer from integer without a cast [-Wint-conversion] | proto_args TCOMMA TIDENTIFIER { $1.count++; $1.args = realloc($1.args, sizeof(char) * $1.count); $1.args[$1.count-1] = strdup($3); $$ = $1; } ^ src/parser.y: At top level: cc1: warning: unrecognized command line option ‘-Wno-self-assign’ rm -f build/libkaleidoscope.a ar rcs build/libkaleidoscope.a src/kaleidoscope.o src/codegen.o src/ast.o src/lexer.o src/parser.o ranlib build/libkaleidoscope.a g++llvm-config --libs --cflags --ldflags core analysis executionengine jit interpreter native-g -Wall -Wextra -Wno-self-assign -rdynamic -Isrc -o build/kaleidoscope src/kaleidoscope.o build/libkaleidoscope.a llvm-config: unknown component name: jit src/kaleidoscope.o: In functionmain': /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:20: undefined reference toLLVMModuleCreateWithName' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:21: undefined reference toLLVMCreateBuilder' src/kaleidoscope.o: In functionLLVMInitializeNativeTarget': /usr/lib/llvm-3.8/include/llvm-c/Target.h:139: undefined reference toLLVMInitializeX86TargetInfo' /usr/lib/llvm-3.8/include/llvm-c/Target.h:140: undefined reference toLLVMInitializeX86Target' /usr/lib/llvm-3.8/include/llvm-c/Target.h:141: undefined reference toLLVMInitializeX86TargetMC' src/kaleidoscope.o: In functionmain': /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:25: undefined reference toLLVMLinkInJIT' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:29: undefined reference toLLVMCreateExecutionEngineForModule' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:36: undefined reference toLLVMCreateFunctionPassManagerForModule' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:37: undefined reference toLLVMGetExecutionEngineTargetData' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:37: undefined reference toLLVMAddTargetData' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:38: undefined reference toLLVMAddPromoteMemoryToRegisterPass' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:39: undefined reference toLLVMAddInstructionCombiningPass' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:40: undefined reference toLLVMAddReassociatePass' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:41: undefined reference toLLVMAddGVNPass' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:42: undefined reference toLLVMAddCFGSimplificationPass' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:43: undefined reference toLLVMInitializeFunctionPassManager' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:87: undefined reference toLLVMDumpValue' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:91: undefined reference toLLVMGetPointerToGlobal' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:87: undefined reference toLLVMDumpValue' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:97: undefined reference toLLVMRunFunctionPassManager' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:105: undefined reference toLLVMDumpModule' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:107: undefined reference toLLVMDisposePassManager' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:108: undefined reference toLLVMDisposeBuilder' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:109: undefined reference toLLVMDisposeModule' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/kaleidoscope.c:31: undefined reference toLLVMDisposeMessage' build/libkaleidoscope.a(codegen.o): In functionkal_codegen_number': /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:36: undefined reference toLLVMDoubleType' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:36: undefined reference toLLVMConstReal' build/libkaleidoscope.a(codegen.o): In functionkal_codegen_prototype': /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:163: undefined reference toLLVMGetNamedFunction' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:166: undefined reference toLLVMCountParams' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:172: undefined reference toLLVMCountBasicBlocks' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:195: undefined reference toLLVMGetParam' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:196: undefined reference toLLVMSetValueName' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:182: undefined reference toLLVMDoubleType' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:186: undefined reference toLLVMDoubleType' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:186: undefined reference toLLVMFunctionType' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:189: undefined reference toLLVMAddFunction' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:190: undefined reference toLLVMSetLinkage' build/libkaleidoscope.a(codegen.o): In functionkal_codegen_binary_expr': /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:97: undefined reference toLLVMBuildFDiv' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:94: undefined reference toLLVMBuildFMul' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:88: undefined reference toLLVMBuildFAdd' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:91: undefined reference toLLVMBuildFSub' build/libkaleidoscope.a(codegen.o): In functionkal_codegen_call': /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:118: undefined reference toLLVMGetNamedFunction' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:126: undefined reference toLLVMCountParams' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:144: undefined reference toLLVMBuildCall' build/libkaleidoscope.a(codegen.o): In functionkal_codegen_function': /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:229: undefined reference toLLVMAppendBasicBlock' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:230: undefined reference toLLVMPositionBuilderAtEnd' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:240: undefined reference toLLVMBuildRet' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:243: undefined reference toLLVMVerifyFunction' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:245: undefined reference toLLVMDeleteFunction' build/libkaleidoscope.a(codegen.o): In functionkal_codegen_if_expr': /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:272: undefined reference toLLVMDoubleType' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:272: undefined reference toLLVMConstReal' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:273: undefined reference toLLVMBuildFCmp' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:276: undefined reference toLLVMGetInsertBlock' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:276: undefined reference toLLVMGetBasicBlockParent' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:279: undefined reference toLLVMAppendBasicBlock' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:280: undefined reference toLLVMAppendBasicBlock' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:281: undefined reference toLLVMAppendBasicBlock' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:283: undefined reference toLLVMBuildCondBr' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:286: undefined reference toLLVMPositionBuilderAtEnd' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:292: undefined reference toLLVMBuildBr' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:293: undefined reference toLLVMGetInsertBlock' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:295: undefined reference toLLVMPositionBuilderAtEnd' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:300: undefined reference toLLVMBuildBr' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:301: undefined reference toLLVMGetInsertBlock' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:303: undefined reference toLLVMPositionBuilderAtEnd' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:304: undefined reference toLLVMDoubleType' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:304: undefined reference toLLVMBuildPhi' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:305: undefined reference toLLVMAddIncoming' /home/guest/Project/learn/1/llvm-c-kaleidoscope-master/src/codegen.c:306: undefined reference toLLVMAddIncoming' collect2: error: ld returned 1 exit status Makefile:50: recipe for target 'build/kaleidoscope' failed make: *** [build/kaleidoscope] Error 1 guest@system:~/Project/learn/1/llvm-c-kaleidoscope-master$
please check and fix this. :+1: