add optimization transforms
							parent
							
								
									c2b4cd4b4a
								
							
						
					
					
						commit
						a75b7a0818
					
				
							
								
								
									
										19
									
								
								compiler.c
								
								
								
								
							
							
						
						
									
										19
									
								
								compiler.c
								
								
								
								
							|  | @ -5,6 +5,10 @@ | |||
| #include <llvm-c/Core.h> | ||||
| #include <llvm-c/Analysis.h> | ||||
| #include <llvm-c/BitWriter.h> | ||||
| #include <llvm-c/Transforms/PassManagerBuilder.h> | ||||
| #include <llvm-c/Transforms/InstCombine.h> | ||||
| #include <llvm-c/Transforms/Scalar.h> | ||||
| #include <llvm-c/Transforms/Utils.h> | ||||
| 
 | ||||
| #include "y.tab.h" | ||||
| #include "ast.h" | ||||
|  | @ -643,9 +647,24 @@ int main(int argc, char *argv[]) | |||
|     LLVMVerifyModule(module, LLVMAbortProcessAction, &error); | ||||
|     LLVMDisposeMessage(error); | ||||
| 
 | ||||
|     LLVMPassManagerRef passManager = LLVMCreatePassManager(); | ||||
|     LLVMAddInstructionCombiningPass(passManager); | ||||
|     LLVMAddCFGSimplificationPass(passManager); | ||||
|     LLVMAddReassociatePass(passManager); | ||||
|     LLVMAddPromoteMemoryToRegisterPass(passManager); | ||||
| 
 | ||||
|     LLVMPassManagerBuilderRef passManagerBuilder = LLVMPassManagerBuilderCreate(); | ||||
|     LLVMPassManagerBuilderSetOptLevel(passManagerBuilder, 3); | ||||
|     LLVMPassManagerBuilderPopulateModulePassManager(passManagerBuilder, passManager); | ||||
| 
 | ||||
|     LLVMRunPassManager(passManager, module); | ||||
| 
 | ||||
|     if (LLVMWriteBitcodeToFile(module, "test.bc") != 0) { | ||||
|         fprintf(stderr, "error writing bitcode to file\n"); | ||||
|     } | ||||
| 
 | ||||
|     LLVMPassManagerBuilderDispose(passManagerBuilder); | ||||
|     LLVMDisposePassManager(passManager); | ||||
|     LLVMDisposeModule(module); | ||||
|     return 0; | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue