This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [TESTCASE] gcc miscompiles Altivec code
- From: Daniel Egger <degger at fhm dot edu>
- To: Dale Johannesen <dalej at apple dot com>
- Cc: GCC Developer Mailinglist <gcc at gcc dot gnu dot org>,Aldy Hernandez <aldyh at redhat dot com>
- Date: 26 Feb 2002 13:52:51 +0100
- Subject: Re: [TESTCASE] gcc miscompiles Altivec code
- References: <EA58058E-2A62-11D6-84AE-003065C86F94@apple.com>
Am Die, 2002-02-26 um 03.45 schrieb Dale Johannesen:
> Note that the posted testcase prints out the value after only one transpose
>
> ...v1[7] = vec[7];
>
> Transpose (v1, v2);
> Transpose (v2, v1);
>
> vec[0] = v2[0];... // v1 value lost
>
> so the right answer is really
>
> 1 9 17 25 33 41 49 57
> 2 10 18 26 34 42 50 58
> 3 11 19 27 35 43 51 59
> 4 12 20 28 36 44 52 60
> 5 13 21 29 37 45 53 61
> 6 14 22 30 38 46 54 62
> 7 15 23 31 39 47 55 63
> 8 16 24 32 4 48 56 64
Yes, you're right. I sent the wrong version of the code. Sorry.
I attached the correct version of it.
It still doesn't work with -O0 here.
egger@sonja:~$ /opt/gcc/bin/gcc -da -maltivec -save-temps -O -mregnames
test.c -
o test -Wall
test.c: In function `do_something':
test.c:41: warning: unused variable `zeros'
egger@sonja:~$ ./test
Unaltered
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
After double transposing
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
egger@sonja:~$ /opt/gcc/bin/gcc -da -maltivec -save-temps -O0 -mregnames
test.c
-o test -Wall
test.c: In function `do_something':
test.c:41: warning: unused variable `zeros'
egger@sonja:~$ ./test
Unaltered
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
Segmentation fault
--
Servus,
Daniel