On September 11, 2021 10:03:20 AM GMT+02:00, Jakub Jelinek <ja...@redhat.com> 
wrote:
>On Fri, Sep 03, 2021 at 02:47:11PM +0000, Qing Zhao via Gcc-patches wrote:
>> > 2021-08-20  qing zhao  <qing.z...@oracle.com>
>> > 
>> >        * 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?

Ok. 

Thanks, 
Richard. 

>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  <ja...@redhat.com>
>
>       * 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
>

Reply via email to