From patchwork Fri Mar 24 23:20:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 9644215 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B08046020B for ; Fri, 24 Mar 2017 23:24:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A20C327317 for ; Fri, 24 Mar 2017 23:24:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 96F6C27B13; Fri, 24 Mar 2017 23:24:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1276E26530 for ; Fri, 24 Mar 2017 23:24:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935315AbdCXXYN (ORCPT ); Fri, 24 Mar 2017 19:24:13 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:34869 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936134AbdCXXYC (ORCPT ); Fri, 24 Mar 2017 19:24:02 -0400 Received: by mail-wr0-f194.google.com with SMTP id u108so606166wrb.2 for ; Fri, 24 Mar 2017 16:24:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pGbFHZi5bEmYwQkk6HlJbO7erMjZD4ed9MOioxfCq00=; b=IpZT9YdPSrRs90Ak2jI+e6YzUp1aQ7i4USlltjc9fmcHlSIkDtp+WZpluAxcwOETwX 6xl8F6lLAJ8lUCCBkGng0+kKBB3lnge25KCR+KNX5DEO7BRCcNkDtWQ0qEMbjG7NtCpX JFYCmvFiAt9CrvDxPvtpRx/hH0JjJBZKE13yCaSvMF/eSc83nLlABIJj1kE2spoCQqby VK5PP2oBdd3Mug8tZuIJBhtj0UIpPEaenS37lQL/Wvx7M94YxuXgpR/og+snGRavQg0e ukdOYrF1DPKK3RY4attaudx6ISjRY2MQc8OLOD/25fwtuznbvJPhpYY7HUyqspE/TNy0 oB5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=pGbFHZi5bEmYwQkk6HlJbO7erMjZD4ed9MOioxfCq00=; b=EPiY17IVUtJtO8gu62dZ+0wWF7oq9KbaMTrHouTTUBXxxt5JgotFlpGWRTYikP4FK1 xoQnNEfMqcZDkvB9HatSEaVtqEweO0b5GpT26jnM1rb2BjhBrSbzljf0WsKlZ1VEqWU8 gd0/jHQLbv/0/3DX7KGnOO2BlIzEn4sMhyp9jzCveCWhTkGVhKXBUzS9AomV6AVjIlmk VomF9u7KD5WtJsUkuju7Hw/SCA4aMBFQON8EQjSD5VNuQL7uLNFuu+1SU9qWbgGQ6BBx jMjwyrAf3ptEV/a0BgXM7/QQg8MInlKrJ0Y3Mi+9nd5Wn7Rb6/0QFc58NTQbWwEJTsOL XjFw== X-Gm-Message-State: AFeK/H2KrT1Iombat3HmJst8oSPUOszQWeiGCVdeD3W1PbwGNy/Ftzh78iWx52A7VcTiPw== X-Received: by 10.223.160.143 with SMTP id m15mr11103403wrm.116.1490397840580; Fri, 24 Mar 2017 16:24:00 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:802:b00:81c3:4cc:f845:762c]) by smtp.gmail.com with ESMTPSA id m188sm4203730wmm.7.2017.03.24.16.23.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Mar 2017 16:24:00 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Christopher Li , Luc Van Oostenryck Subject: [PATCH v5 36/51] llvm: let pseudo_to_value() directly use the type Date: Sat, 25 Mar 2017 00:20:42 +0100 Message-Id: <20170324232057.15033-37-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170324232057.15033-1-luc.vanoostenryck@gmail.com> References: <20170324232057.15033-1-luc.vanoostenryck@gmail.com> Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Luc Van Oostenryck --- sparse-llvm.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/sparse-llvm.c b/sparse-llvm.c index 8cf65c1d3..9f33c4e7a 100644 --- a/sparse-llvm.c +++ b/sparse-llvm.c @@ -372,7 +372,7 @@ static LLVMValueRef val_to_value(unsigned long long val, struct symbol *ctype) return constant_value(val, dtype); } -static LLVMValueRef pseudo_to_value(struct function *fn, struct instruction *insn, pseudo_t pseudo) +static LLVMValueRef pseudo_to_value(struct function *fn, struct symbol *ctype, pseudo_t pseudo) { LLVMValueRef result = NULL; @@ -384,7 +384,7 @@ static LLVMValueRef pseudo_to_value(struct function *fn, struct instruction *ins result = get_sym_value(fn, pseudo->sym); break; case PSEUDO_VAL: - result = val_to_value(pseudo->value, insn->type); + result = val_to_value(pseudo->value, ctype); break; case PSEUDO_ARG: { result = LLVMGetParam(fn->fn, pseudo->nr - 1); @@ -405,7 +405,7 @@ static LLVMValueRef pseudo_to_value(struct function *fn, struct instruction *ins static LLVMValueRef pseudo_to_rvalue(struct function *fn, struct instruction *insn, pseudo_t pseudo) { - LLVMValueRef val = pseudo_to_value(fn, insn, pseudo); + LLVMValueRef val = pseudo_to_value(fn, insn->type, pseudo); LLVMTypeRef dtype = symbol_type(insn->type); char name[MAX_PSEUDO_NAME]; @@ -515,10 +515,10 @@ static void output_op_binary(struct function *fn, struct instruction *insn) LLVMValueRef lhs, rhs, target; char target_name[64]; - lhs = pseudo_to_value(fn, insn, insn->src1); + lhs = pseudo_to_value(fn, insn->type, insn->src1); lhs = value_to_ivalue(fn, insn->type, lhs); - rhs = pseudo_to_value(fn, insn, insn->src2); + rhs = pseudo_to_value(fn, insn->type, insn->src2); rhs = value_to_ivalue(fn, insn->type, rhs); pseudo_name(insn->target, target_name); @@ -629,11 +629,11 @@ static void output_op_compare(struct function *fn, struct instruction *insn) LLVMValueRef lhs, rhs, target; char target_name[64]; - lhs = pseudo_to_value(fn, insn, insn->src1); + lhs = pseudo_to_value(fn, insn->type, insn->src1); if (insn->src2->type == PSEUDO_VAL) rhs = constant_value(insn->src2->value, LLVMTypeOf(lhs)); else - rhs = pseudo_to_value(fn, insn, insn->src2); + rhs = pseudo_to_value(fn, insn->type, insn->src2); pseudo_name(insn->target, target_name); @@ -672,7 +672,7 @@ static void output_op_ret(struct function *fn, struct instruction *insn) pseudo_t pseudo = insn->src; if (pseudo && pseudo != VOID) { - LLVMValueRef result = pseudo_to_value(fn, insn, pseudo); + LLVMValueRef result = pseudo_to_value(fn, insn->type, pseudo); result = adjust_type(fn, insn->type, result); LLVMBuildRet(fn->builder, result); @@ -691,7 +691,7 @@ static LLVMValueRef calc_memop_addr(struct function *fn, struct instruction *ins off = LLVMConstInt(int_type, insn->offset, 0); /* convert src to the effective pointer type */ - src = pseudo_to_value(fn, insn, insn->src); + src = pseudo_to_value(fn, insn->type, insn->src); as = LLVMGetPointerAddressSpace(LLVMTypeOf(src)); addr_type = LLVMPointerType(insn_symbol_type(insn), as); src = LLVMBuildPointerCast(fn->builder, src, addr_type, LLVMGetValueName(src)); @@ -739,7 +739,7 @@ static LLVMValueRef bool_value(struct function *fn, LLVMValueRef value) static void output_op_cbr(struct function *fn, struct instruction *br) { LLVMValueRef cond = bool_value(fn, - pseudo_to_value(fn, br, br->cond)); + pseudo_to_value(fn, br->type, br->cond)); LLVMBuildCondBr(fn->builder, cond, br->bb_true->priv, @@ -756,9 +756,9 @@ static void output_op_sel(struct function *fn, struct instruction *insn) LLVMValueRef target, src1, src2, src3; char name[MAX_PSEUDO_NAME]; - src1 = bool_value(fn, pseudo_to_value(fn, insn, insn->src1)); - src2 = pseudo_to_value(fn, insn, insn->src2); - src3 = pseudo_to_value(fn, insn, insn->src3); + src1 = bool_value(fn, pseudo_to_value(fn, insn->type, insn->src1)); + src2 = pseudo_to_value(fn, insn->type, insn->src2); + src3 = pseudo_to_value(fn, insn->type, insn->src3); pseudo_name(insn->target, name); target = LLVMBuildSelect(fn->builder, src1, src2, src3, name); @@ -780,7 +780,7 @@ static void output_op_switch(struct function *fn, struct instruction *insn) def = jmp->target; } END_FOR_EACH_PTR(jmp); - sw_val = pseudo_to_value(fn, insn, insn->target); + sw_val = pseudo_to_value(fn, insn->type, insn->target); target = LLVMBuildSwitch(fn->builder, sw_val, def ? def->priv : NULL, n_jmp); @@ -811,7 +811,7 @@ static void output_op_call(struct function *fn, struct instruction *insn) args[i++] = pseudo_to_rvalue(fn, arg, arg->src); } END_FOR_EACH_PTR(arg); - func = pseudo_to_value(fn, insn, insn->func); + func = pseudo_to_value(fn, insn->type, insn->func); pseudo_name(insn->target, name); target = LLVMBuildCall(fn->builder, func, args, n_arg, name); @@ -826,7 +826,7 @@ static void output_op_phisrc(struct function *fn, struct instruction *insn) assert(insn->target->priv == NULL); /* target = src */ - v = pseudo_to_value(fn, insn, insn->phi_src); + v = pseudo_to_value(fn, insn->type, insn->phi_src); FOR_EACH_PTR(insn->phi_users, phi) { LLVMValueRef load, ptr; @@ -862,7 +862,7 @@ static void output_op_ptrcast(struct function *fn, struct instruction *insn) src = insn->src->priv; if (!src) - src = pseudo_to_value(fn, insn, insn->src); + src = pseudo_to_value(fn, insn->type, insn->src); pseudo_name(insn->target, target_name); @@ -896,7 +896,7 @@ static void output_op_cast(struct function *fn, struct instruction *insn, LLVMOp src = insn->src->priv; if (!src) - src = pseudo_to_value(fn, insn, insn->src); + src = pseudo_to_value(fn, insn->type, insn->src); pseudo_name(insn->target, target_name); @@ -1017,7 +1017,7 @@ static void output_insn(struct function *fn, struct instruction *insn) LLVMValueRef src, target; char target_name[64]; - src = pseudo_to_value(fn, insn, insn->src); + src = pseudo_to_value(fn, insn->type, insn->src); pseudo_name(insn->target, target_name); @@ -1030,7 +1030,7 @@ static void output_insn(struct function *fn, struct instruction *insn) LLVMValueRef src, target; char target_name[64]; - src = pseudo_to_value(fn, insn, insn->src); + src = pseudo_to_value(fn, insn->type, insn->src); pseudo_name(insn->target, target_name);