#44 GEC bug: REAL_64 variable treated as INTEGER_32

trunk
closed
gec (14)
5
2011-03-25
2011-03-23
No

Hi,

I would like to report a spurious bug of GEC.
A local variable declared as REAL_64 is considered
by the compiler as an INTEGER_32 variable: instead of
`T13 l3;' the C code reads `T6 l6;'. This has several
consequences.
First, additions like `x+x1' are rejected where `x'
is a correctly treated REAL_64 but `x1' is the variable
of question. Compilation works if those additions are
commented out but then the algorithm is wrong.
Second, routine calls like `call(x1)' get in C code
a catcall check which at run time fires: the call
expects REAL_64 while the actual argument is the
erroneous INTEGER_32.

The attachment contains the slightly reduced project.
Running "geant compile" should work.
The critical feature is `DIAGRAM_IMPL.callback', the
critical local variable is `x1' (line 538). Lines 555
and 559 are commented out additions, erroneous catcall
checks are inserted in the calls of lines 552, 568, 580.

With regards
WJ

Discussion

  • Wolfgang Jansen

    Wolfgang Jansen - 2011-03-23

    Files of the project.

     
  • Eric Bezault

    Eric Bezault - 2011-03-23
    • assigned_to: nobody --> ericb
    • milestone: --> trunk
    • labels: --> gec
     
  • Eric Bezault

    Eric Bezault - 2011-03-25
    • status: open --> closed
     
  • Eric Bezault

    Eric Bezault - 2011-03-25

    Fixed in git#742f7d99f9cb2717e38a34e5f27b57650626c6cd.

     

Log in to post a comment.