[Bug ada/19382] ACATS cxb5002 simple To_Fortran test fails at runtime on s390-linux

2005-07-05 Thread laurent at guerby dot net

--- Additional Comments From laurent at guerby dot net  2005-07-05 08:26 
---
Still failing as of 4.0.1 RC3 (20050702)
http://gcc.gnu.org/ml/gcc-testresults/2005-07/msg00183.html

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19382


[Bug ada/19382] ACATS cxb5002 simple To_Fortran test fails at runtime on s390-linux

2005-06-17 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

   Keywords||alias


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19382


[Bug ada/19382] ACATS cxb5002 simple To_Fortran test fails at runtime on s390-linux

2005-03-18 Thread laurent at guerby dot net

--- Additional Comments From laurent at guerby dot net  2005-03-18 18:46 
---
Still fails on 4.0.0 20050317 (prerelease) testsuite on s390-ibm-linux-gnu
according to:
http://gcc.gnu.org/ml/gcc-testresults/2005-03/msg01185.html

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19382


[Bug ada/19382] ACATS cxb5002 simple To_Fortran test fails at runtime on s390-linux

2005-03-17 Thread charlet at gcc dot gnu dot org

--- Additional Comments From charlet at gcc dot gnu dot org  2005-03-17 
10:47 ---
Is this test still failing ?

Arno

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19382


[Bug ada/19382] ACATS cxb5002 simple To_Fortran test fails at runtime on s390-linux

2005-01-14 Thread uweigand at gcc dot gnu dot org

--- Additional Comments From uweigand at gcc dot gnu dot org  2005-01-15 
00:45 ---
This is caused by instruction scheduling not noticing a dependency,
apparently because alias sets are set up incorrectly.

At the end of the tree optimizer phase we have:

L29:;
  fortran_character_1[1]{lb: 1 sz: 1} =
VIEW_CONVERT_EXPRinterfaces__fortran__character_set[1:1](*SR.237)[1]{lb: 1 
sz: 1};
  tc_fortran_character_1.26 = (const unnamed type *) tc_fortran_character_1;
  D.2019 = *tc_fortran_character_1.26;

bb 56:
  D.2020 = (integer) D.2019;
  fortran_character_1.27 = (interfaces__fortran__character_set[1:1] *)
fortran_character_1;
  D.2023 = *(const unnamed type *) fortran_character_1.27;

bb 57:
  if (D.2020 - (integer) D.2023 != 0) goto L30; else goto L31;

L30:;
  D.2026 = C.29;
  report__failed (D.2026);


which gets expanded into RTL like so:

(insn 497 496 499 73 (set (mem/s/j:QI (reg/f:SI 39 virtual-stack-vars) [11
fortran_character_1+0 S1 A64])
(mem/s/j:QI (reg/f:SI 123 [ SR.237 ]) [11 S1 A8])) -1 (nil)
(nil))

[snip]

(insn 503 502 504 74 (set (reg:SI 268 [ fortran_character_1.27 ])
(reg/f:SI 39 virtual-stack-vars)) -1 (nil)
(nil))

(insn 504 503 505 74 (set (reg:QI 267 [ D.2023 ])
(mem:QI (reg:SI 268 [ fortran_character_1.27 ]) [28 S1 A8])) -1 (nil)
(expr_list:REG_EH_REGION (const_int 2 [0x2])
(nil)))

Notice how the store to fortran_character uses alias set 11,
while the read (via the fortran_character_1.27 pointer) uses
alias set 28.

The whole section gets further simplified to

(insn 1955 506 1956 56 (parallel [
(set (mem/s/j:BLK (plus:SI (reg/f:SI 15 %r15)
(const_int 96 [0x60])) [11 fortran_character_1+0 S1 
A64])
(mem/s/j:BLK (reg/f:SI 4 %r4 [orig:123 SR.237 ] [123]) [11 S1 
A8]))
(use (const_int 1 [0x1]))
]) 61 {*mvc} (nil)
(expr_list:REG_DEAD (reg/f:SI 4 %r4 [orig:123 SR.237 ] [123])
(nil)))

(insn 1956 1955 508 56 (parallel [
(set (reg:CCZ 33 %cc)
(compare:CCZ (mem:BLK (plus:SI (reg/f:SI 15 %r15)
(const_int 96 [0x60])) [28 S1 A8])
(mem:BLK (plus:SI (reg/f:SI 15 %r15)
(const_int 97 [0x61])) [28 S1 A8])))
(use (const_int 1 [0x1]))
]) 31 {*clc} (nil)
(nil))

I.e. first the store to fortran_character, the the compare.
The scheduler now swaps the two insns, causing incorrect code
to be generated.  It hasn't recognized the dependency, presumably
because the alias sets are incorrect ...

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19382