From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 62AAC3858401 for ; Sat, 11 Sep 2021 08:03:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 62AAC3858401 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-168-Iy0Hsmh6OmCTlN42Y26fBg-1; Sat, 11 Sep 2021 04:03:40 -0400 X-MC-Unique: Iy0Hsmh6OmCTlN42Y26fBg-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E96C1362F9; Sat, 11 Sep 2021 08:03:38 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.39.192.10]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5411C5D9D3; Sat, 11 Sep 2021 08:03:38 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.16.1/8.16.1) with ESMTPS id 18B83VGl321095 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Sat, 11 Sep 2021 10:03:32 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.16.1/8.16.1/Submit) id 18B83KDq321092; Sat, 11 Sep 2021 10:03:20 +0200 Date: Sat, 11 Sep 2021 10:03:20 +0200 From: Jakub Jelinek To: Qing Zhao , Richard Biener Cc: Richard Sandiford , Nick Alcock via Gcc-patches , kees Cook Subject: [PATCH] testsuite: Fix c-c++-common/auto-init-* tests Message-ID: <20210911080320.GA304296@tucnak> Reply-To: Jakub Jelinek References: <1F37A36D-A681-4EA8-B96B-0195AE707C91@oracle.com> MIME-Version: 1.0 In-Reply-To: <1F37A36D-A681-4EA8-B96B-0195AE707C91@oracle.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-5.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_SHORT, 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-List-Received-Date: Sat, 11 Sep 2021 08:03:46 -0000 On Fri, Sep 03, 2021 at 02:47:11PM +0000, Qing Zhao via Gcc-patches wrote: > > 2021-08-20 qing zhao > > > > * c-c++-common/auto-init-1.c: New test. > > * c-c++-common/auto-init-10.c: New test. > > * c-c++-common/auto-init-11.c: New test. > > * c-c++-common/auto-init-12.c: New test. > > * c-c++-common/auto-init-13.c: New test. > > * c-c++-common/auto-init-14.c: New test. > > * c-c++-common/auto-init-15.c: New test. > > * c-c++-common/auto-init-16.c: New test. > > * c-c++-common/auto-init-2.c: New test. > > * c-c++-common/auto-init-3.c: New test. > > * c-c++-common/auto-init-4.c: New test. > > * c-c++-common/auto-init-5.c: New test. > > * c-c++-common/auto-init-6.c: New test. > > * c-c++-common/auto-init-7.c: New test. > > * c-c++-common/auto-init-8.c: New test. > > * c-c++-common/auto-init-9.c: New test. > > * c-c++-common/auto-init-esra.c: New test. > > * c-c++-common/auto-init-padding-1.c: New test. > > * c-c++-common/auto-init-padding-2.c: New test. > > * c-c++-common/auto-init-padding-3.c: New test. This fails on many targets, e.g. i686-linux or x86_64-linux with -m32. The main problem is hardcoding type sizes and structure layout expectations that are valid only on some lp64 targets. On ilp32 long and pointer are 32-bit, and there are targets that are neither ilp32 nor lp64 and there even other sizes can't be taken for granted. Also, long double depending on target and options is either 8, 12 or 16 byte (the first one when it is the same as double, the second e.g. for ia32 extended long double (which is under the hood 10 byte), the last either the same hw type on x86_64 or IBM double double or IEEE quad). In the last test, one problem is that unsigned long is on ilp32 32-bit instead of 64-bit, but even just changing to long long is not enough, as long long in structures on ia32 is only 4 byte aligned instead of 8. Tested on x86_64-linux -m32/-m64, ok for trunk? Note, the gcc.dg/i386/auto-init* tests fail also, just don't have time to deal with that right now, just try make check-gcc RUNTESTFLAGS='--target_board=unix\{-m32,-m64\} i386.exp=auto-init*' Guess some of those tests should be restricted to lp64 in there, others where it might be easier to check all of lp64, x32 and ia32 code generation could have different matches. Wonder also about the aarch64 tests, there is also -mabi=ilp32... +FAIL: gcc.target/i386/auto-init-2.c scan-rtl-dump-times expand "0xfefefefefefefefe" 3 +FAIL: gcc.target/i386/auto-init-2.c scan-rtl-dump-times expand "0xfffffffffefefefe" 2 +FAIL: gcc.target/i386/auto-init-3.c scan-assembler-times pxor\\t\\\\%xmm0, \\\\%xmm0 3 +FAIL: gcc.target/i386/auto-init-4.c scan-rtl-dump-times expand "0xfffffffffefefefe" 1 +FAIL: gcc.target/i386/auto-init-4.c scan-rtl-dump-times expand "0xfffffffffffffffe\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-4.c scan-rtl-dump-times expand "\\\\[0xfefefefefefefefe\\\\]" 1 +FAIL: gcc.target/i386/auto-init-5.c scan-assembler-times \\\\.long\\t0 14 +FAIL: gcc.target/i386/auto-init-6.c scan-rtl-dump-times expand "0xfffffffffffffffe\\\\]\\\\) repeated x16" 2 +FAIL: gcc.target/i386/auto-init-6.c scan-rtl-dump-times expand "\\\\[0xfefefefefefefefe\\\\]" 1 +FAIL: gcc.target/i386/auto-init-7.c scan-rtl-dump-times expand "const_int 0 \\\\[0\\\\]\\\\) repeated x16" 2 +FAIL: gcc.target/i386/auto-init-7.c scan-rtl-dump-times expand "const_int 0 \\\\[0\\\\]\\\\)\\\\)" 3 +FAIL: gcc.target/i386/auto-init-8.c scan-rtl-dump-times expand "0xfffffffffefefefe" 1 +FAIL: gcc.target/i386/auto-init-8.c scan-rtl-dump-times expand "0xfffffffffffffffe\\\\]\\\\) repeated x16" 2 +FAIL: gcc.target/i386/auto-init-8.c scan-rtl-dump-times expand "\\\\[0xfefefefefefefefe\\\\]" 2 +FAIL: gcc.target/i386/auto-init-padding-1.c scan-rtl-dump-times expand "const_int 0 \\\\[0\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-padding-10.c scan-rtl-dump-times expand "0xfffffffffffffffe\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-padding-11.c scan-rtl-dump-times expand "const_int 0 \\\\[0\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-padding-12.c scan-rtl-dump-times expand "0xfffffffffffffffe\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-padding-2.c scan-rtl-dump-times expand "0xfffffffffffffffe\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-padding-3.c scan-assembler movl\\t\\\\\$16, +FAIL: gcc.target/i386/auto-init-padding-3.c scan-assembler rep stosq +FAIL: gcc.target/i386/auto-init-padding-4.c scan-rtl-dump-times expand "0xfffffffffffffffe\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-padding-5.c scan-rtl-dump-times expand "const_int 0 \\\\[0\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-padding-6.c scan-rtl-dump-times expand "0xfffffffffffffffe\\\\]\\\\) repeated x16" 1 +FAIL: gcc.target/i386/auto-init-padding-7.c scan-assembler-times movq\\t\\\\\$0, 2 +FAIL: gcc.target/i386/auto-init-padding-8.c scan-assembler-times movq\\t\\\\\$0, 2 +FAIL: gcc.target/i386/auto-init-padding-9.c scan-assembler rep stosq 2021-09-11 Jakub Jelinek * c-c++-common/auto-init-1.c: Enable test only on ilp32 or lp64 targets, expect different long and pointer sizes between ilp32 and lp64. * c-c++-common/auto-init-2.c: Likewise. * c-c++-common/auto-init-3.c: Expect one of the common long double sizes (8/12/16 bytes) instead of hardcoding 16 bytes. * c-c++-common/auto-init-4.c: Likewise. * c-c++-common/auto-init-5.c: Expect one of the common _Complex long double sizes (16/24/32 bytes) instead of hardcoding 32 bytes. * c-c++-common/auto-init-6.c: Likewise. * c-c++-common/auto-init-padding-1.c: Enable test only on ilp32 or lp64 targets. (struct test_small_hole): Change type of four to unsigned long long and add aligned attribute. --- gcc/testsuite/c-c++-common/auto-init-1.c.jj 2021-09-11 09:33:37.896331809 +0200 +++ gcc/testsuite/c-c++-common/auto-init-1.c 2021-09-11 09:37:05.108368101 +0200 @@ -1,5 +1,5 @@ /* Verify zero initialization for integer and pointer type automatic variables. */ -/* { dg-do compile } */ +/* { dg-do compile { target { ilp32 || lp64 } } } */ /* { dg-options "-ftrivial-auto-var-init=zero -fdump-tree-gimple" } */ #ifndef __cplusplus @@ -33,7 +33,9 @@ void foo() /* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(2, 2, 0\\)" "gimple" } } */ /* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" } } */ /* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" { target ilp32 } } } */ +/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" { target lp64 } } } */ /* { dg-final { scan-tree-dump "temp6 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" { target ilp32 } } } */ +/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" { target lp64 } } } */ /* { dg-final { scan-tree-dump "temp8 = .DEFERRED_INIT \\(1, 2, 0\\)" "gimple" } } */ --- gcc/testsuite/c-c++-common/auto-init-2.c.jj 2021-09-11 09:33:37.897331795 +0200 +++ gcc/testsuite/c-c++-common/auto-init-2.c 2021-09-11 09:38:10.908426977 +0200 @@ -1,5 +1,5 @@ /* Verify pattern initialization for integer and pointer type automatic variables. */ -/* { dg-do compile } */ +/* { dg-do compile { target { ilp32 || lp64 } } } */ /* { dg-options "-ftrivial-auto-var-init=pattern -fdump-tree-gimple" } */ #ifndef __cplusplus @@ -33,7 +33,9 @@ void foo() /* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(2, 1, 0\\)" "gimple" } } */ /* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" } } */ /* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" { target ilp32 } } } */ +/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" { target lp64 } } } */ /* { dg-final { scan-tree-dump "temp6 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" { target ilp32 } } } */ +/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" { target lp64 } } } */ /* { dg-final { scan-tree-dump "temp8 = .DEFERRED_INIT \\(1, 1, 0\\)" "gimple" } } */ --- gcc/testsuite/c-c++-common/auto-init-3.c.jj 2021-09-11 09:33:37.897331795 +0200 +++ gcc/testsuite/c-c++-common/auto-init-3.c 2021-09-11 09:39:40.626143763 +0200 @@ -16,4 +16,4 @@ long double foo() /* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" } } */ /* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(16, 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((8|12|16), 2, 0\\)" "gimple" } } */ --- gcc/testsuite/c-c++-common/auto-init-4.c.jj 2021-09-11 09:33:37.897331795 +0200 +++ gcc/testsuite/c-c++-common/auto-init-4.c 2021-09-11 09:42:50.645427377 +0200 @@ -16,4 +16,4 @@ long double foo() /* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" } } */ /* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(16, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((8|12|16), 1, 0\\)" "gimple" } } */ --- gcc/testsuite/c-c++-common/auto-init-5.c.jj 2021-09-11 09:33:37.897331795 +0200 +++ gcc/testsuite/c-c++-common/auto-init-5.c 2021-09-11 09:43:14.909080575 +0200 @@ -17,5 +17,5 @@ _Complex long double foo() /* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ /* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(16, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(32, 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((16|24|32), 2, 0\\)" "gimple" } } */ --- gcc/testsuite/c-c++-common/auto-init-6.c.jj 2021-09-11 09:33:37.897331795 +0200 +++ gcc/testsuite/c-c++-common/auto-init-6.c 2021-09-11 09:43:34.316803177 +0200 @@ -17,5 +17,5 @@ _Complex long double foo() /* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ /* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(16, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(32, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((16|24|32), 1, 0\\)" "gimple" } } */ --- gcc/testsuite/c-c++-common/auto-init-padding-1.c.jj 2021-09-11 09:33:37.897331795 +0200 +++ gcc/testsuite/c-c++-common/auto-init-padding-1.c 2021-09-11 09:48:21.651696258 +0200 @@ -1,6 +1,6 @@ /* Verify the padding initialization for pattern initialization, we always emit * a call to __builtin_clear_padding to initialize the paddings to zero. */ -/* { dg-do compile } */ +/* { dg-do compile { target { ilp32 || lp64 } } } */ /* { dg-options "-ftrivial-auto-var-init=pattern -fdump-tree-gimple" } */ @@ -9,7 +9,7 @@ struct test_small_hole { char two; /* 3 byte padding hole here. */ int three; - unsigned long four; + unsigned long long four __attribute__((aligned (8))); }; extern void g (struct test_small_hole); Jakub