From patchwork Thu Oct 21 19:02:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew MacLeod X-Patchwork-Id: 46508 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 189223857C6C for ; Thu, 21 Oct 2021 19:02:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 189223857C6C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1634842965; bh=tO9iOsZYft7DE+BWY2BNR3Usf602G+CL0J7w8Cc4P3E=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=NEeWdUrkPxh4j/pBj0pSQLkBZZ/wae6vcL5KYyzz/pfhO/vqYaGLVW8yYCuWNYpxg OGbz0mKOSZ64g2/rV15Bn1fwXUMh/NSutJX9l4n3lDqk8WYczFUcfAaNKnw/k1mcn9 YMmlM+tDIxup4SswXqfI2/nb/8zvEhIFyoA9tfjA= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 35B043858416 for ; Thu, 21 Oct 2021 19:02:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 35B043858416 Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-254-XtDfHfIsNtqRoj-gmUsFOw-1; Thu, 21 Oct 2021 15:02:13 -0400 X-MC-Unique: XtDfHfIsNtqRoj-gmUsFOw-1 Received: by mail-qt1-f199.google.com with SMTP id 13-20020ac8560d000000b0029f69548889so1179027qtr.3 for ; Thu, 21 Oct 2021 12:02:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=tO9iOsZYft7DE+BWY2BNR3Usf602G+CL0J7w8Cc4P3E=; b=2pOHkq6l4sg27CAMTrmH7sDv/AeqYy2XMZknLFh5dVMASAAZV7+zO94ZFqiuwntB90 HbeaFp4/2kpxTjqi6b5SJfj2mQ/kJp+GYCAHZRpBSfeti6+uDJmrKHRSZGO8vEsSymBk klevkC8Uf3kVWw29AiQlHiVnXRoc0ALa3iq0MeiN8l1+3e0K4yiVTlgAMT66X1Db6lXv FzcQ8fh3O/OJje72GtTAeWmXligKWLE5HbNPk7owC9yHyG/jezThIKwOvuuGmzLP6HeB T8CGG07ZlFHdzhZtVY4DhcxkOAz+hcj4NJJTcUghBtPeBdmC/vjXfkHONLiMw1I4I4Lk 0BUg== X-Gm-Message-State: AOAM53023pU1sqSzvPWlYI+V0Y5Zp/SVMx0aerRxZnfElNuTDgLoWJst LyKFtkcU3unsjU2JGBjAaQ+huV2e5shKRLW/1pCEP3RxWpJ/7+3Ee3mrJRm6BaIpdZ9/+DS+QR1 iuXaHvUh08OiHdDcGkgFbsXyyEd8uAPGUzOAjJM9L00zduKmolLYTZHREpZ5k5klZPMNhzg== X-Received: by 2002:a05:6214:a81:: with SMTP id ev1mr2416152qvb.1.1634842932366; Thu, 21 Oct 2021 12:02:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwyzkQGEEZRaA4Gk4oyadhllD4kI0dzUcVHABa8ERPg0x+AYm4+jBaqgWkWOsyu6Zn8oR27jw== X-Received: by 2002:a05:6214:a81:: with SMTP id ev1mr2416115qvb.1.1634842932025; Thu, 21 Oct 2021 12:02:12 -0700 (PDT) Received: from ?IPv6:2607:fea8:a262:5f00::38cf? ([2607:fea8:a262:5f00::38cf]) by smtp.gmail.com with ESMTPSA id i17sm2946099qka.3.2021.10.21.12.02.11 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 21 Oct 2021 12:02:11 -0700 (PDT) To: gcc-patches Subject: [PATCH] Possible use before def in fortran/trans-decl.c. Message-ID: Date: Thu, 21 Oct 2021 15:02:10 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-CA X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, BODY_8BITS, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Andrew MacLeod via Gcc-patches From: Andrew MacLeod Reply-To: Andrew MacLeod Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" As I'm tweaking installing ranger as the VRP2 pass, I am getting a stage 2 bootstrap failure now: In file included from /opt/notnfs/amacleod/master/gcc/gcc/fortran/trans-decl.c:28: /opt/notnfs/amacleod/master/gcc/gcc/tree.h: In function ‘void gfc_conv_cfi_to_gfc(stmtblock_t*, stmtblock_t*, tree, tree, gfc_symbol*)’: /opt/notnfs/amacleod/master/gcc/gcc/tree.h:244:56: error: ‘rank’ may be used uninitialized in this function [-Werror=maybe-uninitialized]   244 | #define TREE_CODE(NODE) ((enum tree_code) (NODE)->base.code)       | ^~~~ /opt/notnfs/amacleod/master/gcc/gcc/fortran/trans-decl.c:6671:8: note: ‘rank’ was declared here  6671 |   tree rank, idx, etype, tmp, tmp2, size_var = NULL_TREE;       |        ^~~~ cc1plus: all warnings being treated as errors make[3]: *** [Makefile:1136: fortran/trans-decl.o] Error 1 looking at that function, in the middle I see:   if (sym->as->rank < 0)     {       /* Set gfc->dtype.rank, if assumed-rank.  */       rank = gfc_get_cfi_desc_rank (cfi);       gfc_add_modify (&block, gfc_conv_descriptor_rank (gfc_desc), rank);     }   else if (!GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (gfc_desc)))     /* In that case, the CFI rank and the declared rank can differ.  */     rank = gfc_get_cfi_desc_rank (cfi);   else     rank = build_int_cst (signed_char_type_node, sym->as->rank); so rank is set on all paths here.   However, stepping back a bit, earlier in the function I see:   if (!sym->attr.dimension || !GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (gfc_desc)))     {       tmp = gfc_get_cfi_desc_base_addr (cfi);       gfc_add_modify (&block, gfc_desc,                       fold_convert (TREE_TYPE (gfc_desc), tmp));       if (!sym->attr.dimension)         goto done;     } The done: label occurs *after* that block of initialization code, and bit furtehr down , I see this:           gfc_add_modify (&loop_body, tmpidx, idx);           stmtblock_t inner_loop;           gfc_init_block (&inner_loop);           tree dim = gfc_create_var (TREE_TYPE (rank), "dim"); I cannot convince myself by looking at the intervening code that this can not be executed along this path.  Perhaps someone more familiar with the code can check it out.   However, It seems worthwhile to at least initialize rank to NULL_TREE, thus we can be more likely to see a trap if that path ever gets followed. And it makes the warning go away :-) OK? Andrew PS as a side note, it would be handy to have the def point *and* the use point that might be undefined.   Its a big function and it took me a while just to see where a possible use might be. commit ed571a93c54e3967fbf445624e47817be5e333ed Author: Andrew MacLeod Date: Thu Oct 21 14:48:20 2021 -0400 Initialize variable. gcc/fortran/ * trans-decl.c (gfc_conv_cfi_to_gfc): Initialize rank to NULL_TREE. diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index de624c82fcf..fe5511b5285 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -6668,7 +6668,7 @@ gfc_conv_cfi_to_gfc (stmtblock_t *init, stmtblock_t *finally, stmtblock_t block; gfc_init_block (&block); tree cfi = build_fold_indirect_ref_loc (input_location, cfi_desc); - tree rank, idx, etype, tmp, tmp2, size_var = NULL_TREE; + tree idx, etype, tmp, tmp2, size_var = NULL_TREE, rank = NULL_TREE; bool do_copy_inout = false; /* When allocatable + intent out, free the cfi descriptor. */