From 5180f827f284ff6a1779f820d103495bc2c964e9 Mon Sep 17 00:00:00 2001 From: Andrea Shepard <andrea@special-circumstanc.es> Date: Sat, 16 Nov 2019 01:23:16 +0000 Subject: [PATCH] Use LLVM name/label macros in epsilon.c --- src/parsers/epsilon.c | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/src/parsers/epsilon.c b/src/parsers/epsilon.c index 537b1c66..cf26e140 100644 --- a/src/parsers/epsilon.c +++ b/src/parsers/epsilon.c @@ -27,10 +27,8 @@ static bool epsilon_llvm(HLLVMParserCompileContext *ctxt, /* Allocator */ HAllocator *mm__ = NULL; /* Names */ - char *eps_bb_name = NULL; - int eps_bb_name_len = 0; - char *eps_result_ptr_name = NULL; - int eps_result_ptr_name_len = 0; + H_LLVM_DECLARE_NAME(epsilon); + H_LLVM_DECLARE_NAME(epsilon_result_ptr); /* Epsilon basic block */ LLVMBasicBlockRef epsilon_bb; /* Args for make_result() */ @@ -46,10 +44,8 @@ static bool epsilon_llvm(HLLVMParserCompileContext *ctxt, mm__ = ctxt->mm__; /* Set up the basic block */ - eps_bb_name_len = snprintf(NULL, 0, "epsilon_%p", p); - eps_bb_name = h_new(char, eps_bb_name_len + 1); - snprintf(eps_bb_name, eps_bb_name_len + 1, "epsilon_%p", p); - epsilon_bb = LLVMAppendBasicBlock(ctxt->func, eps_bb_name); + H_LLVM_COMPUTE_NAME(epsilon, p); + epsilon_bb = LLVMAppendBasicBlock(ctxt->func, epsilon_name); /* Basic block: epsilon */ LLVMBuildBr(ctxt->builder, epsilon_bb); @@ -59,28 +55,19 @@ static bool epsilon_llvm(HLLVMParserCompileContext *ctxt, * For epsilon we make a null-token parse result like with end, but we * do it unconditionally. */ - eps_result_ptr_name_len = snprintf(NULL, 0, "epsilon_result_ptr_%p", p); - eps_result_ptr_name = h_new(char, eps_result_ptr_name_len + 1); - snprintf(eps_result_ptr_name, eps_result_ptr_name_len + 1, - "epsilon_result_ptr_%p", p); + H_LLVM_COMPUTE_NAME(epsilon_result_ptr, p); make_result_args[0] = ctxt->arena; make_result_args[1] = LLVMConstNull(ctxt->llvm_parsedtokenptr); result_ptr = LLVMBuildCall(ctxt->builder, LLVMGetNamedFunction(ctxt->mod, "make_result"), - make_result_args, 2, eps_result_ptr_name); + make_result_args, 2, epsilon_result_ptr_name); /* Pass it back out */ *res = result_ptr; - if (eps_bb_name) { - h_free(eps_bb_name); - eps_bb_name = NULL; - } - - if (eps_result_ptr_name) { - h_free(eps_result_ptr_name); - eps_result_ptr_name = NULL; - } + /* Free names */ + H_LLVM_FREE_NAME(epsilon); + H_LLVM_FREE_NAME(epsilon_result_ptr); return true; } -- GitLab