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