diff --git a/tools/frr-llvm-cg.c b/tools/frr-llvm-cg.c index 84a756a376..5bdd10d06d 100644 --- a/tools/frr-llvm-cg.c +++ b/tools/frr-llvm-cg.c @@ -197,7 +197,7 @@ static void walk_const_fptrs(struct json_object *js_call, LLVMValueRef value, #ifdef FRR_SPECIFIC static bool is_thread_sched(const char *name, size_t len) { -#define thread_prefix "funcname_" +#define thread_prefix "_" static const char *const names[] = { thread_prefix "thread_add_read_write", thread_prefix "thread_add_timer", @@ -227,6 +227,9 @@ static void process_call(struct json_object *js_calls, LLVMValueRef called = LLVMGetCalledValue(instr); + if (LLVMIsAInlineAsm(called)) + return; + if (LLVMIsAConstantExpr(called)) { LLVMOpcode opcode = LLVMGetConstOpcode(called); @@ -324,12 +327,12 @@ static void process_call(struct json_object *js_calls, prefix); } else { char *dump = LLVMPrintValueToString(called); - printf("\t%s\n", dump); + fprintf(stderr, "%s: ??? %s\n", prefix, dump); LLVMDisposeMessage(dump); } return; #ifdef FRR_SPECIFIC - } else if (!strcmp(called_name, "install_element")) { + } else if (!strcmp(called_name, "_install_element")) { called_type = FN_INSTALL_ELEMENT; LLVMValueRef param0 = LLVMGetOperand(instr, 0); @@ -380,10 +383,7 @@ static void process_call(struct json_object *js_calls, json_object_new_string_len(called_name, called_len)); LLVMValueRef fparam; - if (strstr(called_name, "_read_")) - fparam = LLVMGetOperand(instr, 2); - else - fparam = LLVMGetOperand(instr, 1); + fparam = LLVMGetOperand(instr, 2); assert(fparam); size_t target_len = 0;