From patchwork Fri Mar 24 23:20:36 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: 9644203 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 118A46020B for ; Fri, 24 Mar 2017 23:24:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 038F826530 for ; Fri, 24 Mar 2017 23:24:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EC8DD27B13; Fri, 24 Mar 2017 23:24:09 +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 7DEED26530 for ; Fri, 24 Mar 2017 23:24:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935856AbdCXXYJ (ORCPT ); Fri, 24 Mar 2017 19:24:09 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34338 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935932AbdCXXX5 (ORCPT ); Fri, 24 Mar 2017 19:23:57 -0400 Received: by mail-wm0-f67.google.com with SMTP id u132so810315wmg.1 for ; Fri, 24 Mar 2017 16:23:55 -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=h4Nj4FNA9f4hF/u7EiAXXAmxkgYkKcfZZmNjRMogCcY=; b=lCFme5useKWmbKZT66sALpZwgD1Ot38M/UO1XZgOLjJjf6BpU9Ey/K8z/1R4NvXOmN qkTtY9CkwmPs5mF3GLvgTz81PDhg58oquB83MBYacAzN0JpwmGzkz8H6zO+aKcxidKxd 27orzcXJJKwjcSF/9V8Ac+Fv41yrc0bgstSB78PWzBUKFD6hZmbM2pUMOJOx1U5HdQgG 2XLzKACIA+UanQHXPZHZ/ApkPzwDmiJYckbFaebLHKrw5iPKBsQYE7yjWMPq9f3cYc+l Om00bEX+bHEjDKYoz4CbplxDryOC3P0himkv/nmFZAFt9neD83QnO+VF9R9HQjraxaoS a73g== 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=h4Nj4FNA9f4hF/u7EiAXXAmxkgYkKcfZZmNjRMogCcY=; b=ERctXU+hIt24L+5Bz2bRVd1dIzch/MmwuqLi+4tbhmWtPJBnblG3XTFElGAszenDhP k19bMHSboPEu6lOwFDyzkuV1zOurfydRADKvmUY2IXTt1R5fJvsdwYdZ/oXyQn+/SNrI 0C3ejQq5qe9UCy18OKEoSg5lBXYF+DCIStrtlwZhvBbH87mqwmXoInOFymEO+lHmaJm/ cM0Xe8u02XWLqNhS1NJV4/i1qBpn2yyCNb7P5U89a+MCPxeNHNdm9nwoEsmuSovRbP8S c9yj+cNlKHJU24bzp6KOcQTQF3hZf2Pygcn7fesBkQj/L5Dj+qcMBNSSXsAAFSEB/8L5 uFBg== X-Gm-Message-State: AFeK/H1pYDFFWNVDxrJkeW0OCB/7Y80HbFxK5vfNpGY2hmO1teh+KJLfmqy9CJ4YwHYDrQ== X-Received: by 10.28.215.74 with SMTP id o71mr5037734wmg.23.1490397834923; Fri, 24 Mar 2017 16:23:54 -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.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Mar 2017 16:23:54 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Christopher Li , Luc Van Oostenryck Subject: [PATCH v5 30/51] llvm: give a name to all values Date: Sat, 25 Mar 2017 00:20:36 +0100 Message-Id: <20170324232057.15033-31-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 | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/sparse-llvm.c b/sparse-llvm.c index bf76bbe77..6530d2d59 100644 --- a/sparse-llvm.c +++ b/sparse-llvm.c @@ -407,15 +407,18 @@ static LLVMValueRef pseudo_to_rvalue(struct function *fn, struct instruction *in { LLVMValueRef val = pseudo_to_value(fn, insn, pseudo); LLVMTypeRef dtype = symbol_type(insn->type); + char name[MAX_PSEUDO_NAME]; - return LLVMBuildBitCast(fn->builder, val, dtype, ""); + pseudo_name(pseudo, name); + return LLVMBuildBitCast(fn->builder, val, dtype, name); } static LLVMValueRef value_to_ivalue(struct function *fn, LLVMValueRef val) { if (LLVMGetTypeKind(LLVMTypeOf(val)) == LLVMPointerTypeKind) { LLVMTypeRef dtype = LLVMIntType(bits_in_pointer); - val = LLVMBuildPtrToInt(fn->builder, val, dtype, ""); + const char *name = LLVMGetValueName(val); + val = LLVMBuildPtrToInt(fn->builder, val, dtype, name); } return val; } @@ -424,7 +427,8 @@ static LLVMValueRef value_to_pvalue(struct function *fn, struct symbol *ctype, L { if (LLVMGetTypeKind(LLVMTypeOf(val)) == LLVMIntegerTypeKind) { LLVMTypeRef dtype = symbol_type(ctype); - val = LLVMBuildIntToPtr(fn->builder, val, dtype, ""); + const char *name = LLVMGetValueName(val); + val = LLVMBuildIntToPtr(fn->builder, val, dtype, name); } return val; } @@ -444,13 +448,14 @@ static LLVMValueRef calc_gep(LLVMBuilderRef builder, LLVMValueRef base, LLVMValu unsigned int as = LLVMGetPointerAddressSpace(type); LLVMTypeRef bytep = LLVMPointerType(LLVMInt8Type(), as); LLVMValueRef addr; + const char *name = LLVMGetValueName(off); /* convert base to char* type */ - base = LLVMBuildPointerCast(builder, base, bytep, ""); + base = LLVMBuildPointerCast(builder, base, bytep, name); /* addr = base + off */ - addr = LLVMBuildInBoundsGEP(builder, base, &off, 1, ""); + addr = LLVMBuildInBoundsGEP(builder, base, &off, 1, name); /* convert back to the actual pointer type */ - addr = LLVMBuildPointerCast(builder, addr, type, ""); + addr = LLVMBuildPointerCast(builder, addr, type, name); return addr; } @@ -576,8 +581,8 @@ static void output_op_binary(struct function *fn, struct instruction *insn) LLVMValueRef lhs_nz, rhs_nz; LLVMTypeRef dst_type; - lhs_nz = LLVMBuildIsNotNull(fn->builder, lhs, ""); - rhs_nz = LLVMBuildIsNotNull(fn->builder, rhs, ""); + lhs_nz = LLVMBuildIsNotNull(fn->builder, lhs, LLVMGetValueName(lhs)); + rhs_nz = LLVMBuildIsNotNull(fn->builder, rhs, LLVMGetValueName(rhs)); target = LLVMBuildAnd(fn->builder, lhs_nz, rhs_nz, target_name); dst_type = insn_symbol_type(insn); @@ -588,8 +593,8 @@ static void output_op_binary(struct function *fn, struct instruction *insn) LLVMValueRef lhs_nz, rhs_nz; LLVMTypeRef dst_type; - lhs_nz = LLVMBuildIsNotNull(fn->builder, lhs, ""); - rhs_nz = LLVMBuildIsNotNull(fn->builder, rhs, ""); + lhs_nz = LLVMBuildIsNotNull(fn->builder, lhs, LLVMGetValueName(lhs)); + rhs_nz = LLVMBuildIsNotNull(fn->builder, rhs, LLVMGetValueName(rhs)); target = LLVMBuildOr(fn->builder, lhs_nz, rhs_nz, target_name); dst_type = insn_symbol_type(insn); @@ -675,7 +680,7 @@ static LLVMValueRef calc_memop_addr(struct function *fn, struct instruction *ins src = pseudo_to_value(fn, insn, insn->src); as = LLVMGetPointerAddressSpace(LLVMTypeOf(src)); addr_type = LLVMPointerType(insn_symbol_type(insn), as); - src = LLVMBuildPointerCast(fn->builder, src, addr_type, ""); + src = LLVMBuildPointerCast(fn->builder, src, addr_type, LLVMGetValueName(src)); /* addr = src + off */ addr = calc_gep(fn->builder, src, off); @@ -686,11 +691,13 @@ static LLVMValueRef calc_memop_addr(struct function *fn, struct instruction *ins static void output_op_load(struct function *fn, struct instruction *insn) { LLVMValueRef addr, target; + char name[MAX_PSEUDO_NAME]; addr = calc_memop_addr(fn, insn); /* perform load */ - target = LLVMBuildLoad(fn->builder, addr, "load_target"); + pseudo_name(insn->target, name); + target = LLVMBuildLoad(fn->builder, addr, name); insn->target->priv = target; } @@ -710,7 +717,7 @@ static void output_op_store(struct function *fn, struct instruction *insn) static LLVMValueRef bool_value(struct function *fn, LLVMValueRef value) { if (LLVMTypeOf(value) != LLVMInt1Type()) - value = LLVMBuildIsNotNull(fn->builder, value, "cond"); + value = LLVMBuildIsNotNull(fn->builder, value, LLVMGetValueName(value)); return value; } @@ -733,12 +740,14 @@ static void output_op_br(struct function *fn, struct instruction *br) 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); - target = LLVMBuildSelect(fn->builder, src1, src2, src3, "select"); + pseudo_name(insn->target, name); + target = LLVMBuildSelect(fn->builder, src1, src2, src3, name); insn->target->priv = target; }