You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Original bug ID: 765 Reporter: administrator Status: closed Resolution: not a bug Priority: normal Severity: minor Category: ~DO NOT USE (was: OCaml general)
Bug description
Full_Name: David Monniaux
Version: 3.04
OS: Linux/x86 et Solaris/Sparc
Submission from: curie.noos.net (212.198.0.93)
Un de mes anciens programmes est compilé incorrectement par OCaml 3.04:
il contient une fonction
let gen_fconst_label = Printf.sprintf "fconst__%04d";;
Cette fonction se comporte lors de l'exécution du programme comme si
elle avait été écrite:
let gen_fconst_label = Printf.sprintf "%04d";;
[Le programme en question est un petit compilateur.
Les chaînes générées étant des labels dans du code assembleur, ça donne ceci:
0000: .double 0r0.0000000000
0002: .double 0r-1.0000000000
0001: .double 0r1.0000000000 ]
Par contre, si on l'eta-expanse:
et gen_fconst_label x = Printf.sprintf "fconst__%04d" x;;
on obtient le résultat correct.
[fconst__0000: .double 0r0.0000000000
fconst__0002: .double 0r-1.0000000000
fconst__0001: .double 0r1.0000000000]
Original bug ID: 765
Reporter: administrator
Status: closed
Resolution: not a bug
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)
Bug description
Full_Name: David Monniaux
Version: 3.04
OS: Linux/x86 et Solaris/Sparc
Submission from: curie.noos.net (212.198.0.93)
Un de mes anciens programmes est compilé incorrectement par OCaml 3.04:
il contient une fonction
let gen_fconst_label = Printf.sprintf "fconst__%04d";;
Cette fonction se comporte lors de l'exécution du programme comme si
elle avait été écrite:
let gen_fconst_label = Printf.sprintf "%04d";;
[Le programme en question est un petit compilateur.
Les chaînes générées étant des labels dans du code assembleur, ça donne ceci:
0000: .double 0r0.0000000000
0002: .double 0r-1.0000000000
0001: .double 0r1.0000000000 ]
Par contre, si on l'eta-expanse:
et gen_fconst_label x = Printf.sprintf "fconst__%04d" x;;
on obtient le résultat correct.
[fconst__0000: .double 0r0.0000000000
fconst__0002: .double 0r-1.0000000000
fconst__0001: .double 0r1.0000000000]
Je n'arrive pas à reproduire cela sur un exemple plus petit, mais le source
est disponible sur http://www.di.ens.fr/~monniaux/download/laxc.tar.gz
(c'est le module sparc.ml).
Le problème se produit:
The text was updated successfully, but these errors were encountered: